Workaround 'NULL==*flh is always true' cppcheck style warning in allocobj
[platform/upstream/libgc.git] / WCC_MAKEFILE
1 # Makefile for Watcom C/C++ 10.5, 10.6, 11.0 on NT, OS2 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 DEFS=-DALL_INTERIOR_POINTERS -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE -DGC_GCJ_SUPPORT -DJAVA_FINALIZATION -DNO_EXECUTE_PERMISSION #-DSMALL_CONFIG
28
29
30 #####
31
32 !ifndef SYSTEM
33 !ifdef __MSDOS__
34 SYSTEM=DOS4GW
35 !else ifdef __NT__
36 SYSTEM=MSWIN32
37 !else ifdef __OS2__
38 SYSTEM=OS2
39 !else
40 SYSTEM=Unknown
41 !endif
42 !endif
43
44 !define $(SYSTEM)
45
46 !ifdef DOS4GW
47 SYSFLAG=-DDOS4GW -bt=dos
48 !else ifdef MSWIN32
49 SYSFLAG=-DMSWIN32 -bt=nt
50 DEFS=$(DEFS) -DUSE_MUNMAP
51 !else ifdef OS2
52 SYSFLAG=-DOS2 -bt=os2
53 !else
54 !error undefined or unsupported target platform: $(SYSTEM)
55 !endif
56
57 !ifdef ENABLE_STATIC
58 DLLFLAG=
59 TEST_DLLFLAG=-DGC_NOT_DLL
60 CORDFLAG=
61 !else
62 DLLFLAG=-bd -DGC_DLL
63 TEST_DLLFLAG=-DGC_DLL
64 # cord.dll and its clients should not link C library statically otherwise
65 # FILE-related functions might not work (because own set of opened FILEs
66 # is maintained by each copy of the C library thus making impossible to pass
67 # FILE pointer from, e.g., .exe code to .dll one).
68 CORDFLAG=-br
69 !endif
70
71 CC=wcc386
72 CXX=wpp386
73
74 CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -iinclude -zp4 -zc $(SYSFLAG) $(DLLFLAG) $(DEFS)
75 CXXFLAGS= $(CFLAGS) -xs
76 TEST_CFLAGS=-$(CPU)$(CALLING) $(OPTIM) -iinclude -zp4 -zc $(SYSFLAG) $(TEST_DLLFLAG) $(DEFS)
77 TEST_CXXFLAGS= $(TEST_CFLAGS) -xs
78
79 COBJS= cordbscs.obj cordxtra.obj cordprnt.obj
80
81 all: gc.lib gccpp.lib gctba.lib cord.lib
82
83 check: gctest.exe test_cpp.exe cordtest.exe .SYMBOLIC
84         *gctest.exe
85         *test_cpp.exe
86         *cordtest.exe
87
88 !ifdef ENABLE_STATIC
89
90 OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj &
91       mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj &
92       obj_map.obj blacklst.obj finalize.obj new_hblk.obj &
93       dbg_mlc.obj malloc.obj dyn_load.obj &
94       typd_mlc.obj ptr_chck.obj mallocx.obj fnlz_mlc.obj gcj_mlc.obj
95
96 gc.lib: $(OBJS)
97         @%create $*.lb1
98         @for %i in ($(OBJS)) do @%append $*.lb1 +'%i'
99         *wlib -b -c -n -p=512 $@ @$*.lb1
100
101 cord.lib: $(COBJS)
102         @%create $*.lb1
103         @for %i in ($(COBJS)) do @%append $*.lb1 +'%i'
104         *wlib -b -c -n -p=512 $@ @$*.lb1
105
106 gccpp.lib: gc_badalc.obj gc_cpp.obj
107         @%create $*.lb1
108         @%append $*.lb1 +'gc_badalc.obj'
109         @%append $*.lb1 +'gc_cpp.obj'
110         *wlib -b -c -n -p=512 $@ @$*.lb1
111
112 # The same as gccpp.lib but contains only gc_badalc.obj.
113 gctba.lib: gc_badalc.obj
114         @%create $*.lb1
115         @%append $*.lb1 +'gc_badalc.obj'
116         *wlib -b -c -n -p=512 $@ @$*.lb1
117
118 !else
119
120 gc.obj: extra\gc.c .AUTODEPEND
121         $(CC) $(CFLAGS) extra\gc.c
122
123 gc.lib: gc.dll
124         *wlib -b -c -n -p=512 $@ +gc.dll
125
126 gc.dll: gc.obj .AUTODEPEND
127         @%create $*.lnk
128 !ifdef DOS4GW
129         @%append $*.lnk sys os2v2_dll
130 !else ifdef MSWIN32
131         @%append $*.lnk sys nt_dll
132 !else ifdef OS2
133         @%append $*.lnk sys os2v2_dll
134 !endif
135         @%append $*.lnk op case
136         @%append $*.lnk name $*
137         @%append $*.lnk file 'gc.obj'
138         *wlink @$*.lnk
139
140 cord.lib: cord.dll
141         *wlib -b -c -n -p=512 $@ +cord.dll
142
143 cord.dll: $(COBJS) gc.lib .AUTODEPEND
144         @%create $*.lnk
145 !ifdef DOS4GW
146         @%append $*.lnk sys os2v2_dll
147 !else ifdef MSWIN32
148         @%append $*.lnk sys nt_dll
149 !else ifdef OS2
150         @%append $*.lnk sys os2v2_dll
151 !endif
152         @%append $*.lnk op case
153         @%append $*.lnk name $*
154         @for %i in ($(COBJS)) do @%append $*.lnk file '%i'
155         @%append $*.lnk library gc.lib
156         *wlink @$*.lnk
157
158 gccpp.lib: gccpp.dll
159         *wlib -b -c -n -p=512 $@ +gccpp.dll
160
161 gccpp.dll: gc_badalc.obj gc_cpp.obj gc.lib .AUTODEPEND
162         @%create $*.lnk
163 !ifdef DOS4GW
164         @%append $*.lnk sys os2v2_dll
165 !else ifdef MSWIN32
166         @%append $*.lnk sys nt_dll
167 !else ifdef OS2
168         @%append $*.lnk sys os2v2_dll
169 !endif
170         @%append $*.lnk op case
171         @%append $*.lnk name $*
172         @%append $*.lnk file 'gc_badalc.obj'
173         @%append $*.lnk file 'gc_cpp.obj'
174         @%append $*.lnk library gc.lib
175         @%append $*.lnk library wr7$(CALLING)dll.lib
176         *wlink @$*.lnk
177
178 gctba.lib: gctba.dll
179         *wlib -b -c -n -p=512 $@ +gctba.dll
180
181 gctba.dll: gc_badalc.obj gc.lib .AUTODEPEND
182         @%create $*.lnk
183 !ifdef DOS4GW
184         @%append $*.lnk sys os2v2_dll
185 !else ifdef MSWIN32
186         @%append $*.lnk sys nt_dll
187 !else ifdef OS2
188         @%append $*.lnk sys os2v2_dll
189 !endif
190         @%append $*.lnk op case
191         @%append $*.lnk name $*
192         @%append $*.lnk file 'gc_badalc.obj'
193         @%append $*.lnk library gc.lib
194         @%append $*.lnk library wr7$(CALLING)dll.lib
195         *wlink @$*.lnk
196
197 !endif
198
199 gctest.exe: test.obj gc.lib
200         %create $*.lnk
201 !ifdef DOS4GW
202         @%append $*.lnk sys dos4g
203 !else ifdef MSWIN32
204         @%append $*.lnk sys nt
205 !else ifdef OS2
206         @%append $*.lnk sys os2v2
207 !endif
208         @%append $*.lnk op case
209         @%append $*.lnk op stack=256K
210         @%append $*.lnk name $*
211         @%append $*.lnk file test.obj
212         @%append $*.lnk library gc.lib
213         *wlink @$*.lnk
214
215 cordtest.exe: cordtest.obj gc.lib cord.lib
216         %create $*.lnk
217 !ifdef DOS4GW
218         @%append $*.lnk sys dos4g
219 !else ifdef MSWIN32
220         @%append $*.lnk sys nt
221 !else ifdef OS2
222         @%append $*.lnk sys os2v2
223 !endif
224         @%append $*.lnk op case
225         @%append $*.lnk op stack=256K
226         @%append $*.lnk name $*
227         @%append $*.lnk file cordtest.obj
228         @%append $*.lnk library gc.lib
229         @%append $*.lnk library cord.lib
230         *wlink @$*.lnk
231
232 test_cpp.exe: test_cpp.obj gc.lib gccpp.lib
233         %create $*.lnk
234 !ifdef DOS4GW
235         @%append $*.lnk sys dos4g
236 !else ifdef MSWIN32
237         @%append $*.lnk sys nt
238 !else ifdef OS2
239         @%append $*.lnk sys os2v2
240 !endif
241         @%append $*.lnk op case
242         @%append $*.lnk op stack=256K
243         @%append $*.lnk name $*
244         @%append $*.lnk file test_cpp.obj
245         @%append $*.lnk library gc.lib
246         @%append $*.lnk library gccpp.lib
247         *wlink @$*.lnk
248
249 cordbscs.obj: cord\cordbscs.c .AUTODEPEND
250         $(CC) $(CFLAGS) $(CORDFLAG) cord\cordbscs.c
251 cordxtra.obj: cord\cordxtra.c .AUTODEPEND
252         $(CC) $(CFLAGS) $(CORDFLAG) cord\cordxtra.c
253 cordprnt.obj: cord\cordprnt.c .AUTODEPEND
254         $(CC) $(CFLAGS) $(CORDFLAG) cord\cordprnt.c
255
256 gc_badalc.obj: gc_badalc.cc .AUTODEPEND
257         $(CXX) $(TEST_CXXFLAGS) $*.cc
258 gc_cpp.obj: gc_cpp.cc .AUTODEPEND
259         $(CXX) $(TEST_CXXFLAGS) $*.cc
260
261 test.obj: tests\test.c .AUTODEPEND
262         $(CC) $(TEST_CFLAGS) /wcd=13 /wcd=201 /wcd=367 /wcd=368 tests\test.c
263 cordtest.obj: cord\tests\cordtest.c .AUTODEPEND
264         $(CC) $(TEST_CFLAGS) $(CORDFLAG) cord\tests\cordtest.c
265 test_cpp.obj: tests\test_cpp.cc .AUTODEPEND
266         $(CXX) $(TEST_CXXFLAGS) tests\test_cpp.cc
267
268 .c.obj: .AUTODEPEND
269         $(CC) $(CFLAGS) $*.c
270
271 .cc.obj: .AUTODEPEND
272         $(CXX) $(CXXFLAGS) $*.cc
273
274 clean: .SYMBOLIC
275     @if exist *.obj del *.obj
276     @if exist *.map del *.map
277     @if exist *.lnk del *.lnk
278     @if exist *.lb1 del *.lb1
279     @if exist *.sym del *.sym
280     @if exist *.err del *.err
281     @if exist *.tmp del *.tmp
282     @if exist *.lst del *.lst
283     @if exist *.exe del *.exe
284     @if exist *.log del *.log
285     @if exist *.lib del *.lib
286     @if exist *.dll del *.dll