diff runtime/lib/gc/basic/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 6aaa3d3c1183
line wrap: on
line diff
--- a/runtime/lib/gc/basic/llvmdc.mak	Thu Sep 04 20:58:25 2008 +0200
+++ b/runtime/lib/gc/basic/llvmdc.mak	Fri Sep 05 23:02:18 2008 +0200
@@ -12,7 +12,8 @@
 
 LIB_TARGET_BC=libtango-gc-basic-bc.a
 LIB_TARGET_NATIVE=libtango-gc-basic.a
-LIB_MASK=libtango-gc-basic*.a
+LIB_TARGET_SHARED=libtango-gc-basic-shared.so
+LIB_MASK=libtango-gc-basic*.*
 
 CP=cp -f
 RM=rm -f
@@ -63,9 +64,10 @@
 	$(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
 #	$(DC) -c -o- $(DOCFLAGS) -Df$*.html dmd.ddoc $<
 
-targets : lib doc
-all     : lib doc
+targets : lib sharedlib doc
+all     : lib sharedlib doc
 lib     : basic.lib basic.nlib
+sharedlib : basic.sharedlib
 doc     : basic.doc
 
 ######################################################
@@ -85,6 +87,7 @@
 
 basic.lib : $(LIB_TARGET_BC)
 basic.nlib : $(LIB_TARGET_NATIVE)
+basic.sharedlib : $(LIB_TARGET_SHARED)
 
 $(LIB_TARGET_BC) : $(ALL_OBJS)
 	$(RM) $@
@@ -98,6 +101,13 @@
 	$(CC) -c -o $@.o $@.s
 	$(CLC) $@ $@.o
 
+
+$(LIB_TARGET_SHARED) : $(ALL_OBJS)
+	$(RM) $@ $@.bc $@.s $@.o
+	$(LLINK) -o=$@.bc $(ALL_OBJS)
+	$(LCC) -relocation-model=pic -o=$@.s $@.bc
+	$(CC) -shared -o $@ $@.s
+
 basic.doc : $(ALL_DOCS)
 	echo No documentation available.