[project @ 2002-06-26 08:18:38 by stolz]
[ghc-hetmet.git] / mk / target.mk
index 353bdd0..f73420c 100644 (file)
@@ -296,14 +296,15 @@ 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
+(echo $(STUBOBJS) $(EXTRA_OBJS); $(FIND) $(patsubst %.$(way_)o,%_split,$(HS_OBJS)) -name '*.$(way_)o') | xargs ar q $@.tmp
 $(RANLIB) $@.tmp
 $(MV) $@.tmp $@
 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
 $(RM) $@.list
@@ -318,7 +319,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 +358,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 +644,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 +765,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
 
@@ -1097,6 +1110,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 +1157,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main
        @echo "------------------------------------------------------------------------"
 
 endif
+endif
 
 #
 # Selectively building subdirectories.