Major patch to fix reporting of unused imports
[ghc-hetmet.git] / ghc.mk
diff --git a/ghc.mk b/ghc.mk
index 77c94a0..b6df093 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
 #     * install libgmp.a, gmp.h
 #   * need to fix Cabal for new Windows layout, see
 #     Distribution/Simple/GHC.configureToolchain.
-#   * separate the logic of whether to do something from the test for
-#     existence of the tool to do it. For example, rather than checking
-#     if $DIR_DOCBOOK_XSL or $XSLTPROC is "", we should have a variable
-#     for controlling the building of the docs.
 #   * remove old Makefiles, add new stubs for building in subdirs
-#     * utils/hsc2hs/Makefile
-#     * utils/haddock/Makefile
 #     * docs/Makefile
 #     * docs/docbook-cheat-sheet/Makefile
 #     * docs/ext-core/Makefile
 #     * docs/man/Makefile
 #     * docs/storage-mgmt/Makefile
 #     * docs/vh/Makefile
-#     * driver/Makefile
 #     * rts/dotnet/Makefile
 #     * utils/Makefile
 #   * GhcProfiled
 #   * optionally install stage3?
 #   * shared libraries, way dyn
-#   * get HC bootstrapping working
 #   * add Makefiles for the rest of the utils/ programs that aren't built
 #     by default (need to exclude them from 'make all' too)
 #
@@ -207,6 +199,7 @@ include rules/c-sources.mk
 include rules/includes-sources.mk
 include rules/hs-objs.mk
 include rules/c-objs.mk
+include rules/cmm-objs.mk
 
 # -----------------------------------------------------------------------------
 # Suffix rules
