Refactoring for derived Read
[ghc-hetmet.git] / compiler / Makefile
index 0d8d8c7..69fd1fd 100644 (file)
@@ -124,7 +124,8 @@ ifeq "$(HOSTPLATFORM)" "i386-unknown-mingw32"
        done
 else
        for i in */*hi-boot*; do \
-           $(LN_S) -f ../../$$i stage$(stage)/$$i || true ; \
+           ($(RM) -f stage$(stage)/$$i \
+              && $(LN_S) ../../$$i stage$(stage)/$$i) || true ; \
        done
 endif
 endif
@@ -396,7 +397,7 @@ else
 ifneq "$(findstring $(stage), 2 3)" ""
 bootstrapped = YES
 else
-bootstrapped = $(shell if (test $(GhcCanonVersion) -eq $(ProjectVersionInt) -a $(GhcPatchLevel) -eq $(ProjectPatchLevel)); then echo YES; else echo NO; fi)
+bootstrapped = NO
 endif
 endif
 
@@ -515,6 +516,16 @@ SRC_HC_OPTS += -package Cabal
 PKG_DEPENDS += Cabal
 endif
 
+# We use Text.Regex which is in regex-compat with GHC 6.6+
+ifeq "$(bootstrapped)" "YES"
+SRC_HC_OPTS += -package regex-compat
+PKG_DEPENDS += regex-compat
+else
+ifeq "$(ghc_ge_605)" "YES"
+SRC_HC_OPTS += -package regex-compat
+endif
+endif
+
 ifeq "$(ghc_ge_603)" "YES"
 # Ignore lang, to avoid potential clash with the Generics module if
 # lang happens to be a dependency of some exposed package in the local
@@ -567,18 +578,14 @@ utils/Digraph_HC_OPTS             = -fglasgow-exts
 
 basicTypes/SrcLoc_HC_OPTS      = -funbox-strict-fields
 
-ifeq "$(bootstrapped)" "YES"
-utils/Binary_HC_OPTS           = -funbox-strict-fields
-endif
-
 # We always optimise some low-level modules, otherwise performance of
 # a non-optimised compiler is severely affected.
 main/BinIface_HC_OPTS          += -O
-utils/Binary_HC_OPTS           += -O
+utils/Binary_HC_OPTS           += -O -funbox-strict-fields
 utils/FastMutInt_HC_OPTS       += -O
 utils/Encoding_HC_OPTS         += -O
-utils/StringBuffer_HC_OPTS     += -O
-utils/FastString_HC_OPTS       += -O
+utils/StringBuffer_HC_OPTS     += -O -funbox-strict-fields
+utils/FastString_HC_OPTS       += -O -funbox-strict-fields
 
 # ---- Profiling ----
 #simplCore/Simplify_HC_OPTS = -auto-all
@@ -639,6 +646,18 @@ ifneq "$(BootingFromHc)" "YES"
 depend :: $(PRIMOP_BITS)
 endif
 
+# This is an ugly hack: we need stage1/$(PLATFORM_H) built before we
+# preprocess primops.txt.pp, but we don't want to just add that
+# dependency because we don't want $(PLATFORM_H) built during normal
+# operations, because we don't have have dependencies from the .hs
+# sources on it, and we don't want those dependencies because that
+# would cause everything to be rebuilt every time the Makefile
+# changed.  So here we add the required dependency only when making
+# boot or depend:
+ifneq "$(findstring boot, $(MAKECMDGOALS))$(findstring depend, $(MAKECMDGOALS))" ""
+prelude/primops.txt.pp : stage1/$(PLATFORM_H)
+endif
+
 primop-data-decl.hs-incl: prelude/primops.txt
        $(GENPRIMOP) --data-decl          < $< > $@
 primop-tag.hs-incl: prelude/primops.txt
@@ -690,7 +709,7 @@ $(odir)/ghc-inplace : $(GHC_PROG)
        chmod 755 $@
 
 ghc-inplace : stage1/ghc-inplace
-       $(LN_S) -f $< $@
+       $(RM) -f $@ && $(LN_S) $< $@
 
 ifeq "$(stage)" "1"
 CLEAN_FILES += ghc-inplace