comparison runtime/lib/llvmdc-posix.mak @ 443:44f08170f4ef

Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn. Reworked the LLVMDC specific pragmas.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Fri, 01 Aug 2008 00:32:06 +0200
parents
children 2b28fd92bab8
comparison
equal deleted inserted replaced
442:76078c8ab5b9 443:44f08170f4ef
1 # Makefile to build the composite D runtime library for Linux
2 # Designed to work with GNU make
3 # Targets:
4 # make
5 # Same as make all
6 # make lib
7 # Build the runtime library
8 # make doc
9 # Generate documentation
10 # make clean
11 # Delete unneeded files created by build process
12
13 LIB_TARGET=libtango-base-llvmdc.a
14 LIB_MASK=libtango-base-llvmdc*.a
15 LIB_TARGET_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
19
20 DIR_CC=./common/tango
21 DIR_RT=../../runtime/internal
22 DIR_GC=./gc/basic
23 #DIR_GC=./gc/stub
24
25 CP=cp -f
26 RM=rm -f
27 MD=mkdir -p
28
29 CC=gcc
30 LC=llvm-ar rsv
31 CLC=ar rsv
32 DC=llvmdc
33 LLVMLINK=llvm-link
34 LLC=llc
35
36 ADD_CFLAGS=
37 #ADD_DFLAGS=
38 ADD_DFLAGS=-I`pwd`/common -I`pwd`/.. -I`pwd`/compiler/llvmdc
39
40 targets : nativelib doc
41 all : nativelib lib doc
42
43 ######################################################
44
45 ALL_OBJS=
46
47 ######################################################
48
49 ALL_DOCS=
50
51 ######################################################
52
53 lib : $(ALL_OBJS)
54 make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
55 make -C $(DIR_RT) -fllvmdc.mak lib
56 make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
57 find . -name $(LIB_MASK) | xargs $(RM)
58 $(LC) $(LIB_TARGET) `find $(DIR_CC) -name "*.bc" | xargs echo`
59 $(LC) $(LIB_TARGET) `find $(DIR_RT) -name "*.bc" | xargs echo`
60 $(LC) $(LIB_TARGET) `find $(DIR_GC) -name "*.bc" | xargs echo`
61 $(CLC) $(LIB_TARGET_C) `find $(DIR_CC) -name "*.o" | xargs echo`
62 $(CLC) $(LIB_TARGET_C) `find $(DIR_RT) -name "*.o" | xargs echo`
63
64 nativelib: $(ALL_OBJS)
65 make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
66 make -C $(DIR_RT) -fllvmdc.mak lib
67 make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
68
69 $(RM) $(LIB_NAME_NATIVE)*
70
71 # first link all bcs together to a single bitcode file
72 $(LLVMLINK) -o=$(LIB_NAME_NATIVE)-llvm.bc `find $(DIR_CC) $(DIR_RT) $(DIR_GC) -name "*.bc"`
73 # then compile to assembler
74 $(LLC) -o=$(LIB_NAME_NATIVE)-llvm.s $(LIB_NAME_NATIVE)-llvm.bc
75 # assemble native code
76 $(CC) -c -o $(LIB_NAME_NATIVE)-llvm.o $(LIB_NAME_NATIVE)-llvm.s
77 # make an archive containing it and the other native object files
78 $(CLC) $(LIB_TARGET_NATIVE) $(LIB_NAME_NATIVE)-llvm.o `find $(DIR_CC) $(DIR_RT) -name "*.o"`
79
80
81 doc : $(ALL_DOCS)
82 make -C $(DIR_CC) -fllvmdc.mak doc
83 make -C $(DIR_RT) -fllvmdc.mak doc
84 make -C $(DIR_GC) -fllvmdc.mak doc
85
86 ######################################################
87
88 clean :
89 find . -name "*.di" | xargs $(RM)
90 $(RM) $(ALL_OBJS)
91 $(RM) $(ALL_DOCS)
92 make -C $(DIR_CC) -fllvmdc.mak clean
93 make -C $(DIR_RT) -fllvmdc.mak clean
94 make -C $(DIR_GC) -fllvmdc.mak clean
95 $(RM) $(LIB_MASK)
96 $(RM) $(LIB_MASK_C)
97 $(RM) $(LIB_NAME_NATIVE)*
98
99 install :
100 make -C $(DIR_CC) -fllvmdc.mak install
101 make -C $(DIR_RT) -fllvmdc.mak install
102 make -C $(DIR_GC) -fllvmdc.mak install
103 $(CP) $(LIB_MASK) $(LIB_DEST)/.
104 $(CP) $(LIB_MASK_C) $(LIB_DEST)/.