@@ -231,6 +224,11 @@ $(foreach way,$(ALL_WAYS),\
 
 include rules/c-suffix-rules.mk
 
+#-----------------------------------------------------------------------------
+# CMM-related suffix rules
+
+include rules/cmm-suffix-rules.mk
+
 endif
 
 # -----------------------------------------------------------------------------
@@ -288,6 +286,7 @@ include rules/bindist.mk
 PACKAGES = \
        ghc-prim \
        integer-gmp \
+       integer \
        base \
        filepath \
        array \
@@ -309,7 +308,6 @@ PACKAGES += \
        extensible-exceptions \
        haskell98 \
        hpc \
-       packedstring \
        pretty \
        syb \
        template-haskell \
@@ -347,10 +345,6 @@ OTHER_LIBS = libffi/libHSffi$(v_libsuf) libffi/HSffi.o
 ifeq "$(BuildSharedLibs)" "YES"
 OTHER_LIBS  += libffi/libHSffi$(dyn_libsuf)
 endif
-ifeq "$(HaveLibGmp)" "NO"
-GMP_LIB = gmp/libgmp.a
-OTHER_LIBS += $(GMP_LIB)
-endif
 
 # We cannot run ghc-cabal to configure a package until we have
 # configured and registered all of its dependencies.  So the following
@@ -461,7 +455,6 @@ BUILD_DIRS += \
 endif
 
 BUILD_DIRS += \
-   gmp \
    docs/users_guide \
    libraries/Cabal/doc \
    $(GHC_UNLIT_DIR) \
@@ -506,6 +499,7 @@ endif
 endif
 
 BUILD_DIRS += \
+   libraries/integer-gmp/gmp \
    compiler \
    $(GHC_HSC2HS_DIR) \
    $(GHC_PKG_DIR) \
@@ -569,6 +563,10 @@ $(foreach pkg,$(PACKAGES_STAGE2),$(eval libraries/$(pkg)_dist-install_HC_OPTS +=
 # out the ones it thinks aren't supported.
 libraries/base3-compat_dist-install_HC_OPTS += -XPackageImports
 
+# A useful pseudo-target
+.PHONY: stage1_libs
+stage1_libs : $(ALL_STAGE1_LIBS)
+
 # -----------------------------------------------------------------------------
 # Bootstrapping libraries
 
@@ -765,7 +763,7 @@ $(eval $(call bindist,.,\
 binary-dist:
        "$(RM)" $(RM_OPTS) -r $(BIN_DIST_NAME)
        mkdir $(BIN_DIST_NAME)
-       set -e; for i in LICENSE compiler ghc rts libraries utils gmp docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../$$i $(BIN_DIST_NAME)/; done
+       set -e; for i in LICENSE compiler ghc rts libraries utils docs libffi includes driver mk rules Makefile aclocal.m4 config.sub config.guess install-sh extra-gcc-opts.in ghc.mk inplace; do ln -s ../$$i $(BIN_DIST_NAME)/; done
        ln -s ../distrib/configure-bin.ac $(BIN_DIST_NAME)/configure.ac
        cd $(BIN_DIST_NAME) && autoreconf
        "$(RM)" $(RM_OPTS) $(BIN_DIST_TAR)
@@ -818,11 +816,12 @@ SRC_DIST_DIR=$(shell pwd)/$(SRC_DIST_NAME)
 #
 # Files to include in source distributions
 #
-SRC_DIST_DIRS = mk rules docs distrib bindisttest gmp libffi includes utils docs rts compiler ghc driver libraries
+SRC_DIST_DIRS = mk rules docs distrib bindisttest libffi includes utils docs rts compiler ghc driver libraries
 SRC_DIST_FILES += \
        configure.ac config.guess config.sub configure \
        aclocal.m4 README ANNOUNCE HACKING LICENSE Makefile install-sh \
-       ghc.spec.in ghc.spec extra-gcc-opts.in VERSION boot ghc.mk
+       ghc.spec.in ghc.spec extra-gcc-opts.in VERSION \
+       boot boot-pkgs packages ghc.mk
 
 SRC_DIST_TARBALL = $(SRC_DIST_NAME)-src.tar.bz2
 
@@ -906,21 +905,33 @@ clean_files :
        "$(RM)" $(RM_OPTS) $(CLEAN_FILES)
 
 .PHONY: clean_libraries
+clean_libraries: $(patsubst %,clean_libraries/%_dist-install,$(PACKAGES) $(PACKAGES_STAGE2))
+clean_libraries: $(patsubst %,clean_libraries/%_dist-boot,$(BOOT_PKGS))
+
 clean_libraries:
        "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2))
-       "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2))
-       "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2))
+       "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/*.buildinfo, $(PACKAGES) $(PACKAGES_STAGE2))
+
+# We have to define a clean target for each library manually, because the
+# libraries/*/ghc.mk files are not included when we're cleaning.
+ifeq "$(CLEANING)" "YES"
+$(foreach lib,$(PACKAGES) $(PACKAGES_STAGE2),\
+  $(eval $(call clean-target,libraries/$(lib),dist-install,libraries/$(lib)/dist-install)))
+endif
 
 distclean : clean
        "$(RM)" $(RM_OPTS) config.cache config.status config.log mk/config.h mk/stamp-h
        "$(RM)" $(RM_OPTS) mk/config.mk mk/are-validating.mk mk/project.mk
+       "$(RM)" $(RM_OPTS) mk/config.mk.old mk/project.mk.old
        "$(RM)" $(RM_OPTS) extra-gcc-opts docs/users_guide/ug-book.xml
-       "$(RM)" $(RM_OPTS) compiler/ghc.cabal ghc/ghc-bin.cabal
+       "$(RM)" $(RM_OPTS) compiler/ghc.cabal compiler/ghc.cabal.old
+       "$(RM)" $(RM_OPTS) ghc/ghc-bin.cabal
        "$(RM)" $(RM_OPTS) libraries/base/include/HsBaseConfig.h
        "$(RM)" $(RM_OPTS) libraries/directory/include/HsDirectoryConfig.h
        "$(RM)" $(RM_OPTS) libraries/process/include/HsProcessConfig.h
        "$(RM)" $(RM_OPTS) libraries/unix/include/HsUnixConfig.h
        "$(RM)" $(RM_OPTS) libraries/old-time/include/HsTimeConfig.h
+
        "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2))
        "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2))
        "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))
@@ -949,3 +960,5 @@ bootstrapping-files: includes/ghcautoconf.h
 bootstrapping-files: includes/DerivedConstants.h
 bootstrapping-files: includes/GHCConstants.h
 
+.DELETE_ON_ERROR:
+