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 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_cpp.obj
108 @%append $*.lb1 +'gc_cpp.obj'
109 *wlib -b -c -n -p=512 $@ @$*.lb1
113 gc.obj: extra\gc.c .AUTODEPEND
114 $(CC) $(CFLAGS) extra\gc.c
117 *wlib -b -c -n -p=512 $@ +gc.dll
119 gc.dll: gc.obj .AUTODEPEND
122 @%append $*.lnk sys os2v2_dll
124 @%append $*.lnk sys nt_dll
126 @%append $*.lnk sys os2v2_dll
128 @%append $*.lnk op case
129 @%append $*.lnk name $*
130 @%append $*.lnk file 'gc.obj'
134 *wlib -b -c -n -p=512 $@ +cord.dll
136 cord.dll: $(COBJS) gc.lib .AUTODEPEND
139 @%append $*.lnk sys os2v2_dll
141 @%append $*.lnk sys nt_dll
143 @%append $*.lnk sys os2v2_dll
145 @%append $*.lnk op case
146 @%append $*.lnk name $*
147 @for %i in ($(COBJS)) do @%append $*.lnk file '%i'
148 @%append $*.lnk library gc.lib
152 *wlib -b -c -n -p=512 $@ +gccpp.dll
154 gccpp.dll: gc_cpp.obj gc.lib .AUTODEPEND
157 @%append $*.lnk sys os2v2_dll
159 @%append $*.lnk sys nt_dll
161 @%append $*.lnk sys os2v2_dll
163 @%append $*.lnk op case
164 @%append $*.lnk name $*
165 @%append $*.lnk file 'gc_cpp.obj'
166 @%append $*.lnk library gc.lib
167 @%append $*.lnk library wr7$(CALLING)dll.lib
172 gctest.exe: test.obj gc.lib
175 @%append $*.lnk sys dos4g
177 @%append $*.lnk sys nt
179 @%append $*.lnk sys os2v2
181 @%append $*.lnk op case
182 @%append $*.lnk op stack=256K
183 @%append $*.lnk name $*
184 @%append $*.lnk file test.obj
185 @%append $*.lnk library gc.lib
188 cordtest.exe: cordtest.obj gc.lib cord.lib
191 @%append $*.lnk sys dos4g
193 @%append $*.lnk sys nt
195 @%append $*.lnk sys os2v2
197 @%append $*.lnk op case
198 @%append $*.lnk op stack=256K
199 @%append $*.lnk name $*
200 @%append $*.lnk file cordtest.obj
201 @%append $*.lnk library gc.lib
202 @%append $*.lnk library cord.lib
205 test_cpp.exe: test_cpp.obj gc.lib gccpp.lib
208 @%append $*.lnk sys dos4g
210 @%append $*.lnk sys nt
212 @%append $*.lnk sys os2v2
214 @%append $*.lnk op case
215 @%append $*.lnk op stack=256K
216 @%append $*.lnk name $*
217 @%append $*.lnk file test_cpp.obj
218 @%append $*.lnk library gc.lib
219 @%append $*.lnk library gccpp.lib
222 cordbscs.obj: cord\cordbscs.c .AUTODEPEND
223 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordbscs.c
224 cordxtra.obj: cord\cordxtra.c .AUTODEPEND
225 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordxtra.c
226 cordprnt.obj: cord\cordprnt.c .AUTODEPEND
227 $(CC) $(CFLAGS) $(CORDFLAG) cord\cordprnt.c
229 gc_cpp.obj: gc_cpp.cc .AUTODEPEND
230 $(CXX) $(TEST_CXXFLAGS) $*.cc
231 test.obj: tests\test.c .AUTODEPEND
232 $(CC) $(TEST_CFLAGS) /wcd=13 /wcd=201 /wcd=367 /wcd=368 tests\test.c
233 cordtest.obj: cord\tests\cordtest.c .AUTODEPEND
234 $(CC) $(TEST_CFLAGS) $(CORDFLAG) cord\tests\cordtest.c
235 test_cpp.obj: tests\test_cpp.cc .AUTODEPEND
236 $(CXX) $(TEST_CXXFLAGS) tests\test_cpp.cc
242 $(CXX) $(CXXFLAGS) $*.cc
245 @if exist *.obj del *.obj
246 @if exist *.map del *.map
247 @if exist *.lnk del *.lnk
248 @if exist *.lb1 del *.lb1
249 @if exist *.sym del *.sym
250 @if exist *.err del *.err
251 @if exist *.tmp del *.tmp
252 @if exist *.lst del *.lst
253 @if exist *.exe del *.exe
254 @if exist *.log del *.log
255 @if exist *.lib del *.lib
256 @if exist *.dll del *.dll