]> git.llucax.com Git - software/druntime.git/blob - src/common/posix.mak
Add .gitignore files
[software/druntime.git] / src / common / posix.mak
1 # Makefile to build the D runtime library core components for Posix
2 # Designed to work with GNU make
3 # Targets:
4 #       make
5 #               Same as make all
6 #       make lib
7 #               Build the common library
8 #   make doc
9 #       Generate documentation
10 #       make clean
11 #               Delete unneeded files created by build process
12
13 LIB_BASE=libdruntime-core
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 INC_DEST=../../import
44 LIB_DEST=../../lib
45 DOC_DEST=../../doc
46
47 .SUFFIXES: .s .S .c .cpp .d .html .o
48
49 .s.o:
50         $(CC) -c $(CFLAGS) $< -o$@
51
52 .S.o:
53         $(CC) -c $(CFLAGS) $< -o$@
54
55 .c.o:
56         $(CC) -c $(CFLAGS) $< -o$@
57
58 .cpp.o:
59         g++ -c $(CFLAGS) $< -o$@
60
61 .d.o:
62         $(DC) -c $(DFLAGS) -Hf$*.di $< -of$@
63 #       $(DC) -c $(DFLAGS) $< -of$@
64
65 .d.html:
66         $(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
67
68 targets : lib doc
69 all     : lib doc
70 core    : lib
71 lib     : core.lib
72 doc     : core.doc
73
74 ######################################################
75
76 OBJ_CORE= \
77     core/bitmanip.o \
78     core/exception.o \
79     core/memory_.o \
80     core/runtime.o \
81     core/thread.o \
82     core/vararg.o
83
84 OBJ_STDC= \
85     core/stdc/errno.o
86
87 ALL_OBJS= \
88     $(OBJ_CORE) \
89     $(OBJ_STDC)
90
91 ######################################################
92
93 DOC_CORE= \
94     core/bitmanip.html \
95     core/exception.html \
96     core/memory.html \
97     core/runtime.html \
98     core/thread.html \
99     core/vararg.html
100
101 ######################################################
102
103 ALL_DOCS=
104
105 ######################################################
106
107 unittest :
108         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE) -unittest"
109
110 release :
111         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE)"
112
113 debug :
114         make -fposix.mak DC="$(DC)" LIB_BUILD="-d" DFLAGS="$(DFLAGS_DEBUG)"
115
116 ######################################################
117
118 core.lib : $(LIB_TARGET)
119
120 $(LIB_TARGET) : $(ALL_OBJS)
121         $(RM) $@
122         $(LC) $@ $(ALL_OBJS)
123
124 core.doc : $(ALL_DOCS)
125         echo Documentation generated.
126
127 ######################################################
128
129 ### bitmanip
130
131 core/bitmanip.o : core/bitmanip.d
132         $(DC) -c $(DFLAGS) core/bitmanip.d -of$@
133
134 ### memory
135
136 core/memory_.o : core/memory.d
137         $(DC) -c $(DFLAGS) -Hf$*.di $< -of$@
138
139 ### thread
140
141 core/thread.o : core/thread.d
142         $(DC) -c $(DFLAGS) -d -Hf$*.di core/thread.d -of$@
143
144 ### vararg
145
146 core/vararg.o : core/vararg.d
147         $(DC) -c $(TFLAGS) -Hf$*.di core/vararg.d -of$@
148
149 ######################################################
150
151 clean :
152         find . -name "*.di" | xargs $(RM)
153         $(RM) $(ALL_OBJS)
154         $(RM) $(ALL_DOCS)
155         find . -name "$(LIB_MASK)" | xargs $(RM)
156
157 install :
158         $(MD) $(INC_DEST)
159         find . -name "*.di" -exec cp -f {} $(INC_DEST)/{} \;
160         $(MD) $(DOC_DEST)
161         find . -name "*.html" -exec cp -f {} $(DOC_DEST)/{} \;
162         $(MD) $(LIB_DEST)
163         find . -name "$(LIB_MASK)" -exec cp -f {} $(LIB_DEST)/{} \;