]> granicus.if.org Git - gc/blob - WCC_MAKEFILE
Refactoring of CMake script to use ANDROID/APPLE/CYGWIN/MSYS variables
[gc] / 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 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_cpp.obj
107         @%create $*.lb1
108         @%append $*.lb1 +'gc_cpp.obj'
109         *wlib -b -c -n -p=512 $@ @$*.lb1
110
111 !else
112
113 gc.obj: extra\gc.c .AUTODEPEND
114         $(CC) $(CFLAGS) extra\gc.c
115
116 gc.lib: gc.dll
117         *wlib -b -c -n -p=512 $@ +gc.dll
118
119 gc.dll: gc.obj .AUTODEPEND
120         @%create $*.lnk
121 !ifdef DOS4GW
122         @%append $*.lnk sys os2v2_dll
123 !else ifdef MSWIN32
124         @%append $*.lnk sys nt_dll
125 !else ifdef OS2
126         @%append $*.lnk sys os2v2_dll
127 !endif
128         @%append $*.lnk op case
129         @%append $*.lnk name $*
130         @%append $*.lnk file 'gc.obj'
131         *wlink @$*.lnk
132
133 cord.lib: cord.dll
134         *wlib -b -c -n -p=512 $@ +cord.dll
135
136 cord.dll: $(COBJS) gc.lib .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         @for %i in ($(COBJS)) do @%append $*.lnk file '%i'
148         @%append $*.lnk library gc.lib
149         *wlink @$*.lnk
150
151 gccpp.lib: gccpp.dll
152         *wlib -b -c -n -p=512 $@ +gccpp.dll
153
154 gccpp.dll: gc_cpp.obj gc.lib .AUTODEPEND
155         @%create $*.lnk
156 !ifdef DOS4GW
157         @%append $*.lnk sys os2v2_dll
158 !else ifdef MSWIN32
159         @%append $*.lnk sys nt_dll
160 !else ifdef OS2
161         @%append $*.lnk sys os2v2_dll
162 !endif
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
168         *wlink @$*.lnk
169
170 !endif
171
172 gctest.exe: test.obj gc.lib
173         %create $*.lnk
174 !ifdef DOS4GW
175         @%append $*.lnk sys dos4g
176 !else ifdef MSWIN32
177         @%append $*.lnk sys nt
178 !else ifdef OS2
179         @%append $*.lnk sys os2v2
180 !endif
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
186         *wlink @$*.lnk
187
188 cordtest.exe: cordtest.obj gc.lib cord.lib
189         %create $*.lnk
190 !ifdef DOS4GW
191         @%append $*.lnk sys dos4g
192 !else ifdef MSWIN32
193         @%append $*.lnk sys nt
194 !else ifdef OS2
195         @%append $*.lnk sys os2v2
196 !endif
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
203         *wlink @$*.lnk
204
205 test_cpp.exe: test_cpp.obj gc.lib gccpp.lib
206         %create $*.lnk
207 !ifdef DOS4GW
208         @%append $*.lnk sys dos4g
209 !else ifdef MSWIN32
210         @%append $*.lnk sys nt
211 !else ifdef OS2
212         @%append $*.lnk sys os2v2
213 !endif
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
220         *wlink @$*.lnk
221
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
228
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
237
238 .c.obj: .AUTODEPEND
239         $(CC) $(CFLAGS) $*.c
240
241 .cc.obj: .AUTODEPEND
242         $(CXX) $(CXXFLAGS) $*.cc
243
244 clean: .SYMBOLIC
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