WCC_MAKEFILE raw
1 # Makefile for Watcom C/C++ 10.5, 10.6, 11.0 on NT, OS/2 and DOS4GW.
2 # May work with Watcom 10.0.
3
4 # Uncomment one of the lines below for cross compilation.
5 SYSTEM=MSWIN32
6 #SYSTEM=DOS4GW
7 #SYSTEM=OS2
8
9 # The collector can be built either as dynamic (the default) or as static
10 # library. The latter is selected by setting `ENABLE_STATIC` variable.
11 #ENABLE_STATIC=1
12
13 # Select calling conventions.
14 # Possible choices are `r` and `s`.
15 CALLING=s
16
17 # Select target CPU.
18 # Possible choices are 3, 4, 5, and 6.
19 # The last choice available only since version 11.0.
20 CPU=5
21
22 # Set optimization options.
23 # Watcom before 11.0 does not support option `-oh`.
24 OPTIM=-oneatx -s
25 #OPTIM=-ohneatx -s
26
27 # Extra user-defined flags to pass both to C and C++ compilers.
28 CFLAGS_EXTRA=
29
30 DEFS=-DALL_INTERIOR_POINTERS -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE -DGC_GCJ_SUPPORT -DJAVA_FINALIZATION -DNO_EXECUTE_PERMISSION -DGC_REQUIRE_WCSDUP #-DSMALL_CONFIG
31
32 #####
33
34 !ifndef SYSTEM
35 !ifdef __MSDOS__
36 SYSTEM=DOS4GW
37 !else ifdef __NT__
38 SYSTEM=MSWIN32
39 !else ifdef __OS2__
40 SYSTEM=OS2
41 !else
42 SYSTEM=Unknown
43 !endif
44 !endif
45
46 !define $(SYSTEM)
47
48 !ifdef DOS4GW
49 SYSFLAG=-DDOS4GW -bt=dos
50 !else ifdef MSWIN32
51 SYSFLAG=-DMSWIN32 -bt=nt
52 DEFS=$(DEFS) -DUSE_MUNMAP
53 !else ifdef OS2
54 SYSFLAG=-DOS2 -bt=os2
55 !else
56 !error undefined or unsupported target platform: $(SYSTEM)
57 !endif
58
59 !ifdef ENABLE_STATIC
60 DLLFLAG=
61 TEST_DLLFLAG=-DGC_NOT_DLL
62 CORDFLAG=
63 !else
64 DLLFLAG=-bd -DGC_DLL
65 TEST_DLLFLAG=-DGC_DLL
66 # `cord.dll` file and its clients should not link C library statically
67 # otherwise `FILE`-related functions might not work (because own set of
68 # opened `FILE` instances is maintained by each copy of the C library thus
69 # making impossible to pass `FILE` pointer from `.exe` code to `.dll` code).
70 CORDFLAG=-br
71 !endif
72
73 CC=wcc386
74 CXX=wpp386
75
76 CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -iinclude -zp4 -zc $(SYSFLAG) $(DLLFLAG) $(DEFS) $(CFLAGS_EXTRA)
77 CXXFLAGS= $(CFLAGS) -xs
78 TEST_CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -iinclude -zp4 -zc $(SYSFLAG) $(TEST_DLLFLAG) $(DEFS) $(CFLAGS_EXTRA)
79 TEST_CXXFLAGS= $(TEST_CFLAGS) -xs
80
81 COBJS= cordbscs.obj cordprnt.obj cordxtra.obj
82
83 all: gc.lib gccpp.lib gctba.lib cord.lib
84
85 !ifdef MSWIN32
86 check-deps-mswin: de.exe .SYMBOLIC
87 !else
88 check-deps-mswin: .SYMBOLIC
89 !endif
90
91 check-deps: gctest.exe cpptest.exe treetest.exe cordtest.exe check-deps-mswin .SYMBOLIC
92
93 check: check-deps .SYMBOLIC
94 *gctest.exe
95 *cpptest.exe
96 *treetest.exe
97 *cordtest.exe
98
99 !ifdef ENABLE_STATIC
100
101 OBJS= allchblk.obj alloc.obj backgraph.obj blacklst.obj checksums.obj &
102 dbg_mlc.obj dyn_load.obj finalize.obj fnlz_mlc.obj gcj_mlc.obj &
103 headers.obj mach_dep.obj malloc.obj mallocx.obj mark.obj mark_rts.obj &
104 misc.obj new_hblk.obj os_dep.obj ptr_chck.obj reclaim.obj typd_mlc.obj
105
106 gc.lib: $(OBJS)
107 @%create $*.lb1
108 @for %i in ($(OBJS)) do @%append $*.lb1 +%i
109 *wlib -b -c -n -p=512 $@ @$*.lb1
110
111 cord.lib: $(COBJS)
112 @%create $*.lb1
113 @for %i in ($(COBJS)) do @%append $*.lb1 +%i
114 *wlib -b -c -n -p=512 $@ @$*.lb1
115
116 gccpp.lib: gc_badalc.obj gc_cpp.obj
117 @%create $*.lb1
118 @%append $*.lb1 +gc_badalc.obj
119 @%append $*.lb1 +gc_cpp.obj
120 *wlib -b -c -n -p=512 $@ @$*.lb1
121
122 # The same as `gccpp.lib` file but contains only `gc_badalc.obj` file.
123 gctba.lib: gc_badalc.obj
124 @%create $*.lb1
125 @%append $*.lb1 +gc_badalc.obj
126 *wlib -b -c -n -p=512 $@ @$*.lb1
127
128 !else
129
130 gc.obj: extra\gc.c .AUTODEPEND
131 $(CC) $(CFLAGS) extra\gc.c
132
133 gc.lib: gc.dll
134 *wlib -b -c -n -p=512 $@ +gc.dll
135
136 gc.dll: gc.obj .AUTODEPEND
137 @%create $*.lnk
138 !ifdef DOS4GW
139 @%append $*.lnk sys os2v2_dll
140 !else ifdef MSWIN32
141 @%append $*.lnk sys nt_dll
142 !else ifdef OS2
143 @%append $*.lnk sys os2v2_dll
144 !endif
145 @%append $*.lnk op case
146 @%append $*.lnk name $*
147 @%append $*.lnk file gc.obj
148 *wlink @$*.lnk
149
150 cord.lib: cord.dll
151 *wlib -b -c -n -p=512 $@ +cord.dll
152
153 cord.dll: $(COBJS) gc.lib .AUTODEPEND
154 @%create $*.lnk
155 !ifdef DOS4GW
156 @%append $*.lnk sys os2v2_dll
157 !else ifdef MSWIN32
158 @%append $*.lnk sys nt_dll
159 !else ifdef OS2
160 @%append $*.lnk sys os2v2_dll
161 !endif
162 @%append $*.lnk op case
163 @%append $*.lnk name $*
164 @for %i in ($(COBJS)) do @%append $*.lnk file %i
165 @%append $*.lnk library gc.lib
166 *wlink @$*.lnk
167
168 gccpp.lib: gccpp.dll
169 *wlib -b -c -n -p=512 $@ +gccpp.dll
170
171 gccpp.dll: gc_badalc.obj gc_cpp.obj gc.lib .AUTODEPEND
172 @%create $*.lnk
173 !ifdef DOS4GW
174 @%append $*.lnk sys os2v2_dll
175 !else ifdef MSWIN32
176 @%append $*.lnk sys nt_dll
177 !else ifdef OS2
178 @%append $*.lnk sys os2v2_dll
179 !endif
180 @%append $*.lnk op case
181 @%append $*.lnk name $*
182 @%append $*.lnk file gc_badalc.obj
183 @%append $*.lnk file gc_cpp.obj
184 @%append $*.lnk library gc.lib
185 @%append $*.lnk library wr7$(CALLING)dll.lib
186 *wlink @$*.lnk
187
188 gctba.lib: gctba.dll
189 *wlib -b -c -n -p=512 $@ +gctba.dll
190
191 gctba.dll: gc_badalc.obj gc.lib .AUTODEPEND
192 @%create $*.lnk
193 !ifdef DOS4GW
194 @%append $*.lnk sys os2v2_dll
195 !else ifdef MSWIN32
196 @%append $*.lnk sys nt_dll
197 !else ifdef OS2
198 @%append $*.lnk sys os2v2_dll
199 !endif
200 @%append $*.lnk op case
201 @%append $*.lnk name $*
202 @%append $*.lnk file gc_badalc.obj
203 @%append $*.lnk library gc.lib
204 @%append $*.lnk library wr7$(CALLING)dll.lib
205 *wlink @$*.lnk
206
207 !endif
208
209 gctest.exe: gctest.obj gc.lib
210 %create $*.lnk
211 !ifdef DOS4GW
212 @%append $*.lnk sys dos4g
213 !else ifdef MSWIN32
214 @%append $*.lnk sys nt
215 !else ifdef OS2
216 @%append $*.lnk sys os2v2
217 !endif
218 @%append $*.lnk op case
219 @%append $*.lnk op stack=256K
220 @%append $*.lnk name $*
221 @%append $*.lnk file gctest.obj
222 @%append $*.lnk library gc.lib
223 *wlink @$*.lnk
224
225 cordtest.exe: cordtest.obj gc.lib cord.lib
226 %create $*.lnk
227 !ifdef DOS4GW
228 @%append $*.lnk sys dos4g
229 !else ifdef MSWIN32
230 @%append $*.lnk sys nt
231 !else ifdef OS2
232 @%append $*.lnk sys os2v2
233 !endif
234 @%append $*.lnk op case
235 @%append $*.lnk op stack=256K
236 @%append $*.lnk name $*
237 @%append $*.lnk file cordtest.obj
238 @%append $*.lnk library gc.lib
239 @%append $*.lnk library cord.lib
240 *wlink @$*.lnk
241
242 !ifdef MSWIN32
243 de.exe: de.obj de_win.obj de_win.rbj gc.lib cord.lib
244 %create $*.lnk
245 @%append $*.lnk sys nt
246 @%append $*.lnk op case
247 @%append $*.lnk op stack=256K
248 @%append $*.lnk name $*
249 @%append $*.lnk file de.obj
250 @%append $*.lnk file de_win.obj
251 @%append $*.lnk resource de_win.rbj
252 @%append $*.lnk library gc.lib
253 @%append $*.lnk library cord.lib
254 @%append $*.lnk library gdi32.lib
255 *wlink @$*.lnk
256
257 de.obj: cord\tests\de.c .AUTODEPEND
258 $(CC) $(TEST_CFLAGS) $(CORDFLAG) cord\tests\de.c
259 de_win.obj: cord\tests\de_win.c .AUTODEPEND
260 $(CC) $(TEST_CFLAGS) $(CORDFLAG) cord\tests\de_win.c
261
262 de_win.res: cord\tests\de_win.rc cord\tests\de_win.h cord\tests\de_cmds.h
263 rc -fo $@ cord\tests\de_win.rc
264 de_win.rbj: de_win.res
265 cvtres -out:$@ de_win.res
266 !endif
267
268 cpptest.exe: cpptest.obj gc.lib gccpp.lib
269 %create $*.lnk
270 !ifdef DOS4GW
271 @%append $*.lnk sys dos4g
272 !else ifdef MSWIN32
273 @%append $*.lnk sys nt
274 !else ifdef OS2
275 @%append $*.lnk sys os2v2
276 !endif
277 @%append $*.lnk op case
278 @%append $*.lnk op stack=256K
279 @%append $*.lnk name $*
280 @%append $*.lnk file cpptest.obj
281 @%append $*.lnk library gc.lib
282 @%append $*.lnk library gccpp.lib
283 *wlink @$*.lnk
284
285 treetest.exe: treetest.obj gc.lib gctba.lib
286 %create $*.lnk
287 !ifdef DOS4GW
288 @%append $*.lnk sys dos4g
289 !else ifdef MSWIN32
290 @%append $*.lnk sys nt
291 !else ifdef OS2
292 @%append $*.lnk sys os2v2
293 !endif
294 @%append $*.lnk op case
295 @%append $*.lnk op stack=256K
296 @%append $*.lnk name $*
297 @%append $*.lnk file treetest.obj
298 @%append $*.lnk library gc.lib
299 @%append $*.lnk library gctba.lib
300 *wlink @$*.lnk
301
302 cordbscs.obj: cord\cordbscs.c .AUTODEPEND
303 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordbscs.c
304 cordxtra.obj: cord\cordxtra.c .AUTODEPEND
305 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordxtra.c
306 cordprnt.obj: cord\cordprnt.c .AUTODEPEND
307 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordprnt.c
308
309 gc_badalc.obj: gc_badalc.cc .AUTODEPEND
310 $(CXX) $(TEST_CXXFLAGS) $*.cc
311 gc_cpp.obj: gc_cpp.cc .AUTODEPEND
312 $(CXX) $(TEST_CXXFLAGS) $*.cc
313
314 gctest.obj: tests\gctest.c .AUTODEPEND
315 $(CC) $(TEST_CFLAGS) /wcd=201 tests\gctest.c
316 cordtest.obj: cord\tests\cordtest.c .AUTODEPEND
317 $(CC) $(TEST_CFLAGS) $(CORDFLAG) cord\tests\cordtest.c
318 cpptest.obj: tests\cpp.cc .AUTODEPEND
319 $(CXX) $(TEST_CXXFLAGS) -fo=cpptest.obj tests\cpp.cc
320 treetest.obj: tests\tree.cc .AUTODEPEND
321 $(CXX) $(TEST_CXXFLAGS) -fo=treetest.obj tests\tree.cc
322
323 .c.obj: .AUTODEPEND
324 $(CC) $(CFLAGS) $*.c
325
326 .cc.obj: .AUTODEPEND
327 $(CXX) $(CXXFLAGS) $*.cc
328
329 clean: .SYMBOLIC
330 @if exist *.dll del *.dll
331 @if exist *.err del *.err
332 @if exist *.exe del *.exe
333 @if exist *.lb1 del *.lb1
334 @if exist *.lib del *.lib
335 @if exist *.lnk del *.lnk
336 @if exist *.log del *.log
337 @if exist *.lst del *.lst
338 @if exist *.map del *.map
339 @if exist *.obj del *.obj
340 @if exist *.rbj del *.rbj
341 @if exist *.res del *.res
342 @if exist *.sym del *.sym
343 @if exist *.tmp del *.tmp
344