diff runtime/lib/common/tango/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 6d9cf3f74f93
children 6aaa3d3c1183
line wrap: on
line diff
--- a/runtime/lib/common/tango/llvmdc.mak	Thu Sep 04 20:58:25 2008 +0200
+++ b/runtime/lib/common/tango/llvmdc.mak	Fri Sep 05 23:02:18 2008 +0200
@@ -13,7 +13,8 @@
 LIB_TARGET_FULL=libtango-cc-tango.a
 LIB_TARGET_BC_ONLY=libtango-cc-tango-bc-only.a
 LIB_TARGET_C_ONLY=libtango-cc-tango-c-only.a
-LIB_MASK=libtango-cc-tango*.a
+LIB_TARGET_SHARED=libtango-cc-tango-shared.so
+LIB_MASK=libtango-cc-tango*.*
 
 CP=cp -f
 RM=rm -f
@@ -70,10 +71,11 @@
 	$(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
 #	$(DC) -c -o- $(DOCFLAGS) -Df$*.html tango.ddoc $<
 
-targets : lib doc
-all     : lib doc
+targets : lib sharedlib doc
+all     : lib sharedlib doc
 tango   : lib
 lib     : tango.lib tango.bclib tango.clib
+sharedlib : tango.sharedlib
 doc     : tango.doc
 
 ######################################################
@@ -115,6 +117,7 @@
 tango.bclib : $(LIB_TARGET_BC_ONLY)
 tango.lib : $(LIB_TARGET_FULL)
 tango.clib : $(LIB_TARGET_C_ONLY)
+tango.sharedlib : $(LIB_TARGET_SHARED)
 
 $(LIB_TARGET_BC_ONLY) : $(ALL_OBJS)
 	$(RM) $@
@@ -134,6 +137,14 @@
 	$(CLC) $@ $(OBJ_STDC)
 
 
+$(LIB_TARGET_SHARED) : $(ALL_OBJS) $(OBJ_STDC)
+	$(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_STDC)
+
+
 tango.doc : $(ALL_DOCS)
 	echo Documentation generated.