diff options
-rw-r--r-- | rules/build-dependencies.mk | 4 | ||||
-rw-r--r-- | rules/build-prog.mk | 41 | ||||
-rw-r--r-- | utils/mkUserGuidePart/ghc.mk | 6 |
3 files changed, 31 insertions, 20 deletions
diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk index a37ff16bab..edde237784 100644 --- a/rules/build-dependencies.mk +++ b/rules/build-dependencies.mk @@ -35,7 +35,7 @@ $$($1_$2_depfile_haskell) : $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS) $$($1_$2_HC $$(call removeFiles,$$@.tmp) ifneq "$$($1_$2_HS_SRCS)" "" "$$($1_$2_HC_MK_DEPEND)" -M $$($1_$2_MKDEPENDHS_FLAGS) \ - $$(filter-out -split-objs, $$($1_$2_v_ALL_HC_OPTS)) \ + $$(filter-out -split-objs, $$($1_$2_$$(firstword $$($1_$2_WAYS))_ALL_HC_OPTS)) \ $$($1_$2_HS_SRCS) endif echo "$1_$2_depfile_haskell_EXISTS = YES" >> $$@.tmp @@ -125,7 +125,7 @@ endef # to "i" on Windows and "" on any other platform. define addCFileDeps - $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_v_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM $4 -MF $3.bit + $(CPP) $($1_$2_MKDEPENDC_OPTS) $($1_$2_$(firstword $($1_$2_WAYS))_ALL_CC_OPTS) $($(basename $4)_CC_OPTS) -MM $4 -MF $3.bit $(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 diff --git a/rules/build-prog.mk b/rules/build-prog.mk index 6e6d1c11f1..239f55cdd4 100644 --- a/rules/build-prog.mk +++ b/rules/build-prog.mk @@ -121,41 +121,50 @@ endif $(call shell-wrapper,$1,$2) -$1_$2_WAYS = v +ifeq "$$($1_$2_PROGRAM_WAY)" "" +ifeq "$3" "0" +$1_$2_PROGRAM_WAY = v +else ifeq "$$(DYNAMIC_BY_DEFAULT)" "YES" +$1_$2_PROGRAM_WAY = dyn +else +$1_$2_PROGRAM_WAY = v +endif +endif + +$1_$2_WAYS = $$($1_$2_PROGRAM_WAY) $(call hs-sources,$1,$2) $(call c-sources,$1,$2) # --- IMPLICIT RULES -# Just the 'v' way for programs -$(call distdir-way-opts,$1,$2,v,$3) +$(call distdir-way-opts,$1,$2,$$($1_$2_PROGRAM_WAY),$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) +$(call c-suffix-rules,$1,$2,$$($1_$2_PROGRAM_WAY),YES) else ifeq "$$($1_$2_UseGhcForCC)" "YES" -$(call c-suffix-rules,$1,$2,v,YES) +$(call c-suffix-rules,$1,$2,$$($1_$2_PROGRAM_WAY),YES) else -$(call c-suffix-rules,$1,$2,v,NO) +$(call c-suffix-rules,$1,$2,$$($1_$2_PROGRAM_WAY),NO) endif endif -$(call hs-suffix-rules,$1,$2,v) +$(call hs-suffix-rules,$1,$2,$$($1_$2_PROGRAM_WAY)) $$(foreach dir,$$($1_$2_HS_SRC_DIRS),\ - $$(eval $$(call hs-suffix-rules-srcdir,$1,$2,v,$$(dir)))) + $$(eval $$(call hs-suffix-rules-srcdir,$1,$2,$$($1_$2_PROGRAM_WAY),$$(dir)))) -$(call c-objs,$1,$2,v) -$(call hs-objs,$1,$2,v) +$(call c-objs,$1,$2,$$($1_$2_PROGRAM_WAY)) +$(call hs-objs,$1,$2,$$($1_$2_PROGRAM_WAY)) $1_$2_LINK_WITH_GCC = NO ifeq "$$(BootingFromHc)" "YES" $1_$2_LINK_WITH_GCC = YES endif -ifeq "$$($1_$2_v_HS_OBJS)" "" +ifeq "$$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS)" "" # We don't want to link the GHC RTS into C-only programs. There's no # point, and it confuses the test that all GHC-compiled programs # were compiled with the right GHC. @@ -171,7 +180,7 @@ endif endif ifneq "$$(BINDIST)" "YES" -# The quadrupled $'s here are because the _v_LIB variables aren't +# The quadrupled $'s here are because the _<way>_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),\ @@ -183,11 +192,11 @@ $1/$2/build/tmp/$$($1_$2_PROG) : \ $$$$(libraries/$$(dep)_dist-$(if $(filter 0,$3),boot,install)_PROGRAM_DEP_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 $$$$@)/. - $$(call cmd,$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)) +$1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. + $$(call cmd,$1_$2_HC) -o $$@ $$($1_$2_$$($1_$2_PROGRAM_WAY)_ALL_HC_OPTS) $$(LD_OPTS) $$($1_$2_GHC_LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) else -$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 $$$$@)/. - $$(call cmd,$1_$2_CC) -o $$@ $$($1_$2_v_ALL_CC_OPTS) $$(LD_OPTS) $$($1_$2_v_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS) $$($1_$2_OTHER_OBJS) $$($1_$2_v_EXTRA_CC_OPTS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) +$1/$2/build/tmp/$$($1_$2_PROG) : $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) | $$$$(dir $$$$@)/. + $$(call cmd,$1_$2_CC) -o $$@ $$($1_$2_$$($1_$2_PROGRAM_WAY)_ALL_CC_OPTS) $$(LD_OPTS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_HS_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_C_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_S_OBJS) $$($1_$2_OTHER_OBJS) $$($1_$2_$$($1_$2_PROGRAM_WAY)_EXTRA_CC_OPTS) $$(addprefix -l,$$($1_$2_EXTRA_LIBRARIES)) endif # Note [lib-depends] if this program is built with stage1 or greater, we diff --git a/utils/mkUserGuidePart/ghc.mk b/utils/mkUserGuidePart/ghc.mk index ff917848a1..75371c352e 100644 --- a/utils/mkUserGuidePart/ghc.mk +++ b/utils/mkUserGuidePart/ghc.mk @@ -13,8 +13,10 @@ utils/mkUserGuidePart_dist_MODULES = Main utils/mkUserGuidePart_dist_PROG = mkUserGuidePart$(exeext) utils/mkUserGuidePart_dist_INSTALL_INPLACE = YES -utils/mkUserGuidePart_HC_OPTS = -package ghc -static +utils/mkUserGuidePart_dist_PROGRAM_WAY = v +utils/mkUserGuidePart_HC_OPTS = -package ghc -utils/mkUserGuidePart/dist/build/Main.o: $(ALL_STAGE1_LIBS) $(compiler_stage2_PROGRAM_DEP_LIB) +utils/mkUserGuidePart/dist/build/Main.o: $(ALL_STAGE1_LIBS) +utils/mkUserGuidePart/dist/build/Main.o: $(compiler_stage2_v_LIB) $(eval $(call build-prog,utils/mkUserGuidePart,dist,1)) |