[project @ 1997-09-09 14:22:33 by simonm]
[ghc-hetmet.git] / mk / target.mk
index 3fb5002..ac7b69f 100644 (file)
@@ -59,6 +59,9 @@
 #
 .PHONY: depend
 
+# Compiler produced files that are targets of the source's imports.
+MKDEPENDHS_OBJ_SUFFICES=o
+
 depend :: $(MKDEPENDHS_SRCS) $(MKDEPENDC_SRCS)
        @$(RM) .depend
        @touch .depend
@@ -69,9 +72,9 @@ ifneq "$(MKDEPENDC_SRCS)" ""
        $(MKDEPENDC) -f .depend $(MKDEPENDC_OPTS) -- $(CC_OPTS) -- $(MKDEPENDC_SRCS)
 endif
 ifneq "$(MKDEPENDHS_SRCS)" ""
-       @if echo $(notdir $(MKDEPENDHS)) | grep -s ghc ; then \
-          echo $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(MKDEPENDHS_OPTS) $(HC_OPTS) $(MKDEPENDHS_SRCS) ; \
-          $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(MKDEPENDHS_OPTS) $(HC_OPTS) $(MKDEPENDHS_SRCS) ; \
+       @if ( echo $(notdir $(MKDEPENDHS)) | grep ghc >/dev/null 2>&1 ); then \
+          echo $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-optdep-o -optdep$(obj)) $(MKDEPENDHS_OPTS) $(HC_OPTS) $(MKDEPENDHS_SRCS) ; \
+          $(MKDEPENDHS) -M -optdep-f -optdep.depend $(foreach way,$(WAYS),-optdep-s -optdep$(way)) $(foreach obj,$(MKDEPENDHS_OBJ_SUFFICES),-optdep-o -optdep$(obj)) $(MKDEPENDHS_OPTS) $(HC_OPTS) $(MKDEPENDHS_SRCS) ; \
        else \
           echo $(MKDEPENDHS) -f .depend $(MKDEPENDHS_OPTS) $(foreach way,$(WAYS),-s $(way)) -- $(HC_OPTS) -- $(MKDEPENDHS_SRCS) ; \
           $(MKDEPENDHS) -f .depend $(MKDEPENDHS_OPTS) $(foreach way,$(WAYS),-s $(way)) -- $(HC_OPTS) -- $(MKDEPENDHS_SRCS) ; \
@@ -422,11 +425,11 @@ endif
 # For each of these variables that is defined, you
 # get one install rule
 #
-#      INSTALL_PROGS    install these executable programs in $(bindir)
-#      INSTALL_SCRIPTS  install these executable scripts in $(bindir)
-#      INSTALL_LIBS     install these platform-dependent libraries in $(libdir)
-#      INSTALL_LIBEXECS install these platform-dependent execs in $(libdir)
-#      INSTALL_DATAS    install these platform-independent files in $(datadir)
+#      INSTALL_PROGS     executable programs in $(bindir)
+#      INSTALL_SCRIPTS   executable scripts in $(bindir)
+#      INSTALL_LIBS      platform-dependent libraries in $(libdir) (ranlib'ed)
+#      INSTALL_LIBEXECS  platform-dependent execs in $(libdir)
+#      INSTALL_DATAS     platform-independent files in $(datadir)
 #
 # If the installation directory variable is undefined, the install rule simply
 # emits a suitable error message.
@@ -579,7 +582,14 @@ ifneq "$(INSTALL_LIBS)" ""
 install:: $(INSTALL_LIBS)
        @$(INSTALL_DIR) $(libdir)
        for i in $(INSTALL_LIBS); do \
-               $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
+               case $$i in \
+                 *.a) \
+                   $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
+                   $(RANLIB) $(libdir)/`basename $$i` ; \
+                   break;; \
+                 *) \
+                   $(INSTALL_DATA) $(INSTALL_OPTS) $$i $(libdir); \
+               esac; \
        done
 endif
 
@@ -807,11 +817,12 @@ TAGS:: $(SOURCES)
        @$(RM) TAGS
        @touch TAGS
 ifneq "$(HS_SRCS)" ""
-       $(HSTAGS) $(HSTAGS_OPTS) -- $(HS_SRCS)
+       $(HSTAGS) $(HSTAGS_OPTS) -- $(TAGS_HS_SRCS)
 endif
 ifneq "$(C_SRCS)" ""
-       etags -a $(C_SRCS)
+       etags -a $(TAGS_C_SRCS)
 endif
+       @( DEREFFED=`ls -l Makefile | sed -e 's/.*-> \(.*\)/\1/g'` && $(RM) `dirname $$DEREFFED`/TAGS && $(CP) TAGS `dirname $$DEREFFED` ) || echo TAGS file generated, perhaps copy over to source tree?
 
 #------------------------------------------------------------
 #                      Makefile debugging
@@ -924,7 +935,8 @@ endif
 ifneq "$(HS_OBJS)" ""
 ifneq "$(filter -split-objs,$(HC_OPTS))" ""
 clean ::
-       find $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food;
+       find $(patsubst %.$(way_)o,%,$(HS_OBJS)) -name '*.$(way_)o' -print | xargs $(RM) __rm_food
+       rmdir $(patsubst %.$(way_)o,%,$(HS_OBJS))
 endif
 endif
 
@@ -1017,12 +1029,12 @@ ifeq "$(way)" ""
 ifneq "$(SUBDIRS)" ""
 
 all docs runtests boot TAGS clean veryclean maintainer-clean install info ::
-       @case '${MFLAGS}' in *[ik]*) set +e;; esac;
        @echo "------------------------------------------------------------------------"
        @echo "===fptools== Recursively making \`$@' in $(SUBDIRS) ..."
        @echo "PWD = $(shell pwd)"
        @echo "------------------------------------------------------------------------"
        @for i in $(SUBDIRS) ; do \
+         case '${MFLAGS}' in *-[ik]*) set +e; break;; *) set -e;; esac; \
          echo "------------------------------------------------------------------------"; \
          echo "==fptools== $(MAKE) $@;"; \
          echo " in $(shell pwd)/$$i"; \
@@ -1035,8 +1047,8 @@ all docs runtests boot TAGS clean veryclean maintainer-clean install info ::
        @echo "------------------------------------------------------------------------"
 
 dist ::
-       @case '${MFLAGS}' in *[ik]*) set +e;; esac; \
        for i in $(SUBDIRS) ; do \
+         case '${MFLAGS}' in *-[ik]*) set +e;; *) set -e;; esac; \
          $(MKDIRHIER_PREFIX)mkdirhier $(SRC_DIST_DIR)/$$i; \
          $(MAKE) -C $$i $(MFLAGS) $@ SRC_DIST_DIR=$(SRC_DIST_DIR)/$$i; \
        done
@@ -1064,6 +1076,7 @@ all docs runtests TAGS clean veryclean maintainer-clean install ::
        @echo "PWD = $(shell pwd)"
        @echo "------------------------------------------------------------------------"
        @for i in $(WAYS) ; do \
+         case '${MFLAGS}' in *-[ik]*) set +e;; *) set -e;; esac; \
          echo "------------------------------------------------------------------------"; \
          echo "==fptools== $(MAKE) way=$$i $@;"; \
          echo "PWD = $(shell pwd)"; \