]> git.llucax.com Git - software/druntime.git/blob - src/compiler/dmd/posix.mak
Add .gitignore files
[software/druntime.git] / src / compiler / dmd / posix.mak
1 # Makefile to build the compiler runtime D library for Linux
2 # Designed to work with GNU make
3 # Targets:
4 #       make
5 #               Same as make all
6 #       make lib
7 #               Build the compiler runtime library
8 #   make doc
9 #       Generate documentation
10 #       make clean
11 #               Delete unneeded files created by build process
12
13 LIB_BASE=libdruntime-rt-dmd
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 dmd.ddoc $<
64
65 targets : lib doc
66 all     : lib doc
67 lib     : dmd.lib
68 doc     : dmd.doc
69
70 ######################################################
71
72 OBJ_BASE= \
73     aaA.o \
74     aApply.o \
75     aApplyR.o \
76     adi.o \
77     alloca.o \
78     arrayassign.o \
79     arraybyte.o \
80     arraycast.o \
81     arraycat.o \
82     arraydouble.o \
83     arrayfloat.o \
84     arrayint.o \
85     arrayreal.o \
86     arrayshort.o \
87     cast_.o \
88     cmath2.o \
89     complex.o \
90     cover.o \
91     critical.o \
92     deh2.o \
93     dmain2.o \
94     invariant.o \
95     invariant_.o \
96     lifetime.o \
97     llmath.o \
98     memory.o \
99     memset.o \
100     monitor.o \
101     obj.o \
102     object_.o \
103     qsort.o \
104     switch_.o \
105     trace.o
106 # NOTE: trace.obj and cover.obj are not necessary for a successful build
107 #       as both are used for debugging features (profiling and coverage)
108 # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and
109 #       minit.asm is not used by dmd for linux
110 # NOTE: deh.o is only needed for Win32, linux uses deh2.o
111
112 OBJ_UTIL= \
113     util/console.o \
114     util/cpuid.o \
115     util/ctype.o \
116     util/string.o \
117     util/utf.o
118
119 OBJ_TI= \
120     typeinfo/ti_AC.o \
121     typeinfo/ti_Acdouble.o \
122     typeinfo/ti_Acfloat.o \
123     typeinfo/ti_Acreal.o \
124     typeinfo/ti_Adouble.o \
125     typeinfo/ti_Afloat.o \
126     typeinfo/ti_Ag.o \
127     typeinfo/ti_Aint.o \
128     typeinfo/ti_Along.o \
129     typeinfo/ti_Areal.o \
130     typeinfo/ti_Ashort.o \
131     typeinfo/ti_byte.o \
132     typeinfo/ti_C.o \
133     typeinfo/ti_cdouble.o \
134     typeinfo/ti_cfloat.o \
135     typeinfo/ti_char.o \
136     typeinfo/ti_creal.o \
137     typeinfo/ti_dchar.o \
138     typeinfo/ti_delegate.o \
139     typeinfo/ti_double.o \
140     typeinfo/ti_float.o \
141     typeinfo/ti_idouble.o \
142     typeinfo/ti_ifloat.o \
143     typeinfo/ti_int.o \
144     typeinfo/ti_ireal.o \
145     typeinfo/ti_long.o \
146     typeinfo/ti_ptr.o \
147     typeinfo/ti_real.o \
148     typeinfo/ti_short.o \
149     typeinfo/ti_ubyte.o \
150     typeinfo/ti_uint.o \
151     typeinfo/ti_ulong.o \
152     typeinfo/ti_ushort.o \
153     typeinfo/ti_void.o \
154     typeinfo/ti_wchar.o
155
156 ALL_OBJS= \
157     $(OBJ_BASE) \
158     $(OBJ_UTIL) \
159     $(OBJ_TI)
160
161 ######################################################
162
163 ALL_DOCS=
164
165 ######################################################
166
167 unittest :
168         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE) -unittest"
169
170 release :
171         make -fposix.mak DC="$(DC)" LIB_BUILD="" DFLAGS="$(DFLAGS_RELEASE)"
172
173 debug :
174         make -fposix.mak DC="$(DC)" LIB_BUILD="-d" DFLAGS="$(DFLAGS_DEBUG)"
175
176 ######################################################
177
178 dmd.lib : $(LIB_TARGET)
179
180 $(LIB_TARGET) : $(ALL_OBJS)
181         $(RM) $@
182         $(LC) $@ $(ALL_OBJS)
183
184 dmd.doc : $(ALL_DOCS)
185         echo No documentation available.
186
187 ######################################################
188
189 clean :
190         find . -name "*.di" | xargs $(RM)
191         $(RM) $(ALL_OBJS)
192         $(RM) $(ALL_DOCS)
193         $(RM) $(LIB_MASK)
194
195 install :
196         $(MD) $(LIB_DEST)
197         $(CP) $(LIB_MASK) $(LIB_DEST)/.