]> git.llucax.com Git - software/dgc/naive.git/blob - ldc.mak
Align GC allocated memory to word boundaries
[software/dgc/naive.git] / ldc.mak
1 # Makefile to build the garbage collector D library for LDC
2 # Designed to work with GNU make
3 # Targets:
4 #       make
5 #               Same as make all
6 #       make lib
7 #               Build the garbage collector library
8 #   make doc
9 #       Generate documentation
10 #       make clean
11 #               Delete unneeded files created by build process
12
13 LIB_TARGET_BC=libtango-gc-naive-bc.a
14 LIB_TARGET_NATIVE=libtango-gc-naive.a
15 LIB_TARGET_SHARED=libtango-gc-naive-shared.so
16 LIB_MASK=libtango-gc-naive*.*
17
18 CP=cp -f
19 RM=rm -f
20 MD=mkdir -p
21
22 ADD_CFLAGS=
23 ADD_DFLAGS=
24
25 #CFLAGS=-O3 $(ADD_CFLAGS)
26 CFLAGS=$(ADD_CFLAGS)
27
28 #DFLAGS=-release -O3 -inline -w -nofloat $(ADD_DFLAGS)
29 DFLAGS=-w -disable-invariants $(ADD_DFLAGS)
30
31 #TFLAGS=-O3 -inline -w -nofloat $(ADD_DFLAGS)
32 TFLAGS=-w -disable-invariants $(ADD_DFLAGS)
33
34 DOCFLAGS=-version=DDoc
35
36 CC=gcc
37 LC=llvm-ar rsv
38 LCC=llc
39 LLINK=llvm-link
40 CLC=ar rsv
41 LD=llvm-ld
42 DC=ldc
43
44 LIB_DEST=..
45
46 .SUFFIXES: .s .S .c .cpp .d .html .o .bc
47
48 .s.o:
49         $(CC) -c $(CFLAGS) $< -o$@
50
51 .S.o:
52         $(CC) -c $(CFLAGS) $< -o$@
53
54 .c.o:
55         $(CC) -c $(CFLAGS) $< -o$@
56
57 .cpp.o:
58         g++ -c $(CFLAGS) $< -o$@
59
60 .d.o:
61         $(DC) -c $(DFLAGS) $< -of$@ -output-bc
62
63 .d.html:
64         $(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
65 #       $(DC) -c -o- $(DOCFLAGS) -Df$*.html dmd.ddoc $<
66
67 targets : lib sharedlib doc
68 all     : lib sharedlib doc
69 lib     : naive.lib naive.nlib
70 sharedlib : naive.sharedlib
71 doc     : naive.doc
72
73 ######################################################
74
75 ALL_OBJS_BC= \
76     gc/iface.bc \
77     gc/gc.bc \
78     gc/arch.bc \
79     gc/list.bc \
80     gc/cell.bc \
81     gc/dynarray.bc
82
83 ALL_OBJS_O= \
84     gc/iface.o \
85     gc/gc.o \
86     gc/arch.o \
87     gc/list.o \
88     gc/cell.o \
89     gc/dynarray.o
90
91 ######################################################
92
93 ALL_DOCS=
94
95 ######################################################
96
97 naive.lib : $(LIB_TARGET_BC)
98 naive.nlib : $(LIB_TARGET_NATIVE)
99 naive.sharedlib : $(LIB_TARGET_SHARED)
100
101 $(LIB_TARGET_BC) : $(ALL_OBJS_O)
102         $(RM) $@
103         $(LC) $@ $(ALL_OBJS_BC)
104
105
106 $(LIB_TARGET_NATIVE) : $(ALL_OBJS_O)
107         $(RM) $@
108         $(CLC) $@ $(ALL_OBJS_O)
109
110
111 $(LIB_TARGET_SHARED) : $(ALL_OBJS_O)
112         $(RM) $@
113         $(CC) -shared -o $@ $(ALL_OBJS_O)
114
115 naive.doc : $(ALL_DOCS)
116         echo No documentation available.
117
118 ######################################################
119
120 clean :
121         find . -name "*.di" | xargs $(RM)
122         $(RM) $(ALL_OBJS_BC)
123         $(RM) $(ALL_OBJS_O)
124         $(RM) $(ALL_DOCS)
125
126 clean-all: clean
127         $(RM) $(LIB_MASK)
128
129 install :
130         $(MD) $(LIB_DEST)
131         $(CP) $(LIB_MASK) $(LIB_DEST)/.