Mercurial > projects > ldc
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.