Don't require the library ghc.mk files in order to clean
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 4406d31..f77f9eb 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
 #   * remove old Makefiles, add new stubs for building in subdirs
 #     * utils/hsc2hs/Makefile
 #     * utils/haddock/Makefile
-#     * mk/oldconfig.mk.in
 #     * docs/Makefile
 #     * docs/docbook-cheat-sheet/Makefile
 #     * docs/ext-core/Makefile
 #     * docs/man/Makefile
 #     * docs/storage-mgmt/Makefile
-#     * docs/users_guide/Makefile
 #     * docs/vh/Makefile
 #     * driver/Makefile
-#     * driver/ghc/Makefile
-#     * libraries/Makefile
 #     * rts/dotnet/Makefile
 #     * utils/Makefile
-#   * docbook PDFs, e.g. "dblatex -T db2latex users_guide.xml"
 #   * GhcProfiled
 #   * optionally install stage3?
 #   * shared libraries, way dyn
@@ -139,18 +134,21 @@ show:
 # -----------------------------------------------------------------------------
 # Include subsidiary build-system bits
 
+ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 include mk/config.mk
-
 ifeq "$(ProjectVersion)" ""
 $(error Please run ./configure first)
 endif
+endif
 
 # (Optional) build-specific configuration
 include mk/custom-settings.mk
 
+ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 ifeq "$(GhcLibWays)" ""
 $(error $$(GhcLibWays) is empty, it must contain at least one way)
 endif
+endif
 
 # -----------------------------------------------------------------------------
 # Macros for standard targets
@@ -320,22 +318,20 @@ endif
 
 PACKAGES += haskeline
 
-ifneq "$(wildcard libraries/dph)" ""
-PACKAGES += \
+PACKAGES_STAGE2 += \
        dph/dph-base \
        dph/dph-prim-interface \
        dph/dph-prim-seq \
        dph/dph-prim-par \
        dph/dph-seq \
        dph/dph-par
-endif
 
 BOOT_PKGS = Cabal hpc extensible-exceptions
 
 # The actual .a and .so/.dll files: needed for dependencies.
-ALL_LIBS  = $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_v_LIB))
+ALL_STAGE1_LIBS  = $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_v_LIB))
 ifeq "$(BuildSharedLibs)" "YES"
-ALL_LIBS += $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_dyn_LIB))
+ALL_STAGE1_LIBS += $(foreach lib,$(PACKAGES),$(libraries/$(lib)_dist-install_dyn_LIB))
 endif
 BOOT_LIBS = $(foreach lib,$(BOOT_PKGS),$(libraries/$(lib)_dist-boot_v_LIB))
 
@@ -355,18 +351,20 @@ endif
 # know the dependencies until we've generated the pacakge-data.mk
 # files.
 define fixed_pkg_dep
-libraries/$1/$2/package-data.mk : $(GHC_PKG_INPLACE) $$(if $$(fixed_pkg_prev),libraries/$$(fixed_pkg_prev)/$2/package-data.mk)
+libraries/$1/$2/package-data.mk : $$(GHC_PKG_INPLACE) $$(if $$(fixed_pkg_prev),libraries/$$(fixed_pkg_prev)/$2/package-data.mk)
 fixed_pkg_prev:=$1
 endef
 
 ifneq "$(BINDIST)" "YES"
 fixed_pkg_prev=
-$(foreach pkg,$(PACKAGES),$(eval $(call fixed_pkg_dep,$(pkg),dist-install)))
+$(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),$(eval $(call fixed_pkg_dep,$(pkg),dist-install)))
 
 # We assume that the stage2 compiler depends on all the libraries, so
 # they all get added to the package database before we try to configure
 # it
-compiler/stage2/package-data.mk: $(foreach pkg,$(PACKAGES),libraries/$(pkg)/dist-install/package-data.mk)
+compiler/stage2/package-data.mk: $(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),libraries/$(pkg)/dist-install/package-data.mk)
+ghc/stage1/package-data.mk: compiler/stage1/package-data.mk
+ghc/stage2/package-data.mk: compiler/stage2/package-data.mk
 # haddock depends on ghc and some libraries, but depending on GHC's
 # package-data.mk is sufficient, as that in turn depends on all the
 # libraries
