tweak newArray# documentation again
[ghc-hetmet.git] / rules / build-prog.mk
index e303a44..baa8bed 100644 (file)
@@ -54,6 +54,8 @@ endif
 
 $(call package-config,$1,$2,$3)
 
+$1_$2_depfile_base = $1/$2/build/.depend
+
 ifeq "$$($1_$2_INSTALL_INPLACE)" "NO"
 ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 $1_$2_INPLACE = $$(error $1_$2 should not be installed inplace, but INPLACE var evaluated)
@@ -156,8 +158,6 @@ $(call c-sources,$1,$2)
 
 # --- DEPENDENCIES
 
-$1_$2_depfile_base = $1/$2/build/.depend
-
 $(call build-dependencies,$1,$2,$3)
 
 # --- IMPLICIT RULES
@@ -192,6 +192,17 @@ ifeq "$$($1_$2_v_HS_OBJS)" ""
 $1_$2_GHC_LD_OPTS = -no-auto-link-packages -no-hs-main
 endif
 
+# The quadrupled $'s here are because the _v_LIB variables aren't
+# necessarily set when this part of the makefile is read
+$1/$2/build/tmp/$$($1_$2_PROG) : \
+    $$(foreach dep,$$($1_$2_DEP_NAMES),\
+        $$(if $$(filter ghc,$$(dep)),\
+            $(if $(filter 0,$3),$$(compiler_stage1_v_LIB),\
+            $(if $(filter 1,$3),$$(compiler_stage2_v_LIB),\
+            $(if $(filter 2,$3),$$(compiler_stage2_v_LIB),\
+            $$(error Bad build stage)))),\
+        $$$$(libraries/$$(dep)_dist-$(if $(filter 0,$3),boot,install)_v_LIB)))
+
 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_GHC_LD_OPTS) $$($1_$2_v_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS) $$($1_$2_OTHER_OBJS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES))