summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
431e40e)
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).
rts_H_FILES = $(wildcard $(GHC_INCLUDE_DIR)/*.h) $(wildcard rts/*.h)
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
#-----------------------------------------------------------------------------
# Building one way
rts_$1_OBJS = $$(rts_$1_C_OBJS) $$(rts_$1_S_OBJS) $$(rts_$1_CMM_OBJS)
ifneq "$$(findstring dyn, $1)" ""
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
- $$(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) $$@
else
$$(rts_$1_LIB) : $$(rts_$1_OBJS)
$$(RM) $$@