X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Ftarget.mk;h=51b5d98ad2d01bba9709eafd4f2e52ae95b62ad3;hb=c6d90de6e5236d32df49609bb9179b0108033c86;hp=ab4a8995c7e7f12842e26754c70aec77e0e181eb;hpb=13aca089b924f6ac3cd598e17b471ab38a1e3e78;p=ghc-hetmet.git diff --git a/mk/target.mk b/mk/target.mk index ab4a899..51b5d98 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -324,7 +324,23 @@ HC_SPLIT_PRE = \ $(RM) $@; if [ ! -d $(basename $@)_split ]; then mkdir $(basename $@)_split; else \ $(FIND) $(basename $@)_split -name '*.$(way_)o' -print | xargs $(RM) __rm_food; fi ifeq "$(GhcWithInterpreter)" "YES" -HC_SPLIT_POST = (cd $(basename $@)_split && $(LD) -r $(LD_X) -o ../$(notdir $@) *.$(way_)o) +ifeq "$(LdIsGNULd)" "YES" +# If ld is GNU ld, we can use a linker script to pass the names of the +# input files. This avoids problems with limits on the length of the +# ld command line, which we run into for large Haskell modules. +HC_SPLIT_POST = \ + ( cd $(basename $@)_split; \ + $(RM) ld.script; \ + touch ld.script; \ + echo "INPUT(" *.$(way_)o ")" >>ld.script; \ + $(LD) -r $(LD_X) -o ../$(notdir $@) ld.script; \ + ) +else +HC_SPLIT_POST = \ + ( cd $(basename $@)_split; \ + $(LD) -r $(LD_X) -o ../$(notdir $@) *.$(way_)o; \ + ) +endif # LdIsGNULd == YES else HC_SPLIT_POST = touch $@ endif # GhcWithInterpreter == YES @@ -353,7 +369,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 @@ -806,13 +822,6 @@ install:: $(INSTALL_INCLUDES) endif ifneq "$(INSTALL_DOCS)" "" -ifneq "$(SGMLDocWays)" "" -install-docs:: $(INSTALL_DOCS) - @$(INSTALL_DIR) $(datadir) - for i in $(INSTALL_DOCS); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir); \ - done -endif ifneq "$(XMLDocWays)" "" install-docs:: $(INSTALL_DOCS) @$(INSTALL_DIR) $(datadir) @@ -825,13 +834,14 @@ endif # TODO: The following could be an entry for an Obfuscated Makefile Contest... ifneq "$(INSTALL_XML_DOC)" "" ifneq "$(XMLDocWays)" "" -install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.htmlhelp,%.chm,$(patsubst %.html,%-html/index.html,.$(i))))) +install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no-chunks,%.html,$(patsubst %.htmlhelp,%.chm,$(patsubst %.html,%/index.html,.$(i))))) @$(INSTALL_DIR) $(datadir) @for i in $(XMLDocWays); do \ if [ $$i = "html" ]; then \ $(INSTALL_DIR) $(datadir)/html; \ - echo "( cd $(INSTALL_XML_DOC)-html && $(CP) * $(datadir)/html )" ; \ - ( cd $(INSTALL_XML_DOC)-html && $(CP) * $(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_XML_DOC)`echo .$$i | sed s/\.htmlhelp/.chm/ | sed s/\.html-no-chunks/.html/` $(datadir); \ $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_XML_DOC)`echo .$$i | sed s/\.htmlhelp/.chm/ | sed s/\.html-no-chunks/.html/` $(datadir); \ @@ -844,23 +854,6 @@ install-docs:: $(foreach i,$(XMLDocWays),$(INSTALL_XML_DOC)$(patsubst %.html-no- endif endif -ifneq "$(INSTALL_SGML_DOC)" "" -ifneq "$(SGMLDocWays)" "" -install-docs:: $(foreach i,$(SGMLDocWays),$(INSTALL_SGML_DOC).$i) - @$(INSTALL_DIR) $(datadir) - @for i in $(SGMLDocWays); do \ - if [ $$i = "html" ]; then \ - $(INSTALL_DIR) $(datadir)/html; \ - echo $(CP) -r $(INSTALL_SGML_DOC) $(datadir)/html; \ - $(CP) -r $(INSTALL_SGML_DOC) $(datadir)/html; \ - else \ - echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ - $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ - fi \ - done -endif -endif - # # Use with care.. # @@ -944,52 +937,6 @@ show: ################################################################################ # -# SGML Documentation -# -################################################################################ - -.PHONY: dvi ps html pdf rtf - -ifneq "$(SGML_DOC)" "" - -all :: $(SGMLDocWays) - -# multi-file SGML document: main document name is specified in $(SGML_DOC), -# sub-documents (.sgml files) listed in $(SGML_SRCS). - -ifeq "$(SGML_SRCS)" "" -SGML_SRCS = $(wildcard *.sgml) -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)) - -$(SGML_DVI) $(SGML_PS) $(SGML_HTML) $(SGML_TEXT) $(SGML_PDF) :: $(SGML_SRCS) - -dvi :: $(SGML_DVI) -ps :: $(SGML_PS) -pdf :: $(SGML_PDF) -rtf :: $(SGML_RTF) -html :: $(SGML_HTML) -txt :: $(SGML_TEXT) - -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 - -extraclean :: - $(RM) -rf DBTOHTML_OUTPUT_* - $(RM) -rf *.junk/ - $(RM) -rf $(SGML_DOC) -endif - -################################################################################ -# # DocBook XML Documentation # ################################################################################ @@ -1007,7 +954,7 @@ ifeq "$(XML_SRCS)" "" XML_SRCS = $(wildcard *.xml) endif -XML_HTML = $(addsuffix -html/index.html,$(basename $(XML_DOC))) +XML_HTML = $(addsuffix /index.html,$(basename $(XML_DOC))) XML_HTML_NO_CHUNKS = $(addsuffix .html,$(XML_DOC)) XML_HTMLHELP = $(addsuffix -htmlhelp/index.html,$(basename $(XML_DOC))) XML_FO = $(addsuffix .fo,$(XML_DOC)) @@ -1028,7 +975,7 @@ pdf :: $(XML_PDF) CLEAN_FILES += $(XML_HTML_NO_CHUNKS) $(XML_FO) $(XML_DVI) $(XML_PS) $(XML_PDF) extraclean :: - $(RM) -rf $(XML_DOC).out $(FPTOOLS_CSS) $(basename $(XML_DOC))-html $(basename $(XML_DOC))-htmlhelp + $(RM) -rf $(XML_DOC).out $(FPTOOLS_CSS) $(basename $(XML_DOC)) $(basename $(XML_DOC))-htmlhelp validate :: $(XMLLINT) --valid --noout $(XMLLINT_OPTS) $(XML_DOC).xml @@ -1263,3 +1210,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) +