Fix build on cygwin: Normalise slashes in .depend files to be /
[ghc-hetmet.git] / rules / build-dependencies.mk
index a1b55b6..b1b5fe8 100644 (file)
@@ -67,22 +67,17 @@ endif # $1_$2_NO_BUILD_DEPS
 $$($1_$2_depfile_haskell) : $$(UNLIT)
 
 ifneq "$$(NO_INCLUDE_DEPS)" "YES"
-# This next test stops us rebuilding all the dep files when doing e.g.
-# "make 1" in compiler or ghc. If stage is blank (just building normally.
-# so we want all deps), or if $3 is stage-1 (when building stage n, we
-# use stage n-1, so we want any dependencies used by the stage n-1
-# compiler), then we want to include the dependencies.
-ifneq "$$(or $$(if $$(stage),,YES),$$(findstring $3,$$(word $$(stage),0 1 2 3)))" ""
 ifneq "$$(strip $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS))" ""
+ifneq "$$(NO_STAGE$3_DEPS)" "YES"
 include $$($1_$2_depfile_haskell)
 endif
+endif
 include $$($1_$2_depfile_c_asm)
 else
 ifeq "$$(DEBUG)" "YES"
 $$(warning not building dependencies in $1)
 endif
 endif
-endif
 
 endef
 
@@ -98,6 +93,12 @@ endef
 # The formatting of this definition (e.g. the blank line above) is
 # important, in order to get make to generate the right makefile code.
 #
+# 's|\\|/|g'
+#    We first normalise all slashes to be forward slashes. Note that
+#    $(TOP) also uses forward slashes.
+# 's| /$$| \\|'
+#    But now we need to fix the line continuation characters that we
+#    just broke.
 # "1s|\.o|\.$($w_osuf)|"
 #    We will have dependencies for .o files, so we need to fix them up
 #    for the right object suffix for the way we're doing
@@ -131,7 +132,7 @@ endef
 define addCFileDeps
 
        $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_v_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM $4 -MF $3.bit
-       $(foreach w,$5,sed -e "1s|\.o|\.$($w_osuf)|" -e "1s|^|$(dir $4)|" -e "1s|$1/|$1/$2/build/|" -e "1s|$2/build/$2/build|$2/build|g" -e "s|$(TOP)/||g$(CASE_INSENSITIVE_SED)" $3.bit >> $3.tmp &&) true
+       $(foreach w,$5,sed -e 's|\\|/|g' -e 's| /$$| \\|' -e "1s|\.o|\.$($w_osuf)|" -e "1s|^|$(dir $4)|" -e "1s|$1/|$1/$2/build/|" -e "1s|$2/build/$2/build|$2/build|g" -e "s|$(TOP)/||g$(CASE_INSENSITIVE_SED)" $3.bit >> $3.tmp &&) true
 endef
 
 ifeq "$(Windows)" "YES"