Fix build on cygwin: Normalise slashes in .depend files to be /
[ghc-hetmet.git] / rules / build-prog.mk
index 9674bf6..e9252eb 100644 (file)
@@ -50,6 +50,10 @@ define build-prog-helper
 $(call all-target,$1,all_$1_$2)
 
 ifeq "$$($1_USES_CABAL)" "YES"
+$1_$2_USES_CABAL = YES
+endif
+
+ifeq "$$($1_$2_USES_CABAL)" "YES"
 ifneq "$$(NO_INCLUDE_PKGDATA)" "YES"
 include $1/$2/package-data.mk
 endif
@@ -57,7 +61,7 @@ endif
 
 $(call package-config,$1,$2,$3)
 
-ifeq "$$($1_USES_CABAL)$$($1_$2_VERSION)" "YES"
+ifeq "$$($1_$2_USES_CABAL)$$($1_$2_VERSION)" "YES"
 $1_$2_DISABLE = YES
 endif
 
@@ -92,14 +96,20 @@ $(call c-sources,$1,$2)
 
 $1_$2_depfile_base = $1/$2/build/.depend
 
-$(call build-dependencies,$1,$2)
+$(call build-dependencies,$1,$2,$3)
 
 # --- IMPLICIT RULES
 
 # Just the 'v' way for programs
 $(call distdir-way-opts,$1,$2,v,$3)
 
+ifeq "$3" "0"
+# For stage 0, we use GHC to compile C sources so that we don't have to
+# worry about where the RTS header files are
 $(call c-suffix-rules,$1,$2,v,YES)
+else
+$(call c-suffix-rules,$1,$2,v,NO)
+endif
 
 $(call hs-suffix-rules,$1,$2,v)
 $$(foreach dir,$$($1_$2_HS_SRC_DIRS),\
@@ -108,7 +118,15 @@ $$(foreach dir,$$($1_$2_HS_SRC_DIRS),\
 $(call c-objs,$1,$2,v)
 $(call hs-objs,$1,$2,v)
 
-ifeq "$$(BootingFromHc)" "NO"
+$1_$2_LINK_WITH_GCC = NO
+ifeq "$$(BootingFromHc)" "YES"
+$1_$2_LINK_WITH_GCC = YES
+endif
+ifeq "$$($1_$2_v_HS_OBJS)" ""
+$1_$2_LINK_WITH_GCC = YES
+endif
+
+ifeq "$$($1_$2_LINK_WITH_GCC)" "NO"
 $1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_v_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/.
        "$$($1_$2_HC)" -o $$@ $$($1_$2_v_ALL_HC_OPTS) $$(LD_OPTS) $$($1_$2_v_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS) $$($1_$2_OTHER_OBJS)
 else