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