summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorDuncan Coutts <duncan@well-typed.com>2009-05-01 23:58:24 +0000
committerDuncan Coutts <duncan@well-typed.com>2009-05-01 23:58:24 +0000
commit2b7f450a6dbc2f78f99101560f82be20fa80833d (patch)
treed66a74388e008483eaabb60147d0fc34845953c5 /rts
parent431e40e1a2f795d5069d97661b7cd55f3e3b05bf (diff)
downloadhaskell-2b7f450a6dbc2f78f99101560f82be20fa80833d.tar.gz
Link the rts shared libs against gmp and the other C libs
When using shared libs we should link each lib against its deps. This allows the dynamic linker to chase dependencies and means we do not have to specify all indirect dependencies (as we must do for static libs).
Diffstat (limited to 'rts')
-rw-r--r--rts/ghc.mk9
1 files changed, 7 insertions, 2 deletions
diff --git a/rts/ghc.mk b/rts/ghc.mk
index 4f81e10dbd..0e7650eca5 100644
--- a/rts/ghc.mk
+++ b/rts/ghc.mk
@@ -70,6 +70,11 @@ rts/dist/build/sm/Scav_thr.c : rts/sm/Scav.c
rts_H_FILES = $(wildcard $(GHC_INCLUDE_DIR)/*.h) $(wildcard rts/*.h)
+# collect the -l flags that we need to link the rts dyn lib.
+rts/libs.depend : $(GHC_PKG_INPLACE)
+ $$(GHC_PKG_INPLACE) field rts extra-libraries \
+ | sed -e 's/^extra-libraries: //' -e 's/\([a-z]*\)/-l\1/g' > $$@
+
#-----------------------------------------------------------------------------
# Building one way
@@ -139,9 +144,9 @@ rts_$1_CMM_OBJS = $$(patsubst rts/%.cmm,rts/dist/build/%.$$($1_osuf),$$(rts_CMM_
rts_$1_OBJS = $$(rts_$1_C_OBJS) $$(rts_$1_S_OBJS) $$(rts_$1_CMM_OBJS)
ifneq "$$(findstring dyn, $1)" ""
-$$(rts_$1_LIB) : $$(rts_$1_OBJS)
+$$(rts_$1_LIB) : $$(rts_$1_OBJS) rts/libs.depend
$$(RM) $$@
- $$(rts_dist_HC) -shared -dynamic -no-auto-link-packages $$(rts_$1_OBJS) -o $$@
+ $$(rts_dist_HC) -shared -dynamic -no-auto-link-packages `cat rts/libs.depend` $$(rts_$1_OBJS) -o $$@
else
$$(rts_$1_LIB) : $$(rts_$1_OBJS)
$$(RM) $$@