Use update-alternatives for handling generic tool names
[ghc-hetmet.git] / Makefile
index ab4f594..1ffd36a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -206,7 +206,7 @@ install-docs ::
 # 
 
 ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-BinDistShScripts = ghc-$(ProjectVersion) ghci-$(ProjectVersion) ghc-pkg-$(ProjectVersion) hsc2hs
+BinDistShScripts = ghc-$(ProjectVersion) ghci-$(ProjectVersion) ghc-pkg-$(ProjectVersion) hsc2hs-ghc
 else
 BinDistShScripts =
 endif
@@ -214,7 +214,6 @@ endif
 BinDistPrlScripts = ghcprof
 BinDistLibPrlScripts = ghc-asm ghc-split
 BinDistBins = hp2ps runghc
-BinDistOptBins = runhaskell
 BinDistLinks = ghc ghci ghc-pkg
 BinDistLibSplicedFiles = package.conf
 BinDistDirs = includes compiler docs driver libraries rts utils
@@ -241,40 +240,31 @@ ifeq "$(darwin_TARGET_OS)" "1"
 BIN_DIST_TOP+=mk/fix_install_names.sh
 endif
 
-.PHONY: binary-dist-pre binary-dist binary-pack
+.PHONY: binary-dist-pre% binary-dist binary-pack
 
-binary-dist:: binary-dist-pre
+BINARY_DIST_PRE_RULES=$(foreach d,$(BinDistDirs),binary-dist-pre-$d)
+
+binary-dist:: binary-dist-pre $(BINARY_DIST_PRE_RULES)
 
 binary-dist-pre::
 ifeq "$(BIN_DIST)" ""
-       @echo "WARNING: To run the binary-dist target, you need to set BIN_DIST=1 in mk/build.mk" && exit 1
+       @echo "WARNING: To run the binary-dist target, you need to set BIN_DIST=1 in mk/build.mk"
+       @false
 endif
        -rm -rf $(BIN_DIST_DIR)
        -$(RM) $(BIN_DIST_DIR).tar.gz
-       @for i in $(BinDistDirs); do                     \
-         if test -d "$$i"; then                         \
-          echo $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM); \
-          $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM); \
-          echo $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM); \
-          $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM); \
-          echo $(MKDIRHIER) $(BIN_DIST_DIR)/share; \
-          $(MKDIRHIER) $(BIN_DIST_DIR)/share; \
-          echo $(MAKE) -C $$i $(MFLAGS) $(INSTALL_STAGE) install \
-               prefix=$(BIN_DIST_DIR) \
-               exec_prefix=$(BIN_DIST_DIR) \
-               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
-               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               datadir=$(BIN_DIST_DIR)/share; \
-          $(MAKE) -C $$i $(MFLAGS) $(INSTALL_STAGE) install \
-               prefix=$(BIN_DIST_DIR) \
-               exec_prefix=$(BIN_DIST_DIR) \
-               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
-               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               datadir=$(BIN_DIST_DIR)/share; \
-         fi; \
-       done
+       $(MKDIRHIER) $(BIN_DIST_DIR)/bin/$(TARGETPLATFORM)
+       $(MKDIRHIER) $(BIN_DIST_DIR)/lib/$(TARGETPLATFORM)
+       $(MKDIRHIER) $(BIN_DIST_DIR)/share
+
+$(BINARY_DIST_PRE_RULES): binary-dist-pre-%:
+       $(MAKE) -C $* $(MFLAGS) $(INSTALL_STAGE) install \
+               prefix=$(BIN_DIST_DIR) \
+               exec_prefix=$(BIN_DIST_DIR) \
+               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
+               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
+               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
+               datadir=$(BIN_DIST_DIR)/share
 
 binary-dist::
        @for i in $(BIN_DIST_TOP); do \
@@ -323,27 +313,23 @@ endif # XSLTPROC
 
 endif # BINDIST_DOC_WAYS
 
-binary-dist ::
 ifneq "$(DIR_DOCBOOK_XSL)" ""
-       @for i in $(BinDistDirs); do                            \
-         if test -d "$$i"; then                                \
-           $(MAKE) -C $$i $(MFLAGS) $(BINDIST_DOC_WAYS);       \
-           echo $(MAKE) -C $$i $(MFLAGS) install-docs XMLDocWays="$(BINDIST_DOC_WAYS)" \
-               prefix=$(BIN_DIST_DIR)  \
-               exec_prefix=$(BIN_DIST_DIR) \
-               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
-               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               datadir=$(BIN_DIST_DIR)/share; \
-           $(MAKE) -C $$i $(MFLAGS) install-docs XMLDocWays="$(BINDIST_DOC_WAYS)" \
-               prefix=$(BIN_DIST_DIR)  \
-               exec_prefix=$(BIN_DIST_DIR) \
-               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
-               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
-               datadir=$(BIN_DIST_DIR)/share; \
-         fi \
-       done
+.PHONY: binary-dist-doc-%
+
+BINARY_DIST_DOC_RULES=$(foreach d,$(BinDistDirs),binary-dist-doc-$d)
+
+binary-dist :: $(BINARY_DIST_DOC_RULES)
+
+$(BINARY_DIST_DOC_RULES): binary-dist-doc-%:
+       $(MAKE) -C $* $(MFLAGS) $(BINDIST_DOC_WAYS)
+       $(MAKE) -C $* $(MFLAGS) install-docs \
+               XMLDocWays="$(BINDIST_DOC_WAYS)" \
+               prefix=$(BIN_DIST_DIR) \
+               exec_prefix=$(BIN_DIST_DIR) \
+               bindir=$(BIN_DIST_DIR)/bin/$(TARGETPLATFORM) \
+               libdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
+               libexecdir=$(BIN_DIST_DIR)/lib/$(TARGETPLATFORM) \
+               datadir=$(BIN_DIST_DIR)/share
 endif
 
 # Rename scripts to $i.prl and $i.sh where necessary.