X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=mk%2Ftarget.mk;h=252d331f1892e5aad4b13471efcc0d64a5a3562d;hb=351afa5ad7cc7012d5460c126cad4999e457a30d;hp=353bdd04bd5f169ca90eec2b25968340ff03b085;hpb=4f0e92bcf620776077d167598e93159e14c41276;p=ghc-hetmet.git diff --git a/mk/target.mk b/mk/target.mk index 353bdd0..252d331 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,7 +77,13 @@ include $(TOP)/mk/package.mk # Compiler produced files that are targets of the source's imports. MKDEPENDHS_OBJ_SUFFICES=o -depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) +ifneq "$(STAMP_PKG_CONF)" "" +PKGCONF_DEP = $(STAMP_PKG_CONF) +else +PKGCONF_DEP = +endif + +depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS) $(STAMP_PKG_CONF) @$(RM) .depend @touch .depend ifneq "$(DOC_SRCS)" "" @@ -169,7 +180,7 @@ endif # `TAGS' # Update a tags table for this program. # -# `dvi' `ps' `pdf' `html' `pdf' +# `dvi' `ps' `pdf' `html' `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. @@ -296,19 +307,18 @@ SRC_HC_OPTS += -split-objs ifeq "$(ArSupportsInput)" "" define BUILD_LIB $(RM) $@ $@.tmp -(echo $(STUBOBJS); $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o') | xargs ar q $@.tmp -$(RANLIB) $@.tmp -$(MV) $@.tmp $@ +(echo $(STUBOBJS) $(EXTRA_OBJS); $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o') | xargs ar q $@ +$(RANLIB) $@ endef else define BUILD_LIB $(RM) $@ $@.tmp -echo $(STUBOBJS) > $@.list +echo $(STUBOBJS) > $@.list +echo $(EXTRA_OBJS) >> $@.list $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o' >> $@.list -$(AR) $(AR_OPTS) $@.tmp $(ArSupportsInput) $@.list +$(AR) $(AR_OPTS) $@ $(ArSupportsInput) $@.list $(RM) $@.list -$(RANLIB) $@.tmp -$(MV) $@.tmp $@ +$(RANLIB) $@ endef endif @@ -318,7 +328,7 @@ 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 = $(LD) -r $(LD_X) -o $@ $(basename $@)_split/*.$(way_)o +HC_SPLIT_POST = (cd $(dir $@) && $(LD) -r $(LD_X) -o $(notdir $@) $(basename $(notdir $@))_split/*.$(way_)o) else HC_SPLIT_POST = touch $@ endif # GhcWithInterpreter == YES @@ -357,7 +367,10 @@ SRC_HC_POST_OPTS += \ endif # SplitObjs endif # StripLibraries -$(LIBRARY) : $(STUBOBJS) $(LIBOBJS) +# Note: $(STUBOBJS) isn't depended on here, but included when building the lib. +# (i.e., the assumption is that $(STUBOBJS) are created as a side-effect +# of building $(LIBOBJS)). +$(LIBRARY) : $(LIBOBJS) $(BUILD_LIB) endif # LIBRARY = "" @@ -640,6 +653,7 @@ endif # LINK # INSTALL_LIB_SCRIPTS platform-dependent scripts in $(libdir) # INSTALL_LIBEXECS platform-dependent execs in $(libdir) # INSTALL_DATAS platform-independent files in $(datadir) +# INSTALL_IFACES platform-dependent interface files in $(ifacedir) # # If the installation directory variable is undefined, the install rule simply # emits a suitable error message. @@ -760,11 +774,19 @@ install:: $(INSTALL_DATAS) done endif -ifneq "$(INSTALL_DATAS_WITH_DIRS)" "" -install:: $(INSTALL_DATAS_WITH_DIRS) - @$(INSTALL_DIR) $(datadir) - for i in $(INSTALL_DATAS_WITH_DIRS); do \ - $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(datadir)/`dirname $$i`; \ +ifneq "$(INSTALL_IFACES)" "" +install:: $(INSTALL_IFACES) + @$(INSTALL_DIR) $(ifacedir) + for i in $(INSTALL_IFACES); do \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(ifacedir); \ + done +endif + +ifneq "$(INSTALL_IFACES_WITH_DIRS)" "" +install:: $(INSTALL_IFACES_WITH_DIRS) + @$(INSTALL_DIR) $(ifacedir) + for i in $(INSTALL_IFACES_WITH_DIRS); do \ + $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(ifacedir)/`dirname $$i`; \ done endif @@ -788,10 +810,13 @@ ifneq "$(INSTALL_SGML_DOC)" "" ifneq "$(SGMLDocWays)" "" install-docs:: $(foreach i,$(SGMLDocWays),$(INSTALL_SGML_DOC).$i) @$(INSTALL_DIR) $(datadir) - for i in $(SGMLDocWays); do \ + @for i in $(SGMLDocWays); do \ if [ $$i = "html" ]; then \ - $(CP) -r $(INSTALL_SGML_DOC) $(datadir); \ + $(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 @@ -1097,6 +1122,7 @@ endif # the --no-print-directory flag which is passed to recursive # invocations of make. # +ifeq "$(way)" "" ifneq "$(SUBDIRS)" "" # we override the 'boot', 'all' and 'install' targets in the top @@ -1143,6 +1169,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main @echo "------------------------------------------------------------------------" endif +endif # # Selectively building subdirectories.