comparison tango/lib/llvmdc-posix.mak @ 325:3c8c58c24aa8 trunk

[svn r346] Fixed #55 - llvmdc can link as fast as dmd now! Made runtime to compile to native by default. Changed linker.cpp to link in native runtime library. This change requires a runtime rebuild as well as a new symbolic link in lib/ to tango/lib/libtango-base-llvmdc-native.a.
author ChristianK
date Thu, 10 Jul 2008 19:38:34 +0200
parents 4c2689d57ba4
children
comparison
equal deleted inserted replaced
324:c542d12017e5 325:3c8c58c24aa8
12 12
13 LIB_TARGET=libtango-base-llvmdc.a 13 LIB_TARGET=libtango-base-llvmdc.a
14 LIB_MASK=libtango-base-llvmdc*.a 14 LIB_MASK=libtango-base-llvmdc*.a
15 LIB_TARGET_C=libtango-base-c-llvmdc.a 15 LIB_TARGET_C=libtango-base-c-llvmdc.a
16 LIB_MASK_C=libtango-base-c-llvmdc*.a 16 LIB_MASK_C=libtango-base-c-llvmdc*.a
17 LIB_NAME_NATIVE=libtango-base-llvmdc-native
18 LIB_TARGET_NATIVE=$(LIB_NAME_NATIVE).a
17 19
18 DIR_CC=./common/tango 20 DIR_CC=./common/tango
19 DIR_RT=./compiler/llvmdc 21 DIR_RT=./compiler/llvmdc
20 DIR_GC=./gc/basic 22 DIR_GC=./gc/basic
21 #DIR_GC=./gc/stub 23 #DIR_GC=./gc/stub
26 28
27 CC=gcc 29 CC=gcc
28 LC=llvm-ar rsv 30 LC=llvm-ar rsv
29 CLC=ar rsv 31 CLC=ar rsv
30 DC=llvmdc 32 DC=llvmdc
33 LLVMLINK=llvm-link
34 LLC=llc
31 35
32 ADD_CFLAGS= 36 ADD_CFLAGS=
33 ADD_DFLAGS= 37 ADD_DFLAGS=
34 38
35 targets : lib doc 39 targets : nativelib doc
36 all : lib doc 40 all : nativelib lib doc
37 41
38 ###################################################### 42 ######################################################
39 43
40 ALL_OBJS= 44 ALL_OBJS=
41 45
54 $(LC) $(LIB_TARGET) `find $(DIR_RT) -name "*.bc" | xargs echo` 58 $(LC) $(LIB_TARGET) `find $(DIR_RT) -name "*.bc" | xargs echo`
55 $(LC) $(LIB_TARGET) `find $(DIR_GC) -name "*.bc" | xargs echo` 59 $(LC) $(LIB_TARGET) `find $(DIR_GC) -name "*.bc" | xargs echo`
56 $(CLC) $(LIB_TARGET_C) `find $(DIR_CC) -name "*.o" | xargs echo` 60 $(CLC) $(LIB_TARGET_C) `find $(DIR_CC) -name "*.o" | xargs echo`
57 $(CLC) $(LIB_TARGET_C) `find $(DIR_RT) -name "*.o" | xargs echo` 61 $(CLC) $(LIB_TARGET_C) `find $(DIR_RT) -name "*.o" | xargs echo`
58 62
63 nativelib: $(ALL_OBJS)
64 make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
65 make -C $(DIR_RT) -fllvmdc.mak lib
66 make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
67
68 $(RM) $(LIB_NAME_NATIVE)*
69
70 # first link all bcs together to a single bitcode file
71 $(LLVMLINK) -o=$(LIB_NAME_NATIVE)-llvm.bc `find $(DIR_CC) $(DIR_RT) $(DIR_GC) -name "*.bc"`
72 # then compile to assembler
73 $(LLC) -o=$(LIB_NAME_NATIVE)-llvm.s $(LIB_NAME_NATIVE)-llvm.bc
74 # assemble native code
75 $(CC) -c -o $(LIB_NAME_NATIVE)-llvm.o $(LIB_NAME_NATIVE)-llvm.s
76 # make an archive containing it and the other native object files
77 $(CLC) $(LIB_TARGET_NATIVE) $(LIB_NAME_NATIVE)-llvm.o `find $(DIR_CC) $(DIR_RT) -name "*.o"`
78
79
59 doc : $(ALL_DOCS) 80 doc : $(ALL_DOCS)
60 make -C $(DIR_CC) -fllvmdc.mak doc 81 make -C $(DIR_CC) -fllvmdc.mak doc
61 make -C $(DIR_RT) -fllvmdc.mak doc 82 make -C $(DIR_RT) -fllvmdc.mak doc
62 make -C $(DIR_GC) -fllvmdc.mak doc 83 make -C $(DIR_GC) -fllvmdc.mak doc
63 84
70 make -C $(DIR_CC) -fllvmdc.mak clean 91 make -C $(DIR_CC) -fllvmdc.mak clean
71 make -C $(DIR_RT) -fllvmdc.mak clean 92 make -C $(DIR_RT) -fllvmdc.mak clean
72 make -C $(DIR_GC) -fllvmdc.mak clean 93 make -C $(DIR_GC) -fllvmdc.mak clean
73 $(RM) $(LIB_MASK) 94 $(RM) $(LIB_MASK)
74 $(RM) $(LIB_MASK_C) 95 $(RM) $(LIB_MASK_C)
96 $(RM) $(LIB_NAME_NATIVE)*
75 97
76 install : 98 install :
77 make -C $(DIR_CC) -fllvmdc.mak install 99 make -C $(DIR_CC) -fllvmdc.mak install
78 make -C $(DIR_RT) -fllvmdc.mak install 100 make -C $(DIR_RT) -fllvmdc.mak install
79 make -C $(DIR_GC) -fllvmdc.mak install 101 make -C $(DIR_GC) -fllvmdc.mak install