]> git.llucax.com Git - software/druntime.git/blob - src/common/posix.mak
Added core.vararg for variadic argument handling. This seemed necessary, since varar...
[software/druntime.git] / src / common / posix.mak
1 # Makefile to build the D runtime library core components for Posix\r
2 # Designed to work with GNU make\r
3 # Targets:\r
4 #       make\r
5 #               Same as make all\r
6 #       make lib\r
7 #               Build the common library\r
8 #   make doc\r
9 #       Generate documentation\r
10 #       make clean\r
11 #               Delete unneeded files created by build process\r
12 \r
13 LIB_BASE=libdruntime-core\r
14 LIB_BUILD=\r
15 LIB_TARGET=$(LIB_BASE)$(LIB_BUILD).a\r
16 LIB_MASK=$(LIB_BASE)*.a\r
17 \r
18 CP=cp -f\r
19 RM=rm -f\r
20 MD=mkdir -p\r
21 \r
22 ADD_CFLAGS=\r
23 ADD_DFLAGS=\r
24 \r
25 CFLAGS_RELEASE=-O $(ADD_CFLAGS)\r
26 CFLAGS_DEBUG=-g $(ADD_CFLAGS)\r
27 CFLAGS=$(CFLAGS_RELEASE)\r
28 \r
29 DFLAGS_RELEASE=-release -O -inline -w -nofloat $(ADD_DFLAGS)\r
30 DFLAGS_DEBUG=-g -w -nofloat $(ADD_DFLAGS)\r
31 DFLAGS=$(DFLAGS_RELEASE)\r
32 \r
33 TFLAGS_RELEASE=-O -inline -w  -nofloat $(ADD_DFLAGS)\r
34 TFLAGS_DEBUG=-g -w -nofloat $(ADD_DFLAGS)\r
35 TFLAGS=$(TFLAGS_RELEASE)\r
36 \r
37 DOCFLAGS=-version=DDoc\r
38 \r
39 CC=gcc\r
40 LC=$(AR) -qsv\r
41 DC=dmd\r
42 \r
43 INC_DEST=../../import\r
44 LIB_DEST=../../lib\r
45 DOC_DEST=../../doc\r
46 \r
47 .SUFFIXES: .s .S .c .cpp .d .html .o\r
48 \r
49 .s.o:\r
50         $(CC) -c $(CFLAGS) $< -o$@\r
51 \r
52 .S.o:\r
53         $(CC) -c $(CFLAGS) $< -o$@\r
54 \r
55 .c.o:\r
56         $(CC) -c $(CFLAGS) $< -o$@\r
57 \r
58 .cpp.o:\r
59         g++ -c $(CFLAGS) $< -o$@\r
60 \r
61 .d.o:\r
62         $(DC) -c $(DFLAGS) -Hf$*.di $< -of$@\r
63 #       $(DC) -c $(DFLAGS) $< -of$@\r
64 \r
65 .d.html:\r
66         $(DC) -c -o- $(DOCFLAGS) -Df$*.html $<\r
67 \r
68 targets : lib doc\r
69 all     : lib doc\r
70 core    : lib\r
71 lib     : core.lib\r
72 doc     : core.doc\r
73 \r
74 ######################################################\r
75 \r
76 OBJ_CORE= \\r
77     core/bitmanip.o \\r
78     core/exception.o \\r
79     core/memory_.o \\r
80     core/runtime.o \\r
81     core/thread.o \\r
82     core/vararg.o\r
83 \r
84 OBJ_STDC= \\r
85     core/stdc/errno.o\r
86 \r
87 ALL_OBJS= \\r
88     $(OBJ_CORE) \\r
89     $(OBJ_STDC)\r
90 \r
91 ######################################################\r
92 \r
93 DOC_CORE= \\r
94     core/bitmanip.html \\r
95     core/exception.html \\r
96     core/memory.html \\r
97     core/runtime.html \\r
98     core/thread.html \\r
99     core/vararg.html\r
100 \r
101 ######################################################\r
102 \r
103 ALL_DOCS=\r
104 \r
105 ######################################################\r
106 \r
107 unittest :\r
108         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE) -unittest"\r
109 \r
110 release :\r
111         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE)"\r
112 \r
113 debug :\r
114         make -fposix.mak DC="$(DC)" LIB_BUILD="-d" DFLAGS="$(DFLAGS_DEBUG)"\r
115 \r
116 ######################################################\r
117 \r
118 core.lib : $(LIB_TARGET)\r
119 \r
120 $(LIB_TARGET) : $(ALL_OBJS)\r
121         $(RM) $@\r
122         $(LC) $@ $(ALL_OBJS)\r
123 \r
124 core.doc : $(ALL_DOCS)\r
125         echo Documentation generated.\r
126 \r
127 ######################################################\r
128 \r
129 ### bitmanip\r
130 \r
131 core/bitmanip.o : core/bitmanip.d\r
132         $(DC) -c $(DFLAGS) core/bitmanip.d -of$@\r
133 \r
134 ### memory\r
135 \r
136 core/memory_.o : core/memory.d\r
137         $(DC) -c $(DFLAGS) -Hf$*.di $< -of$@\r
138 \r
139 ### thread\r
140 \r
141 core/thread.o : core/thread.d\r
142         $(DC) -c $(DFLAGS) -d -Hf$*.di core/thread.d -of$@\r
143 \r
144 ### vararg\r
145 \r
146 core/vararg.o : core/vararg.d\r
147         $(DC) -c $(TFLAGS) -Hf$*.di core/vararg.d -of$@\r
148 \r
149 ######################################################\r
150 \r
151 clean :\r
152         find . -name "*.di" | xargs $(RM)\r
153         $(RM) $(ALL_OBJS)\r
154         $(RM) $(ALL_DOCS)\r
155         find . -name "$(LIB_MASK)" | xargs $(RM)\r
156 \r
157 install :\r
158         $(MD) $(INC_DEST)\r
159         find . -name "*.di" -exec cp -f {} $(INC_DEST)/{} \;\r
160         $(MD) $(DOC_DEST)\r
161         find . -name "*.html" -exec cp -f {} $(DOC_DEST)/{} \;\r
162         $(MD) $(LIB_DEST)\r
163         find . -name "$(LIB_MASK)" -exec cp -f {} $(LIB_DEST)/{} \;\r