Tweak alternative layout rule
[ghc-hetmet.git] / compiler / ghc.mk
index 70c95f3..f2a4fc5 100644 (file)
@@ -141,8 +141,7 @@ $(eval $(call clean-target,compiler,config_hs,$(compiler_CONFIG_HS)))
 
 PLATFORM_H = ghc_boot_platform.h
 
-compiler/stage1/$(PLATFORM_H) : mk/config.mk mk/project.mk
-       "$(MKDIRHIER)" $(dir $@)
+compiler/stage1/$(PLATFORM_H) : mk/config.mk mk/project.mk | $$(dir $$@)/.
        "$(RM)" $(RM_OPTS) $@
        @echo "Creating $@..."
        @echo "#ifndef __PLATFORM_H__"  >$@
@@ -188,8 +187,7 @@ endif
 # For stage2 and above, the BUILD platform is the HOST of stage1, and
 # the HOST platform is the TARGET of stage1.  The TARGET remains the same
 # (stage1 is the cross-compiler, not stage2).
-compiler/stage2/$(PLATFORM_H) : mk/config.mk mk/project.mk
-       "$(MKDIRHIER)" $(dir $@)
+compiler/stage2/$(PLATFORM_H) : mk/config.mk mk/project.mk | $$(dir $$@)/.
        "$(RM)" $(RM_OPTS) $@
        @echo "Creating $@..."
        @echo "#ifndef __PLATFORM_H__"  >$@
@@ -259,6 +257,7 @@ $(PRIMOPS_TXT) compiler/parser/Parser.y: %: %.pp compiler/stage1/$(PLATFORM_H)
 
 $(eval $(call clean-target,compiler,primop, $(PRIMOPS_TXT) compiler/parser/Parser.y $(PRIMOP_BITS)))
 
+ifneq "$(BootingFromHc)" "YES"
 compiler/primop-data-decl.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
        "$(GENPRIMOP_INPLACE)" --data-decl          < $< > $@
 compiler/primop-tag.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
@@ -284,6 +283,7 @@ compiler/primop-primop-info.hs-incl: $(PRIMOPS_TXT) $(GENPRIMOP_INPLACE)
 # can still generate them if we want them back
 compiler/primop-usage.hs-incl: $(PRIMOPS_TXT)
        "$(GENPRIMOP_INPLACE)" --usage              < $< > $@
+endif
 
 # -----------------------------------------------------------------------------
 # Configuration
@@ -462,11 +462,16 @@ $(compiler_stage2_depfile) : $(includes_H_CONFIG) $(includes_H_PLATFORM) $(inclu
 $(compiler_stage3_depfile) : $(includes_H_CONFIG) $(includes_H_PLATFORM) $(includes_GHCCONSTANTS) $(includes_DERIVEDCONSTANTS) $(PRIMOP_BITS)
 
 # Every Constants.o object file depends on includes/GHCConstants.h:
-$(eval $(call compiler-hs-dependency,Constants,$(includes_GHCCONSTANTS)))
+$(eval $(call compiler-hs-dependency,Constants,$(includes_GHCCONSTANTS) includes/HaskellConstants.hs))
 
 # Every PrimOp.o object file depends on $(PRIMOP_BITS):
 $(eval $(call compiler-hs-dependency,PrimOp,$(PRIMOP_BITS)))
 
+# GHC itself doesn't know about the above dependencies, so we have to
+# switch off the recompilation checker for those modules:
+compiler/prelude/PrimOps_HC_OPTS += -fforce-recomp
+compiler/main/Constants_HC_OPTS  += -fforce-recomp
+
 # Note [munge-stage1-package-config]
 # Strip the date/patchlevel from the version of stage1.  See Note
 # [fiddle-stage1-version] above.