diff runtime/internal/llvmdc.mak @ 579:20c065c46b38

Basic support for runtime in shared library. Needs to be built with runtime/build-sharedlibs.sh and activated manually by providing -defaultlib=llvmdc-runtime-shared -defaultlib=tango-cc-tango-shared -defaultlib=tango-gc-basic-shared on llvmdc call at the moment. To support D shared libraries in non-D code, we need to remove the main() from libllvmdc-runtime-shared.
author Christian Kamm <kamm incasoftware de>
date Fri, 05 Sep 2008 23:02:18 +0200
parents 926a03711ca8
children c7fbcb6b923e
line wrap: on
line diff
--- a/runtime/internal/llvmdc.mak	Thu Sep 04 20:58:25 2008 +0200
+++ b/runtime/internal/llvmdc.mak	Fri Sep 05 23:02:18 2008 +0200
@@ -13,7 +13,8 @@
 LIB_TARGET_FULL=libllvmdc-runtime.a
 LIB_TARGET_BC_ONLY=libllvmdc-runtime-bc-only.a
 LIB_TARGET_C_ONLY=libllvmdc-runtime-c-only.a
-LIB_MASK=libllvmdc-runtime*.a
+LIB_TARGET_SHARED=libllvmdc-runtime-shared.so
+LIB_MASK=libllvmdc-runtime*.*
 
 
 CP=cp -f
@@ -61,9 +62,10 @@
 .d.html:
 	$(DC) -c -o- $(DOCFLAGS) -Df$*.html llvmdc.ddoc $<
 
-targets : lib doc
-all     : lib doc
+targets : lib sharedlib doc
+all     : lib sharedlib doc
 lib     : llvmdc.lib llvmdc.bclib llvmdc.clib
+sharedlib : llvmdc.sharedlib
 doc     : llvmdc.doc
 
 ######################################################
@@ -149,6 +151,7 @@
 llvmdc.bclib : $(LIB_TARGET_BC_ONLY)
 llvmdc.clib : $(LIB_TARGET_C_ONLY)
 llvmdc.lib : $(LIB_TARGET_FULL)
+llvmdc.sharedlib : $(LIB_TARGET_SHARED)
 
 $(LIB_TARGET_BC_ONLY) : $(ALL_OBJS)
 	$(RM) $@
@@ -167,6 +170,15 @@
 	$(RM) $@
 	$(CLC) $@ $(OBJ_C)
 
+
+$(LIB_TARGET_SHARED) : $(ALL_OBJS) $(OBJ_C)
+	$(RM) $@ $@.bc $@.s $@.o
+	$(LLINK) -o=$@.bc $(ALL_OBJS)
+	$(LCC) -relocation-model=pic -o=$@.s $@.bc
+	$(CC) -c -o $@.o $@.s
+	$(CC) -shared -o $@ $@.o $(OBJ_C)
+
+
 llvmdc.doc : $(ALL_DOCS)
 	echo No documentation available.