Split runtime into three parts again.

This commit is contained in:
Christian Kamm
2008-09-03 22:07:04 +02:00
parent d6e7a65b69
commit 3779b7c7d1
6 changed files with 75 additions and 54 deletions

View File

@@ -710,8 +710,15 @@ int main(int argc, char *argv[])
}
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);
}

View File

@@ -13,7 +13,12 @@ cp -R lib ../tango
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

View File

@@ -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 @@ DOCFLAGS=-version=DDoc
CC=gcc
LC=llvm-ar rsv
LLINK=llvm-link
LCC=llc
CLC=ar rsv
DC=llvmdc
LLC=llvm-as
@@ -61,7 +63,7 @@ LIB_DEST=..
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 @@ ALL_DOCS=
######################################################
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 @@ clean :
$(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)/.

View File

@@ -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 @@ DOCFLAGS=-version=DDoc
CC=gcc
LC=llvm-ar rsv
LLINK=llvm-link
LCC=llc
CLC=ar rsv
DC=llvmdc
LLC=llvm-as
@@ -71,7 +73,7 @@ DOC_DEST=../../../doc/tango
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 @@ ALL_DOCS=
######################################################
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 @@ clean :
$(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 @@ install :
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)/{} \;

View File

@@ -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 @@ DOCFLAGS=-version=DDoc
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 @@ LIB_DEST=..
targets : lib doc
all : lib doc
lib : basic.lib
lib : basic.lib basic.nlib
doc : basic.doc
######################################################
@@ -78,12 +83,21 @@ ALL_DOCS=
######################################################
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.

View File

@@ -37,8 +37,8 @@ ADD_CFLAGS=
#ADD_DFLAGS=
ADD_DFLAGS=-I`pwd`/common/
targets : nativelib doc
all : nativelib lib doc
targets : lib doc
all : lib doc
######################################################
@@ -54,29 +54,7 @@ lib : $(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)"
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