]> git.llucax.com Git - software/dgc/naive.git/blob - posix.mak
Move cell allocation and freeing to Cell struct
[software/dgc/naive.git] / posix.mak
1 # Makefile to build the garbage collector D library for Posix
2 # Designed to work with GNU make
3 # Targets:
4 #       make
5 #               Same as make all
6 #       make lib
7 #               Build the garbage collector library
8 #   make doc
9 #       Generate documentation
10 #       make clean
11 #               Delete unneeded files created by build process
12
13 LIB_BASE=libtango-gc-naive
14 LIB_BUILD=
15 LIB_TARGET=$(LIB_BASE)$(LIB_BUILD).a
16 LIB_MASK=$(LIB_BASE)*.a
17
18 CP=cp -f
19 RM=rm -f
20 MD=mkdir -p
21
22 ADD_CFLAGS=
23 ADD_DFLAGS=
24 SYSTEM_VERSION=
25
26 CFLAGS_RELEASE=-O $(ADD_CFLAGS)
27 CFLAGS_DEBUG=-g $(ADD_CFLAGS)
28 DFLAGS_RELEASE=-release -version=Tango -O -inline -w -nofloat $(SYSTEM_VERSION) $(ADD_DFLAGS) -I../../common -I../../..
29 DFLAGS_DEBUG=-g -w -nofloat -version=Tango$(SYSTEM_VERSION) $(ADD_DFLAGS) -I../../common -I../../..
30 TFLAGS_RELEASE=-O -inline -w -nofloat $(SYSTEM_VERSION) $(ADD_DFLAGS)
31 TFLAGS_DEBUG=-g -w -nofloat $(SYSTEM_VERSION) $(ADD_DFLAGS)
32 DOCFLAGS=-version=DDoc $(SYSTEM_VERSION)
33
34 ifeq ($(VERSION),debug)
35 CFLAGS=$(CFLAGS_DEBUG)
36 DFLAGS=$(DFLAGS_DEBUG)
37 TFLAGS=$(TFLAGS_DEBUG)
38 else
39 CFLAGS=$(CFLAGS_RELEASE)
40 DFLAGS=$(DFLAGS_RELEASE)
41 TFLAGS=$(TFLAGS_RELEASE)
42 endif
43
44 CC=gcc
45 LC=$(AR) -qsv
46 DC=dmd
47
48 LIB_DEST=..
49
50 .SUFFIXES: .s .S .c .cpp .d .html .o
51 .PHONY : lib lib-release lib-debug unittest all doc clean install clean-all
52
53 .s.o:
54         $(CC) -c $(CFLAGS) $< -o$@
55
56 .S.o:
57         $(CC) -c $(CFLAGS) $< -o$@
58
59 .c.o:
60         $(CC) -c $(CFLAGS) $< -o$@
61
62 .cpp.o:
63         g++ -c $(CFLAGS) $< -o$@
64
65 .d.o:
66         $(DC) -c $(DFLAGS) $< -of$@
67
68 .d.html:
69         $(DC) -c -o- $(DOCFLAGS) -Df$*.html $<
70 #       $(DC) -c -o- $(DOCFLAGS) -Df$*.html dmd.ddoc $<
71
72 targets : lib doc
73 all     : lib-release lib-debug doc
74
75 ######################################################
76
77 ALL_OBJS= \
78     gc/iface.o \
79     gc/gc.o \
80     gc/arch.o \
81     gc/list.o \
82     gc/cell.o \
83     gc/dynarray.o
84
85 ######################################################
86
87 ALL_DOCS=
88
89 ######################################################
90 unittest :
91         make -fposix.mak clean DC="$(DC)" LIB_BUILD="" VERSION="$(VERSION)"
92         make -fposix.mak lib DC="$(DC)" LIB_BUILD="" VERSION="$(VERSION)" \
93                 ADD_CFLAGS="$(ADD_CFLAGS)" ADD_DFLAGS="$(ADD_DFLAGS) -unittest -debug=UnitTest" \
94                 SYSTEM_VERSION="$(SYSTEM_VERSION)"
95 lib-release :
96         make -fposix.mak clean DC="$(DC)" LIB_BUILD="" VERSION="$(VERSION)"
97         make -fposix.mak DC="$(DC)" LIB_BUILD="" VERSION=release lib \
98                 ADD_CFLAGS="$(ADD_CFLAGS)" ADD_DFLAGS="$(ADD_DFLAGS)" SYSTEM_VERSION="$(SYSTEM_VERSION)"
99 lib-debug :
100         make -fposix.mak clean DC="$(DC)" LIB_BUILD="" VERSION="$(VERSION)"
101         make -fposix.mak DC="$(DC)" LIB_BUILD="-d" VERSION=debug lib \
102                 ADD_CFLAGS="$(ADD_CFLAGS)" ADD_DFLAGS="$(ADD_DFLAGS)" SYSTEM_VERSION="$(SYSTEM_VERSION)"
103
104 ######################################################
105
106 lib : $(LIB_TARGET)
107
108 $(LIB_TARGET) : $(ALL_OBJS)
109         $(RM) $@
110         $(LC) $@ $(ALL_OBJS)
111
112 doc : $(ALL_DOCS)
113         echo No documentation available.
114
115 ######################################################
116
117 clean :
118         find . -name "*.di" | xargs $(RM)
119         $(RM) $(ALL_OBJS)
120         $(RM) $(ALL_DOCS)
121
122 clean-all : clean
123         $(RM) $(LIB_MASK)
124
125 install :
126         $(MD) $(LIB_DEST)
127         $(CP) $(LIB_MASK) $(LIB_DEST)/.