#-----------------------------------------------------------------------------# # vim: ts=8 sw=8 noexpandtab #-----------------------------------------------------------------------------# # Copyright (C) 1998-2002, 2005 The University of Melbourne. # This file may only be copied under the terms of the GNU General # Public License - see the file COPYING in the Mercury distribution. #-----------------------------------------------------------------------------# # Mmake - Mmake file for the bytecode interpreter MAIN_TARGET=all #-----------------------------------------------------------------------------# # keep these lists in alphabetical order, please # bytecode headers MB_HDRS = \ mb_basetypes.h \ mb_bytecode.h \ mb_disasm.h \ mb_exec.h \ mb_interface.h \ mb_machine.h \ mb_machine_def.h \ mb_machine_show.h \ mb_mem.h \ mb_module.h \ mb_stack.h \ mb_util.h # bytecode c files MB_CFILES = \ mb_bytecode.c \ mb_disasm.c \ mb_exec.c \ mb_interface.c \ mb_interface_stub.c \ mb_machine.c \ mb_machine_show.c \ mb_mem.c \ mb_module.c \ mb_stack.c \ mb_util.c # bytecode mercury files MB_MFILES = \ # mb_interface_stub.m # bytecode object files MB_OBJS = $(MB_MFILES:%.m=%.o) $(MB_CFILES:%.c=%.o) $(MB_OBJS): $(MB_HDRS) # Specify which files to check for namespace cleanliness, and which name # prefixes are allowed. CHECK_HDRS = $(MB_HDRS) CHECK_MHDRS = CHECK_OBJS = $(MB_OBJS) ALLOW_LIB_PREFIX=no ALLOW_BROWSER_PREFIX=no ALLOW_MDBCOMP_PREFIX=no ALLOW_SSDB_PREFIX=no MERCURY_DIR=.. include $(MERCURY_DIR)/Mmake.common -include ../Mmake.params #-----------------------------------------------------------------------------# # NOTE: any library functions that called from bytecode must be compiled # with trace information. (So their entry labels can be looked up) #-----------------------------------------------------------------------------# MERCURY_SYSTEM = \ $(RUNTIME_DIR)/*.c $(RUNTIME_DIR)/*.h \ $(RUNTIME_DIR)/machdeps/*.c $(RUNTIME_DIR)/machdeps/*.h\ $(LIBRARY_DIR)/*.m \ $(TRACE_DIR)/*.h $(TRACE_DIR)/*.c \ $(BROWSER_DIR)/*.m \ $(MDBCOMP_DIR)/*.m \ $(BOEHM_GC_DIR)/*.h $(BOEHM_GC_DIR)/include/*.h MERCURY_INC = \ -I$(LIBRARY_DIR) \ -I$(RUNTIME_DIR) \ -I$(BOEHM_GC_DIR) \ -I$(BOEHM_GC_DIR)/include \ -I$(TRACE_DIR) #-----------------------------------------------------------------------------# CFLAGS = $(MERCURY_INC) -DMR_BYTECODE_CALLABLE -g MGNUCFLAGS-mb_disasm = --no-ansi MCFLAGS = --trace shallow --generate-bytecode -O 0 MLFLAGS = --trace #-----------------------------------------------------------------------------# # The actual program (as distinct from bytecode interpreter) HDRS = CFILES = MFILES = simple.m OBJS = simple_init.o $(MFILES:%.m=%.o) $(CFILES:%.c=%.o) $(OBJS): $(HDRS) $(MB_HDRS) #-----------------------------------------------------------------------------# ALL_HDRS = $(HDRS) $(MB_HDRS) ALL_MFILES = $(MFILES) $(MB_MFILES) ALL_CFILES = $(CFILES) $(MB_CFILES) ALL_OBJS = $(OBJS) $(MB_OBJS) ALL_DEPENDS=$(ALL_MFILES:%=%.depend) #-----------------------------------------------------------------------------# .PHONY: all all: check MLOBJS = $(MB_OBJS) .PHONY: check check: simple #-----------------------------------------------------------------------------# # tags actually depends on $(MERCURY_SYSTEM) too but since changes to that # hardly ever have an effect, just ignore them. tags: $(ALL_CFILES) $(ALL_HDRS) tags2 ctags $(CTAGFLAGS) $(ALL_CFILES) $(ALL_HDRS) $(MERCURY_SYSTEM) tags2: $(ALL_MFILES) mtags $(MTAGFLAGS) $(ALL_MFILES) $(MERCURY_SYSTEM) mv tags tags2 .PHONY: depend depend: $(ALL_DEPENDS) .PHONY: clean_local clean_local: rm -f $(ALL_MFILES:%.m=%.mbc) rm -f $(ALL_MFILES:%.m=%.bytedebug) rm -f $(ALL_OBJS) .PHONY: realclean_local realclean_local: rm -f tags tags2 *.mbc *.bytedebug # XXX: The dependencies in mmake ignore .mbc and .bytedebug files # so we have to manually delete them. We delete all bytecode files # because it will leave submodule files if we don't # (eg: module simple contains simple2: simple.simple2.mbc will be # generated but will not be removed properly) #-----------------------------------------------------------------------------#