@@ -483,11 +481,18 @@ endif
 
 BUILD_DIRS += \
    utils/haddock \
-   $(patsubst %, libraries/%, $(PACKAGES)) \
+   utils/haddock/doc
+
+ifneq "$(CLEANING)" "YES"
+BUILD_DIRS += \
+   $(patsubst %, libraries/%, $(PACKAGES) $(PACKAGES_STAGE2)) \
+   libraries/dph
+endif
+
+BUILD_DIRS += \
    compiler \
    $(GHC_HSC2HS_DIR) \
    $(GHC_PKG_DIR) \
-   utils/hasktags \
    utils/hpc \
    utils/runghc \
    ghc
@@ -518,20 +523,16 @@ ifneq "$(findstring $(phase),0 1 2 3)" ""
 utils/haddock_dist_DISABLE = YES
 utils/runghc_dist_DISABLE = YES
 utils/hpc_dist_DISABLE = YES
-utils/hasktags_dist_DISABLE = YES
 utils/hsc2hs_dist-install_DISABLE = YES
 utils/ghc-pkg_dist-install_DISABLE = YES
 compiler_stage2_DISABLE = YES
 compiler_stage3_DISABLE = YES
 ghc_stage2_DISABLE = YES
 ghc_stage3_DISABLE = YES
