X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=mk%2Ftarget.mk;h=0334896b3fabf8d3725ebba053ea6cc30bab3224;hp=79f0bd991b0b4dfcfd7980ba46c986d507bdb776;hb=0065d5ab628975892cea1ec7303f968c3338cbe1;hpb=a186bed18af24a66ab48cc196ddcf644d5112916 diff --git a/mk/target.mk b/mk/target.mk index 79f0bd9..0334896 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -2,14 +2,14 @@ # # target.mk # -# Standard targets for fptools +# Standard targets for GHC # ################################################################################# # # This file contain three groups of target rules: # -# 1. FPtools targets +# 1. GHC targets # depend* # runtests* # @@ -19,7 +19,7 @@ # install-docs* # clean* distclean* mostlyclean* maintainer-clean* # tags* -# dvi ps (no info) FPTOOLS adds: pdf rtf html +# dvi ps (no info) GHC adds: pdf rtf html chm HxS # check # # 3. Some of the above targets have a version that @@ -50,11 +50,11 @@ include $(TOP)/mk/package.mk include $(TOP)/mk/suffix.mk ################################################################## -# FPtools standard targets +# GHC standard targets # # depend: # -# The Depend target has to cope with a set of files that may have +# The depend target has to cope with a set of files that may have # different ways of computing their dependencies, i.e., a Haskell # module's dependencies are computed differently from C files. # @@ -77,25 +77,21 @@ include $(TOP)/mk/suffix.mk # Compiler produced files that are targets of the source's imports. MKDEPENDHS_OBJ_SUFFICES=o -ifneq "$(STAMP_PKG_CONF)" "" +ifneq "$(BootingFromHc)" "YES" PKGCONF_DEP = $(STAMP_PKG_CONF) -else -PKGCONF_DEP = endif -depend :: .depend - -.depend: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(STAMP_PKG_CONF) - @$(RM) $@ - @touch $@ +depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(PKGCONF_DEP) + @$(RM) .depend + @touch .depend ifneq "$(DOC_SRCS)" "" - $(MKDEPENDLIT) -o $@ $(MKDEPENDLIT_OPTS) $(filter %.lit,$(DOC_SRCS)) + $(MKDEPENDLIT) -o .depend $(MKDEPENDLIT_OPTS) $(filter %.lit,$(DOC_SRCS)) endif ifneq "$(MKDEPENDC_SRCS)" "" - $(MKDEPENDC) -f $@ $(MKDEPENDC_OPTS) $(foreach way,$(WAYS),-s $(way)) -- $(CC_OPTS) -- $(MKDEPENDC_SRCS) + $(MKDEPENDC) -f .depend $(MKDEPENDC_OPTS) $(foreach way,$(WAYS),-s $(way)) -- $(CC_OPTS) -- $(MKDEPENDC_SRCS) endif ifneq "$(MKDEPENDHS_SRCS)" "" - $(MKDEPENDHS) -M -optdep-f -optdep$@ $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-osuf $(obj)) $(MKDEPENDHS_OPTS) $(filter-out -split-objs, $(HC_OPTS)) $(MKDEPENDHS_SRCS) + $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-osuf $(obj)) $(MKDEPENDHS_OPTS) $(filter-out -split-objs, $(HC_OPTS)) $(MKDEPENDHS_SRCS) endif @@ -182,7 +178,7 @@ endif # `TAGS' # Update a tags table for this program. # -# `dvi' `ps' `pdf' `html' `rtf' +# `dvi' `ps' `pdf' `html' `chm' `HxS' `rtf' # Generate DVI/PS/PDF files for LaTeX/DocBook docs. Not everything is # supported everywhere, but the intention is to standardise on DocBook # producing all formats. @@ -206,7 +202,7 @@ endif # directories where files are installed, and their parent # directories. There is a script called `mkinstalldirs' which is # convenient for this; find it in the Texinfo package. -# (FPTOOLS: we use a close relative of the suggested script, situated +# (GHC: we use a close relative of the suggested script, situated # in glafp-utils/mkdirhier -- SOF) @@ -238,12 +234,12 @@ ifneq "$(HS_PROG)" "" all :: $(HS_PROG) ifneq "$(BootingFromHc)" "YES" -$(HS_PROG) :: $(HS_OBJS) - $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $(HS_OBJS) +$(HS_PROG) :: $(OBJS) + $(HC) -o $@ $(HC_OPTS) $(LD_OPTS) $(OBJS) else # see bootstrap.mk -$(HS_PROG) :: $(HS_OBJS) - $(CC) -o $@ $(HC_BOOT_CC_OPTS) $(HC_BOOT_LD_OPTS) $(HS_OBJS) $(HC_BOOT_LIBS) +$(HS_PROG) :: $(OBJS) + $(CC) -o $@ $(HC_BOOT_CC_OPTS) $(HC_BOOT_LD_OPTS) $(OBJS) $(HC_BOOT_LIBS) endif endif @@ -292,12 +288,14 @@ endif # whether HS_SRCS is empty or not. # +# can't split objs in way 'u', so we disable it here +ifeq "$(way)" "u" +SplitObjs = NO +endif + ifneq "$(HS_SRCS)" "" ifeq "$(SplitObjs)" "YES" -# can't split objs in way 'u', so we disable it here -ifneq "$(way)" "u" - SRC_HC_OPTS += -split-objs # We generate the archive into a temporary file libfoo.a.tmp, then @@ -306,15 +304,16 @@ SRC_HC_OPTS += -split-objs ifeq "$(ArSupportsInput)" "" define BUILD_LIB $(RM) $@ $@.tmp -(echo $(STUBOBJS) $(EXTRA_OBJS); $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o') | xargs ar q $@ +(echo $(STUBOBJS) $(C_OBJS) $(GC_C_OBJS); $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print) | xargs $(AR) $@ $(RANLIB) $@ endef else define BUILD_LIB $(RM) $@ $@.tmp -echo $(STUBOBJS) > $@.list -echo $(EXTRA_OBJS) >> $@.list -$(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' >> $@.list +echo $(STUBOBJS) > $@.list +echo $(C_OBJS) >> $@.list +echo $(GC_C_OBJS) >> $@.list +$(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print >> $@.list $(AR) $(AR_OPTS) $@ $(ArSupportsInput) $@.list $(RM) $@.list $(RANLIB) $@ @@ -323,18 +322,6 @@ endif # Extra stuff for compiling Haskell files with $(SplitObjs): -HC_SPLIT_PRE = \ - $(RM) $@; if [ ! -d $(basename $@)_split ]; then mkdir $(basename $@)_split; else \ - $(FIND) $(basename $@)_split -name '*.$(way_)o' | xargs $(RM) __rm_food; fi -ifeq "$(GhcWithInterpreter)" "YES" -HC_SPLIT_POST = (cd $(dir $@) && $(LD) -r $(LD_X) -o $(notdir $@) $(basename $(notdir $@))_split/*.$(way_)o) -else -HC_SPLIT_POST = touch $@ -endif # GhcWithInterpreter == YES - -SRC_HC_PRE_OPTS += $(HC_SPLIT_PRE); -SRC_HC_POST_OPTS += $(HC_SPLIT_POST); - # # If (Haskell) object files are split, cleaning up # consist of descending into the directories where @@ -342,10 +329,9 @@ SRC_HC_POST_OPTS += $(HC_SPLIT_POST); # extraclean :: - $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food + $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' -print -o -name ld.script -print | xargs $(RM) __rm_food -rmdir $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) > /dev/null 2>&1 -endif # $(way) == u endif # $(SplitObjs) endif # $(HS_SRCS) @@ -356,7 +342,7 @@ endif # $(HS_SRCS) ifeq "$(StripLibraries)" "YES" ifeq "$(SplitObjs)" "YES" SRC_HC_POST_OPTS += \ - for i in $(basename $@)_split/*; do \ + for i in $(basename $@)_split/*.$(way_)o; do \ $(LD) -r $(LD_X) -o $$i.tmp $$i; \ $(MV) $$i.tmp $$i; \ done @@ -387,7 +373,7 @@ SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(PACKAGE)$(_cbits)$(_way).def D ifneq "$(PACKAGE) $(IS_CBITS_LIB)" "std YES" ifneq "$(PACKAGE)" "rts" SRC_BLD_DLL_OPTS += -lHSstd_cbits_imp -L$(GHC_LIB_DIR)/std/cbits -SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RUNTIME_DIR) +SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RTS_DIR) ifneq "$(PACKAGE)" "std" ifeq "$(IS_CBITS_LIB)" "" SRC_BLD_DLL_OPTS += -lHSstd_$(way_)imp -L$(GHC_LIB_DIR)/std @@ -396,7 +382,7 @@ endif endif endif -SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RUNTIME_DIR)/gmp +SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RTS_DIR)/gmp ifeq "$(IS_CBITS_LIB)" "" SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(PACKAGE_DEPS)) SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(PACKAGE_DEPS)) @@ -625,11 +611,11 @@ $(LINK) : $(LINK_TARGET) install :: @$(INSTALL_DIR) $(bindir) @if ( $(PERL) -e '$$fn="$(bindir)/$(LINK)"; exit ((! -f $$fn || -l $$fn) ? 0 : 1);' ); then \ - echo "Creating a symbol link from $(LINK_TARGET) to $(LINK) in $(bindir)"; \ + echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(bindir)"; \ $(RM) $(bindir)/$(LINK); \ $(LN_S) $(LINK_TARGET) $(bindir)/$(LINK); \ else \ - echo "Creating a symbol link from $(LINK_TARGET) to $(LINK) in $(bindir) failed: \`$(bindir)/$(LINK)' already exists"; \ + echo "Creating a symbolic link from $(LINK_TARGET) to $(LINK) in $(bindir) failed: \`$(bindir)/$(LINK)' already exists"; \ echo "Perhaps remove \`$(bindir)/$(LINK)' manually?"; \ exit 1; \ fi; @@ -684,7 +670,18 @@ install-dirs :: # within the various install targets instead. #install:: install-dirs -ifneq "$(INSTALL_PROGS)" "" +# +# Setting user/group ownership for the installed entities +# +ifneq "$(INSTALL_OWNER)" "" +SRC_INSTALL_OPTS += -o $(INSTALL_OWNER) +endif +ifneq "$(INSTALL_GROUP)" "" +SRC_INSTALL_OPTS += -g $(INSTALL_GROUP) +endif + + +ifneq "$(strip $(INSTALL_PROGS))" "" # # Here's an interesting one - when using the win32 version @@ -702,6 +699,9 @@ install:: $(INSTALL_PROGS) @for i in $(INSTALL_PROGS); do \ echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \ $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir) ; \ + if test "$(darwin_TARGET_OS)" = "1"; then \ + sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(bindir)/$$i ; \ + fi ; \ done endif @@ -709,7 +709,7 @@ endif # Just like INSTALL_PROGS, but prefix with install sites bin/lib/data and # install without stripping. # -ifneq "$(INSTALL_SCRIPTS)" "" +ifneq "$(strip $(INSTALL_SCRIPTS))" "" install:: $(INSTALL_SCRIPTS) @$(INSTALL_DIR) $(bindir) for i in $(INSTALL_SCRIPTS); do \ @@ -717,7 +717,7 @@ install:: $(INSTALL_SCRIPTS) done endif -ifneq "$(INSTALL_LIB_SCRIPTS)" "" +ifneq "$(strip $(INSTALL_LIB_SCRIPTS))" "" install:: $(INSTALL_LIB_SCRIPTS) @$(INSTALL_DIR) $(libdir) for i in $(INSTALL_LIB_SCRIPTS); do \ @@ -725,7 +725,7 @@ install:: $(INSTALL_LIB_SCRIPTS) done endif -ifneq "$(INSTALL_LIBEXEC_SCRIPTS)" "" +ifneq "$(strip $(INSTALL_LIBEXEC_SCRIPTS))" "" install:: $(INSTALL_LIBEXEC_SCRIPTS) @$(INSTALL_DIR) $(libexecdir) for i in $(INSTALL_LIBEXEC_SCRIPTS); do \ @@ -733,7 +733,7 @@ install:: $(INSTALL_LIBEXEC_SCRIPTS) done endif -ifneq "$(INSTALL_LIBS)" "" +ifneq "$(strip $(INSTALL_LIBS))" "" install:: $(INSTALL_LIBS) @$(INSTALL_DIR) $(libdir) for i in $(INSTALL_LIBS); do \ @@ -745,13 +745,16 @@ install:: $(INSTALL_LIBS) $(INSTALL_DATA) -s $(INSTALL_OPTS) $$i $(libdir) ;; \ *.so) \ $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir) ;; \ + *.dylib) \ + $(INSTALL_SHLIB) $(INSTALL_OPTS) $$i $(libdir); \ + install_name_tool -id $(libdir)/`basename $$i` $(libdir)/`basename $$i` ;; \ *) \ $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \ esac; \ done endif -ifneq "$(INSTALL_LIBEXECS)" "" +ifneq "$(strip $(INSTALL_LIBEXECS))" "" # # See above comment next to defn of INSTALL_PROGS for what # the purpose of this one-liner is. @@ -762,10 +765,13 @@ install:: $(INSTALL_LIBEXECS) @$(INSTALL_DIR) $(libexecdir) -for i in $(INSTALL_LIBEXECS); do \ $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(libexecdir); \ + if test "$(darwin_TARGET_OS)" = "1"; then \ + sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(libexecdir)/`basename $$i` ; \ + fi ; \ done endif -ifneq "$(INSTALL_DATAS)" "" +ifneq "$(strip $(INSTALL_DATAS))" "" install:: $(INSTALL_DATAS) @$(INSTALL_DIR) $(datadir) for i in $(INSTALL_DATAS); do \ @@ -773,7 +779,7 @@ install:: $(INSTALL_DATAS) done endif -ifneq "$(INSTALL_IFACES)" "" +ifneq "$(strip $(INSTALL_IFACES))" "" install:: $(INSTALL_IFACES) @$(INSTALL_DIR) $(ifacedir) for i in $(INSTALL_IFACES); do \ @@ -781,7 +787,7 @@ install:: $(INSTALL_IFACES) done endif -ifneq "$(INSTALL_IFACES_WITH_DIRS)" "" +ifneq "$(strip $(INSTALL_IFACES_WITH_DIRS))" "" install:: $(INSTALL_IFACES_WITH_DIRS) @$(INSTALL_DIR) $(ifacedir) for i in $(INSTALL_IFACES_WITH_DIRS); do \ @@ -789,7 +795,7 @@ install:: $(INSTALL_IFACES_WITH_DIRS) done endif -ifneq "$(INSTALL_INCLUDES)" "" +ifneq "$(strip $(INSTALL_INCLUDES))" "" install:: $(INSTALL_INCLUDES) @$(INSTALL_DIR) $(includedir) for i in $(INSTALL_INCLUDES); do \ @@ -797,26 +803,35 @@ install:: $(INSTALL_INCLUDES) done endif -ifneq "$(INSTALL_DOCS)" "" +ifneq "$(strip $(INSTALL_DOCS))" "" +ifneq "$(XMLDocWays)" "" install-docs:: $(INSTALL_DOCS) @$(INSTALL_DIR) $(datadir) for i in $(INSTALL_DOCS); do \ $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \ done endif +endif -ifneq "$(INSTALL_SGML_DOC)" "" -ifneq "$(SGMLDocWays)" "" -install-docs:: $(foreach i,$(SGMLDocWays),$(INSTALL_SGML_DOC).$i) +# TODO: The following could be an entry for an Obfuscated Makefile Contest... +ifneq "$(strip $(INSTALL_XML_DOC))" "" +ifneq "$(XMLDocWays)" "" +install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.html,%/index.html,.$(i)))) @$(INSTALL_DIR) $(datadir) - @for i in $(SGMLDocWays); do \ + @for i in $(XMLDocWays); do \ if [ $$i = "html" ]; then \ $(INSTALL_DIR) $(datadir)/html; \ - echo $(CP) -r $(INSTALL_SGML_DOC) $(datadir)/html; \ - $(CP) -r $(INSTALL_SGML_DOC) $(datadir)/html; \ + $(INSTALL_DIR) $(datadir)/html/$(INSTALL_XML_DOC); \ + echo "( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) )" ; \ + ( cd $(INSTALL_XML_DOC) && $(CP) * $(datadir)/html/$(INSTALL_XML_DOC) ) ; \ else \ - echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ - $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ + $(INSTALL_DIR) $(datadir)/doc; \ + echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.html-no-chunks/.html/` $(datadir)/doc; \ + $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.html-no-chunks/.html/` $(datadir)/doc; \ + fi; \ + if [ $$i = "html-no-chunks" ]; then \ + echo $(CP) $(FPTOOLS_CSS_ABS) $(datadir)/doc; \ + $(CP) $(FPTOOLS_CSS_ABS) $(datadir)/doc; \ fi \ done endif @@ -887,7 +902,7 @@ tags TAGS:: $(TAGS_HS_SRCS) $(TAGS_C_SRCS) @$(RM) TAGS @touch TAGS ifneq "$(TAGS_HS_SRCS)" "" - $(HSTAGS) $(HSTAGS_OPTS) -- $(TAGS_HS_SRCS) + $(HSTAGS) $(HSTAGS_OPTS) $(TAGS_HS_SRCS) endif ifneq "$(TAGS_C_SRCS)" "" etags -a $(TAGS_C_SRCS) @@ -905,48 +920,50 @@ show: ################################################################################ # -# SGML Documentation +# DocBook XML Documentation # ################################################################################ -.PHONY: dvi ps html pdf rtf +.PHONY: html html-no-chunks chm HxS fo dvi ps pdf -ifneq "$(SGML_DOC)" "" +ifneq "$(XML_DOC)" "" -all :: $(SGMLDocWays) +all :: $(XMLDocWays) -# multi-file SGML document: main document name is specified in $(SGML_DOC), -# sub-documents (.sgml files) listed in $(SGML_SRCS). +# multi-file XML document: main document name is specified in $(XML_DOC), +# sub-documents (.xml files) listed in $(XML_SRCS). -ifeq "$(SGML_SRCS)" "" -SGML_SRCS = $(wildcard *.sgml) +ifeq "$(XML_SRCS)" "" +XML_SRCS = $(wildcard *.xml) endif -SGML_TEX = $(addsuffix .tex,$(SGML_DOC)) -SGML_DVI = $(addsuffix .dvi,$(SGML_DOC)) -SGML_PS = $(addsuffix .ps,$(SGML_DOC)) -SGML_PDF = $(addsuffix .pdf,$(SGML_DOC)) -SGML_RTF = $(addsuffix .rtf,$(SGML_DOC)) -SGML_HTML = $(addsuffix .html,$(SGML_DOC)) -# HTML output goes in a subdirectory on its own. -SGML_TEXT = $(addsuffix .txt,$(SGML_DOC)) +XML_HTML = $(addsuffix /index.html,$(basename $(XML_DOC))) +XML_HTML_NO_CHUNKS = $(addsuffix .html,$(XML_DOC)) +XML_CHM = $(addsuffix .chm,$(XML_DOC)) +XML_HxS = $(addsuffix .HxS,$(XML_DOC)) +XML_FO = $(addsuffix .fo,$(XML_DOC)) +XML_DVI = $(addsuffix .dvi,$(XML_DOC)) +XML_PS = $(addsuffix .ps,$(XML_DOC)) +XML_PDF = $(addsuffix .pdf,$(XML_DOC)) -$(SGML_DVI) $(SGML_PS) $(SGML_HTML) $(SGML_TEXT) $(SGML_PDF) :: $(SGML_SRCS) +$(XML_HTML) $(XML_NO_CHUNKS_HTML) $(XML_FO) $(XML_DVI) $(XML_PS) $(XML_PDF) :: $(XML_SRCS) -dvi :: $(SGML_DVI) -ps :: $(SGML_PS) -pdf :: $(SGML_PDF) -rtf :: $(SGML_RTF) -html :: $(SGML_HTML) -txt :: $(SGML_TEXT) +html :: $(XML_HTML) +html-no-chunks :: $(XML_HTML_NO_CHUNKS) +chm :: $(XML_CHM) +HxS :: $(XML_HxS) +fo :: $(XML_FO) +dvi :: $(XML_DVI) +ps :: $(XML_PS) +pdf :: $(XML_PDF) -CLEAN_FILES += $(SGML_TEXT) $(SGML_TEX) $(SGML_PS) $(SGML_DVI) $(SGML_PDF) $(SGML_RTF) $(SGML_HTML) $(SGML_DOC)-*.html -# can't use $(SGML_SRCS) here, it was maybe used elsewhere +CLEAN_FILES += $(XML_HTML_NO_CHUNKS) $(XML_FO) $(XML_DVI) $(XML_PS) $(XML_PDF) extraclean :: - $(RM) -rf DBTOHTML_OUTPUT_* - $(RM) -rf *.junk/ - $(RM) -rf $(SGML_DOC) + $(RM) -rf $(XML_DOC).out $(FPTOOLS_CSS) $(basename $(XML_DOC)) $(basename $(XML_DOC))-htmlhelp + +validate :: + $(XMLLINT) --valid --noout $(XMLLINT_OPTS) $(XML_DOC).xml endif ############################################################################## @@ -992,6 +1009,11 @@ maintainer-clean:: extraclean # Expects: $(WAYS) the possible "way" strings to one of # which $(way) will be set +ifneq "$(way)" "" +ifeq "$(findstring $(way), $(WAYS))" "" +$(error Unknown way $(way)) +endif +endif # So how does $(way) ever get set to anything? Answer, we recursively # invoke make, setting $(way) on the command line. @@ -1055,21 +1077,21 @@ ifeq "$(way)" "" # since these are way-independent all docs TAGS clean distclean mostlyclean maintainer-clean install :: @echo "------------------------------------------------------------------------" - @echo "===fptools== Recursively making \`$@' for ways: $(WAYS) ..." + @echo "== Recursively making \`$@' for ways: $(WAYS) ..." @echo "PWD = $(shell pwd)" @echo "------------------------------------------------------------------------" # Don't rely on -e working, instead we check exit return codes from sub-makes. @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \ for i in $(WAYS) ; do \ echo "------------------------------------------------------------------------"; \ - echo "==fptools== $(MAKE) way=$$i $@;"; \ + echo "== $(MAKE) way=$$i $@;"; \ echo "PWD = $(shell pwd)"; \ echo "------------------------------------------------------------------------"; \ $(MAKE) way=$$i --no-print-directory $(MFLAGS) $@ ; \ if [ $$? -eq 0 ] ; then true; else exit $$x_on_err; fi; \ done @echo "------------------------------------------------------------------------" - @echo "===fptools== Finished recursively making \`$@' for ways: $(WAYS) ..." + @echo "== Finished recursively making \`$@' for ways: $(WAYS) ..." @echo "PWD = $(shell pwd)" @echo "------------------------------------------------------------------------" @@ -1147,23 +1169,23 @@ INSTALL_TARGET = install INSTALL_DOCS_TARGET = install-docs endif -$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html ps dvi txt:: +$(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean maintainer-clean $(INSTALL_TARGET) $(INSTALL_DOCS_TARGET) html chm HxS ps dvi txt:: @echo "------------------------------------------------------------------------" - @echo "===fptools== Recursively making \`$@' in $(SUBDIRS) ..." + @echo "== Recursively making \`$@' in $(SUBDIRS) ..." @echo "PWD = $(shell pwd)" @echo "------------------------------------------------------------------------" # Don't rely on -e working, instead we check exit return codes from sub-makes. @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \ for i in $(SUBDIRS); do \ echo "------------------------------------------------------------------------"; \ - echo "==fptools== $(MAKE) $@ $(MFLAGS);"; \ + echo "== $(MAKE) $@ $(MFLAGS);"; \ echo " in $(shell pwd)/$$i"; \ echo "------------------------------------------------------------------------"; \ $(MAKE) --no-print-directory -C $$i $(MFLAGS) $@; \ if [ $$? -eq 0 -o $$x_on_err -eq 0 ] ; then true; else exit 1; fi; \ done @echo "------------------------------------------------------------------------" - @echo "===fptools== Finished making \`$@' in $(SUBDIRS) ..." + @echo "== Finished making \`$@' in $(SUBDIRS) ..." @echo "PWD = $(shell pwd)" @echo "------------------------------------------------------------------------" @@ -1178,3 +1200,17 @@ ifneq "$(SUBDIRS)" "" $(SUBDIRS) :: $(MAKE) -C $@ $(MFLAGS) endif + +# ----------------------------------------------------------------------------- +# Further cleaning + +# Sometimes we want to clean things only after the recursve cleaning +# has heppened (eg. if the files we're about to remove would affect +# the recursive traversal). + +distclean:: + rm -f $(LATE_DIST_CLEAN_FILES) + +maintainer-clean:: + rm -f $(LATE_DIST_CLEAN_FILES) +