diff options
author | Duncan Coutts <duncan@well-typed.com> | 2009-05-01 23:58:24 +0000 |
---|---|---|
committer | Duncan Coutts <duncan@well-typed.com> | 2009-05-01 23:58:24 +0000 |
commit | 2b7f450a6dbc2f78f99101560f82be20fa80833d (patch) | |
tree | d66a74388e008483eaabb60147d0fc34845953c5 /rts | |
parent | 431e40e1a2f795d5069d97661b7cd55f3e3b05bf (diff) | |
download | haskell-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.mk | 9 |
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) $$@ |