# -----------------------------------------------------------------------------
define build-dependencies
+$(call trace, build-dependencies($1,$2,$3))
# $1 = dir
# $2 = distdir
# $3 = GHC stage to use (0 == bootstrapping compiler)
endif
mv $$@.tmp $$@
+# Some of the C files depend on the generated includes files.
+$$($1_$2_depfile_c_asm) : $$(includes_H_CONFIG) $$(includes_H_PLATFORM)
+
$$($1_$2_depfile_c_asm) : $$($1_$2_C_FILES_DEPS) $$($1_$2_S_FILES) | $$$$(dir $$$$@)/.
"$$(RM)" $$(RM_OPTS) $$@.tmp
touch $$@.tmp
$$($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
# 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
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"