X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Ftarget.mk;h=c824dad2851c1adfebb75f13b4d9be0bccafe304;hb=c0be61743a875b59a1ffe6f0af6a50d4f9d091ef;hp=3a54c97257033378dea8109b1a0f8c9d129c2fcf;hpb=de309222fbdc6f57dc069c589d2477651008e221;p=ghc-hetmet.git diff --git a/mk/target.mk b/mk/target.mk index 3a54c97..c824dad 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -44,6 +44,11 @@ PRE_SRCS := $(ALL_SRCS) include $(TOP)/mk/package.mk +################################################################### +# Suffix rules for Haskell, C and literate + +include $(TOP)/mk/suffix.mk + ################################################################## # FPtools standard targets # @@ -72,13 +77,11 @@ include $(TOP)/mk/package.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 :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(STAMP_PKG_CONF) +depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(PKGCONF_DEP) @$(RM) .depend @touch .depend ifneq "$(DOC_SRCS)" "" @@ -231,16 +234,13 @@ 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 - -# for building a Haskell program, we add FptoolsHcOpts -SRC_HC_OPTS += $(FptoolsHcOpts) endif #---------------------------------------- @@ -302,20 +302,19 @@ 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 $@.tmp -$(RANLIB) $@.tmp -$(MV) $@.tmp $@ +(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 -$(AR) $(AR_OPTS) $@.tmp $(ArSupportsInput) $@.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) $@.tmp -$(MV) $@.tmp $@ +$(RANLIB) $@ endef endif @@ -323,9 +322,9 @@ endif HC_SPLIT_PRE = \ $(RM) $@; if [ ! -d $(basename $@)_split ]; then mkdir $(basename $@)_split; else \ - $(FIND) $(basename $@)_split -name '*.$(way_)o' | xargs $(RM) __rm_food; fi + $(FIND) $(basename $@)_split -name '*.$(way_)o' -print | xargs $(RM) __rm_food; fi ifeq "$(GhcWithInterpreter)" "YES" -HC_SPLIT_POST = (cd $(dir $@) && $(LD) -r $(LD_X) -o $(notdir $@) $(basename $(notdir $@))_split/*.$(way_)o) +HC_SPLIT_POST = (cd $(basename $@)_split && $(LD) -r $(LD_X) -o ../$(notdir $@) *.$(way_)o) else HC_SPLIT_POST = touch $@ endif # GhcWithInterpreter == YES @@ -623,11 +622,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; @@ -682,6 +681,17 @@ install-dirs :: # within the various install targets instead. #install:: install-dirs +# +# 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 "$(INSTALL_PROGS)" "" # @@ -796,25 +806,32 @@ install:: $(INSTALL_INCLUDES) endif ifneq "$(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 "$(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_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; \ + echo "( cd $(INSTALL_XML_DOC)-html && $(CP) * $(datadir)/html )" ; \ + ( cd $(INSTALL_XML_DOC)-html && $(CP) * $(datadir)/html ) ; \ else \ - echo $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ - $(INSTALL_DATA) $(INSTALL_OPTS) $(INSTALL_SGML_DOC).$$i $(datadir); \ + 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); \ + fi; \ + if [ $$i = "html-no-chunks" ]; then \ + echo $(CP) $(FPTOOLS_CSS_ABS) $(datadir); \ + $(CP) $(FPTOOLS_CSS_ABS) $(datadir); \ fi \ done endif @@ -885,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) @@ -903,48 +920,48 @@ show: ################################################################################ # -# SGML Documentation +# DocBook XML Documentation # ################################################################################ -.PHONY: dvi ps html pdf rtf +.PHONY: html html-no-chunks htmlhelp 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 -html/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)) +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) +htmlhelp :: $(XML_HTMLHELP) +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))-html $(basename $(XML_DOC))-htmlhelp + +validate :: + $(XMLLINT) --valid --noout $(XMLLINT_OPTS) $(XML_DOC).xml endif ############################################################################## @@ -1119,7 +1136,7 @@ endif # the --no-print-directory flag which is passed to recursive # invocations of make. # -ifeq "$(way)" "" +#ifeq "$(way)" "" ifneq "$(SUBDIRS)" "" # we override the 'boot', 'all' and 'install' targets in the top @@ -1166,7 +1183,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main @echo "------------------------------------------------------------------------" endif -endif +#endif # # Selectively building subdirectories.