Files
mercury/bytecode/Mmakefile
Peter Ross 22c5b49792 Initial checkin which is all the scaffolding needed to
Estimated hours taken: 4
Branches: main

Initial checkin which is all the scaffolding needed to
support the new source to source mercury debugger (ssdb).

The main addition in this change is the ssdb directory,
which will contain the mer_ssdb library.

Mmake.workspace:
Mmakefile:
configure.in:
	Handle the new ssdb directory.

compiler/options.m:
	Add the --ssdb and --source-to-source-debug options.

compiler/mercury_compile.m:
	Add the ssdb pass (it does nothing at the moment).

compiler/modules.m:
	Implicitly import ssdb_builtin when compiling with --ssdb.

mdbcomp/prim_data.m:
	Handle the ssdb module.

ssdb/Mercury.options:
ssdb/Mmakefile:
ssdb/SSDB_FLAGS.in:
ssdb/.mgnuc_copts:
ssdb/.mgnuc_opts:
ssdb/RESERVED_MACRO_NAMES:
	Build system for ssdb directory.

ssdb/mer_ssdb.m:
ssdb/ssdb.m:
	The operations which are needed by the source to source
	debugger.

tools/bootcheck:
	Changes to the bootcheck script to handle the new ssdb module.



browser/Mmakefile:
bytecode/Mmakefile:
library/Mmakefile:
mdbcomp/Mmakefile:
runtime/Mmakefile:
trace/Mmakefile:
	Add the ALLOW_SSDB_PREFIX rules.
2007-10-03 12:11:59 +00:00

158 lines
4.0 KiB
Plaintext

#-----------------------------------------------------------------------------#
# 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)
#-----------------------------------------------------------------------------#