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