+ifeq "$4" "0"
+# This is a bit of a hack.
+# If we are compiling something with the bootstrapping compiler on
+# cygwin, and it uses an include file from the rts (say), then we
+# need to stop mkdependC from generating a dependincy on
+# c:/ghc/rts/include/Rts.h
+# as that confuses make. So we use -isystem instead of -I, which stops
+# these dependencies from being generated. Technically this is wrong if
+# we depend on a library that is built inside the build tree, and we
+# use headers from that library, but currently I don't think that's the
+# case.
+$1_$2_DEP_INCLUDE_DIRS_FLAG = -isystem
+else
+$1_$2_DEP_INCLUDE_DIRS_FLAG = -I
+endif
+
+# We have to do this mangling using the shell, because words may contain
+# spaces and GNU make doesn't have any quoting interpretation.
+ifneq ($$(strip $$($1_$2_DEP_INCLUDE_DIRS)),)
+$1_$2_CC_INC_FLAGS:=$$(shell for i in $$($1_$2_DEP_INCLUDE_DIRS); do echo $$($1_$2_DEP_INCLUDE_DIRS_FLAG)\"$$$$i\"; done)
+endif
+
+# The CONF_CC_OPTS_STAGE$4 options are what we use to get gcc to
+# behave correctly, but they are specific to the gcc that we are using.
+# If GHC is compiling C code then it will take care of that for us,
+# and in the case of the stage 0 compiler it may be using a different
+# gcc, so we don't want to use our gcc-specific options.
+$1_$2_DIST_GCC_CC_OPTS = \
+ $$(CONF_CC_OPTS_STAGE$4) \
+ $$($1_$2_DIST_CC_OPTS)
+
+$1_$2_DIST_CC_OPTS = \
+ $$(SRC_CC_OPTS) \
+ $$($1_CC_OPTS) \
+ $$(foreach dir,$$(filter-out /%,$$($1_$2_INCLUDE_DIRS)),-I$1/$$(dir)) \
+ $$(foreach dir,$$(filter /%,$$($1_$2_INCLUDE_DIRS)),-I$$(dir)) \
+ $$($1_$2_CC_OPTS) \
+ $$($1_$2_CPP_OPTS) \
+ $$($1_$2_CC_INC_FLAGS) \
+ $$($1_$2_DEP_CC_OPTS)
+
+ifneq ($$(strip $$($1_$2_DEP_LIB_DIRS)),)
+$1_$2_DIST_LD_LIB_DIRS:=$$(shell for i in $$($1_$2_DEP_LIB_DIRS); do echo \"-L$$$$i\"; done)
+endif
+
+$1_$2_DIST_LD_OPTS = \
+ $$(CONF_LD_OPTS_STAGE$4) \
+ $$(SRC_LD_OPTS) \
+ $$($1_LD_OPTS) \
+ $$($1_$2_LD_OPTS) \
+ $$($1_$2_DIST_LD_LIB_DIRS) \
+ $$(foreach opt,$$($1_$2_DEP_EXTRA_LIBS),-l$$(opt)) \
+ $$($1_$2_DEP_LD_OPTS)
+