changeset 569:926a03711ca8

Split runtime into three parts again.
author Christian Kamm <kamm incasoftware de>
date Wed, 03 Sep 2008 22:07:04 +0200
parents f75b16f1e405
children 6d9cf3f74f93 91d436eaedee
files dmd/mars.c runtime/build.sh runtime/internal/llvmdc.mak runtime/lib/common/tango/llvmdc.mak runtime/lib/gc/basic/llvmdc.mak runtime/lib/llvmdc-posix.mak
diffstat 6 files changed, 75 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }
 
--- 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
--- 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)/.
--- 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)/{} \;
--- 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.
 
--- 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