# HG changeset patch # User Christian Kamm # Date 1220472424 -7200 # Node ID 926a03711ca80e675e3656898b0e94ad7f4c5acd # Parent f75b16f1e405b15a00047e4505c63796ca696ea3 Split runtime into three parts again. diff -r f75b16f1e405 -r 926a03711ca8 dmd/mars.c --- a/dmd/mars.c Tue Sep 02 19:14:37 2008 +0200 +++ b/dmd/mars.c Wed Sep 03 22:07:04 2008 +0200 @@ -710,8 +710,15 @@ } else { - char *arg = (char *)mem.malloc(64); - strcpy(arg, "-ltango-base-llvmdc-native"); + char *arg; + arg = (char *)mem.malloc(64); + strcpy(arg, "-lllvmdc-runtime"); + global.params.linkswitches->push(arg); + arg = (char *)mem.malloc(64); + strcpy(arg, "-ltango-cc-tango"); + global.params.linkswitches->push(arg); + arg = (char *)mem.malloc(64); + strcpy(arg, "-ltango-gc-basic"); global.params.linkswitches->push(arg); } diff -r f75b16f1e405 -r 926a03711ca8 runtime/build.sh --- a/runtime/build.sh Tue Sep 02 19:14:37 2008 +0200 +++ b/runtime/build.sh Wed Sep 03 22:07:04 2008 +0200 @@ -13,7 +13,12 @@ cd ../tango/lib make -f llvmdc-posix.mak clean make -f llvmdc-posix.mak +cd ../.. # install the runtime -rm -f ../../lib/libtango-base-llvmdc-native.a -cp `pwd`/libtango-base-llvmdc-native.a ../../lib +rm -f lib/libllvmdc-runtime*.a +cp runtime/internal/libllvmdc-runtime*.a lib +rm -f lib/libtango-gc-basic*.a +cp tango/lib/gc/basic/libtango-gc-basic*.a lib +rm -f lib/libtango-cc-tango*.a +cp tango/lib/common/tango/libtango-cc-tango*.a lib diff -r f75b16f1e405 -r 926a03711ca8 runtime/internal/llvmdc.mak --- a/runtime/internal/llvmdc.mak Tue Sep 02 19:14:37 2008 +0200 +++ b/runtime/internal/llvmdc.mak Wed Sep 03 22:07:04 2008 +0200 @@ -10,11 +10,11 @@ # make clean # Delete unneeded files created by build process -LIB_TARGET=libtango-base-llvmdc.a -LIB_MASK=libtango-base-llvmdc*.a +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_C=libtango-base-c-llvmdc.a -LIB_MASK_C=libtango-base-c-llvmdc*.a CP=cp -f RM=rm -f @@ -33,6 +33,8 @@ CC=gcc LC=llvm-ar rsv +LLINK=llvm-link +LCC=llc CLC=ar rsv DC=llvmdc LLC=llvm-as @@ -61,7 +63,7 @@ targets : lib doc all : lib doc -lib : llvmdc.lib llvmdc.clib +lib : llvmdc.lib llvmdc.bclib llvmdc.clib doc : llvmdc.doc ###################################################### @@ -144,15 +146,24 @@ ###################################################### -llvmdc.lib : $(LIB_TARGET) +llvmdc.bclib : $(LIB_TARGET_BC_ONLY) +llvmdc.clib : $(LIB_TARGET_C_ONLY) +llvmdc.lib : $(LIB_TARGET_FULL) -$(LIB_TARGET) : $(ALL_OBJS) +$(LIB_TARGET_BC_ONLY) : $(ALL_OBJS) $(RM) $@ $(LC) $@ $(ALL_OBJS) -llvmdc.clib : $(LIB_TARGET_C) -$(LIB_TARGET_C) : $(OBJ_C) +$(LIB_TARGET_FULL) : $(ALL_OBJS) $(OBJ_C) + $(RM) $@ $@.bc $@.s $@.o + $(LLINK) -o=$@.bc $(ALL_OBJS) + $(LCC) -o=$@.s $@.bc + $(CC) -c -o $@.o $@.s + $(CLC) $@ $@.o $(OBJ_C) + + +$(LIB_TARGET_C_ONLY) : $(OBJ_C) $(RM) $@ $(CLC) $@ $(OBJ_C) @@ -167,9 +178,7 @@ $(RM) $(OBJ_C) $(RM) $(ALL_DOCS) $(RM) $(LIB_MASK) - $(RM) $(LIB_MASK_C) install : $(MD) $(LIB_DEST) $(CP) $(LIB_MASK) $(LIB_DEST)/. - $(CP) $(LIB_MASK_C) $(LIB_DEST)/. diff -r f75b16f1e405 -r 926a03711ca8 runtime/lib/common/tango/llvmdc.mak --- a/runtime/lib/common/tango/llvmdc.mak Tue Sep 02 19:14:37 2008 +0200 +++ b/runtime/lib/common/tango/llvmdc.mak Wed Sep 03 22:07:04 2008 +0200 @@ -10,10 +10,10 @@ # make clean # Delete unneeded files created by build process -LIB_TARGET=libtango-cc-tango.a +LIB_TARGET_FULL=libtango-cc-tango.a +LIB_TARGET_BC_ONLY=libtango-cc-tango-c-only.a +LIB_TARGET_C_ONLY=libtango-cc-tango-bc-only.a LIB_MASK=libtango-cc-tango*.a -LIB_TARGET_C=libtango-cc-c-tango.a -LIB_MASK_C=libtango-cc-c-tango*.a CP=cp -f RM=rm -f @@ -35,6 +35,8 @@ CC=gcc LC=llvm-ar rsv +LLINK=llvm-link +LCC=llc CLC=ar rsv DC=llvmdc LLC=llvm-as @@ -71,7 +73,7 @@ targets : lib doc all : lib doc tango : lib -lib : tango.lib tango.clib +lib : tango.lib tango.bclib tango.clib doc : tango.doc ###################################################### @@ -110,16 +112,24 @@ ###################################################### -tango.lib : $(LIB_TARGET) +tango.bclib : $(LIB_TARGET_BC_ONLY) +tango.lib : $(LIB_TARGET_FULL) +tango.clib : $(LIB_TARGET_C_ONLY) -$(LIB_TARGET) : $(ALL_OBJS) +$(LIB_TARGET_BC_ONLY) : $(ALL_OBJS) $(RM) $@ $(LC) $@ $(ALL_OBJS) -tango.clib : $(LIB_TARGET_C) +$(LIB_TARGET_FULL) : $(ALL_OBJS) $(OBJ_STDC) + $(RM) $@ $@.bc $@.s $@.o + $(LLINK) -o=$@.bc $(ALL_OBJS) + $(LCC) -o=$@.s $@.bc + $(CC) -c -o $@.o $@.s + $(CLC) $@ $@.o $(OBJ_STDC) -$(LIB_TARGET_C) : $(OBJ_STDC) + +$(LIB_TARGET_C_ONLY) : $(OBJ_STDC) $(RM) $@ $(CLC) $@ $(OBJ_STDC) @@ -142,7 +152,6 @@ $(RM) $(OBJ_STDC) $(RM) $(ALL_DOCS) find . -name "$(LIB_MASK)" | xargs $(RM) - find . -name "$(LIB_MASK_C)" | xargs $(RM) install : $(MD) $(INC_DEST) @@ -151,4 +160,3 @@ find . -name "*.html" -exec cp -f {} $(DOC_DEST)/{} \; $(MD) $(LIB_DEST) find . -name "$(LIB_MASK)" -exec cp -f {} $(LIB_DEST)/{} \; - find . -name "$(LIB_MASK_C)" -exec cp -f {} $(LIB_DEST)/{} \; diff -r f75b16f1e405 -r 926a03711ca8 runtime/lib/gc/basic/llvmdc.mak --- a/runtime/lib/gc/basic/llvmdc.mak Tue Sep 02 19:14:37 2008 +0200 +++ b/runtime/lib/gc/basic/llvmdc.mak Wed Sep 03 22:07:04 2008 +0200 @@ -10,7 +10,8 @@ # make clean # Delete unneeded files created by build process -LIB_TARGET=libtango-gc-basic.a +LIB_TARGET_BC=libtango-gc-basic-bc.a +LIB_TARGET_NATIVE=libtango-gc-basic.a LIB_MASK=libtango-gc-basic*.a CP=cp -f @@ -33,6 +34,10 @@ CC=gcc LC=llvm-ar rsv +LCC=llc +LLINK=llvm-link +CLC=ar rsv +LD=llvm-ld DC=llvmdc LIB_DEST=.. @@ -60,7 +65,7 @@ targets : lib doc all : lib doc -lib : basic.lib +lib : basic.lib basic.nlib doc : basic.doc ###################################################### @@ -78,12 +83,21 @@ ###################################################### -basic.lib : $(LIB_TARGET) +basic.lib : $(LIB_TARGET_BC) +basic.nlib : $(LIB_TARGET_NATIVE) -$(LIB_TARGET) : $(ALL_OBJS) +$(LIB_TARGET_BC) : $(ALL_OBJS) $(RM) $@ $(LC) $@ $(ALL_OBJS) + +$(LIB_TARGET_NATIVE) : $(ALL_OBJS) + $(RM) $@ $@.bc $@.s $@.o + $(LLINK) -o=$@.bc $(ALL_OBJS) + $(LCC) -o=$@.s $@.bc + $(CC) -c -o $@.o $@.s + $(CLC) $@ $@.o + basic.doc : $(ALL_DOCS) echo No documentation available. diff -r f75b16f1e405 -r 926a03711ca8 runtime/lib/llvmdc-posix.mak --- a/runtime/lib/llvmdc-posix.mak Tue Sep 02 19:14:37 2008 +0200 +++ b/runtime/lib/llvmdc-posix.mak Wed Sep 03 22:07:04 2008 +0200 @@ -37,8 +37,8 @@ #ADD_DFLAGS= ADD_DFLAGS=-I`pwd`/common/ -targets : nativelib doc -all : nativelib lib doc +targets : lib doc +all : lib doc ###################################################### @@ -54,29 +54,7 @@ make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)" make -C $(DIR_RT) -fllvmdc.mak lib make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)" - find . -name $(LIB_MASK) | xargs $(RM) - $(LC) $(LIB_TARGET) `find $(DIR_CC) -name "*.bc" | xargs echo` - $(LC) $(LIB_TARGET) `find $(DIR_RT) -name "*.bc" | xargs echo` - $(LC) $(LIB_TARGET) `find $(DIR_GC) -name "*.bc" | xargs echo` - $(CLC) $(LIB_TARGET_C) `find $(DIR_CC) -name "*.o" | xargs echo` - $(CLC) $(LIB_TARGET_C) `find $(DIR_RT) -name "*.o" | xargs echo` - -nativelib: $(ALL_OBJS) - make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)" - make -C $(DIR_RT) -fllvmdc.mak lib - make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)" - - $(RM) $(LIB_NAME_NATIVE)* - - # first link all bcs together to a single bitcode file - $(LLVMLINK) -o=$(LIB_NAME_NATIVE)-llvm.bc `find $(DIR_CC) $(DIR_RT) $(DIR_GC) -name "*.bc"` - # then compile to assembler - $(LLC) -o=$(LIB_NAME_NATIVE)-llvm.s $(LIB_NAME_NATIVE)-llvm.bc - # assemble native code - $(CC) -c -o $(LIB_NAME_NATIVE)-llvm.o $(LIB_NAME_NATIVE)-llvm.s - # make an archive containing it and the other native object files - $(CLC) $(LIB_TARGET_NATIVE) $(LIB_NAME_NATIVE)-llvm.o `find $(DIR_CC) $(DIR_RT) -name "*.o"` - + # could link the three parts into one here, but why should we doc : $(ALL_DOCS) make -C $(DIR_CC) -fllvmdc.mak doc