]> git.llucax.com Git - software/druntime.git/blob - src/gc/basic/posix.mak
Allow building directly using 'make'
[software/druntime.git] / src / gc / basic / posix.mak
1 # Makefile to build the garbage collector D library for Posix
2 # Designed to work with GNU make
3 # Targets:
4 #       make
5 #               Same as make all
6 #       make lib
7 #               Build the garbage collector library
8 #   make doc
9 #       Generate documentation
10 #       make clean
11 #               Delete unneeded files created by build process
12
13 LIB_BASE=libdruntime-gc-basic
14 LIB_BUILD=
15 LIB_TARGET=$(LIB_BASE)$(LIB_BUILD).a
16 LIB_MASK=$(LIB_BASE)*.a
17
18 CP=cp -f
19 RM=rm -f
20 MD=mkdir -p
21
22 ADD_CFLAGS=
23 ADD_DFLAGS=
24
25 CFLAGS_RELEASE=-O $(ADD_CFLAGS)
26 CFLAGS_DEBUG=-g $(ADD_CFLAGS)
27 CFLAGS=$(CFLAGS_RELEASE)
28
29 DFLAGS_RELEASE=-release -O -inline -w -nofloat $(ADD_DFLAGS)
30 DFLAGS_DEBUG=-g -w -nofloat $(ADD_DFLAGS)
31 DFLAGS=$(DFLAGS_RELEASE)
32
33 TFLAGS_RELEASE=-O -inline -w  -nofloat $(ADD_DFLAGS)
34 TFLAGS_DEBUG=-g -w -nofloat $(ADD_DFLAGS)
35 TFLAGS=$(TFLAGS_RELEASE)
36
37 DOCFLAGS=-version=DDoc
38
39 CC=gcc
40 LC=$(AR) -qsv
41 DC=dmd
42
43 LIB_DEST=../../../lib
44
45 .SUFFIXES: .s .S .c .cpp .d .html .o
46
47 .s.o:
48         $(CC) -c $(CFLAGS) $< -o$@
49
50 .S.o:
51         $(CC) -c $(CFLAGS) $< -o$@
52
53 .c.o:
54         $(CC) -c $(CFLAGS) $< -o$@
55
56 .cpp.o:
57         g++ -c $(CFLAGS) $< -o$@
58
59 .d.o:
60         $(DC) -c $(DFLAGS) $< -of$@
61
62 .d.html:
63         $(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
64 #       $(DC) -c -o- $(DOCFLAGS) -Df$*.html dmd.ddoc $<
65
66 targets : lib doc
67 all     : lib doc
68 lib     : basic.lib
69 doc     : basic.doc
70
71 ######################################################
72
73 ALL_OBJS= \
74     gc.o \
75     gcalloc.o \
76     gcbits.o \
77     gcstats.o \
78     gcx.o
79
80 ######################################################
81
82 ALL_DOCS=
83
84 ######################################################
85
86 unittest :
87         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE) -unittest"
88
89 release :
90         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE)"
91
92 debug :
93         make -fposix.mak DC="$(DC)" LIB_BUILD="-d" DFLAGS="$(DFLAGS_DEBUG)"
94
95 ######################################################
96
97 basic.lib : $(LIB_TARGET)
98
99 $(LIB_TARGET) : $(ALL_OBJS)
100         $(RM) $@
101         $(LC) $@ $(ALL_OBJS)
102
103 basic.doc : $(ALL_DOCS)
104         echo No documentation available.
105
106 ######################################################
107
108 clean :
109         find . -name "*.di" | xargs $(RM)
110         $(RM) $(ALL_OBJS)
111         $(RM) $(ALL_DOCS)
112         $(RM) $(LIB_MASK)
113
114 install :
115         $(MD) $(LIB_DEST)
116         $(CP) $(LIB_MASK) $(LIB_DEST)/.