Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/16a8414061a1fef7d90e162e5253d3005cb11806

>---------------------------------------------------------------

commit 16a8414061a1fef7d90e162e5253d3005cb11806
Author: Ian Lynagh <i...@well-typed.com>
Date:   Thu Oct 4 16:00:17 2012 +0100

    Actually build things the dynamic way
    
    Things went back to being statically linked again once I added an
    explicit -static flag to the vanilla way.

>---------------------------------------------------------------

 rules/build-dependencies.mk  |    4 ++--
 rules/build-prog.mk          |   41 +++++++++++++++++++++++++----------------
 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 a37ff16..edde237 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 6e6d1c1..239f55c 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 ff91784..75371c3 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))



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to