-$(foreach lib,$(PACKAGES),$(eval \
+$(foreach lib,$(PACKAGES) $(PACKAGES_STAGE2),$(eval \
   libraries/$(lib)_dist-install_DISABLE = YES))
 endif
 
-ifneq "$(wildcard libraries/dph)" ""
-include libraries/dph/ghc.mk
-endif
 include $(patsubst %, %/ghc.mk, $(BUILD_DIRS))
 
 # We need -fno-warn-deprecated-flags to avoid failure with -Werror
@@ -541,7 +542,10 @@ GhcBootLibHcOpts += -fno-warn-deprecated-flags
 endif
 
 # Add $(GhcLibHcOpts) to all library builds
-$(foreach pkg,$(PACKAGES),$(eval libraries/$(pkg)_dist-install_HC_OPTS += $$(GhcLibHcOpts)))
+$(foreach pkg,$(PACKAGES) $(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-install_HC_OPTS += $$(GhcLibHcOpts)))
+
+# XXX Hack; remove this
+$(foreach pkg,$(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-install_HC_OPTS += -Wwarn))
 
 # XXX we configure packages with the bootsrapping compiler (for
 # dependency reasons, see the phase ordering), which doesn't
@@ -557,9 +561,11 @@ libraries/base3-compat_dist-install_HC_OPTS += -XPackageImports
 
 ifneq "$(BINDIST)" "YES"
 
+ifneq "$(BOOTSTRAPPING_CONF)" ""
 ifeq "$(wildcard $(BOOTSTRAPPING_CONF))" ""
 $(shell echo "[]" >$(BOOTSTRAPPING_CONF))
 endif
+endif
 
 $(eval $(call clean-target,$(BOOTSTRAPPING_CONF),,$(BOOTSTRAPPING_CONF)))
 
@@ -699,7 +705,7 @@ install_packages: libffi/package.conf.install rts/package.conf.install
        echo "[]" > $(INSTALLED_PACKAGE_CONF)
        $(INSTALLED_GHC_PKG_REAL) --force --global-conf $(INSTALLED_PACKAGE_CONF) update libffi/package.conf.install
        $(INSTALLED_GHC_PKG_REAL) --force --global-conf $(INSTALLED_PACKAGE_CONF) update rts/package.conf.install
-       $(foreach p, $(PACKAGES),\
+       $(foreach p, $(PACKAGES) $(PACKAGES_STAGE2),\
            $(GHC_CABAL_INPLACE) install \
                 $(INSTALLED_GHC_PKG_REAL) \
                 $(INSTALLED_PACKAGE_CONF) \
@@ -722,7 +728,7 @@ $(eval $(call bindist,.,\
     mk/config.mk.in \
     $(INPLACE_BIN)/mkdirhier \
     $(INPLACE_BIN)/ghc-cabal \
-    utils/pwd/pwd \
+    utils/ghc-pwd/ghc-pwd \
        $(BINDIST_WRAPPERS) \
        $(BINDIST_LIBS) \
        $(BINDIST_HI) \
@@ -790,10 +796,7 @@ SRC_DIST_FILES += \
        aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \
        ghc.spec.in ghc.spec extra-gcc-opts.in VERSION boot ghc.mk
 
-EXTRA_LIBS=$(patsubst %, $(SRC_DIST_NAME)/%, $(shell grep -E "extralibs|dph" packages | grep -v "^\#" | sed "s/ .*//"))
-
 SRC_DIST_TARBALL = ghc-$(ProjectVersion)-src.tar.bz2
-SRC_DIST_EXTRALIBS_TARBALL = ghc-$(ProjectVersion)-src-extralibs.tar.bz2
 
 VERSION :
        echo $(ProjectVersion) >VERSION
@@ -840,8 +843,6 @@ sdist-prep :
 
 .PHONY: sdist
 sdist : sdist-prep
-       $(TAR) chf - $(EXTRA_LIBS) | bzip2 >$(TOP)/$(SRC_DIST_EXTRALIBS_TARBALL)
-       $(RM) -rf $(EXTRA_LIBS)
        $(TAR) chf - $(SRC_DIST_NAME) 2>$src_log | bzip2 >$(TOP)/$(SRC_DIST_TARBALL)
 
 sdist-manifest : $(SRC_DIST_TARBALL)
@@ -852,19 +853,30 @@ sdist-manifest : $(SRC_DIST_TARBALL)
 # over SSH.
 ifneq "$(PublishLocation)" ""
 publish-sdist :
-       $(call nTimes,10,$(PublishCp) $(SRC_DIST_EXTRALIBS_TARBALL) $(PublishLocation)/dist)
        $(call nTimes,10,$(PublishCp) $(SRC_DIST_TARBALL) $(PublishLocation)/dist)
 endif
 
+ifeq "$(GhcUnregisterised)" "YES"
+SRC_CC_OPTS += -DNO_REGS -DUSE_MINIINTERPRETER
+endif
+
 # -----------------------------------------------------------------------------
 # Cleaning
 
 .PHONY: clean
 
+CLEAN_FILES += utils/ghc-pwd/ghc-pwd
+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 : clean_files
 .PHONY: clean_files
 clean_files :
        $(RM) $(CLEAN_FILES)
+       $(RM) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2))
 
 distclean : clean
        $(RM) config.cache config.status config.log mk/config.h mk/stamp-h
@@ -876,14 +888,25 @@ distclean : clean
        $(RM) libraries/process/include/HsProcessConfig.h
        $(RM) libraries/unix/include/HsUnixConfig.h
        $(RM) libraries/old-time/include/HsTimeConfig.h
+       $(RM) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) -r $(patsubst %, libraries/%/autom4te.cache, $(PACKAGES) $(PACKAGES_STAGE2))
 
 maintainer-clean : distclean
        $(RM) configure mk/config.h.in
        $(RM) -r autom4te.cache libraries/*/autom4te.cache
        $(RM) ghc.spec
-       $(RM) libraries/*/GNUmakefile libraries/*/ghc.mk libraries/*/configure 
+       $(RM) $(patsubst %, libraries/%/GNUmakefile, \
+               $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) $(patsubst %, libraries/%/ghc.mk, $(PACKAGES) $(PACKAGES_STAGE2))
+       $(RM) $(patsubst %, libraries/%/configure, \
+               $(PACKAGES) $(PACKAGES_STAGE2))
        $(RM) libraries/base/include/HsBaseConfig.h.in
        $(RM) libraries/directory/include/HsDirectoryConfig.h.in
        $(RM) libraries/process/include/HsProcessConfig.h.in
        $(RM) libraries/unix/include/HsUnixConfig.h.in
        $(RM) libraries/old-time/include/HsTimeConfig.h.in
+
+.PHONY: all_libraries
+