]> git.llucax.com Git - software/dgc/cdgc.git/blob - Makefile
Unify GC class and Gcx struct
[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 := $(addprefix rt/gc/cdgc/,\
35         iface.d \
36         alloc.d \
37         bits.d \
38         stats.d \
39         libc.d \
40         gc.d \
41         )
42
43 # Default target
44 all: $B/cdgc.so
45
46 # Make the GC shared object
47 $B/cdgc.so: $(patsubst %.d,$B/%.o,$(sources))
48
49
50 # General pattern rules
51 #######################
52
53 $B/%.so: DCFLAGS += $(DC_SO_OPT)
54
55 $B/%.so:
56         $(if $V,,@echo '  $(LD) $@')
57         $(if $V,,@) $(LD) $(LDFLAGS) $(LD_SO_OPT) $(LD_OUTPUT_OPTION) $^
58
59 $B/%.o: %.d
60         $(if $V,,@echo '  $(DC) $@')
61         $(if $V,,@) $(DC) $(DCFLAGS) $(DC_OBJ_OPT) $(DC_OUTPUT_OPTION) $<
62
63 clean:
64         $(if $V,,@echo '  $(RM) $B')
65         $(if $V,,@) $(RM) -r $B
66
67 __dummy := $(shell mkdir -p $B)
68