NO_CLEAN_GMP fixes
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 0f479e1..7f653d0 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -34,7 +34,6 @@
 # Tickets we can now close, or fix and close:
 #
 #   * 1693 make distclean
-#   * 3173 make install with DESTDIR
 
 # Possible cleanups:
 #
@@ -184,7 +183,6 @@ $(foreach way,$(ALL_WAYS),\
 # -----------------------------------------------------------------------------
 # Compilation Flags
 
-include rules/distdir-opts.mk
 include rules/distdir-way-opts.mk
 
 # -----------------------------------------------------------------------------
@@ -777,8 +775,10 @@ INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf
 # Install packages in the right order, so that ghc-pkg doesn't complain.
 # Also, install ghc-pkg first.
 ifeq "$(Windows)" "NO"
+INSTALLED_GHC_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-stage2
 INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(ghclibexecdir)/ghc-pkg
 else
+INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc-stage2.exe
 INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
 endif
 
@@ -792,19 +792,25 @@ install_packages: libffi/package.conf.install rts/package.conf.install
        "$(INSTALLED_GHC_PKG_REAL)" --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
        $(foreach p, $(PACKAGES) $(PACKAGES_STAGE2),\
            "$(GHC_CABAL_INPLACE)" install \
+                $(INSTALLED_GHC_REAL) \
                 $(INSTALLED_GHC_PKG_REAL) \
-                $(INSTALLED_PACKAGE_CONF) \
+                $(DESTDIR)$(topdir) \
                 libraries/$p dist-install \
                 '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries' &&) true
        "$(GHC_CABAL_INPLACE)" install \
+                $(INSTALLED_GHC_REAL) \
                 $(INSTALLED_GHC_PKG_REAL) \
-                $(INSTALLED_PACKAGE_CONF) \
+                $(DESTDIR)$(topdir) \
                 compiler stage2 \
                 '$(DESTDIR)' '$(prefix)' '$(ghclibdir)' '$(docdir)/html/libraries'
 
 # -----------------------------------------------------------------------------
 # Binary distributions
 
+ifneq "$(CLEANING)" "YES"
+# This rule seems to hold some files open on Windows which prevents
+# cleaning, perhaps due to the $(wildcard).
+
 $(eval $(call bindist,.,\
     LICENSE \
     configure config.sub config.guess install-sh \
@@ -837,6 +843,7 @@ $(eval $(call bindist,.,\
        bindist.mk \
        libraries/dph/LICENSE \
  ))
+endif
 # mk/project.mk gets an absolute path, so we manually include it in
 # the bindist with a relative path
 
@@ -974,7 +981,7 @@ publish-sdist :
        $(call nTimes,10,$(PublishCp) $(SRC_DIST_TARBALL) $(PublishLocation)/dist)
 endif
 
-ifeq "$(BootingFromUnregisterisedHc)" "YES"
+ifeq "$(BootingFromHc)" "YES"
 SRC_CC_OPTS += -DNO_REGS -DUSE_MINIINTERPRETER -D__GLASGOW_HASKELL__=$(ProjectVersionInt)
 endif
 
@@ -988,20 +995,25 @@ CLEAN_FILES += utils/ghc-pwd/ghc-pwd.exe
 CLEAN_FILES += utils/ghc-pwd/ghc-pwd.hi
 CLEAN_FILES += utils/ghc-pwd/ghc-pwd.o
 CLEAN_FILES += libraries/bootstrapping.conf
-CLEAN_FILES += libraries/integer-gmp/gmp/gmp.h
-CLEAN_FILES += libraries/integer-gmp/gmp/libgmp.a
 CLEAN_FILES += libraries/integer-gmp/cbits/GmpDerivedConstants.h
 CLEAN_FILES += libraries/integer-gmp/cbits/mkGmpDerivedConstants
 
-clean : clean_files clean_libraries clean_gmp
+clean : clean_files clean_libraries
 
 .PHONY: clean_files
 clean_files :
        "$(RM)" $(RM_OPTS) $(CLEAN_FILES)
 
+ifneq "$(NO_CLEAN_GMP)" "YES"
+CLEAN_FILES += libraries/integer-gmp/gmp/gmp.h
+CLEAN_FILES += libraries/integer-gmp/gmp/libgmp.a
+
+clean : clean_gmp
+.PHONY: clean_gmp
 clean_gmp:
        "$(RM)" $(RM_OPTS) -r libraries/integer-gmp/gmp/objs
        "$(RM)" $(RM_OPTS) -r libraries/integer-gmp/gmp/gmpbuild
+endif
 
 .PHONY: clean_libraries
 clean_libraries: $(patsubst %,clean_libraries/%_dist-install,$(PACKAGES) $(PACKAGES_STAGE2))