root/trunk/posix.mak

Revision 502, 10.3 kB (checked in by braddr, 1 year ago)

Fix rt/dmain2 to properly declare one missing symbol (probably visible due to bug 314 while building the whole library but not when building the unittest.
Start building druntime with -O on 64 bit, everything passes now

  • Property svn:eol-style set to native
Line 
1 DMD=dmd
2
3 DOCDIR=doc
4 IMPDIR=import
5
6 MODEL=32
7
8 DFLAGS=-m$(MODEL) -O -release -inline -nofloat -w -d -Isrc -Iimport
9 UDFLAGS=-m$(MODEL) -O -release -nofloat -w -d -Isrc -Iimport
10
11 CFLAGS=-m$(MODEL) -O
12
13 OBJDIR=obj
14 DRUNTIME_BASE=druntime
15 DRUNTIME=lib/lib$(DRUNTIME_BASE).a
16
17 DOCFMT=
18
19 target : import $(DRUNTIME) doc
20
21 _MISSING_FROM_MANIFEST = \
22     src/core/sys/posix/sys/select \
23     src/core/sys/posix/sys/socket \
24     src/core/sys/posix/sys/stat \
25     src/core/sys/posix/sys/wait \
26     src/core/sys/posix/netinet/in_
27
28 MANIFEST= \
29     LICENSE_1_0.txt \
30     README.txt \
31     posix.mak \
32     win32.mak \
33     \
34     import/object.di \
35     import/std/intrinsic.di \
36     \
37     $(addprefix src,$(addsuffix .d,$(SRC_D_MODULES))) \
38     \
39     src/core/dll_helper.d \
40     src/core/thread_helper.d \
41     src/core/threadasm.S \
42     \
43     src/core/stdc/complex.d \
44     src/core/stdc/errno.c \
45     src/core/stdc/fenv.d \
46     src/core/stdc/float_.d \
47     src/core/stdc/inttypes.d \
48     src/core/stdc/limits.d \
49     src/core/stdc/locale.d \
50     src/core/stdc/tgmath.d \
51     src/core/stdc/wctype.d \
52     \
53     src/core/sys/osx/mach/dyld.d \
54     src/core/sys/osx/mach/getsect.d \
55     src/core/sys/osx/mach/kern_return.d \
56     src/core/sys/osx/mach/loader.d \
57     src/core/sys/osx/mach/port.d \
58     src/core/sys/osx/mach/semaphore.d \
59     src/core/sys/osx/mach/thread_act.d \
60     \
61     src/core/sys/posix/config.d \
62     src/core/sys/posix/dirent.d \
63     src/core/sys/posix/dlfcn.d \
64     src/core/sys/posix/fcntl.d \
65     src/core/sys/posix/inttypes.d \
66     src/core/sys/posix/net/if_.d \
67     src/core/sys/posix/poll.d \
68     src/core/sys/posix/pthread.d \
69     src/core/sys/posix/pwd.d \
70     src/core/sys/posix/sched.d \
71     src/core/sys/posix/semaphore.d \
72     src/core/sys/posix/setjmp.d \
73     src/core/sys/posix/signal.d \
74     src/core/sys/posix/stdio.d \
75     src/core/sys/posix/stdlib.d \
76     src/core/sys/posix/termios.d \
77     src/core/sys/posix/time.d \
78     src/core/sys/posix/ucontext.d \
79     src/core/sys/posix/unistd.d \
80     src/core/sys/posix/utime.d \
81     \
82     src/core/sys/posix/arpa/inet.d \
83     \
84     src/core/sys/posix/netinet/in_.d \
85     src/core/sys/posix/netinet/tcp.d \
86     \
87     src/core/sys/posix/sys/ipc.d \
88     src/core/sys/posix/sys/mman.d \
89     src/core/sys/posix/sys/select.d \
90     src/core/sys/posix/sys/shm.d \
91     src/core/sys/posix/sys/socket.d \
92     src/core/sys/posix/sys/stat.d \
93     src/core/sys/posix/sys/time.d \
94     src/core/sys/posix/sys/types.d \
95     src/core/sys/posix/sys/uio.d \
96     src/core/sys/posix/sys/wait.d \
97     \
98     src/core/sys/windows/windows.d \
99     \
100     src/gcstub/gc.d \
101     \
102     src/rt/compiler.d \
103     src/rt/complex.c \
104     src/rt/critical.c \
105     src/rt/deh.c \
106     src/rt/dylib_fixes.c \
107     src/rt/image.d \
108     src/rt/mars.h \
109     src/rt/memory_osx.c \
110     src/rt/minit.asm \
111     src/rt/monitor.c \
112     src/rt/qsort2.d \
113     src/rt/tls.S
114
115 SRC_D_MODULES = \
116     object_ \
117     \
118     core/atomic \
119     core/bitop \
120     core/cpuid \
121     core/demangle \
122     core/exception \
123     core/memory \
124     core/runtime \
125     core/thread \
126     core/time \
127     core/vararg \
128     \
129     core/stdc/config \
130     core/stdc/ctype \
131     core/stdc/errno \
132     core/stdc/math \
133     core/stdc/signal \
134     core/stdc/stdarg \
135     core/stdc/stdio \
136     core/stdc/stdlib \
137     core/stdc/stdint \
138     core/stdc/stddef \
139     core/stdc/string \
140     core/stdc/time \
141     core/stdc/wchar_ \
142     \
143     core/sys/posix/sys/select \
144     core/sys/posix/sys/socket \
145     core/sys/posix/sys/stat \
146     core/sys/posix/sys/wait \
147     core/sys/posix/netinet/in_ \
148     \
149     core/sync/barrier \
150     core/sync/condition \
151     core/sync/config \
152     core/sync/exception \
153     core/sync/mutex \
154     core/sync/rwmutex \
155     core/sync/semaphore \
156     \
157     gc/gc \
158     gc/gcalloc \
159     gc/gcbits \
160     gc/gcstats \
161     gc/gcx \
162     \
163     rt/aaA \
164     rt/aApply \
165     rt/aApplyR \
166     rt/adi \
167     rt/alloca \
168     rt/arrayassign \
169     rt/arraybyte \
170     rt/arraycast \
171     rt/arraycat \
172     rt/arraydouble \
173     rt/arrayfloat \
174     rt/arrayint \
175     rt/arrayreal \
176     rt/arrayshort \
177     rt/cast_ \
178     rt/cmath2 \
179     rt/cover \
180     rt/deh2 \
181     rt/dmain2 \
182     rt/invariant \
183     rt/invariant_ \
184     rt/lifetime \
185     rt/llmath \
186     rt/memory \
187     rt/memset \
188     rt/obj \
189     rt/qsort \
190     rt/switch_ \
191     rt/trace \
192     \
193     rt/util/console \
194     rt/util/ctype \
195     rt/util/hash \
196     rt/util/string \
197     rt/util/utf \
198     \
199     rt/typeinfo/ti_AC \
200     rt/typeinfo/ti_Acdouble \
201     rt/typeinfo/ti_Acfloat \
202     rt/typeinfo/ti_Acreal \
203     rt/typeinfo/ti_Adouble \
204     rt/typeinfo/ti_Afloat \
205     rt/typeinfo/ti_Ag \
206     rt/typeinfo/ti_Aint \
207     rt/typeinfo/ti_Along \
208     rt/typeinfo/ti_Areal \
209     rt/typeinfo/ti_Ashort \
210     rt/typeinfo/ti_byte \
211     rt/typeinfo/ti_C \
212     rt/typeinfo/ti_cdouble \
213     rt/typeinfo/ti_cfloat \
214     rt/typeinfo/ti_char \
215     rt/typeinfo/ti_creal \
216     rt/typeinfo/ti_dchar \
217     rt/typeinfo/ti_delegate \
218     rt/typeinfo/ti_double \
219     rt/typeinfo/ti_float \
220     rt/typeinfo/ti_idouble \
221     rt/typeinfo/ti_ifloat \
222     rt/typeinfo/ti_int \
223     rt/typeinfo/ti_ireal \
224     rt/typeinfo/ti_long \
225     rt/typeinfo/ti_ptr \
226     rt/typeinfo/ti_real \
227     rt/typeinfo/ti_short \
228     rt/typeinfo/ti_ubyte \
229     rt/typeinfo/ti_uint \
230     rt/typeinfo/ti_ulong \
231     rt/typeinfo/ti_ushort \
232     rt/typeinfo/ti_void \
233     rt/typeinfo/ti_wchar
234
235 # NOTE: trace.d and cover.d are not necessary for a successful build
236 #       as both are used for debugging features (profiling and coverage)
237 # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and
238 #       minit.asm is not used by dmd for Linux
239
240 OBJS= $(OBJDIR)/errno_c.o $(OBJDIR)/threadasm.o $(OBJDIR)/complex.o \
241 $(OBJDIR)/critical.o $(OBJDIR)/memory_osx.o $(OBJDIR)/monitor.o
242
243 DOCS=\
244     $(DOCDIR)/object.html \
245     $(DOCDIR)/core_atomic.html \
246     $(DOCDIR)/core_bitop.html \
247     $(DOCDIR)/core_cpuid.html \
248     $(DOCDIR)/core_demangle.html \
249     $(DOCDIR)/core_exception.html \
250     $(DOCDIR)/core_memory.html \
251     $(DOCDIR)/core_runtime.html \
252     $(DOCDIR)/core_thread.html \
253     $(DOCDIR)/core_time.html \
254     $(DOCDIR)/core_vararg.html \
255     \
256     $(DOCDIR)/core_sync_barrier.html \
257     $(DOCDIR)/core_sync_condition.html \
258     $(DOCDIR)/core_sync_config.html \
259     $(DOCDIR)/core_sync_exception.html \
260     $(DOCDIR)/core_sync_mutex.html \
261     $(DOCDIR)/core_sync_rwmutex.html \
262     $(DOCDIR)/core_sync_semaphore.html
263
264 IMPORTS=\
265     $(IMPDIR)/core/atomic.di \
266     $(IMPDIR)/core/bitop.di \
267     $(IMPDIR)/core/cpuid.di \
268     $(IMPDIR)/core/demangle.di \
269     $(IMPDIR)/core/dll_helper.di \
270     $(IMPDIR)/core/exception.di \
271     $(IMPDIR)/core/memory.di \
272     $(IMPDIR)/core/runtime.di \
273     $(IMPDIR)/core/thread.di \
274     $(IMPDIR)/core/time.di \
275     $(IMPDIR)/core/thread_helper.di \
276     $(IMPDIR)/core/vararg.di \
277     \
278     $(IMPDIR)/core/stdc/complex.di \
279     $(IMPDIR)/core/stdc/config.di \
280     $(IMPDIR)/core/stdc/ctype.di \
281     $(IMPDIR)/core/stdc/errno.di \
282     $(IMPDIR)/core/stdc/fenv.di \
283     $(IMPDIR)/core/stdc/float_.di \
284     $(IMPDIR)/core/stdc/inttypes.di \
285     $(IMPDIR)/core/stdc/limits.di \
286     $(IMPDIR)/core/stdc/locale.di \
287     $(IMPDIR)/core/stdc/math.di \
288     $(IMPDIR)/core/stdc/signal.di \
289     $(IMPDIR)/core/stdc/stdarg.di \
290     $(IMPDIR)/core/stdc/stddef.di \
291     $(IMPDIR)/core/stdc/stdint.di \
292     $(IMPDIR)/core/stdc/stdio.di \
293     $(IMPDIR)/core/stdc/stdlib.di \
294     $(IMPDIR)/core/stdc/string.di \
295     $(IMPDIR)/core/stdc/tgmath.di \
296     $(IMPDIR)/core/stdc/time.di \
297     $(IMPDIR)/core/stdc/wchar_.di \
298     $(IMPDIR)/core/stdc/wctype.di \
299     \
300     $(IMPDIR)/core/sync/barrier.di \
301     $(IMPDIR)/core/sync/condition.di \
302     $(IMPDIR)/core/sync/config.di \
303     $(IMPDIR)/core/sync/exception.di \
304     $(IMPDIR)/core/sync/mutex.di \
305     $(IMPDIR)/core/sync/rwmutex.di \
306     $(IMPDIR)/core/sync/semaphore.di \
307     \
308     $(IMPDIR)/core/sys/osx/mach/kern_return.di \
309     $(IMPDIR)/core/sys/osx/mach/port.di \
310     $(IMPDIR)/core/sys/osx/mach/semaphore.di \
311     $(IMPDIR)/core/sys/osx/mach/thread_act.di \
312     \
313     $(IMPDIR)/core/sys/posix/arpa/inet.di \
314     $(IMPDIR)/core/sys/posix/config.di \
315     $(IMPDIR)/core/sys/posix/dirent.di \
316     $(IMPDIR)/core/sys/posix/dlfcn.di \
317     $(IMPDIR)/core/sys/posix/fcntl.di \
318     $(IMPDIR)/core/sys/posix/inttypes.di \
319     $(IMPDIR)/core/sys/posix/poll.di \
320     $(IMPDIR)/core/sys/posix/pthread.di \
321     $(IMPDIR)/core/sys/posix/pwd.di \
322     $(IMPDIR)/core/sys/posix/sched.di \
323     $(IMPDIR)/core/sys/posix/semaphore.di \
324     $(IMPDIR)/core/sys/posix/setjmp.di \
325     $(IMPDIR)/core/sys/posix/signal.di \
326     $(IMPDIR)/core/sys/posix/stdio.di \
327     $(IMPDIR)/core/sys/posix/stdlib.di \
328     $(IMPDIR)/core/sys/posix/termios.di \
329     $(IMPDIR)/core/sys/posix/time.di \
330     $(IMPDIR)/core/sys/posix/ucontext.di \
331     $(IMPDIR)/core/sys/posix/unistd.di \
332     $(IMPDIR)/core/sys/posix/utime.di \
333     \
334     $(IMPDIR)/core/sys/posix/net/if_.di \
335     \
336     $(IMPDIR)/core/sys/posix/netinet/in_.di \
337     $(IMPDIR)/core/sys/posix/netinet/tcp.di \
338     \
339     $(IMPDIR)/core/sys/posix/sys/ipc.di \
340     $(IMPDIR)/core/sys/posix/sys/mman.di \
341     $(IMPDIR)/core/sys/posix/sys/select.di \
342     $(IMPDIR)/core/sys/posix/sys/shm.di \
343     $(IMPDIR)/core/sys/posix/sys/socket.di \
344     $(IMPDIR)/core/sys/posix/sys/stat.di \
345     $(IMPDIR)/core/sys/posix/sys/time.di \
346     $(IMPDIR)/core/sys/posix/sys/types.di \
347     $(IMPDIR)/core/sys/posix/sys/uio.di \
348     $(IMPDIR)/core/sys/posix/sys/wait.di \
349     \
350     $(IMPDIR)/core/sys/windows/windows.di
351
352 SRCS=$(addprefix src/,$(addsuffix .d,$(SRC_D_MODULES)))
353
354 ######################## Doc .html file generation ##############################
355
356 doc: $(DOCS)
357
358 $(DOCDIR)/object.html : src/object_.d
359     $(DMD) -c -d -o- -Isrc -Iimport -Df$@ $(DOCFMT) $<
360
361 $(DOCDIR)/core_%.html : src/core/%.d
362     $(DMD) -c -d -o- -Isrc -Iimport -Df$@ $(DOCFMT) $<
363    
364 $(DOCDIR)/core_sync_%.html : src/core/sync/%.d
365     $(DMD) -c -d -o- -Isrc -Iimport -Df$@ $(DOCFMT) $<
366
367 ######################## Header .di file generation ##############################
368
369 import: $(IMPORTS)
370    
371 $(IMPDIR)/core/%.di : src/core/%.d
372     $(DMD) -c -d -o- -Isrc -Iimport -Hf$@ $<
373
374 ################### C/ASM Targets ############################
375
376 $(OBJDIR)/%.o : src/rt/%.c
377     @mkdir -p $(OBJDIR)
378     $(CC) -c $(CFLAGS) $< -o$@
379
380 $(OBJDIR)/errno_c.o : src/core/stdc/errno.c
381     @mkdir -p $(OBJDIR)
382     $(CC) -c $(CFLAGS) $< -o$@
383
384 $(OBJDIR)/threadasm.o : src/core/threadasm.S
385     @mkdir -p $(OBJDIR)
386     $(CC) -c $(CFLAGS) $< -o$@
387
388 ################### Library generation #########################
389
390 $(DRUNTIME): $(OBJS) $(SRCS) win32.mak
391     $(DMD) -lib -of$(DRUNTIME) -Xfdruntime.json $(DFLAGS) $(SRCS) $(OBJS)
392
393 unittest : $(addprefix $(OBJDIR)/,$(SRC_D_MODULES)) $(DRUNTIME) $(OBJDIR)/emptymain.d
394     @echo done
395
396 ifeq ($(MODEL),64)
397 DISABLED_TESTS =
398 else
399 DISABLED_TESTS =
400 endif
401
402 $(addprefix $(OBJDIR)/,$(DISABLED_TESTS)) :
403     @echo $@ - disabled
404
405 $(OBJDIR)/% : src/%.d $(DRUNTIME) $(OBJDIR)/emptymain.d
406     @echo Testing $@
407     @$(DMD) $(UDFLAGS) -unittest -of$@ $(OBJDIR)/emptymain.d $< -L-Llib -debuglib=$(DRUNTIME_BASE) -defaultlib=$(DRUNTIME_BASE)
408 # make the file very old so it builds and runs again if it fails
409     @touch -t 197001230123 $@
410 # run unittest in its own directory
411     @$(RUN) $@
412 # succeeded, render the file new again
413     @touch $@
414
415 $(OBJDIR)/emptymain.d :
416     @mkdir -p $(OBJDIR)
417     @echo 'void main(){}' >$@
418
419 zip: druntime.zip
420
421 druntime.zip:
422     rm $@
423     zip -u $@ $(MANIFEST) $(DOCS) $(IMPORTS) minit.o
424
425 install: druntime.zip
426     unzip -o druntime.zip -d /dmd2/src/druntime
427
428 clean:
429     rm -f $(DOCS) $(DRUNTIME)
430     rm -rf $(OBJDIR) import/core
Note: See TracBrowser for help on using the browser.