mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-14 21:35:49 +00:00
Estimated hours taken: 0.75 Mmakefile: */Mmakefile: */*/Mmakefile: */*/*/Mmakefile: Use `clean_local' instead of `clean' and `realclean_local' instead of `realclean' where appropriate. This is necessary now that `realclean' does not depend on `clean'.
186 lines
5.6 KiB
Plaintext
186 lines
5.6 KiB
Plaintext
#-----------------------------------------------------------------------------#
|
|
# Copyright (C) 1998-1999 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.
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# browser/Mmakefile - this is the Mmakefile for building the Mercury
|
|
# browser library, which also includes other functionality needed
|
|
# by Mercury debuggers.
|
|
|
|
# Since the code in this directory is intended to be invoked only from
|
|
# the trace library, which turns off tracing in the Mercury code it calls,
|
|
# compiling the modules in this directory with tracing on only makes
|
|
# the generated code much bigger. However, since all Mercury code
|
|
# in an executable must be of the same grade, we need to be able to
|
|
# compile the modules in this directory in debug grades as well.
|
|
|
|
MERCURY_DIR=..
|
|
include $(MERCURY_DIR)/Mmake.common
|
|
|
|
MAIN_TARGET=library
|
|
|
|
VPATH=$(LIBRARY_DIR)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# If we're going to generate both `.o' files and `.pic_o' files, then
|
|
# don't remove the intermediate `.c' files.
|
|
RM_C = $(LIBRARY_RM_C)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# 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$(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 \
|
|
*.gc*.prof*) echo "-lgc_prof" ;; \
|
|
*.gc*) echo "-lgc" ;; \
|
|
esac \
|
|
`
|
|
|
|
MTAGS = $(SCRIPTS_DIR)/mtags
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# Stuff for Windows DLLS using gnu-win32
|
|
|
|
ifeq ($(USE_DLLS),yes)
|
|
|
|
DLL_CFLAGS = -Dlib$(BROWSER_LIB_NAME)_DEFINE_DLL
|
|
|
|
include $(MERCURY_DIR)/Makefile.DLLs
|
|
|
|
else
|
|
|
|
DLL_CFLAGS =
|
|
DLL_DEF_LIB =
|
|
|
|
endif
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# targets
|
|
|
|
.PHONY: all
|
|
all : library browse_test
|
|
|
|
.PHONY: depend
|
|
depend : browser_library.depend browse_test.depend
|
|
|
|
.PHONY: check
|
|
check : browser_library.check
|
|
|
|
.PHONY: all-ints
|
|
all-ints: ints int3s
|
|
|
|
.PHONY: ints
|
|
ints : browser_library.ints browse_test.ints
|
|
|
|
.PHONY: int3s
|
|
int3s : browser_library.int3s
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
tags : $(MTAGS) $(browser_library.ms)
|
|
$(MTAGS) $(browser_library.ms) ../library/*.m
|
|
|
|
browser_library.stats : $(COMPILER_DIR)/source_stats.awk $(browser_library.ms)
|
|
awk -f $(COMPILER_DIR)/source_stats.awk \
|
|
`vpath_find $(browser_library.ms)` > $@
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: dates
|
|
dates :
|
|
touch $(browser_library.dates)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: os cs
|
|
os: $(browser_library.os)
|
|
cs: $(browser_library.cs)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: library
|
|
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 : $(browser_library.os)
|
|
rm -f lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).a
|
|
ar cr lib$(BROWSER_LIB_NAME)$(DLL_DEF_LIB).a $(browser_library.os)
|
|
$(RANLIB) 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 : $(browser_library.pic_os)
|
|
$(LINK_SHARED_OBJ) -o lib$(BROWSER_LIB_NAME).so \
|
|
$(browser_library.pic_os) \
|
|
$(RPATH_1)$(RPATH_2) \
|
|
$(LDFLAGS) $(LDLIBS) \
|
|
$(SHARED_LIBS)
|
|
|
|
$(BROWSER_LIB_NAME).init: $(deps_subdir)browser_library.dep
|
|
for file in $(browser_library.ms); do \
|
|
grep '^INIT ' $$file; \
|
|
echo "INIT mercury__`basename $$file .m`__init"; \
|
|
done > $(BROWSER_LIB_NAME).init
|
|
|
|
# Ensure we recompile browser_library__version if VERSION is changed.
|
|
$(os_subdir)browser_library.o \
|
|
$(os_subdir)browser_library.pic_o \
|
|
: $(RUNTIME_DIR)/mercury_conf.h
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
realclean_local:
|
|
rm -f lib$(BROWSER_LIB_NAME).a lib$(BROWSER_LIB_NAME).so \
|
|
$(BROWSER_LIB_NAME).init
|
|
rm -f tags
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# Installation targets
|
|
|
|
.PHONY: install
|
|
install: install_init install_library
|
|
|
|
.PHONY: install_dirs
|
|
install_dirs:
|
|
[ -d $(INSTALL_MODULE_DIR) ] || mkdir -p $(INSTALL_MODULE_DIR)
|
|
[ -d $(INSTALL_MERC_LIB_DIR) ] || mkdir -p $(INSTALL_MERC_LIB_DIR)
|
|
|
|
.PHONY: install_init
|
|
install_init: $(BROWSER_LIB_NAME).init install_dirs
|
|
cp `vpath_find $(BROWSER_LIB_NAME).init` $(INSTALL_MODULE_DIR)
|
|
|
|
.PHONY: install_library
|
|
install_library: lib$(BROWSER_LIB_NAME).a \
|
|
lib$(BROWSER_LIB_NAME).$(EXT_FOR_SHARED_LIB) install_dirs
|
|
cp `vpath_find lib$(BROWSER_LIB_NAME).a \
|
|
lib$(BROWSER_LIB_NAME).$(EXT_FOR_SHARED_LIB)` \
|
|
$(INSTALL_MERC_LIB_DIR)
|