We need to tell ghc-pkg to --force if we've only built a profiling library
[ghc-hetmet.git] / compiler / Makefile
index 03f9c1e..912d6cc 100644 (file)
@@ -78,14 +78,9 @@ clean.stage.%:
 CONFIGURE_FLAGS_STAGE1 += --flags=stage1
 CONFIGURE_FLAGS_STAGE2 += --flags=-stage1
 
-CONFIGURE_FLAGS_STAGE1 += --flags=-ghci
-
 ifeq "$(GhcWithNativeCodeGen)" "YES"
 CONFIGURE_FLAGS_STAGE1 += --flags=ncg
 CONFIGURE_FLAGS_STAGE2 += --flags=ncg
-else
-CONFIGURE_FLAGS_STAGE1 += --flags=-ncg
-CONFIGURE_FLAGS_STAGE2 += --flags=-ncg
 endif
 
 ifeq "$(GhcWithInterpreter)" "YES"
@@ -99,8 +94,6 @@ CONFIGURE_FLAGS_STAGE2 += --enable-shared
 # function which sets the keepCAFs flag for the RTS before any Haskell
 # code is run.
 CONFIGURE_FLAGS_STAGE2 += --flags=dynlibs
-else
-CONFIGURE_FLAGS_STAGE2 += --flags=-dynlibs
 endif
 
 ifeq "$(GhcEnableTablesNextToCode) $(GhcUnregisterised)" "YES NO"
@@ -116,31 +109,17 @@ ifeq "$(GhciWithDebugger)" "YES"
 CONFIGURE_FLAGS_STAGE2 += --ghc-option=-DDEBUGGER
 endif
 
-# Enable editline if either:
-#   - we're building stage 1 and $(GhcHasEditline)="YES"
+# Enable editline if:
 #   - we're building stage 2/3, and we have built the editline package
 #
 # But we don't enable editline on Windows, as Windows terminals have
 # editline-like support builtin.
 #
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-CONFIGURE_FLAGS_STAGE1 += --flags=-editline
-CONFIGURE_FLAGS_STAGE2 += --flags=-editline
-else
-ifeq "$(GhcHasEditline)" "YES"
-CONFIGURE_FLAGS_STAGE1 += --flags=editline
-else
-CONFIGURE_FLAGS_STAGE1 += --flags=-editline
-endif
+ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 ifeq "$(wildcard $(FPTOOLS_TOP_ABS)/libraries/editline/unbuildable)" ""
 CONFIGURE_FLAGS_STAGE2 += --flags=editline
-else
-CONFIGURE_FLAGS_STAGE2 += --flags=-editline
 endif
 endif
-
-else
-CONFIGURE_FLAGS_STAGE2 += --flags=-ghci
 endif
 
 ifeq "$(GhcWithNativeCodeGen)" "NO"
@@ -165,9 +144,16 @@ endif
 # profiling enabled (GhcProfiled = YES).
 ifneq "$(GhcLibProfiled) $(GhcProfiled)" "NO NO"
 CONFIGURE_FLAGS_STAGE2 += --enable-library-profiling
-# And if we're profiling GHC then we want lots of SCCs
+# And if we're profiling GHC then we want lots of SCCs.
+# We also don't want to waste time building the non-profiling library,
+# either normally or for ghci. Unfortunately this means that we have to
+# tell ghc-pkg --force as it gets upset when libHSghc-6.9.a doesn't
+# exist.
 ifeq "$(GhcProfiled)" "YES"
 CONFIGURE_FLAGS_STAGE2 += --ghc-option=-auto-all
+CONFIGURE_FLAGS_STAGE2 += --disable-library-vanilla
+CONFIGURE_FLAGS_STAGE2 += --disable-library-for-ghci
+CONFIGURE_FLAGS_STAGE2 += --ghc-pkg-option=--force
 endif
 endif
 
@@ -195,7 +181,7 @@ CONFIGURE_FLAGS_STAGE2 += $(USE_STAGE1_CONFIGURE_FLAGS)
 CONFIGURE_FLAGS_STAGE3 += $(USE_STAGE2_CONFIGURE_FLAGS)
 
 boot.stage.%: $(PRIMOP_BITS) $(CONFIG_HS) parser/Parser.y
-       test -e $(STAGE3_PACKAGE_CONF) || echo "[]" > $(STAGE3_PACKAGE_CONF)
+       test -f $(STAGE3_PACKAGE_CONF) || echo "[]" > $(STAGE3_PACKAGE_CONF)
        $(CABAL) configure --distpref dist-stage$* \
                           $(CONFIGURE_FLAGS_STAGE$*) \
                           $(INSTALL_DIRS_CONFIGURE_FLAGS) \
@@ -214,9 +200,8 @@ doc.stage.%:
                         --haddock-option=--optghc=-DSTAGE=$* \
                         --with-haddock=$(FPTOOLS_TOP_ABS)/utils/haddock/install-inplace/bin/haddock
 
-# XXX We ought to actually install the (stage 2) library
 install:
-       @:
+       $(INSTALL_PACKAGE) install '$(GHC_PKG_INSTALL_PROG)' '$(DESTDIR)$(datadir)/package.conf' '$(DESTDIR)' '$(prefix)' '$(iprefix)' '$(ibindir)' '$(ilibdir)' '$(ilibexecdir)' '$(idynlibdir)' '$(idatadir)' '$(idocdir)' '$(ihtmldir)' '$(ihaddockdir)' --distpref dist-stage2
 
 # -----------------------------------------------------------------------------
 # Create compiler configuration
@@ -473,6 +458,14 @@ install-docs:
 # binary-dist
 #
 
+# Ideally we'd get these from the Cabal file's Install-Includes:
+BINDIST_EXTRAS += HsVersions.h
+ifeq "$(stage)" "1"
+BINDIST_EXTRAS += stage1/ghc_boot_platform.h
+else
+BINDIST_EXTRAS += stage2plus/ghc_boot_platform.h
+endif
+
 include $(TOP)/mk/bindist.mk
-LIB_DIST_DIR = dist-stage$(stage)
+LIB_DIST_DIR = dist-stage2