digimars.mak raw

   1  # Makefile to build the garbage collector library using the Digital Mars
   2  # compiler from www.digitalmars.com
   3  # Written by Walter Bright
   4  
   5  CFLAGS_EXTRA=
   6  DEFINES=-DGC_DLL -DGC_THREADS -DGC_DISCOVER_TASK_THREADS \
   7      -DALL_INTERIOR_POINTERS -DENABLE_DISCLAIM -DGC_ATOMIC_UNCOLLECTABLE \
   8      -DGC_GCJ_SUPPORT -DJAVA_FINALIZATION -DNO_EXECUTE_PERMISSION \
   9      -DGC_REQUIRE_WCSDUP -DUSE_MUNMAP
  10  CORD_DEFINES=-DGC_DLL -DCORD_NOT_DLL
  11  CFLAGS=-Iinclude -Ilibatomic_ops\src $(DEFINES) -g $(CFLAGS_EXTRA)
  12  CORD_CFLAGS=-Iinclude $(CORD_DEFINES) -g $(CFLAGS_EXTRA)
  13  LFLAGS=/ma/implib/co
  14  CC=sc
  15  
  16  # Must precede other goals.
  17  all: cord.lib gc.lib
  18  
  19  gc.obj: extra\gc.c
  20  	$(CC) -c $(CFLAGS) extra\gc.c -ogc.obj
  21  
  22  .cpp.obj:
  23  	$(CC) -c $(CFLAGS) -Aa $*
  24  
  25  check: gctest.exe cpptest.exe treetest.exe cordtest.exe
  26  	gctest.exe
  27  	cpptest.exe
  28  	treetest.exe
  29  	cordtest.exe
  30  
  31  gc.lib: gc.dll
  32  
  33  gc.dll: gc.obj gc_badalc.obj gc_cpp.obj gc.def digimars.mak
  34  	$(CC) -ogc.dll gc.obj gc_badalc.obj gc_cpp.obj -L$(LFLAGS) gc.def kernel32.lib user32.lib
  35  
  36  gc.def: digimars.mak
  37  	echo LIBRARY GC >gc.def
  38  	echo DESCRIPTION "Boehm-Demers-Weiser Garbage Collector" >>gc.def
  39  	echo EXETYPE NT	>>gc.def
  40  	echo EXPORTS >>gc.def
  41  	echo GC_is_visible_print_proc >>gc.def
  42  	echo GC_is_valid_displacement_print_proc >>gc.def
  43  
  44  # FIXME: building `cord` as DLL results in `cordtest` fail.
  45  cord.lib: cord\cordbscs.obj cord\cordprnt.obj cord\cordxtra.obj
  46  	lib -c cord.lib cord\cordbscs.obj cord\cordprnt.obj cord\cordxtra.obj
  47  
  48  cord\cordbscs.obj: cord\cordbscs.c
  49  	$(CC) -c $(CORD_CFLAGS) cord\cordbscs.c -ocord\cordbscs.obj
  50  
  51  cord\cordprnt.obj: cord\cordprnt.c
  52  	$(CC) -c $(CORD_CFLAGS) cord\cordprnt.c -ocord\cordprnt.obj
  53  
  54  cord\cordxtra.obj: cord\cordxtra.c
  55  	$(CC) -c $(CORD_CFLAGS) cord\cordxtra.c -ocord\cordxtra.obj
  56  
  57  clean:
  58  	del *.log *.map *.obj gc.def gc.dll gc.lib
  59  	del tests\*.obj gctest.exe cpptest.exe treetest.exe
  60  	del cord\*.obj cord.lib cord\tests\cordtest.obj cordtest.exe
  61  
  62  gctest.exe: gc.lib tests\gctest.obj
  63  	$(CC) -ogctest.exe tests\gctest.obj gc.lib
  64  
  65  tests\gctest.obj: tests\gctest.c
  66  	$(CC) -c $(CFLAGS) tests\gctest.c -otests\gctest.obj
  67  
  68  cpptest.exe: gc.lib tests\cpptest.obj
  69  	$(CC) -ocpptest.exe tests\cpptest.obj gc.lib
  70  
  71  tests\cpptest.obj: tests\cpp.cc
  72  	$(CC) -c $(CFLAGS) -cpp tests\cpp.cc -otests\cpptest.obj
  73  
  74  treetest.exe: gc.lib tests\treetest.obj
  75  	$(CC) -otreetest.exe tests\treetest.obj gc.lib
  76  
  77  tests\treetest.obj: tests\tree.cc
  78  	$(CC) -c $(CFLAGS) -cpp tests\tree.cc -otests\treetest.obj
  79  
  80  cordtest.exe: cord\tests\cordtest.obj cord.lib gc.lib
  81  	$(CC) -ocordtest.exe cord\tests\cordtest.obj cord.lib gc.lib
  82  
  83  cord\tests\cordtest.obj: cord\tests\cordtest.c
  84  	$(CC) -c $(CORD_CFLAGS) cord\tests\cordtest.c -ocord\tests\cordtest.obj
  85  
  86  gc_badalc.obj: gc_badalc.cc gc_badalc.cpp
  87  gc_cpp.obj: gc_cpp.cc gc_cpp.cpp
  88