mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 01:13:30 +00:00
tools/bootcheck:
Build the dependencies for auxiliary programs, and the programs themselves,
in the browser and profiler directories.
Mmakefile:
Provide targets for bootcheck to use to make dependencies for the
auxiliary programs in the browser and profiler directories.
browser/Mmakefile:
Take the two aux programs in this directory out of the "all" target.
Due to past bitrot, one gets errors during compilation, the other
during linking. (The "all" target is not used by default, which is why
this has not been a problem.)
Add depend_aux and aux targets that should build these programs
if they are ever fixed. The aux target is empty for now; the depend_aux
target does make dependencies for both aux programs (since that still
works, and we want to keep it that way).
profiler/Mmakefile:
Add depend_aux and aux targets that build the one auxiliary program
in this directory that works now. Add a comment about the other program
that doesn't.
864 lines
26 KiB
Plaintext
864 lines
26 KiB
Plaintext
#-----------------------------------------------------------------------------#
|
|
# vim: ts=8 sw=8 noexpandtab
|
|
#-----------------------------------------------------------------------------#
|
|
# Copyright (C) 1995-2012 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.
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# Mmakefile - the top-level Mmake file for the Mercury implementation
|
|
|
|
# We need to explicitly include scripts/Mmake.vars here, even though `mmake'
|
|
# includes that file automatically, to make sure that we get the right
|
|
# version of that file. The settings in that file include values set
|
|
# by parameters to configure (e.g. --prefix), and we need to make sure
|
|
# that we pick up the values from the Mmake.vars that we're going to install,
|
|
# rather than from the old version of mmake that we're installing with,
|
|
# which may have been configured with a different --prefix.
|
|
include scripts/Mmake.vars
|
|
|
|
MAIN_TARGET=all
|
|
|
|
MERCURY_DIR=.
|
|
include Mmake.common
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# NOTE: if you add another subdirectory here, then you may need to also update
|
|
# scripts/prepare_tmp_dir.in and the `tar' target below.
|
|
# If the directory you are adding will contain C files generated by the
|
|
# Mercury compiler when included in the source distribution, then you will
|
|
# also need to update the code in configure.ac that deletes those C files
|
|
# before reinstalling the compiler in a more efficient grade.
|
|
|
|
SUBDIRS = \
|
|
scripts \
|
|
util \
|
|
boehm_gc \
|
|
runtime \
|
|
robdd \
|
|
library \
|
|
trace \
|
|
ssdb \
|
|
mdbcomp \
|
|
browser \
|
|
compiler \
|
|
doc \
|
|
slice \
|
|
profiler \
|
|
deep_profiler \
|
|
tools \
|
|
mfilterjavac
|
|
|
|
MMAKEFLAGS =
|
|
|
|
# We include ../../mfilterjavac in this path because $SUBDIR_MMAKE is used
|
|
# from the grade install directories, and we need mfilterjavac in our path
|
|
# when executing in install_grade_dir.java/library and others.
|
|
SUBDIR_MMAKE = \
|
|
PATH=../scripts:../util:../mfilterjavac:../../mfilterjavac:$$PATH \
|
|
MMAKE_VPATH=. \
|
|
MMAKE_DIR=../scripts \
|
|
DESTDIR=$(DESTDIR) \
|
|
../scripts/mmake $(MMAKEFLAGS)
|
|
|
|
SUBSUBDIR_MMAKE = PATH=../../scripts:../../util:../../mfilterjavac:$$PATH \
|
|
MMAKE_VPATH=. \
|
|
MMAKE_DIR=../../scripts \
|
|
DESTDIR=$(DESTDIR) \
|
|
../../scripts/mmake $(MMAKEFLAGS)
|
|
|
|
GENERATED_DOCS = README INSTALL WORK_IN_PROGRESS TODO
|
|
|
|
# If you change these, you will also need to change the files indicated
|
|
# in scripts/c2init.in.
|
|
RT_LIB_NAME = mer_rt
|
|
STD_LIB_NAME = mer_std
|
|
TRACE_LIB_NAME = mer_trace
|
|
EVENTSPEC_LIB_NAME = mer_eventspec
|
|
SSDB_LIB_NAME = mer_ssdb
|
|
MDBCOMP_LIB_NAME = mer_mdbcomp
|
|
BROWSER_LIB_NAME = mer_browser
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# `mmake dep' ensures that the .dep files exist;
|
|
# `mmake depend' forces them to be remade to ensure that they are up-to-date.
|
|
|
|
.PHONY: dep
|
|
dep: dep_library \
|
|
dep_ssdb \
|
|
dep_mdbcomp \
|
|
dep_browser \
|
|
dep_compiler \
|
|
dep_slice \
|
|
dep_profiler \
|
|
dep_deep_profiler \
|
|
dep_mfilterjavac
|
|
|
|
.PHONY: dep_library
|
|
dep_library: library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
|
|
library/$(deps_subdir)$(STD_LIB_NAME).dep:
|
|
+cd library && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: dep_mdbcomp
|
|
dep_mdbcomp: \
|
|
mdbcomp/$(deps_subdir)$(MDBCOMP_LIB_NAME).dep
|
|
|
|
mdbcomp/$(deps_subdir)$(MDBCOMP_LIB_NAME).dep:
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) $(MDBCOMP_LIB_NAME).depend
|
|
|
|
.PHONY: dep_browser
|
|
dep_browser: \
|
|
browser/$(deps_subdir)$(BROWSER_LIB_NAME).dep
|
|
|
|
.PHONY: dep_browser_aux
|
|
dep_browser_aux: \
|
|
browser/$(deps_subdir)browse_test.dep \
|
|
browser/$(deps_subdir)declarative_test.dep
|
|
|
|
.PHONY: dep_browser_all
|
|
dep_browser_all: \
|
|
browser/$(deps_subdir)$(BROWSER_LIB_NAME).dep \
|
|
browser/$(deps_subdir)browse_test.dep \
|
|
browser/$(deps_subdir)declarative_test.dep
|
|
|
|
browser/$(deps_subdir)$(BROWSER_LIB_NAME).dep:
|
|
+cd browser && $(SUBDIR_MMAKE) $(BROWSER_LIB_NAME).depend
|
|
|
|
browser/$(deps_subdir)browse_test.dep:
|
|
+cd browser && $(SUBDIR_MMAKE) browse_test.depend
|
|
|
|
browser/$(deps_subdir)declarative_test.dep:
|
|
+cd browser && $(SUBDIR_MMAKE) declarative_test.depend
|
|
|
|
.PHONY: dep_ssdb
|
|
dep_ssdb: \
|
|
ssdb/$(deps_subdir)$(SSDB_LIB_NAME).dep
|
|
|
|
ssdb/$(deps_subdir)$(SSDB_LIB_NAME).dep:
|
|
+cd ssdb && $(SUBDIR_MMAKE) $(SSDB_LIB_NAME).depend
|
|
|
|
.PHONY: dep_compiler
|
|
dep_compiler: compiler/$(deps_subdir)mercury_compile.dep
|
|
|
|
compiler/$(deps_subdir)mercury_compile.dep: library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
+cd compiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: dep_slice
|
|
dep_slice: slice/$(deps_subdir)mcov.dep \
|
|
slice/$(deps_subdir)mslice.dep \
|
|
slice/$(deps_subdir)mdice.dep \
|
|
slice/$(deps_subdir)mtc_union.dep \
|
|
slice/$(deps_subdir)mtc_diff.dep
|
|
|
|
slice/$(deps_subdir)mcov.dep \
|
|
slice/$(deps_subdir)mslice.dep \
|
|
slice/$(deps_subdir)mdice.dep \
|
|
slice/$(deps_subdir)mtc_union.dep \
|
|
slice/$(deps_subdir)mtc_diff.dep:
|
|
+cd slice && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: dep_profiler
|
|
dep_profiler: profiler/$(deps_subdir)mercury_profile.dep
|
|
|
|
profiler/$(deps_subdir)mercury_profile.dep: \
|
|
library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
+cd profiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: dep_profiler_aux
|
|
dep_profiler_aux: profiler/$(deps_subdir)/demangle_test.dep
|
|
|
|
profiler/$(deps_subdir)/demangle_test.dep: \
|
|
library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
+cd profiler && $(SUBDIR_MMAKE) depend_aux
|
|
|
|
.PHONY: dep_deep_profiler
|
|
dep_deep_profiler: deep_profiler/$(deps_subdir)mdprof_cgi.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_test.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_dump.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_create_feedback.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_report_feedback.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_procrep.dep
|
|
|
|
deep_profiler/$(deps_subdir)mdprof_cgi.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_test.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_dump.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_create_feedback.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_report_feedback.dep \
|
|
deep_profiler/$(deps_subdir)mdprof_procrep.dep: \
|
|
library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: dep_mfilterjavac
|
|
dep_mfilterjavac: mfilterjavac/$(deps_subdir)mfilterjavac.dep
|
|
|
|
mfilterjavac/$(deps_subdir)mfilterjavac.dep: \
|
|
library/$(deps_subdir)$(STD_LIB_NAME).dep
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE) depend
|
|
|
|
# depend_library MUST be done before depend_compiler and depend_profiler
|
|
|
|
.PHONY: depend
|
|
depend: depend_library \
|
|
depend_mdbcomp \
|
|
depend_browser \
|
|
depend_ssdb \
|
|
depend_compiler \
|
|
depend_slice \
|
|
depend_profiler \
|
|
depend_deep_profiler \
|
|
depend_mfilterjavac
|
|
|
|
.PHONY: depend_library
|
|
depend_library:
|
|
+cd library && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_mdbcomp
|
|
depend_mdbcomp:
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_browser
|
|
depend_browser:
|
|
+cd browser && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_ssdb
|
|
depend_ssdb:
|
|
+cd ssdb && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_compiler
|
|
depend_compiler:
|
|
+cd compiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_slice
|
|
depend_slice:
|
|
+cd slice && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_profiler
|
|
depend_profiler:
|
|
+cd profiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_deep_profiler
|
|
depend_deep_profiler:
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) depend
|
|
|
|
.PHONY: depend_mfilterjavac
|
|
depend_mfilterjavac:
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE) depend
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# NOTE: there are two targets that concern the util directory here. The first
|
|
# is the "util_no_rt" target (short for "util no runtime") and the second is the
|
|
# "util" target. The first target builds those programs in the util directory
|
|
# that do *not* depend on the runtime directory, at present just mfiltercc.
|
|
# The second target builds the rest. Things are arranged in this fashion so
|
|
# that when building the source distribution we can build mfiltercc before
|
|
# it is required.
|
|
|
|
.PHONY: all
|
|
all: $(GENERATED_DOCS) util_no_rt $(SUBDIRS)
|
|
|
|
.PHONY: util_no_rt
|
|
util_no_rt: scripts
|
|
+cd util && $(SUBDIR_MMAKE) mfiltercc$(EXT_FOR_EXE)
|
|
|
|
.PHONY: util
|
|
util: scripts runtime
|
|
+cd util && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: scripts
|
|
scripts:
|
|
+cd scripts && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: boehm_gc
|
|
boehm_gc: scripts util_no_rt
|
|
+gc_grade=`scripts/ml --grade $(GRADE) --print-gc-grade`; \
|
|
cd boehm_gc && $(SUBDIR_MMAKE) GC_GRADE=$$gc_grade
|
|
|
|
.PHONY: runtime
|
|
runtime: scripts util_no_rt boehm_gc
|
|
+cd runtime && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: robdd
|
|
robdd: scripts boehm_gc runtime
|
|
cd robdd && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: library
|
|
library: dep_library scripts util boehm_gc runtime
|
|
+cd library && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: mdbcomp
|
|
mdbcomp: dep_mdbcomp scripts util boehm_gc runtime library
|
|
+cd mdbcomp && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: browser
|
|
browser: dep_browser scripts util boehm_gc runtime library mdbcomp
|
|
+cd browser && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: ssdb
|
|
ssdb: dep_ssdb scripts boehm_gc runtime library mdbcomp browser
|
|
+cd ssdb && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: runtime
|
|
trace: scripts boehm_gc runtime library mdbcomp browser
|
|
+cd trace && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: compiler
|
|
compiler: dep_compiler scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd compiler && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: libmmc
|
|
libmmc: dep_compiler scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd compiler && $(SUBDIR_MMAKE) libmmc
|
|
|
|
.PHONY: doc
|
|
doc: scripts util
|
|
+cd doc && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: slice
|
|
slice: dep_slice scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd slice && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: profiler
|
|
profiler: dep_profiler scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd profiler && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: deep_profiler
|
|
deep_profiler: dep_deep_profiler scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd deep_profiler && $(SUBDIR_MMAKE)
|
|
|
|
.PHONY: mfilterjavac
|
|
mfilterjavac: dep_mfilterjavac scripts util boehm_gc runtime library \
|
|
mdbcomp browser ssdb trace
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: tags
|
|
tags: tags_library \
|
|
tags_mdbcomp \
|
|
tags_browser \
|
|
tags_ssdb \
|
|
tags_compiler \
|
|
tags_slice \
|
|
tags_profiler \
|
|
tags_deep_profiler \
|
|
tags_runtime
|
|
|
|
.PHONY: tags_compiler
|
|
tags_compiler:
|
|
+cd compiler && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_library
|
|
tags_library:
|
|
+cd library && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_mdbcomp
|
|
tags_mdbcomp:
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_browser
|
|
tags_browser:
|
|
+cd browser && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_ssdb
|
|
tags_ssdb:
|
|
+cd ssdb && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_slice
|
|
tags_slice:
|
|
+cd slice && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_profiler
|
|
tags_profiler:
|
|
+cd profiler && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_deep_profiler
|
|
tags_deep_profiler:
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) tags
|
|
|
|
.PHONY: tags_runtime
|
|
tags_runtime:
|
|
+cd runtime && $(SUBDIR_MMAKE) tags
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# Remove from each of the listed directories mmc-generated files that don't
|
|
# belong there.
|
|
cleanint:
|
|
for dir in library mdbcomp browser ssdb compiler \
|
|
slice profiler deep_profiler; \
|
|
do \
|
|
echo Looking for inappropriate files in the $$dir directory: ; \
|
|
( cd $$dir && ../tools/cleanint > .cleanint ) ; \
|
|
if test -s $$dir/.cleanint ; then \
|
|
cat $$dir/.cleanint ; \
|
|
else \
|
|
echo none found. ; \
|
|
fi \
|
|
done
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
aclocal.m4: configure.ac $(wildcard m4/*.m4)
|
|
aclocal -I m4
|
|
|
|
configure: configure.ac aclocal.m4
|
|
autoconf
|
|
|
|
config.status: configure VERSION
|
|
if [ -f ./config.status ]; then \
|
|
./config.status --recheck; \
|
|
else \
|
|
echo "======> You need to run configure!"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
Mmake.common: Mmake.common.in config.status
|
|
./config.status --file Mmake.common
|
|
|
|
README: .README.in VERSION
|
|
sed 's/@VERSION@/$(VERSION)/g' .README.in > README
|
|
|
|
INSTALL: .INSTALL.in VERSION
|
|
sed 's/@VERSION@/$(VERSION)/g' .INSTALL.in > INSTALL
|
|
chmod a+x INSTALL
|
|
|
|
ifeq ("$(LYNX)","")
|
|
HTML_TO_TEXT = cat
|
|
else
|
|
HTML_TO_TEXT = TERM=vt100 lynx -dump
|
|
endif
|
|
|
|
WORK_IN_PROGRESS: compiler/notes/work_in_progress.html
|
|
$(HTML_TO_TEXT) compiler/notes/work_in_progress.html > WORK_IN_PROGRESS
|
|
|
|
TODO: compiler/notes/todo.html
|
|
$(HTML_TO_TEXT) compiler/notes/todo.html > TODO
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# Generally you should do a `mmake realclean' before doing `mmake tar'.
|
|
|
|
TAR = tar
|
|
|
|
.PHONY: tar
|
|
tar: $(GENERATED_DOCS)
|
|
touch Mmake.params
|
|
cd util && mmake
|
|
+cd runtime && $(SUBDIR_MMAKE) cs $(RT_LIB_NAME).init
|
|
+cd library && $(SUBDIR_MMAKE) depend
|
|
+cd library && $(SUBDIR_MMAKE) all-ints cs $(STD_LIB_NAME).init tags
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) depend
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) all-ints cs \
|
|
$(MDBCOMP_LIB_NAME).init tags
|
|
+cd browser && $(SUBDIR_MMAKE) depend
|
|
+cd browser && $(SUBDIR_MMAKE) all-ints cs \
|
|
$(BROWSER_LIB_NAME).init tags
|
|
+cd ssdb && $(SUBDIR_MMAKE) depend
|
|
+cd ssdb && $(SUBDIR_MMAKE) all-ints cs \
|
|
$(SSDB_LIB_NAME).init tags
|
|
+cd trace && $(SUBDIR_MMAKE) cs
|
|
+cd compiler && $(SUBDIR_MMAKE) depend
|
|
+cd compiler && $(SUBDIR_MMAKE) cs tags
|
|
+cd slice && $(SUBDIR_MMAKE) depend
|
|
+cd slice && $(SUBDIR_MMAKE) cs tags
|
|
+cd profiler && $(SUBDIR_MMAKE) depend
|
|
+cd profiler && $(SUBDIR_MMAKE) cs tags
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) depend
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) cs tags
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE) depend
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE) cs tags
|
|
+cd doc && $(SUBDIR_MMAKE) info html dvi mdb_doc
|
|
# the following commands might fail on Windows?
|
|
-cd bindist && $(SUBDIR_MMAKE) bindist.Makefile
|
|
-cd bindist && $(SUBDIR_MMAKE) bindist.INSTALL
|
|
+cd extras/dynamic_linking && $(SUBSUBDIR_MMAKE) sources
|
|
# clean up
|
|
cd scripts && mmake realclean
|
|
cd scripts && mmake canonical_grade
|
|
cd util && mmake realclean
|
|
cd doc && mmake distclean
|
|
-rm -f errs errs2 update.log
|
|
-rm -f config.status config.cache config.log configure.log a.out
|
|
-rm -f runtime/mercury_conf.h boehm_gc/mercury_boehm_gc_conf.h
|
|
-rm -f Mmake.common
|
|
-rm -f extras/Mmake.params
|
|
-rm -rf autom4te.cache
|
|
chmod -R a+r *
|
|
# Package up the mercury directory with some subdirectories
|
|
# excluded, into a gzipped tar archive that will unpack into
|
|
# mercury-srcdist-$(VERSION).
|
|
DIRNAME="`pwd`"; \
|
|
ROOTNAME="`basename $$DIRNAME`"; \
|
|
export ROOTNAME; \
|
|
cd .. && ( \
|
|
mkdir stuff-to-exclude; \
|
|
test -d $$ROOTNAME/bytecode && \
|
|
mv $$ROOTNAME/bytecode stuff-to-exclude; \
|
|
mv $$ROOTNAME/extras/quickcheck stuff-to-exclude; \
|
|
mv $$ROOTNAME mercury-srcdist-$(VERSION); \
|
|
$(TAR) --exclude ".git" --exclude ".gitignore" \
|
|
--dereference -cf - \
|
|
mercury-srcdist-$(VERSION) | \
|
|
gzip -9 > mercury-srcdist-$(VERSION).tar.gz; \
|
|
mv mercury-srcdist-$(VERSION) $$ROOTNAME; \
|
|
mv stuff-to-exclude/quickcheck $$ROOTNAME/extras/quickcheck; \
|
|
mv stuff-to-exclude/* $$ROOTNAME; \
|
|
rmdir stuff-to-exclude; \
|
|
)
|
|
|
|
.PHONY: version
|
|
version:
|
|
@echo $(VERSION)
|
|
|
|
.PHONY: fullarch
|
|
fullarch:
|
|
@echo $(FULLARCH)
|
|
|
|
.PHONY: echo_libgrades
|
|
echo_libgrades:
|
|
@echo $(LIBGRADES)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
# The code of the install rule is duplicated in bindist/bindist.Makefile.in.
|
|
|
|
.PHONY: install
|
|
install: install_main install_grades
|
|
@echo
|
|
@echo "-- Installation complete."
|
|
@echo
|
|
@if test -n "$(DESTDIR)"; then \
|
|
echo "-- The installation was placed in $(DESTDIR)."; \
|
|
echo "-- to complete installation copy the contents of"; \
|
|
echo "-- $(DESTDIR) to the root directory of your system(s)."; \
|
|
echo; \
|
|
fi
|
|
@echo "-- Don't forget to add $(FINAL_INSTALL_BINDIR) to your PATH,"
|
|
@echo "-- $(FINAL_INSTALL_MAN_DIR) to your MANPATH,"
|
|
@echo "-- and $(FINAL_INSTALL_INFO_DIR) to your INFOPATH,"
|
|
@if test $(ENABLE_DEEP_PROFILER) != yes || \
|
|
cmp -s deep_profiler/mdprof_cgi \
|
|
$(INSTALL_CGI_DIR)/mdprof_cgi; \
|
|
then true ; else \
|
|
echo "-- to copy deep_profiler/mdprof_cgi" \
|
|
"to $(FINAL_INSTALL_CGI_DIR),"; \
|
|
fi
|
|
@echo "-- and to add the following lines to the \`.emacs' file"
|
|
@echo "-- in your home directory:"
|
|
@echo " (add-to-list 'load-path "
|
|
@echo " \"$(FINAL_INSTALL_ELISP_DIR)\")"
|
|
@echo " (autoload 'mdb \"gud\" \"Invoke the Mercury debugger\" t)"
|
|
|
|
.PHONY: install_main
|
|
install_main: all \
|
|
install_scripts \
|
|
install_util \
|
|
install_runtime \
|
|
install_boehm_gc \
|
|
install_library \
|
|
install_mdbcomp \
|
|
install_browser \
|
|
install_ssdb \
|
|
install_trace \
|
|
install_compiler \
|
|
install_mfilterjavac \
|
|
install_slice \
|
|
install_profiler \
|
|
install_deep_profiler \
|
|
install_doc \
|
|
install_config
|
|
|
|
.PHONY: install_scripts
|
|
install_scripts: scripts
|
|
+cd scripts && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_util
|
|
install_util: util
|
|
+cd util && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_config
|
|
install_config:
|
|
[ -d $(INSTALL_RECONF_DIR) ] || mkdir -p $(INSTALL_RECONF_DIR)
|
|
cp VERSION aclocal.m4 configure configure.ac config.guess \
|
|
config.sub install-sh $(INSTALL_RECONF_DIR)
|
|
|
|
.PHONY: install_runtime
|
|
install_runtime: runtime
|
|
+cd runtime && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_trace
|
|
install_trace: trace
|
|
+cd trace && $(SUBDIR_MMAKE) install
|
|
|
|
# When building the compiler in a non-C grade the header files for the Boehm GC
|
|
# still need to be installed, otherwise an installed non-C grade compiler won't
|
|
# be able to compile anything in .gc grades.
|
|
#
|
|
.PHONY: install_boehm_gc
|
|
ifeq ("$(filter csharp% java% erlang%,$(GRADE))","")
|
|
install_boehm_gc: boehm_gc
|
|
+gc_grade=`scripts/ml --grade $(GRADE) --print-gc-grade`; \
|
|
cd boehm_gc && $(SUBDIR_MMAKE) install GC_GRADE=$$gc_grade
|
|
else
|
|
install_boehm_gc: boehm_gc
|
|
cd boehm_gc && $(SUBDIR_MMAKE) install_headers GC_GRADE=gc
|
|
endif
|
|
|
|
.PHONY: install_library
|
|
install_library: dep_library library
|
|
+cd library && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_mdbcomp
|
|
install_mdbcomp: dep_mdbcomp mdbcomp
|
|
+cd mdbcomp && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_browser
|
|
install_browser: dep_browser browser
|
|
+cd browser && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_ssdb
|
|
install_ssdb: dep_ssdb ssdb
|
|
+cd ssdb && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_compiler
|
|
install_compiler: dep_compiler compiler
|
|
+cd compiler && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_mfilterjavac
|
|
install_mfilterjavac: dep_mfilterjavac mfilterjavac
|
|
+cd mfilterjavac && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_doc
|
|
install_doc: doc
|
|
+cd doc && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_slice
|
|
install_slice: slice
|
|
+cd slice && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_profiler
|
|
install_profiler: profiler
|
|
+cd profiler && $(SUBDIR_MMAKE) install
|
|
|
|
.PHONY: install_deep_profiler
|
|
install_deep_profiler: deep_profiler
|
|
+cd deep_profiler && $(SUBDIR_MMAKE) install
|
|
|
|
# LIBGRADE_SUFFIXES = .m .int3 .date3 .int2 .int .date .opt .optdate \
|
|
# .trans_opt .trans_opt_date .d .mh .mih .c_date .c .o .pic_o
|
|
|
|
ifeq ($(CROSS_COMPILING),yes)
|
|
OVERRIDE_MC_FOR_LIBGRADE =
|
|
else
|
|
# We must override the paths in the mmc script in case the compiler was
|
|
# installed to a temporary location, using DESTDIR.
|
|
OVERRIDE_MC_FOR_LIBGRADE = MC=mmc \
|
|
MERCURY_COMPILER=$(INSTALL_BINDIR)/mercury_compile \
|
|
MERCURY_CONFIG_DIR=$(INSTALL_LIBDIR)
|
|
endif
|
|
|
|
.PHONY: install_grades
|
|
install_grades: install_main
|
|
# Use the newly installed compiler to build the libraries in various
|
|
# different grades. Except when cross-compiling, we override MC=mmc so
|
|
# that we use the mmc from the scripts directory, which runs the newly
|
|
# installed compiler, rather than using the bootstrap compiler.
|
|
#
|
|
# Compile different grades in different directories, so that we can
|
|
# optionally preserve all the directories, and include them in
|
|
# a distribution.
|
|
#
|
|
# Force mmc --make for grades which require it.
|
|
+for grade in x $(LIBGRADES); do \
|
|
if [ "$${grade}" = "x" -o "$${grade}" = "$(GRADE)" ]; then \
|
|
continue; \
|
|
fi; \
|
|
gc_grade=`scripts/ml --grade $${grade} --print-gc-grade`; \
|
|
IWS=`/bin/pwd`/install_grade_dir.$${grade}; \
|
|
( \
|
|
case $${grade} in \
|
|
csharp*|java*|erlang*) MMAKE_USE_MMC_MAKE=yes; \
|
|
esac; \
|
|
scripts/prepare_install_dir $${IWS} && \
|
|
( cd $${IWS}/boehm_gc && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
GC_GRADE=$${gc_grade} install_lib ) && \
|
|
( cd $${IWS}/runtime && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_lib ) && \
|
|
( cd $${IWS}/library && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
depend && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_library ) && \
|
|
( cd $${IWS}/mdbcomp && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
depend && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_library ) && \
|
|
( cd $${IWS}/browser && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
depend && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_library ) && \
|
|
( cd $${IWS}/ssdb && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
depend && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_library ) && \
|
|
( cd $${IWS}/trace && \
|
|
$(SUBDIR_MMAKE) $(OVERRIDE_MC_FOR_LIBGRADE) \
|
|
GRADE=$${grade} WORKSPACE=$${IWS} \
|
|
install_lib ) && \
|
|
true \
|
|
) || \
|
|
{ echo "To clean up from failed install, remove $${IWS}"; \
|
|
exit 1; }; \
|
|
if test ! -f .leave_tmp_dir; then rm -fr $${IWS}; fi; \
|
|
done;
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
#
|
|
# Various horrible hacks for gnu-win32 on Windows.
|
|
#
|
|
|
|
# `make touch_files' is a work-around for the broken gnu-win32 `tar'
|
|
# that loses all the file dates.
|
|
.PHONY: touch_files
|
|
touch_files:
|
|
-find . | xargs touch
|
|
sleep 1
|
|
touch library/*.date*
|
|
touch library/*.optdate
|
|
chmod +w library/*.dep
|
|
touch library/*.dep
|
|
touch mdbcomp/*.date*
|
|
touch mdbcomp/*.optdate
|
|
chmod +w mdbcomp/*.dep
|
|
touch mdbcomp/*.dep
|
|
touch browser/*.date*
|
|
touch browser/*.optdate
|
|
chmod +w browser/*.dep
|
|
touch browser/*.dep
|
|
touch ssdb/*.date*
|
|
touch ssdb/*.optdate
|
|
chmod +w ssdb/*.dep
|
|
touch ssdb/*.dep
|
|
touch compiler/*.date*
|
|
chmod +w compiler/*.dep
|
|
touch compiler/*.dep
|
|
touch slice/*.date*
|
|
chmod +w slice/*.dep
|
|
touch slice/*.date*
|
|
touch profiler/*.date*
|
|
chmod +w profiler/*.dep
|
|
touch profiler/*.dep
|
|
touch deep_profiler/*.date*
|
|
chmod +w deep_profiler/*.dep
|
|
touch deep_profiler/*.dep
|
|
touch doc/*.texi configure
|
|
sleep 1
|
|
touch boehm_gc/*.c
|
|
touch runtime/*.c
|
|
touch library/*.c
|
|
touch mdbcomp/*.c
|
|
touch browser/*.c
|
|
touch ssdb/*.c
|
|
touch trace/*.c
|
|
touch compiler/*.c
|
|
touch slice/*.c
|
|
touch profiler/*.c
|
|
touch deep_profiler/*.c
|
|
touch mfilterjavac/*.c
|
|
touch doc/*.info doc/*.dvi doc/*.html config.status
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: uninstall
|
|
uninstall:
|
|
+cd compiler; $(SUBDIR_MMAKE) uninstall
|
|
+cd deep_profiler; $(SUBDIR_MMAKE) uninstall
|
|
+cd doc; $(SUBDIR_MMAKE) uninstall
|
|
+cd mfilterjavac; $(SUBDIR_MMAKE) uninstall
|
|
+cd profiler; $(SUBDIR_MMAKE) uninstall
|
|
+cd scripts; $(SUBDIR_MMAKE) uninstall
|
|
+cd slice; $(SUBDIR_MMAKE) uninstall
|
|
+cd util; $(SUBDIR_MMAKE) uninstall
|
|
-rm -r $(INSTALL_LIBDIR)
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
.PHONY: bindist
|
|
bindist: WORK_IN_PROGRESS TODO
|
|
cd bindist; \
|
|
PATH="$(INSTALL_PREFIX)/bin:$$PATH" \
|
|
MMAKE_DIR="$(INSTALL_MMAKE_DIR)" \
|
|
mmake -v binary_distribution
|
|
|
|
#-----------------------------------------------------------------------------#
|
|
|
|
clean: clean_tests clean_subdirs
|
|
|
|
.PHONY: clean_subdirs
|
|
clean_subdirs:
|
|
+for dir in $(SUBDIRS); do \
|
|
if [ "$$dir" = scripts ]; then continue; fi; \
|
|
(cd $$dir; $(SUBDIR_MMAKE) clean) \
|
|
done
|
|
|
|
.PHONY: clean_tests
|
|
clean_tests:
|
|
+if test -d tests; then \
|
|
(cd tests; $(SUBDIR_MMAKE) clean) \
|
|
fi
|
|
|
|
realclean: realclean_tests realclean_subdirs realclean_local
|
|
+cd scripts; $(SUBDIR_MMAKE) realclean
|
|
|
|
.PHONY: realclean_local
|
|
realclean_local: realclean_config realclean_docs
|
|
|
|
.PHONY: realclean_subdirs
|
|
realclean_subdirs: clean_subdirs
|
|
rm -rf stage[1-3] stage[1-3].*
|
|
rm -rf tests/PASSED_TC_DIR tests/FAILED_TC_DIR
|
|
+for dir in $(SUBDIRS); do \
|
|
if [ "$$dir" = scripts ]; then continue; fi; \
|
|
(cd $$dir; $(SUBDIR_MMAKE) realclean) \
|
|
done
|
|
|
|
.PHONY: realclean_docs
|
|
realclean_docs:
|
|
rm -f $(GENERATED_DOCS)
|
|
|
|
.PHONY: realclean_config
|
|
realclean_config:
|
|
rm -f config.cache config.status config.log configure.log configure.help
|
|
|
|
.PHONY: realclean_tests
|
|
realclean_tests:
|
|
+if test -d tests; then \
|
|
(cd tests; $(SUBDIR_MMAKE) realclean) \
|
|
fi
|
|
|
|
#-----------------------------------------------------------------------------#
|