1 # Makefile for Watcom C/C++ 10.5, 10.6, 11.0 on NT, OS2 and DOS4GW.
2 # May work with Watcom 10.0.
4 # Uncomment one of the lines below for cross compilation.
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.
13 # Select calling conventions.
14 # Possible choices are r and s.
18 # Possible choices are 3, 4, 5, and 6.
19 # The last choice available only since version 11.0.
22 # Set optimization options.
23 # Watcom before 11.0 does not support option "-oh".
27 DEFS=-DALL_INTERIOR_POINTERS -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE -DGC_GCJ_SUPPORT -DJAVA_FINALIZATION -DNO_EXECUTE_PERMISSION #-DSMALL_CONFIG
47 SYSFLAG=-DDOS4GW -bt=dos
49 SYSFLAG=-DMSWIN32 -bt=nt
50 DEFS=$(DEFS) -DUSE_MUNMAP
54 !error undefined or unsupported target platform: $(SYSTEM)
59 TEST_DLLFLAG=-DGC_NOT_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).
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
79 COBJS= cordbscs.obj cordxtra.obj cordprnt.obj
81 all: gc.lib gccpp.lib gctba.lib cord.lib
83 check: gctest.exe test_cpp.exe cordtest.exe .SYMBOLIC
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
98 @for %i in ($(OBJS)) do @%append $*.lb1 +'%i'
99 *wlib -b -c -n -p=512 $@ @$*.lb1
103 @for %i in ($(COBJS)) do @%append $*.lb1 +'%i'
104 *wlib -b -c -n -p=512 $@ @$*.lb1
106 gccpp.lib: gc_badalc.obj gc_cpp.obj
108 @%append $*.lb1 +'gc_badalc.obj'
109 @%append $*.lb1 +'gc_cpp.obj'
110 *wlib -b -c -n -p=512 $@ @$*.lb1
112 # The same as gccpp.lib but contains only gc_badalc.obj.
113 gctba.lib: gc_badalc.obj
115 @%append $*.lb1 +'gc_badalc.obj'
116 *wlib -b -c -n -p=512 $@ @$*.lb1
120 gc.obj: extra\gc.c .AUTODEPEND
121 $(CC) $(CFLAGS) extra\gc.c
124 *wlib -b -c -n -p=512 $@ +gc.dll
126 gc.dll: gc.obj .AUTODEPEND
129 @%append $*.lnk sys os2v2_dll
131 @%append $*.lnk sys nt_dll
133 @%append $*.lnk sys os2v2_dll
135 @%append $*.lnk op case
136 @%append $*.lnk name $*
137 @%append $*.lnk file 'gc.obj'
141 *wlib -b -c -n -p=512 $@ +cord.dll
143 cord.dll: $(COBJS) gc.lib .AUTODEPEND
146 @%append $*.lnk sys os2v2_dll
148 @%append $*.lnk sys nt_dll
150 @%append $*.lnk sys os2v2_dll
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
159 *wlib -b -c -n -p=512 $@ +gccpp.dll
161 gccpp.dll: gc_badalc.obj gc_cpp.obj gc.lib .AUTODEPEND
164 @%append $*.lnk sys os2v2_dll
166 @%append $*.lnk sys nt_dll
168 @%append $*.lnk sys os2v2_dll
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
179 *wlib -b -c -n -p=512 $@ +gctba.dll
181 gctba.dll: gc_badalc.obj gc.lib .AUTODEPEND
184 @%append $*.lnk sys os2v2_dll
186 @%append $*.lnk sys nt_dll
188 @%append $*.lnk sys os2v2_dll
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
199 gctest.exe: test.obj gc.lib
202 @%append $*.lnk sys dos4g
204 @%append $*.lnk sys nt
206 @%append $*.lnk sys os2v2
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
215 cordtest.exe: cordtest.obj gc.lib cord.lib
218 @%append $*.lnk sys dos4g
220 @%append $*.lnk sys nt
222 @%append $*.lnk sys os2v2
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
232 test_cpp.exe: test_cpp.obj gc.lib gccpp.lib
235 @%append $*.lnk sys dos4g
237 @%append $*.lnk sys nt
239 @%append $*.lnk sys os2v2
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
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
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
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
272 $(CXX) $(CXXFLAGS) $*.cc
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