summaryrefslogtreecommitdiff
path: root/rules/build-package-way.mk
diff options
context:
space:
mode:
authorDuncan Coutts <duncan@well-typed.com>2009-04-29 15:15:53 +0000
committerDuncan Coutts <duncan@well-typed.com>2009-04-29 15:15:53 +0000
commit442f06cc8f9f729d33a8de3aa14cdaf80545808e (patch)
treec8e4ea7bc1c4ba464f8482db53608edb962dec75 /rules/build-package-way.mk
parent7f995ef4d41815cd2d9fab774a638b5493d33910 (diff)
downloadhaskell-442f06cc8f9f729d33a8de3aa14cdaf80545808e.tar.gz
Build library packages as shared libs
when we configure ghc with --enable-shared
Diffstat (limited to 'rules/build-package-way.mk')
-rw-r--r--rules/build-package-way.mk11
1 files changed, 11 insertions, 0 deletions
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk
index 5fb3cdf9ee..41496db915 100644
--- a/rules/build-package-way.mk
+++ b/rules/build-package-way.mk
@@ -26,6 +26,16 @@ $1_$2_$3_MKSTUBOBJS = find $1/$2/build -name "*_stub.$$($3_osuf)" -print
# HACK ^^^ we tried to use $(wildcard), but apparently it fails due to
# make using cached directory contents, or something.
+ifeq "$3" "dyn"
+# Link a dynamic library
+$$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_dyn_C_OBJS) $$($1_$2_dyn_S_OBJS) $$(ALL_RTS_LIBS)
+ $$(RM) $$@
+ $$($1_$2_HC) $$($1_$2_dyn_C_OBJS) $$($1_$2_dyn_S_OBJS) $$($1_$2_$3_HS_OBJS) \
+ `$$($1_$2_$3_MKSTUBOBJS)` \
+ -shared -dynamic \
+ -no-auto-link-packages $$(addprefix -package,$$($1_$2_DEPS)) \
+ -o $$@
+else
# Build the ordinary .a library
ifeq "$$($1_$2_SplitObjs)" "YES"
$$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS)
@@ -36,6 +46,7 @@ $$($1_$2_$3_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS)
$$(RM) $$@
echo $$($1_$2_v_C_OBJS) $$($1_$2_v_S_OBJS) $$($1_$2_$3_HS_OBJS) `$$($1_$2_$3_MKSTUBOBJS)` | xargs $$(AR) $$(EXTRA_AR_ARGS) $$@
endif
+endif
$(call all-target,$1_$2,all_$1_$2_$3)
$(call all-target,$1_$2_$3,$$($1_$2_$3_LIB))