]> git.llucax.com Git - software/dgc/cdgc.git/blob - Makefile
Make allocation functions that can fail return bool
[software/dgc/cdgc.git] / Makefile
1
2 # Build directory
3 B := build
4
5 # D compiler to use
6 DC := ldc
7
8 # DC compilation options to produce unlinked objects
9 DC_OBJ_OPT := -c
10
11 # DC compilation options to produce PIC objects
12 DC_SO_OPT := -relocation-model=pic
13
14 # DC option to tell where to store the output
15 DC_OUTPUT_OPTION = -of=$@
16
17 # Extra flags for the compiler
18 DCFLAGS := -O5 -release
19 #DCFLAGS := -debug
20
21 # Linker to use
22 LD := gcc
23
24 # Link options to produce a shared library
25 LD_SO_OPT = -fPIC -shared -Wl,-soname,$@
26
27 # DC option to tell where to store the output
28 LD_OUTPUT_OPTION = -o $@
29
30 # Extra flags for the linker
31 #LDFLAGS :=
32
33 # GC sources
34 sources := \
35         gc/iface.d \
36         gc/alloc.d \
37         gc/bits.d \
38         gc/stats.d \
39         gc/libc.d \
40         gc/gc.d
41
42 # Default target
43 all: $B/cdgc.so
44
45 # Make the GC shared object
46 $B/cdgc.so: $(patsubst %.d,$B/%.o,$(sources))
47
48
49 # General pattern rules
50 #######################
51
52 $B/%.so: DCFLAGS += $(DC_SO_OPT)
53
54 $B/%.so:
55         $(if $V,,@echo '  $(LD) $@')
56         $(if $V,,@) $(LD) $(LDFLAGS) $(LD_SO_OPT) $(LD_OUTPUT_OPTION) $^
57
58 $B/%.o: %.d
59         $(if $V,,@echo '  $(DC) $@')
60         $(if $V,,@) $(DC) $(DCFLAGS) $(DC_OBJ_OPT) $(DC_OUTPUT_OPTION) $<
61
62 clean:
63         $(if $V,,@echo '  $(RM) $B')
64         $(if $V,,@) $(RM) -r $B
65
66 __dummy := $(shell mkdir -p $B)
67