mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 09:53:36 +00:00
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.
158 lines
4.0 KiB
Plaintext
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)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|