mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-11 20:03:28 +00:00
Factor out the common Mmake code to set up the mmc, mgnuc
Estimated hours taken: 8 Branches: main Factor out the common Mmake code to set up the mmc, mgnuc and ml flags when building the Mercury compiler and libraries. Use options, not environment variables. This will make it simpler to use `mmc --make' to compile the compiler. Mmake.workspace: Similar to tools/lmc. Sets up Mmake variables to use the library files in a workspace rather than an installed library. configure.in: Check for the `--no-mercury-stdlib-dir' mmc option. Bootstrap CVS tag: bootstrap_20020429_stdlib_dir Mmake.common.in: */Mmakefile: Move common code into Mmake.workspace. browser/Mmakefile: library/Mmakefile: Avoid invoking the linker explicitly when creating libraries of Mercury code. That won't work well with `mmc --make'. tools/bootcheck: tests/Mmake.common: Use Mmake.workspace instead of setting up environment variables in bootcheck. scripts/Mmake.vars.in: mmc compiles split C files to object code itself, so pass `--cflags "$(ALL_CFLAGS)"' to mmc when compiling with `--split-c-files'. browser/interactive_query.m: Use `mmc --make' when compiling the query. This is needed to make tests/debugger/interactive_query.m work when linking against a workspace using options rather than environment variables. This also fixes a bug -- mmc options were being passed to ml. Clean up after the query. tests/debugger/Mmakefile: tests/debugger/interactive.inp: tests/debugger/interactive.inp.subdirs: tests/debugger/interactive.inp.nosubdirs: tests/debugger/interactive.exp: tests/debugger/interactive.exp2: Generate the input file to this test so that MCFLAGS and MC_MAKE_FLAGS (from Mmake.workspace) are used when compiling queries. tests/debugger/Mmakefile now sets SHELL to /usr/local/bash to allow the use of $(...) style command substitution (`...` style command substitution can't be nested). tests/warnings/Mmakefile: tests/dppd/Mmakefile: Include tests/Mmake.common. tools/*: scripts/c2init.in: scripts/ml.in: Update the lists of files containing the library names.
This commit is contained in:
@@ -19,13 +19,16 @@
|
||||
|
||||
include $(MERCURY_DIR)/VERSION
|
||||
|
||||
WORKSPACE=$(MERCURY_DIR)
|
||||
include $(MERCURY_DIR)/Mmake.workspace
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Specify the Mercury compiler to use for bootstrapping
|
||||
MC = @BOOTSTRAP_MC@
|
||||
# Specify the Mercury compiler to use for bootstrapping.
|
||||
MC = @BOOTSTRAP_MC@
|
||||
|
||||
# Specify the compilation model to use for compiling the compiler
|
||||
GRADE = @GRADE@
|
||||
# Specify the compilation model to use for compiling the compiler.
|
||||
GRADE = @GRADE@
|
||||
|
||||
# Specify EXT_FOR_EXE is `.exe' on MS-Windows and empty elsewhere.
|
||||
EXT_FOR_EXE = @EXT_FOR_EXE@
|
||||
@@ -36,7 +39,7 @@ EXT_FOR_EXE = @EXT_FOR_EXE@
|
||||
# or as `a' if it doesn't.
|
||||
EXT_FOR_SHARED_LIB = @EXT_FOR_SHARED_LIB@
|
||||
|
||||
# Specify USE_DLLs as `yes' if the OS supports Windows-style DLLs
|
||||
# Specify USE_DLLs as `yes' if the OS supports Windows-style DLLs.
|
||||
USE_DLLS = @USE_DLLS@
|
||||
|
||||
# Specify any special flags to pass to the C compiler when creating objects
|
||||
@@ -113,15 +116,6 @@ SHARED_LIBS = @SHARED_LIBS@
|
||||
INSTALL_MERC_GC_LIB_DIR = $(INSTALL_MERC_GRADELESS_LIB_DIR)
|
||||
FINAL_INSTALL_MERC_GC_LIB_DIR = $(FINAL_INSTALL_MERC_GRADELESS_LIB_DIR)
|
||||
|
||||
SCRIPTS_DIR = $(MERCURY_DIR)/scripts
|
||||
RUNTIME_DIR = $(MERCURY_DIR)/runtime
|
||||
LIBRARY_DIR = $(MERCURY_DIR)/library
|
||||
TRACE_DIR = $(MERCURY_DIR)/trace
|
||||
BROWSER_DIR = $(MERCURY_DIR)/browser
|
||||
BOEHM_GC_DIR = $(MERCURY_DIR)/boehm_gc
|
||||
COMPILER_DIR = $(MERCURY_DIR)/compiler
|
||||
UTIL_DIR = $(MERCURY_DIR)/util
|
||||
|
||||
# By default, GRADESTRING is defined as the result of invoking
|
||||
# `mmc --output-grade-string' with $(GRADE) and $(GRADEFLAGS).
|
||||
# But when installing the standard library, the compiler will not yet
|
||||
@@ -133,22 +127,8 @@ UTIL_DIR = $(MERCURY_DIR)/util
|
||||
# compiler itself should be done by setting GRADE, not GRADEFLAGS.
|
||||
GRADESTRING = $(GRADE)
|
||||
|
||||
# The names of the various libraries.
|
||||
# The archives and shared object objects have a "lib" prefix and a ".a" or
|
||||
# ".so" (or ".dll") suffix around these names; the initialization files
|
||||
# have just a ".init" suffix. (The trace library does not have a .init file,
|
||||
# since it contains no Mercury code.)
|
||||
#
|
||||
# If you change these, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, tools/bootcheck, tools/binary, tools/binary_step
|
||||
# and tools/linear.
|
||||
RT_LIB_NAME = mer_rt
|
||||
STD_LIB_NAME = mer_std
|
||||
TRACE_LIB_NAME = mer_trace
|
||||
BROWSER_LIB_NAME = mer_browser
|
||||
|
||||
# Options to pass to the Mercury compiler
|
||||
MCFLAGS = --no-infer-all --halt-at-warn --no-warn-inferred-erroneous
|
||||
MCFLAGS += --no-infer-all --halt-at-warn --no-warn-inferred-erroneous
|
||||
|
||||
# Do we want to deal with intermodule information when building the library?
|
||||
# By default yes, since this way we note immediately when intermodule
|
||||
|
||||
156
Mmake.workspace
Normal file
156
Mmake.workspace
Normal file
@@ -0,0 +1,156 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 2002 The University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU General
|
||||
# Public Licence - see the file COPYING in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Mmake.workspace - build a program or library using the current workspace,
|
||||
# not an installed library.
|
||||
#
|
||||
# The variable WORKSPACE must be set externally.
|
||||
#
|
||||
# If the variable LINK_STATIC is set to `yes', the names of the `.a' files
|
||||
# for the Mercury libraries will be included in MLLIBS, otherwise
|
||||
# `-l' options will be included.
|
||||
#
|
||||
# Setting LINK_BOEHM_GC_ONLY to `yes' causes only the boehm_gc directory
|
||||
# to be included in MLFLAGS, MLLIBS and CFLAGS.
|
||||
|
||||
# Setting LINK_RUNTIME_ONLY to `yes' causes only the boehm_gc and runtime
|
||||
# directories to be included in MLFLAGS, MLLIBS and CFLAGS.
|
||||
|
||||
# Setting LINK_STDLIB_ONLY to `yes' causes only the boehm_gc, runtime
|
||||
# and library directories to be included in MLFLAGS, MLLIBS and CFLAGS.
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
LINK_STATIC ?= no
|
||||
LINK_BOEHM_GC_ONLY ?= no
|
||||
LINK_RUNTIME_ONLY ?= no
|
||||
LINK_STDLIB_ONLY ?= no
|
||||
|
||||
SCRIPTS_DIR = $(WORKSPACE)/scripts
|
||||
RUNTIME_DIR = $(WORKSPACE)/runtime
|
||||
LIBRARY_DIR = $(WORKSPACE)/library
|
||||
TRACE_DIR = $(WORKSPACE)/trace
|
||||
BROWSER_DIR = $(WORKSPACE)/browser
|
||||
BOEHM_GC_DIR = $(WORKSPACE)/boehm_gc
|
||||
COMPILER_DIR = $(WORKSPACE)/compiler
|
||||
UTIL_DIR = $(WORKSPACE)/util
|
||||
|
||||
# The names of the various libraries.
|
||||
# The archives and shared object objects have a "lib" prefix and a ".a" or
|
||||
# ".so" (or ".dll") suffix around these names; the initialization files
|
||||
# have just a ".init" suffix. (The trace library does not have a .init file,
|
||||
# since it contains no Mercury code.)
|
||||
#
|
||||
# If you change these, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, tools/bootcheck, tools/binary, tools/binary_step
|
||||
# and tools/linear.
|
||||
RT_LIB_NAME = mer_rt
|
||||
STD_LIB_NAME = mer_std
|
||||
TRACE_LIB_NAME = mer_trace
|
||||
BROWSER_LIB_NAME = mer_browser
|
||||
|
||||
MC = $(SCRIPTS_DIR)/mmc
|
||||
MGNUC = $(SCRIPTS_DIR)/mgnuc
|
||||
ML = $(SCRIPTS_DIR)/ml
|
||||
C2INIT = MERCURY_MKINIT=$(UTIL_DIR)/mkinit $(SCRIPTS_DIR)/c2init
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
MTAGSFLAGS += $(EXTRA_MTAGSFLAGS)
|
||||
|
||||
VPATH = $(LIBRARY_DIR)
|
||||
|
||||
MCFLAGS += --no-mercury-stdlib-dir -I$(LIBRARY_DIR)
|
||||
MGNUCFLAGS += --no-mercury-stdlib-dir
|
||||
C2INITFLAGS += --trace-init-file $(BROWSER_DIR)/$(BROWSER_LIB_NAME).init
|
||||
C2INITARGS += $(LIBRARY_DIR)/$(STD_LIB_NAME).init \
|
||||
$(RUNTIME_DIR)/$(RT_LIB_NAME).init
|
||||
MLFLAGS += --no-mercury-stdlib-dir
|
||||
|
||||
#
|
||||
# MC_MAKE_FLAGS contains flags to be used by `mmc --make'.
|
||||
# This will also include flags to pass to ml.
|
||||
#
|
||||
MC_MAKE_FLAGS += --trace-init-file $(BROWSER_DIR)/$(BROWSER_LIB_NAME).init \
|
||||
--init-file $(LIBRARY_DIR)/$(STD_LIB_NAME).init \
|
||||
--init-file $(RUNTIME_DIR)/$(RT_LIB_NAME).init
|
||||
|
||||
#
|
||||
# Work out the C include directories.
|
||||
#
|
||||
C_INCL_DIRS = -I$(BOEHM_GC_DIR) -I$(BOEHM_GC_DIR)/include
|
||||
ifneq ($(LINK_BOEHM_GC_ONLY),yes)
|
||||
C_INCL_DIRS += -I$(RUNTIME_DIR)
|
||||
ifneq ($(LINK_RUNTIME_ONLY),yes)
|
||||
C_INCL_DIRS += -I$(LIBRARY_DIR)
|
||||
ifneq ($(LINK_STDLIB_ONLY),yes)
|
||||
C_INCL_DIRS += -I$(BROWSER_DIR) -I$(TRACE_DIR)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
CFLAGS += $(C_INCL_DIRS)
|
||||
MC_MAKE_FLAGS += $(patsubst -I%,--c-include-directory %,$(C_INCL_DIRS))
|
||||
|
||||
#
|
||||
# Work out which libraries to link with.
|
||||
#
|
||||
STATIC_GC_LIBS = \
|
||||
` \
|
||||
case $(GRADE) in \
|
||||
*.par*.gc*.prof*) echo $(BOEHM_GC_DIR)/libpar_gc_prof.$A ;; \
|
||||
*.par*.gc*) echo $(BOEHM_GC_DIR)/libpar_gc.$A ;; \
|
||||
*.gc*.prof*) echo $(BOEHM_GC_DIR)/libgc_prof.$A ;; \
|
||||
*.gc*) echo $(BOEHM_GC_DIR)/libgc.$A ;; \
|
||||
esac \
|
||||
`
|
||||
SHARED_GC_LIBS = \
|
||||
` \
|
||||
case $(GRADE) in \
|
||||
*.par*.gc*.prof*) echo -lpar_gc_prof ;; \
|
||||
*.par*.gc*) echo -libpar_gc ;; \
|
||||
*.gc*.prof*) echo -lgc_prof ;; \
|
||||
*.gc*) echo -lgc ;; \
|
||||
esac \
|
||||
`
|
||||
|
||||
ifeq ($(LINK_STATIC),yes)
|
||||
|
||||
STATIC_LIBS := $(STATIC_GC_LIBS)
|
||||
ifneq ($(LINK_BOEHM_GC_ONLY),yes)
|
||||
STATIC_LIBS := $(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A $(STATIC_LIBS)
|
||||
ifneq ($(LINK_RUNTIME_ONLY),yes)
|
||||
STATIC_LIBS := $(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A $(STATIC_LIBS)
|
||||
ifneq ($(LINK_STDLIB_ONLY),yes)
|
||||
STATIC_LIBS := $(TRACE_DIR)/lib$(TRACE_LIB_NAME).$A \
|
||||
$(BROWSER_DIR)/lib$(BROWSER_LIB_NAME).$A $(STATIC_LIBS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
MLLIBS += $(STATIC_LIBS)
|
||||
MC_MAKE_FLAGS += $(patsubst %,--link-object %,$(STATIC_LIBS))
|
||||
|
||||
else # LINK_STATIC != yes
|
||||
|
||||
NON_STATIC_LIBS := $(SHARED_GC_LIBS)
|
||||
NON_STATIC_LIB_DIRS := -L$(BOEHM_GC_DIR) -R$(BOEHM_GC_DIR)
|
||||
ifneq ($(LINK_BOEHM_GC_ONLY),yes)
|
||||
NON_STATIC_LIBS := -l$(RT_LIB_NAME) $(NON_STATIC_LIBS)
|
||||
NON_STATIC_LIB_DIRS := -L$(RUNTIME_DIR) -R$(RUNTIME_DIR) $(NON_STATIC_LIB_DIRS)
|
||||
ifneq ($(LINK_RUNTIME_ONLY),yes)
|
||||
NON_STATIC_LIBS := -l$(STD_LIB_NAME) $(NON_STATIC_LIBS)
|
||||
NON_STATIC_LIB_DIRS := -L$(LIBRARY_DIR) -R$(LIBRARY_DIR) $(NON_STATIC_LIB_DIRS)
|
||||
ifneq ($(LINK_STDLIB_ONLY),yes)
|
||||
NON_STATIC_LIBS := -l$(TRACE_LIB_NAME) -l$(BROWSER_LIB_NAME) $(NON_STATIC_LIBS)
|
||||
NON_STATIC_LIB_DIRS := -L$(TRACE_DIR) -R$(TRACE_DIR) -L$(BROWSER_DIR) \
|
||||
-R$(BROWSER_DIR) $(NON_STATIC_LIB_DIRS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
MLFLAGS += $(NON_STATIC_LIB_DIRS)
|
||||
MLLIBS += $(NON_STATIC_LIBS)
|
||||
MC_MAKE_FLAGS += $(patsubst -R%,--link-flags -R%,$(NON_STATIC_LIB_DIRS)) \
|
||||
$(NON_STATIC_LIBS)
|
||||
|
||||
endif # LINK_STATIC != yes
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_BOEHM_GC_ONLY=yes
|
||||
include ../Mmake.common
|
||||
|
||||
# Primary targets:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995-2001 University of Melbourne.
|
||||
# Copyright (C) 1995-2002 University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU General
|
||||
# Public Licence - see the file COPYING in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
@@ -13,6 +13,7 @@ GC_GRADE=gc
|
||||
MAIN_TARGET=lib$(GC_GRADE)
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_BOEHM_GC_ONLY=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 1998-2001 The University of Melbourne.
|
||||
# Copyright (C) 1998-2002 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.
|
||||
#-----------------------------------------------------------------------------#
|
||||
@@ -16,46 +16,22 @@
|
||||
# compile the modules in this directory in debug grades as well.
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_STDLIB_ONLY=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
MAIN_TARGET=library
|
||||
|
||||
VPATH=$(LIBRARY_DIR)
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Specify which compilers to use to compile the library.
|
||||
# Don't change these without good reason - if you want to
|
||||
# do a temporary change, change ../Mmake.params.
|
||||
|
||||
M_ENV = MERCURY_INT_DIR=$(LIBRARY_DIR) \
|
||||
MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(TRACE_DIR) \
|
||||
-I$(LIBRARY_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
|
||||
MCD = $(M_ENV) $(MC) --generate-dependencies
|
||||
MCI = $(M_ENV) $(MC) --make-interface
|
||||
MCPI = $(M_ENV) $(MC) --make-private-interface
|
||||
MCSI = $(M_ENV) $(MC) --make-short-interface
|
||||
MCOI = $(M_ENV) $(MC) --make-opt-int
|
||||
MCTOI = $(M_ENV) $(MC) --make-trans-opt
|
||||
MCG = $(M_ENV) $(MC) --compile-to-c
|
||||
MCS = $(M_ENV) $(MC) --split-c-files -c --cflags "$(ALL_CFLAGS)"
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
MGNUCFLAGS = $(DLL_CFLAGS)
|
||||
LDFLAGS = -L$(LIBRARY_DIR) -L$(RUNTIME_DIR) -L$(BOEHM_GC_DIR)
|
||||
LDLIBS = -l$(STD_LIB_NAME) -l$(RT_LIB_NAME) \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*.gc*.prof*) echo "-lpar_gc_prof" ;; \
|
||||
*.par*.gc*) echo "-lpar_gc" ;; \
|
||||
*.gc*.prof*) echo "-lgc_prof" ;; \
|
||||
*.gc*) echo "-lgc" ;; \
|
||||
esac \
|
||||
`
|
||||
CFLAGS += $(DLL_CFLAGS) -I$(TRACE_DIR)
|
||||
MLFLAGS += -R$(FINAL_INSTALL_MERC_LIB_DIR) \
|
||||
-R$(FINAL_INSTALL_MERC_GC_LIB_DIR)
|
||||
MLLIBS += $(SOCKET_LIBRARY) $(NSL_LIBRARY) $(DL_LIBRARY) \
|
||||
$(READLINE_LIBRARIES)
|
||||
|
||||
# XXX Smart recompilation currently doesn't work when the module
|
||||
# name doesn't match the file name, so disable warnings about it
|
||||
@@ -68,6 +44,8 @@ MCFLAGS-mdb.declarative_user = --no-deforestation
|
||||
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
|
||||
LN = ln
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Stuff for Windows DLLS using gnu-win32
|
||||
@@ -135,25 +113,13 @@ ss: $(mdb.ss)
|
||||
library: lib$(BROWSER_LIB_NAME).$A lib$(BROWSER_LIB_NAME).$(EXT_FOR_SHARED_LIB)
|
||||
library: $(BROWSER_LIB_NAME).init
|
||||
|
||||
lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A : $(mdb.os)
|
||||
lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A : libmdb.$A
|
||||
rm -f lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
$(AR) $(ALL_ARFLAGS) \
|
||||
$(AR_LIBFILE_OPT)lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A \
|
||||
$(mdb.os)
|
||||
$(RANLIB) lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
$(LN) libmdb.$A lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
|
||||
RPATH_1=$(SHLIB_RPATH_OPT)$(FINAL_INSTALL_MERC_LIB_DIR)
|
||||
RPATH_2=$(SHLIB_RPATH_SEP)$(FINAL_INSTALL_MERC_GC_LIB_DIR)
|
||||
|
||||
lib$(BROWSER_LIB_NAME).so : $(mdb.pic_os)
|
||||
$(LINK_SHARED_OBJ) $(ERROR_UNDEFINED) \
|
||||
-o lib$(BROWSER_LIB_NAME).so \
|
||||
$(mdb.pic_os) \
|
||||
$(RPATH_1)$(RPATH_2) \
|
||||
$(LDFLAGS) $(LDLIBS) \
|
||||
$(SOCKET_LIBRARY) $(NSL_LIBRARY) $(DL_LIBRARY) \
|
||||
$(READLINE_LIBRARIES) \
|
||||
$(SHARED_LIBS)
|
||||
lib$(BROWSER_LIB_NAME).so : libmdb.so
|
||||
rm -f lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).so
|
||||
$(LN) libmdb.so lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).so
|
||||
|
||||
$(BROWSER_LIB_NAME).init: $(deps_subdir)mdb.dep mdb.init
|
||||
cp mdb.init $(BROWSER_LIB_NAME).init
|
||||
|
||||
@@ -177,6 +177,7 @@ run_query(Options, Program) -->
|
||||
else
|
||||
{ true }
|
||||
),
|
||||
cleanup_query(Options),
|
||||
io__set_environment_var("MERCURY_OPTIONS", MERCURY_OPTIONS)
|
||||
else
|
||||
print("Unable to unset MERCURY_OPTIONS environment variable")
|
||||
@@ -411,50 +412,37 @@ compile_file(Options, Succeeded) -->
|
||||
% for inferring the type etc. of query/N
|
||||
% -O0 --no-c-optimize
|
||||
% to improve compilation speed
|
||||
% --no-verbose-make
|
||||
% don't show which files are being made
|
||||
% --output-compile-error-lines 10000
|
||||
% output all errors
|
||||
% --no-warn-det-decls-too-lax
|
||||
% --no-warn-simple-code
|
||||
% to avoid spurious warnings in the automatically
|
||||
% generated parts of the query predicate
|
||||
% --link-flags --allow-undefined
|
||||
% needed to allow the query to reference
|
||||
% symbols defined in the program
|
||||
%
|
||||
{ string__append_list([
|
||||
"mmc --grade ", grade_option, " ",
|
||||
"--infer-all ",
|
||||
"--infer-all --no-verbose-make ",
|
||||
"--pic-reg ", "-O0 --no-c-optimize ",
|
||||
"--no-warn-simple-code --no-warn-det-decls-too-lax ",
|
||||
"-c ", Options,
|
||||
" query.m"], Command) },
|
||||
invoke_system_command(Command, Succeeded0),
|
||||
( { Succeeded0 = yes } ->
|
||||
% Figure out the location of the object file,
|
||||
% which will depend on whether --use-subdirs was specified.
|
||||
% XXX This code doesn't properly handle the case when the
|
||||
% option is later overridden, e.g. if the options are
|
||||
% `--use-subdirs --no-use-subdirs'. But that case
|
||||
% is not very likely to occur in practice...
|
||||
{ string__sub_string_search(Options, "--use-subdirs", _) ->
|
||||
QueryObject = "Mercury/os/query.o"
|
||||
;
|
||||
QueryObject = "query.o"
|
||||
},
|
||||
|
||||
% We use the following options:
|
||||
% --make-shared-lib
|
||||
% needed so we can dynamically load in the
|
||||
% code
|
||||
% --allow-undefined
|
||||
% needed to allow the query to reference
|
||||
% symbols defined in the program
|
||||
% --trace
|
||||
{ string__append_list([
|
||||
"ml --grade ", grade_option,
|
||||
" --trace",
|
||||
" --allow-undefined",
|
||||
" --make-shared-lib ", Options,
|
||||
" -o libquery.so ", QueryObject], Command2) },
|
||||
invoke_system_command(Command2, Succeeded)
|
||||
;
|
||||
{ Succeeded = no }
|
||||
).
|
||||
"--output-compile-error-lines 10000 ",
|
||||
"--link-flags --allow-undefined ", Options,
|
||||
" --make libquery.so"], Command) },
|
||||
invoke_system_command(Command, Succeeded).
|
||||
|
||||
:- pred cleanup_query(options, state, state).
|
||||
:- mode cleanup_query(in, di, uo) is det.
|
||||
|
||||
cleanup_query(Options) -->
|
||||
invoke_system_command(
|
||||
string__append_list(["mmc --grade ", grade_option, " ",
|
||||
Options, " --make query.realclean"]),
|
||||
_),
|
||||
io__remove_file("query.m", _).
|
||||
|
||||
:- func grade_option = string.
|
||||
%
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
# Mmake - this is Mmake file for building the Mercury compiler
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_STATIC=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
MAIN_TARGET=mercury
|
||||
@@ -30,52 +31,10 @@ GCC_MAIN_LIBS =
|
||||
GCC_BACKEND_LIBS =
|
||||
endif
|
||||
|
||||
# Specify which compilers to use to compile the compiler.
|
||||
# Don't change these without good reason - if you want to
|
||||
# do a temporary change, change ../Mmake.params
|
||||
|
||||
M_ENV = MERCURY_INT_DIR=$(LIBRARY_DIR) \
|
||||
MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(BROWSER_DIR) \
|
||||
-I$(TRACE_DIR) \
|
||||
-I$(LIBRARY_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
SMC = $(MC) --search-directory $(BROWSER_DIR)
|
||||
MCD = $(M_ENV) $(SMC) --generate-dependencies
|
||||
MCI = $(M_ENV) $(SMC) --make-interface
|
||||
MCPI = $(M_ENV) $(SMC) --make-private-interface
|
||||
MCSI = $(M_ENV) $(SMC) --make-short-interface
|
||||
MCOI = $(M_ENV) $(SMC) --make-optimization-interface
|
||||
MCTOI = $(M_ENV) $(SMC) --make-transitive-optimization-interface
|
||||
MCG = $(M_ENV) $(SMC) --compile-to-c
|
||||
MCE = $(M_ENV) $(SMC) --errorcheck-only
|
||||
MCS = $(M_ENV) $(SMC) --split-c-files -c --cflags "$(ALL_CFLAGS)"
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
C2INIT = MERCURY_MOD_LIB_MODS="$(LIBRARY_DIR)/$(STD_LIB_NAME).init $(RUNTIME_DIR)/$(RT_LIB_NAME).init" \
|
||||
MERCURY_TRACE_LIB_MODS="$(BROWSER_DIR)/$(BROWSER_LIB_NAME).init" \
|
||||
MERCURY_MKINIT=$(UTIL_DIR)/mkinit $(SCRIPTS_DIR)/c2init
|
||||
ML = MERCURY_C_LIB_DIR=. $(SCRIPTS_DIR)/ml
|
||||
MLFLAGS = --shared --no-main --mercury-libs none
|
||||
MLLIBS = ../main.$O \
|
||||
$(TRACE_DIR)/lib$(TRACE_LIB_NAME).$A \
|
||||
$(BROWSER_DIR)/lib$(BROWSER_LIB_NAME).$A \
|
||||
$(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A \
|
||||
$(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A ` \
|
||||
case $(GRADE) in \
|
||||
*.par*.gc*.prof*) \
|
||||
echo $(BOEHM_GC_DIR)/libpar_gc_prof.$A ;; \
|
||||
*.par*.gc*) echo $(BOEHM_GC_DIR)/libpar_gc.$A ;; \
|
||||
*.gc*.prof*) echo $(BOEHM_GC_DIR)/libgc_prof.$A ;; \
|
||||
*.gc*) echo $(BOEHM_GC_DIR)/libgc.$A ;; \
|
||||
esac \
|
||||
` \
|
||||
$(GCC_BACKEND_LIBS) \
|
||||
$(MATH_LIB)
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
MTAGSFLAGS = $(EXTRA_MTAGSFLAGS)
|
||||
MCFLAGS += -I $(BROWSER_DIR)
|
||||
ALL_MLLIBS = ../main.$O $(MLLIBS) $(EXTRA_MLLIBS) \
|
||||
$(GCC_BACKEND_LIBS) $(MATH_LIB)
|
||||
MLFLAGS += --no-main --shared
|
||||
|
||||
#
|
||||
# Work-around for a fixed limit: on alpha-dec-osf3.2, if we compile with
|
||||
@@ -187,7 +146,7 @@ PP_DATE_FILES = $(PREPROCESSED_MODULES:%=$(dates_subdir)%.pp_date)
|
||||
regenerate_preprocessed_files:
|
||||
-[ -d ./$(dates_subdir) ] || mkdir -p ./$(dates_subdir)
|
||||
touch $(PREPROCESSED_FILES)
|
||||
$(MMAKE) $(PREPROCESSED_M_FILES)
|
||||
MMAKE_DIR=$(SCRIPTS_DIR) $(MMAKE) $(PREPROCESSED_M_FILES)
|
||||
|
||||
# The `.m' files for the preprocessed modules depend on the `.pp_date' files.
|
||||
$(PREPROCESSED_M_FILES): %.m: $(dates_subdir)%.pp_date
|
||||
|
||||
@@ -119,13 +119,16 @@ if test "$BOOTSTRAP_MC" != ""; then
|
||||
").
|
||||
EOF
|
||||
if
|
||||
# Test for the `--generate-mmc-deps' option.
|
||||
# Test for the `--generate-mmc-deps' and
|
||||
# `--no-mercury-stdlib-dir' options.
|
||||
echo $BOOTSTRAP_MC conftest >&AC_FD_CC 2>&1 &&
|
||||
$BOOTSTRAP_MC \
|
||||
--generate-mmc-deps \
|
||||
--halt-at-warn $link_flags conftest \
|
||||
</dev/null >&AC_FD_CC 2>&1 &&
|
||||
test "`./conftest 2>&1 | tr -d '\015'`" = "Hello, world"
|
||||
test "`./conftest 2>&1 | tr -d '\015'`" = "Hello, world" &&
|
||||
$BOOTSTRAP_MC --output-grade-string --no-mercury-stdlib-dir \
|
||||
</dev/null >&AC_FD_CC 2>&1
|
||||
then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995-2001 The University of Melbourne.
|
||||
# Copyright (C) 1995-2002 The University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU General
|
||||
# Public Licence - see the file COPYING in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
@@ -9,6 +9,7 @@
|
||||
-include Mmake.deep.params
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_STATIC=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
ifeq ("$(ENABLE_DEEP_PROFILER)","yes")
|
||||
@@ -21,51 +22,9 @@ else
|
||||
INSTALL=nothing
|
||||
endif
|
||||
|
||||
VPATH=$(LIBRARY_DIR)
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Specify which compilers to use to compile the profiler.
|
||||
# Don't change these without good reason - if you want to
|
||||
# do a temporary change, change ../Mmake.params
|
||||
|
||||
M_ENV = MERCURY_INT_DIR=$(LIBRARY_DIR) \
|
||||
MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(TRACE_DIR) \
|
||||
-I$(LIBRARY_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
MCD = $(M_ENV) $(MC) --generate-dependencies
|
||||
MCI = $(M_ENV) $(MC) --make-interface
|
||||
MCPI = $(M_ENV) $(MC) --make-private-interface
|
||||
MCSI = $(M_ENV) $(MC) --make-short-interface
|
||||
MCOI = $(M_ENV) $(MC) --make-optimization-interface
|
||||
MCTOI = $(M_ENV) $(MC) --make-transitive-optimization-interface
|
||||
MCG = $(M_ENV) $(MC) --compile-to-c
|
||||
MCS = $(M_ENV) $(MC) --split-c-files -c --cflags "$(ALL_CFLAGS)"
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
C2INIT = MERCURY_MOD_LIB_MODS="$(LIBRARY_DIR)/$(STD_LIB_NAME).init $(RUNTIME_DIR)/$(RT_LIB_NAME).init" \
|
||||
MERCURY_TRACE_LIB_MODS="$(BROWSER_DIR)/$(BROWSER_LIB_NAME).init" \
|
||||
MERCURY_MKINIT=$(UTIL_DIR)/mkinit $(SCRIPTS_DIR)/c2init
|
||||
ML = MERCURY_C_LIB_DIR=. $(SCRIPTS_DIR)/ml
|
||||
MLFLAGS = --shared --mercury-libs none
|
||||
MLLIBS = $(TRACE_DIR)/lib$(TRACE_LIB_NAME).$A \
|
||||
$(BROWSER_DIR)/lib$(BROWSER_LIB_NAME).$A \
|
||||
$(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A \
|
||||
$(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A ` \
|
||||
case $(GRADE) in \
|
||||
*.par*.gc*.prof*) \
|
||||
echo $(BOEHM_GC_DIR)/libpar_gc_prof.$A ;; \
|
||||
*.par*.gc*) echo $(BOEHM_GC_DIR)/libpar_gc.$A ;; \
|
||||
*.gc*.prof*) echo $(BOEHM_GC_DIR)/libgc_prof.$A ;; \
|
||||
*.gc*) echo $(BOEHM_GC_DIR)/libgc.$A ;; \
|
||||
esac \
|
||||
` $(MATH_LIB)
|
||||
MSL = MERCURY_SP_LIB_DIR=$(LIBRARY_DIR) $(SCRIPTS_DIR)/msl
|
||||
MNLFLAGS = -u 6000
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
MLFLAGS += --shared
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
|
||||
@@ -13,8 +13,9 @@
|
||||
EXTRA_LDFLAGS =
|
||||
EXTRA_LDLIBS =
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_RUNTIME_ONLY=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
MAIN_TARGET=mercury
|
||||
@@ -23,36 +24,6 @@ VPATH=.
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# We need to compile the library with --strict-sequential for two reasons:
|
||||
# (1) Otherwise Mercury code that is compiled with --strict-sequential
|
||||
# might do the wrong thing, because the standard library wasn't compiled
|
||||
# with --strict-sequential. (We could make it a separate grade, but
|
||||
# that's not worth it.)
|
||||
# (2) The code for get_determinism in library/exception.m relies on it
|
||||
# (in particular it relies on --no-reorder-disj).
|
||||
MCFLAGS += --strict-sequential
|
||||
|
||||
# Generate dependencies for use by `mmc --make'.
|
||||
MCFLAGS += --generate-mmc-deps
|
||||
|
||||
# Modules which use user-guided type specialization need to be
|
||||
# compiled with these flags to make sure all calls
|
||||
# to the builtin comparison routines are inlined.
|
||||
TYPE_SPEC_FLAGS = --inline-vars-threshold 10000
|
||||
MCFLAGS-list += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-map += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-tree234 += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-set += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-set_ordlist += $(TYPE_SPEC_FLAGS)
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Bug workarounds.
|
||||
|
||||
MCFLAGS-std_util += --no-halt-at-warn
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Specify which options to use to compile the library.
|
||||
# Don't change these without good reason - if you want to
|
||||
# do a temporary change, change ../Mmake.params.
|
||||
@@ -79,44 +50,47 @@ CHECK_TERM_OPTS =
|
||||
|
||||
endif
|
||||
|
||||
M_ENV = MERCURY_INT_DIR=. \
|
||||
MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(TRACE_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
MCD = $(M_ENV) $(MC) --generate-dependencies $(INTERMODULE_OPTS)
|
||||
MCI = $(M_ENV) $(MC) --make-interface $(INTERMODULE_OPTS) \
|
||||
$(ENABLE_TERM_OPTS)
|
||||
MCPI = $(M_ENV) $(MC) --make-private-interface $(INTERMODULE_OPTS) \
|
||||
$(ENABLE_TERM_OPTS)
|
||||
MCSI = $(M_ENV) $(MC) --make-short-interface $(INTERMODULE_OPTS) \
|
||||
$(ENABLE_TERM_OPTS)
|
||||
MCOI = $(M_ENV) $(MC) --make-opt-int $(INTERMODULE_OPTS) \
|
||||
$(ENABLE_TERM_OPTS)
|
||||
MCTOI = $(M_ENV) $(MC) --make-trans-opt $(INTERMODULE_OPTS) \
|
||||
$(ENABLE_TERM_OPTS)
|
||||
MCG = $(M_ENV) $(MC) --compile-to-c --trace minimum \
|
||||
$(INTERMODULE_OPTS) $(CHECK_TERM_OPTS)
|
||||
MCS = $(M_ENV) $(MC) --split-c-files -c --cflags "$(ALL_CFLAGS)" \
|
||||
$(INTERMODULE_OPTS) $(CHECK_TERM_OPTS)
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
MGNUCFLAGS = $(DLL_CFLAGS)
|
||||
LDFLAGS = -L$(BOEHM_GC_DIR) -L$(RUNTIME_DIR)
|
||||
ALL_LDFLAGS = $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
LDLIBS = -l$(RT_LIB_NAME) \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*.gc*.prof*) echo "-lpar_gc_prof" ;; \
|
||||
*.par*.gc*) echo "-lpar_gc" ;; \
|
||||
*.gc*.prof*) echo "-lgc_prof" ;; \
|
||||
*.gc*) echo "-lgc" ;; \
|
||||
esac \
|
||||
`
|
||||
ALL_LDLIBS = $(LDLIBS) $(EXTRA_LDLIBS)
|
||||
# We need to compile the library with --strict-sequential for two reasons:
|
||||
# (1) Otherwise Mercury code that is compiled with --strict-sequential
|
||||
# might do the wrong thing, because the standard library wasn't compiled
|
||||
# with --strict-sequential. (We could make it a separate grade, but
|
||||
# that's not worth it.)
|
||||
# (2) The code for get_determinism in library/exception.m relies on it
|
||||
# (in particular it relies on --no-reorder-disj).
|
||||
#
|
||||
# We compile the files in the library directory with --trace minimum by
|
||||
# default, which has no effect in non-debugging grades and causes the
|
||||
# library to be shallow traced, not deep traced, in debugging grades.
|
||||
# This is probably what most users want, and it makes it much easier to
|
||||
# maintain the expected output of the debugging test cases in debugging grades.
|
||||
#
|
||||
# Always generate dependencies for use by `mmc --make'.
|
||||
MCFLAGS += --strict-sequential --trace minimum --generate-mmc-deps \
|
||||
$(INTERMODULE_OPTS) $(ENABLE_TERM_OPTS) $(CHECK_TERM_OPTS)
|
||||
|
||||
# Modules which use user-guided type specialization need to be
|
||||
# compiled with these flags to make sure all calls
|
||||
# to the builtin comparison routines are inlined.
|
||||
TYPE_SPEC_FLAGS = --inline-vars-threshold 10000
|
||||
MCFLAGS-list += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-map += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-tree234 += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-set += $(TYPE_SPEC_FLAGS)
|
||||
MCFLAGS-set_ordlist += $(TYPE_SPEC_FLAGS)
|
||||
|
||||
# Bug workarounds.
|
||||
MCFLAGS-std_util += --no-halt-at-warn
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
CFLAGS += $(DLL_CFLAGS) -I$(TRACE_DIR)
|
||||
MLFLAGS += -R$(FINAL_INSTALL_MERC_LIB_DIR) \
|
||||
-R$(FINAL_INSTALL_MERC_GC_LIB_DIR)
|
||||
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
|
||||
LN = ln
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Stuff for Windows DLLS using gnu-win32
|
||||
@@ -266,22 +240,13 @@ lib_std: $(os_subdir)tree234.$O
|
||||
lib_std: lib$(STD_LIB_NAME).$A lib$(STD_LIB_NAME).$(EXT_FOR_SHARED_LIB)
|
||||
lib_std: $(STD_LIB_NAME).init
|
||||
|
||||
lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A : $(library.os)
|
||||
lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A : liblibrary.$A
|
||||
rm -f lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
$(AR) $(ALL_ARFLAGS) \
|
||||
$(AR_LIBFILE_OPT)lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A \
|
||||
$(library.os)
|
||||
$(RANLIB) lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
$(LN) liblibrary.$A lib$(STD_LIB_NAME)$(DLL_DEF_LIB).$A
|
||||
|
||||
RPATH_1=$(SHLIB_RPATH_OPT)$(FINAL_INSTALL_MERC_LIB_DIR)
|
||||
RPATH_2=$(SHLIB_RPATH_SEP)$(FINAL_INSTALL_MERC_GC_LIB_DIR)
|
||||
|
||||
lib$(STD_LIB_NAME).so : $(library.pic_os)
|
||||
$(LINK_SHARED_OBJ) $(ERROR_UNDEFINED) \
|
||||
-o lib$(STD_LIB_NAME).so $(library.pic_os) \
|
||||
$(RPATH_1)$(RPATH_2) \
|
||||
$(ALL_LDFLAGS) $(ALL_LDLIBS) \
|
||||
$(SHARED_LIBS)
|
||||
lib$(STD_LIB_NAME).so : liblibrary.so
|
||||
rm -f lib$(STD_LIB_NAME).so
|
||||
$(LN) liblibrary.so lib$(STD_LIB_NAME).so
|
||||
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 1995-2000 The University of Melbourne.
|
||||
# Copyright (C) 1995-2000,2002 The University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU General
|
||||
# Public Licence - see the file COPYING in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
@@ -7,55 +7,14 @@
|
||||
# Mmake - this is Mmake file for building the Mercury profiler
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_STATIC=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
|
||||
MAIN_TARGET=mercury_profile
|
||||
|
||||
VPATH=$(LIBRARY_DIR)
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Specify which compilers to use to compile the profiler.
|
||||
# Don't change these without good reason - if you want to
|
||||
# do a temporary change, change ../Mmake.params
|
||||
|
||||
M_ENV = MERCURY_INT_DIR=$(LIBRARY_DIR) \
|
||||
MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(TRACE_DIR) \
|
||||
-I$(LIBRARY_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
MCD = $(M_ENV) $(MC) --generate-dependencies
|
||||
MCI = $(M_ENV) $(MC) --make-interface
|
||||
MCPI = $(M_ENV) $(MC) --make-private-interface
|
||||
MCSI = $(M_ENV) $(MC) --make-short-interface
|
||||
MCOI = $(M_ENV) $(MC) --make-optimization-interface
|
||||
MCTOI = $(M_ENV) $(MC) --make-transitive-optimization-interface
|
||||
MCG = $(M_ENV) $(MC) --compile-to-c
|
||||
MCS = $(M_ENV) $(MC) --split-c-files -c --cflags "$(ALL_CFLAGS)"
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
C2INIT = MERCURY_MOD_LIB_MODS="$(LIBRARY_DIR)/$(STD_LIB_NAME).init $(RUNTIME_DIR)/$(RT_LIB_NAME).init" \
|
||||
MERCURY_TRACE_LIB_MODS="$(BROWSER_DIR)/$(BROWSER_LIB_NAME).init" \
|
||||
MERCURY_MKINIT=$(UTIL_DIR)/mkinit $(SCRIPTS_DIR)/c2init
|
||||
ML = MERCURY_C_LIB_DIR=. $(SCRIPTS_DIR)/ml
|
||||
MLFLAGS = --shared --mercury-libs none
|
||||
MLLIBS = $(TRACE_DIR)/lib$(TRACE_LIB_NAME).$A \
|
||||
$(BROWSER_DIR)/lib$(BROWSER_LIB_NAME).$A \
|
||||
$(LIBRARY_DIR)/lib$(STD_LIB_NAME).$A \
|
||||
$(RUNTIME_DIR)/lib$(RT_LIB_NAME).$A ` \
|
||||
case $(GRADE) in \
|
||||
*.par*.gc*.prof*) \
|
||||
echo $(BOEHM_GC_DIR)/libpar_gc_prof.$A ;; \
|
||||
*.par*.gc*) echo $(BOEHM_GC_DIR)/libpar_gc.$A ;; \
|
||||
*.gc*.prof*) echo $(BOEHM_GC_DIR)/libgc_prof.$A ;; \
|
||||
*.gc*) echo $(BOEHM_GC_DIR)/libgc.$A ;; \
|
||||
esac \
|
||||
` $(MATH_LIB)
|
||||
MSL = MERCURY_SP_LIB_DIR=$(LIBRARY_DIR) $(SCRIPTS_DIR)/msl
|
||||
MNLFLAGS = -u 6000
|
||||
MTAGS = $(SCRIPTS_DIR)/mtags
|
||||
MLFLAGS += --shared
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
|
||||
@@ -9,21 +9,14 @@
|
||||
MAIN_TARGET=runtime
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_BOEHM_GC_ONLY=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
-include Mmake.runtime.params
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
CFLAGS = -g $(DLL_CFLAGS) -DMERCURY_BOOTSTRAP_H -DMERCURY_CONF_BOOTSTRAP_H
|
||||
|
||||
MGNUC = MERCURY_ALL_C_INCL_DIRS=" \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
" \
|
||||
$(SCRIPTS_DIR)/mgnuc
|
||||
MGNUCFLAGS = --no-ansi
|
||||
MOD2C = $(SCRIPTS_DIR)/mod2c
|
||||
CFLAGS += -g $(DLL_CFLAGS) -DMERCURY_BOOTSTRAP_H -DMERCURY_CONF_BOOTSTRAP_H
|
||||
MGNUCFLAGS += --no-ansi
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
@@ -190,14 +183,8 @@ OBJS = $(CFILES:.c=.$O)
|
||||
PIC_OBJS = $(CFILES:.c=.$(EXT_FOR_PIC_OBJECTS))
|
||||
|
||||
LDFLAGS = -L$(BOEHM_GC_DIR)
|
||||
LDLIBS = \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*.gc*.prof*) echo "-lpar_gc_prof" ;; \
|
||||
*.par*.gc*) echo "-lpar_gc" ;; \
|
||||
*.gc*.prof*) echo "-lgc_prof" ;; \
|
||||
*.gc*) echo "-lgc" ;; \
|
||||
esac \
|
||||
`
|
||||
LDLIBS = $(SHARED_GC_LIBS)
|
||||
|
||||
THREADLIBS = \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*) echo "-lpthread" ;; \
|
||||
|
||||
@@ -105,7 +105,7 @@ ALL_MCDFLAGS = $(MCDFLAGS) $(EXTRA_MCDFLAGS) $(TARGET_MCFLAGS) \
|
||||
ALL_MCGFLAGS = $(MCGFLAGS) $(EXTRA_MCGFLAGS) $(TARGET_MCFLAGS) \
|
||||
$(LIB_MCFLAGS)
|
||||
ALL_MCSFLAGS = $(MCSFLAGS) $(EXTRA_MCSFLAGS) $(TARGET_MCFLAGS) \
|
||||
$(LIB_MCFLAGS)
|
||||
$(LIB_MCFLAGS) --cflags "$(ALL_CFLAGS)"
|
||||
|
||||
MCIFLAGS = $(MCFLAGS)
|
||||
MCPIFLAGS = $(MCFLAGS)
|
||||
|
||||
@@ -25,7 +25,7 @@ DEFAULT_GRADE=${MERCURY_DEFAULT_GRADE=@DEFAULT_GRADE@}
|
||||
# include the file `canonical_grade.sh-subr'
|
||||
@CANONICAL_GRADE@
|
||||
|
||||
# If you change these, you will also need to change Mmake.common.in,
|
||||
# If you change these, you will also need to change Mmake.workspace
|
||||
# scripts/ml.in, tools/bootcheck, tools/binary, tools/binary_step and
|
||||
# tools/linear.
|
||||
RT_LIB_NAME=mer_rt
|
||||
|
||||
@@ -80,7 +80,7 @@ DL_LIBRARY="@DL_LIBRARY@"
|
||||
# Likewise for -lreadline -l{termcap,curses,ncurses}
|
||||
READLINE_LIBRARIES="@READLINE_LIBRARIES@"
|
||||
|
||||
# If you change these, you will also need to change Mmake.common.in,
|
||||
# If you change these, you will also need to change Mmake.workspace,
|
||||
# scripts/c2init.in, tools/bootcheck, tools/binary, tools/binary_step
|
||||
# and tools/linear.
|
||||
RT_LIB_NAME=mer_rt
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
# Set up to test a particular workspace.
|
||||
ifdef WORKSPACE
|
||||
|
||||
# Make sure we don't get the installed versions of the libraries.
|
||||
LINK_STATIC = yes
|
||||
include $(WORKSPACE)/Mmake.workspace
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# Note: Mmake lets you override MCFLAGS for a particular file by setting
|
||||
# MCFLAGS-foo. Similarly, you can override GRADEFLAGS for a particular
|
||||
|
||||
@@ -63,8 +63,8 @@ MCFLAGS-tabled_read_decl = --trace-table-io-decl
|
||||
# The optimization level also affects stack frame sizes.
|
||||
MCFLAGS-nondet_stack = -O2 --no-reclaim-heap-on-failure
|
||||
|
||||
MCFLAGS = --trace deep
|
||||
MLFLAGS = --trace
|
||||
MCFLAGS += --trace deep
|
||||
MLFLAGS += --trace
|
||||
|
||||
# We need to use shared libraries for interactive queries to work.
|
||||
# The following is necessary for shared libraries to work on Linux.
|
||||
@@ -72,10 +72,11 @@ GRADEFLAGS-interactive = --pic-reg
|
||||
MLFLAGS-interactive = --shared
|
||||
|
||||
# Since the `interactive' test case requires the use of shared libraries,
|
||||
# this means it won't work properly if MERCURY_LIBS is set to point
|
||||
# to static libraries (as is done by tools/bootcheck and tools/lmc).
|
||||
# So we only enable it if MERCURY_LIBS is not set.
|
||||
ifeq "$(origin MERCURY_LIBS)" "undefined"
|
||||
# this means it won't work properly if the static libraries are linked
|
||||
# (as is done by tools/bootcheck and tools/lmc).
|
||||
# So we only enable it if LINK_STATIC is not set.
|
||||
LINK_STATIC ?= no
|
||||
ifeq ($(LINK_STATIC),no)
|
||||
RETRY_PROGS := $(RETRY_PROGS) interactive
|
||||
endif
|
||||
|
||||
@@ -299,13 +300,24 @@ type_desc_test.out: type_desc_test type_desc_test.inp
|
||||
# to have been built.
|
||||
|
||||
ifeq ($(MMAKE_USE_SUBDIRS),yes)
|
||||
INTERACTIVE_INP = interactive.inp.subdirs
|
||||
USE_SUBDIRS_OPT = --use-subdirs
|
||||
else
|
||||
INTERACTIVE_INP = interactive.inp.nosubdirs
|
||||
USE_SUBDIRS_OPT =
|
||||
endif
|
||||
|
||||
interactive.out.orig: interactive $(INTERACTIVE_INP) $(interactive.ints)
|
||||
$(MDB) ./interactive < $(INTERACTIVE_INP) > interactive.out.orig 2>&1
|
||||
# We need $(...) style command substitution for the rule below.
|
||||
# (MC_MAKE_FLAGS can contain `...` style command substitution,
|
||||
# which can't be nested).
|
||||
SHELL=/usr/local/bin/bash
|
||||
|
||||
interactive.out.orig: interactive interactive.inp $(interactive.ints)
|
||||
echo "echo on" > interactive.inp.tmp
|
||||
echo mmc_options $(USE_SUBDIRS_OPT) \
|
||||
$$(echo $(MC_MAKE_FLAGS) $(ALL_MCFLAGS)) \
|
||||
--trace minimum >> interactive.inp.tmp
|
||||
cat interactive.inp >> interactive.inp.tmp
|
||||
$(MDB) ./interactive < interactive.inp.tmp > interactive.out.orig 2>&1
|
||||
rm -f interactive.inp.tmp
|
||||
|
||||
# We pipe the output through sed to avoid differences for `--use-subdirs',
|
||||
# and to remove some spurious warnings that `gcc' and `ld' issue.
|
||||
@@ -315,7 +327,7 @@ interactive.out.orig: interactive $(INTERACTIVE_INP) $(interactive.ints)
|
||||
interactive.out: interactive.out.orig
|
||||
cat interactive.out.orig | \
|
||||
sed \
|
||||
-e '/mdb> mmc_options --use-subdirs/d' \
|
||||
-e '/mdb> mmc_options/d' \
|
||||
-e '/In file included from \/home\/mercury\/public\/.a\/lib\/mercury\/inc\/mercury_trace_base.h:[0-9]*,$$/N' \
|
||||
-e 's/In file included from \/home\/mercury\/public\/.a\/lib\/mercury\/inc\/mercury_trace_base.h:[0-9]*,.//' \
|
||||
-e '/ from \/home\/mercury\/public\/.a\/lib\/mercury\/inc\/mercury_wrapper.h:[0-9]*,$$/N' \
|
||||
|
||||
@@ -51,8 +51,8 @@ NONWORKING_DECLARATIVE_PROGS= \
|
||||
ite_2 \
|
||||
solutions
|
||||
|
||||
MCFLAGS = --trace decl
|
||||
MLFLAGS = --trace
|
||||
MCFLAGS += --trace decl
|
||||
MLFLAGS += --trace
|
||||
|
||||
MCFLAGS-deep_sub=--trace deep
|
||||
MCFLAGS-dependency=--trace rep
|
||||
|
||||
@@ -167,6 +167,7 @@ No (more) solutions.
|
||||
<stdin>:001: argument has type `int',
|
||||
<stdin>:001: constant `"foo"' has type `string'.
|
||||
For more information, try recompiling with `-E'.
|
||||
** Error making `query.c'.
|
||||
qperm([1,2,"foo"], List).
|
||||
Compilation error(s) occurred.
|
||||
?- <stdin>:026: Inferred :- pred query((list:list(int))).
|
||||
@@ -181,6 +182,7 @@ Compilation error(s) occurred.
|
||||
<stdin>:026: mode error: variable `HeadVar__2' has instantiatedness `free',
|
||||
<stdin>:026: expected instantiatedness was `ground'.
|
||||
For more information, try recompiling with `-E'.
|
||||
** Error making `query.c'.
|
||||
qperm(List, [1]).
|
||||
Compilation error(s) occurred.
|
||||
?- quit.
|
||||
|
||||
@@ -169,6 +169,7 @@ No (more) solutions.
|
||||
<stdin>:001: argument has type `int',
|
||||
<stdin>:001: constant `"foo"' has type `string'.
|
||||
For more information, try recompiling with `-E'.
|
||||
** Error making `query.c'.
|
||||
qperm([1,2,"foo"], List).
|
||||
Compilation error(s) occurred.
|
||||
?- <stdin>:026: Inferred :- pred query((list:list(int))).
|
||||
@@ -183,6 +184,7 @@ Compilation error(s) occurred.
|
||||
<stdin>:026: mode error: variable `HeadVar__2' has instantiatedness `free',
|
||||
<stdin>:026: expected instantiatedness was `ground'.
|
||||
For more information, try recompiling with `-E'.
|
||||
** Error making `query.c'.
|
||||
qperm(List, [1]).
|
||||
Compilation error(s) occurred.
|
||||
?- quit.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
echo on
|
||||
print *
|
||||
|
||||
print *
|
||||
@@ -1,76 +0,0 @@
|
||||
echo on
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
level 1
|
||||
print *
|
||||
up 1
|
||||
vars
|
||||
print *
|
||||
|
||||
print HeadVar__1
|
||||
print HeadVar__2
|
||||
print HeadVar__3
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
print *
|
||||
|
||||
goto -a 20
|
||||
stack
|
||||
stack -d
|
||||
print *
|
||||
#
|
||||
# Test interactive queries.
|
||||
#
|
||||
mmc_options --use-subdirs
|
||||
query interactive list
|
||||
append(X, Y, ['a', 'b', 'c']).
|
||||
qperm([1,2,3], List).
|
||||
qperm([1,2,3], List), List = [2 | _].
|
||||
qperm([1,2,3], List), List = [4 | _].
|
||||
qperm([1,2,"foo"], List).
|
||||
qperm(List, [1]).
|
||||
quit.
|
||||
cc_query interactive list
|
||||
append(X, Y, ['a', 'b', 'c']).
|
||||
qperm([1,2,3], List).
|
||||
qperm([1,2,3], List), List = [2 | _].
|
||||
qperm([1,2,3], List), List = [4 | _].
|
||||
quit.
|
||||
io_query interactive list
|
||||
main.
|
||||
if { append(X, Y, ['a', 'b', 'c']) } then print("X = "), print(X), print(", Y = "), print(Y), nl else print("No solution\n").
|
||||
if { qperm([1,2,3], List) } then print(List), nl else [].
|
||||
if { qperm([1,2,3], List), List = [2 | _] } then print(List), nl else { true }.
|
||||
if { qperm([1,2,3], List), List = [4 | _] } then print(List), nl else print("No solution, as expected."), io__nl.
|
||||
quit.
|
||||
retry
|
||||
print *
|
||||
finish -a
|
||||
register --quiet
|
||||
break print_list
|
||||
break qdelete
|
||||
continue -a
|
||||
step -aS 5
|
||||
disable 1
|
||||
continue -n
|
||||
continue -n -S
|
||||
@@ -1,3 +1,5 @@
|
||||
include ../Mmake.common
|
||||
|
||||
MCFLAGS=#--pd --no-inlining -d 35 -D petdr #-d 99
|
||||
#GRADE=asm_fast.gc.prof
|
||||
MLFLAGS=--static
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
include ../Mmake.common
|
||||
-include ../Mmake.params
|
||||
|
||||
main_target: check
|
||||
|
||||
@@ -61,7 +61,7 @@ Options:
|
||||
"
|
||||
|
||||
# If you change this, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, Mmake.common.in, tools/bootcheck, tools/binary_step
|
||||
# scripts/c2init.in, Mmake.workspace, tools/bootcheck, tools/binary_step
|
||||
# and tools/linear.
|
||||
STD_LIB_NAME=mer_std
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ Options:
|
||||
"
|
||||
|
||||
# If you change this, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, Mmake.common.in, tools/bootcheck, tools/binary
|
||||
# scripts/c2init.in, Mmake.workspace, tools/bootcheck, tools/binary
|
||||
# and tools/linear.
|
||||
STD_LIB_NAME=mer_std
|
||||
|
||||
|
||||
@@ -105,6 +105,7 @@ Options:
|
||||
Use this option on systems which don't support symbolic links.
|
||||
"
|
||||
|
||||
unset WORKSPACE
|
||||
testdirs=""
|
||||
extras=false
|
||||
jfactor=""
|
||||
@@ -143,7 +144,7 @@ then
|
||||
fi
|
||||
|
||||
# If you change these, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, Mmake.common.in, tools/binary, tools/binary_step
|
||||
# scripts/c2init.in, Mmake.workspace, tools/binary, tools/binary_step
|
||||
# and tools/linear.
|
||||
RT_LIB_NAME=mer_rt
|
||||
STD_LIB_NAME=mer_std
|
||||
@@ -395,8 +396,6 @@ then
|
||||
|
||||
MERCURY_COMPILER=$root/compiler/mercury_compile
|
||||
export MERCURY_COMPILER
|
||||
MERCURY_INT_DIR=$root/stage2/library
|
||||
export MERCURY_INT_DIR
|
||||
|
||||
[ -d stage2 ] || mkdir stage2
|
||||
if $keep_stage_2
|
||||
@@ -632,8 +631,6 @@ then
|
||||
|
||||
MERCURY_COMPILER=$root/stage2/compiler/mercury_compile
|
||||
export MERCURY_COMPILER
|
||||
MERCURY_INT_DIR=$root/stage3/library
|
||||
export MERCURY_INT_DIR
|
||||
|
||||
[ -d stage3 ] || mkdir stage3
|
||||
if $keep_stage_3
|
||||
@@ -877,48 +874,12 @@ then
|
||||
stage2_insert=""
|
||||
fi
|
||||
|
||||
MERCURY_INT_DIR=$root/${stage2_insert}library
|
||||
export MERCURY_INT_DIR
|
||||
|
||||
if test "$test_grade" = ""; then
|
||||
gc_grade=`scripts/ml --print-gc-grade`
|
||||
else
|
||||
gc_grade=`scripts/ml --grade $test_grade --print-gc-grade`
|
||||
fi
|
||||
MERCURY_LIBS="
|
||||
`$CYGPATH $root/${stage2_insert}trace/lib$TRACE_LIB_NAME.$A`
|
||||
`$CYGPATH $root/${stage2_insert}browser/lib$BROWSER_LIB_NAME.$A`
|
||||
`$CYGPATH $root/${stage2_insert}library/lib$STD_LIB_NAME.$A`
|
||||
`$CYGPATH $root/${stage2_insert}runtime/lib$RT_LIB_NAME.$A`
|
||||
`$CYGPATH $root/${stage2_insert}boehm_gc/lib$gc_grade.$A`
|
||||
-lm"
|
||||
export MERCURY_LIBS
|
||||
|
||||
MERCURY_ALL_C_INCL_DIRS="-I$root/${stage2_insert}trace
|
||||
-I$root/${stage2_insert}library
|
||||
-I$root/${stage2_insert}runtime
|
||||
-I$root/${stage2_insert}boehm_gc
|
||||
-I$root/${stage2_insert}boehm_gc/include"
|
||||
export MERCURY_ALL_C_INCL_DIRS
|
||||
MERCURY_ALL_MC_C_INCL_DIRS="
|
||||
--c-include-directory $root/${stage2_insert}trace
|
||||
--c-include-directory $root/${stage2_insert}library
|
||||
--c-include-directory $root/${stage2_insert}runtime
|
||||
--c-include-directory $root/${stage2_insert}boehm_gc
|
||||
--c-include-directory $root/${stage2_insert}boehm_gc/include"
|
||||
export MERCURY_ALL_MC_C_INCL_DIRS
|
||||
WORKSPACE="$root/${stage2_insert}"
|
||||
export WORKSPACE
|
||||
|
||||
MMAKE_DIR="$root/${stage2_insert}scripts"
|
||||
export MMAKE_DIR
|
||||
|
||||
MERCURY_MOD_LIB_MODS="
|
||||
$root/${stage2_insert}library/$STD_LIB_NAME.init
|
||||
$root/${stage2_insert}runtime/$RT_LIB_NAME.init"
|
||||
export MERCURY_MOD_LIB_MODS
|
||||
MERCURY_TRACE_LIB_MODS="
|
||||
$root/${stage2_insert}browser/$BROWSER_LIB_NAME.init"
|
||||
export MERCURY_TRACE_LIB_MODS
|
||||
|
||||
# for mkinit, mmc, mgnuc, ml etc
|
||||
PATH=$root/${stage2_insert}util:$root/${stage2_insert}scripts:$PATH
|
||||
export PATH
|
||||
|
||||
@@ -44,7 +44,7 @@ Options:
|
||||
"
|
||||
|
||||
# If you change this, you will also need to change scripts/ml.in,
|
||||
# scripts/c2init.in, Mmake.common.in, tools/bootcheck, tools/binary
|
||||
# scripts/c2init.in, Mmake.workspace, tools/bootcheck, tools/binary
|
||||
# and tools/binary_step.
|
||||
STD_LIB_NAME=mer_std
|
||||
|
||||
|
||||
@@ -10,21 +10,15 @@
|
||||
MAIN_TARGET=trace
|
||||
|
||||
MERCURY_DIR=..
|
||||
LINK_STDLIB_ONLY=yes
|
||||
include $(MERCURY_DIR)/Mmake.common
|
||||
-include Mmake.trace.params
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
M_ENV = MERCURY_ALL_C_INCL_DIRS="\
|
||||
-I$(BROWSER_DIR) \
|
||||
-I$(LIBRARY_DIR) \
|
||||
-I$(RUNTIME_DIR) \
|
||||
-I$(BOEHM_GC_DIR) \
|
||||
-I$(BOEHM_GC_DIR)/include \
|
||||
"
|
||||
CFLAGS = -g $(DLL_CFLAGS) -DMERCURY_BOOTSTRAP_H -DMERCURY_CONF_BOOTSTRAP_H
|
||||
MGNUC = $(M_ENV) $(SCRIPTS_DIR)/mgnuc
|
||||
MGNUCFLAGS = --no-ansi
|
||||
CFLAGS += -I$(BROWSER_DIR) -g $(DLL_CFLAGS) \
|
||||
-DMERCURY_BOOTSTRAP_H -DMERCURY_CONF_BOOTSTRAP_H
|
||||
MGNUCFLAGS += --no-ansi
|
||||
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
@@ -87,16 +81,8 @@ OBJ_CHECKS = $(OBJS:%=%.obj_check)
|
||||
|
||||
LDFLAGS = -L$(BROWSER_DIR) -L$(LIBRARY_DIR) \
|
||||
-L$(RUNTIME_DIR) -L$(BOEHM_GC_DIR)
|
||||
LDLIBS = -l$(BROWSER_LIB_NAME) -l$(STD_LIB_NAME) -l$(RT_LIB_NAME) \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*.gc*.prof*) echo "-lpar_gc_prof" ;; \
|
||||
*.par*.gc*) echo "-lpar_gc" ;; \
|
||||
*.gc*.prof*) echo "-lgc_prof" ;; \
|
||||
*.gc*) echo "-lgc" ;; \
|
||||
esac \
|
||||
` \
|
||||
$(SOCKET_LIBRARY) $(NSL_LIBRARY) $(DL_LIBRARY) \
|
||||
$(READLINE_LIBRARIES)
|
||||
LDLIBS = -l$(BROWSER_LIB_NAME) $(MLLIBS) $(SOCKET_LIBRARY) \
|
||||
$(NSL_LIBRARY) $(DL_LIBRARY) $(READLINE_LIBRARIES)
|
||||
THREADLIBS = \
|
||||
` case "$(GRADE)" in \
|
||||
*.par*) echo "-lpthread" ;; \
|
||||
|
||||
Reference in New Issue
Block a user