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