1# -*- makefile -*-
2# Makefile for Generic Unix with GCC compiler
3
4FAULT_TOLERANT=0
5
6# Default install directory
7PREFIX ?= /usr/local
8
9# Place where to copy GastDB header files
10INCSPATH=$(PREFIX)/include/fastdb
11
12#Place where to copy Fastdb library
13LIBSPATH=$(PREFIX)/lib
14
15#Place where to copy Fastdb subsql utility
16BINSPATH=$(PREFIX)/bin
17
18ifdef NO_PTHREADS
19OBJS = class.o compiler.o database.o xml.o hashtab.o file.o symtab.o ttree.o rtree.o container.o \
20	cursor.o query.o wwwapi.o unisock.o sync.o localcli.o stdtp.o
21else
22OBJS = class.o compiler.o database.o xml.o hashtab.o file.o symtab.o ttree.o rtree.o container.o \
23	cursor.o query.o wwwapi.o unisock.o sync.o localcli.o stdtp.o server.o
24endif
25
26CLI_OBJS = cli.o unisock.o repsock.o stdtp.o
27
28INCS = inc/fastdb.h inc/stdtp.h inc/config.h inc/class.h inc/database.h inc/cursor.h inc/reference.h inc/wwwapi.h \
29	inc/cli.h inc/array.h inc/file.h inc/hashtab.h inc/ttree.h inc/rtree.h inc/container.h inc/sync.h inc/sync_unix.h \
30	inc/query.h inc/datetime.h inc/harray.h inc/timeseries.h inc/rectangle.h inc/exception.h
31
32#
33# threads settings - please comment this lines for single-threaded libs
34#
35ifdef NO_PTHREADS
36TFLAGS=-DNO_PTHREADS
37THRLIBS=
38SUFF=
39else
40TFLAGS=-pthread
41THRLIBS=
42SUFF=_r
43endif
44
45STDLIBS =  -lm  $(THRLIBS)
46SOCKLIBS =
47
48VERSION=2
49FASTDB_LIB = libfastdb$(SUFF).a
50FASTDB_SHARED = libfastdb$(SUFF).${VERSION}.dylib
51CLI_LIB = libcli$(SUFF).a
52CLI_SHARED = libcli$(SUFF).${VERSION}.dylib
53
54EXES = subsql forcerecovery cleanupsem
55#FASTDB_LIBS=-L. -lfastdb$(SUFF)
56#CLI_LIBS=-L. -lcli$(SUFF)
57FASTDB_LIBS=$(FASTDB_LIB)
58CLI_LIBS=$(CLI_LIB)
59
60EXAMPLES = guess testdb testleak testjoin testddl testperf testsync testconc testiref testtrav testidx clitest clitest2 testalter testraw localclitest testharr testspat testtl
61
62WEB_EXAMPLES = cgistub bugdb clidb
63
64CC = g++
65
66# DEFS macro is deprecatred, edit inc/config.h file instead
67DEFS =
68
69#CFLAGS = $(TFLAGS) -c -Iinc -Wall -O5 -g  -fPIC $(DEFS)
70CFLAGS = -c -Iinc -Wall -O0 -g -fPIC $(DEFS) $(TFLAGS)
71#CFLAGS = -c -Iinc -Wall -O0 -fPIC -DFASTDB_DEBUG=DEBUG_TRACE -g $(DEFS) $(TFLAGS)
72
73#SHFLAGS=-shared -Wl,-soname,$@
74SHFLAGS=-dynamiclib
75
76
77LD = $(CC)
78LDFLAGS = -g $(TFLAGS)
79
80AR = ar
81ARFLAGS = -cru
82
83RANLIB = ranlib
84
85ifneq (0,$(FAULT_TOLERANT))
86STDLIBS +=  $(SOCKLIBS)
87DEFS += -DREPLICATION_SUPPORT
88endif
89
90
91all: static shared bins
92
93static: $(FASTDB_LIB) $(CLI_LIB)
94
95shared: $(FASTDB_SHARED) $(CLI_SHARED)
96
97bins: $(EXES) $(EXAMPLES)
98
99www: $(FASTDB_SHARED) $(WEB_EXAMPLES)
100
101
102class.o: src/class.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
103	$(CC) $(CFLAGS) src/class.cpp
104
105compiler.o: src/compiler.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
106	$(CC) $(CFLAGS) src/compiler.cpp
107
108query.o: src/query.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
109	$(CC) $(CFLAGS) src/query.cpp
110
111database.o: src/database.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
112	$(CC) $(CFLAGS) src/database.cpp
113
114xml.o: src/xml.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
115	$(CC) $(CFLAGS) src/xml.cpp
116
117localcli.o: src/localcli.cpp inc/compiler.h inc/compiler.d inc/symtab.h inc/localcli.h $(INCS)
118	$(CC) $(CFLAGS) src/localcli.cpp
119
120cursor.o: src/cursor.cpp inc/compiler.h inc/compiler.d $(INCS)
121	$(CC) $(CFLAGS) src/cursor.cpp
122
123hashtab.o: src/hashtab.cpp $(INCS)
124	$(CC) $(CFLAGS) src/hashtab.cpp
125
126file.o: src/file.cpp $(INCS)
127	$(CC) $(CFLAGS) src/file.cpp
128
129stdtp.o: src/stdtp.cpp $(INCS)
130	$(CC) $(CFLAGS) src/stdtp.cpp
131
132sync.o: src/sync.cpp $(INCS)
133	$(CC) $(CFLAGS) src/sync.cpp
134
135symtab.o: src/symtab.cpp inc/symtab.h $(INCS)
136	$(CC) $(CFLAGS) src/symtab.cpp
137
138ttree.o: src/ttree.cpp $(INCS)
139	$(CC) $(CFLAGS) src/ttree.cpp
140
141rtree.o: src/rtree.cpp $(INCS)
142	$(CC) $(CFLAGS) src/rtree.cpp
143
144container.o: src/container.cpp $(INCS)
145	$(CC) $(CFLAGS) src/container.cpp
146
147wwwapi.o: src/wwwapi.cpp inc/wwwapi.h inc/sockio.h inc/stdtp.h inc/sync.h inc/config.h inc/sync_unix.h
148	$(CC) $(CFLAGS) src/wwwapi.cpp
149
150unisock.o: src/unisock.cpp inc/unisock.h inc/sockio.h inc/stdtp.h
151	$(CC) $(CFLAGS) src/unisock.cpp
152
153repsock.o: src/repsock.cpp inc/unisock.h inc/sockio.h inc/stdtp.h inc/sync.h inc/sync_unix.h inc/config.h
154	$(CC) $(CFLAGS) src/repsock.cpp
155
156cli.o: src/cli.cpp inc/cli.h inc/cliproto.h
157	$(CC) $(CFLAGS) src/cli.cpp
158
159$(FASTDB_LIB): $(OBJS)
160	rm -f $(FASTDB_LIB)
161	$(AR) $(ARFLAGS) $(FASTDB_LIB) $(OBJS)
162	$(RANLIB) $(FASTDB_LIB)
163
164$(FASTDB_SHARED): $(OBJS)
165	rm -f $(FASTDB_SHARED)
166	$(CC) $(SHFLAGS) -o $(FASTDB_SHARED) $(OBJS) $(THRLIBS)
167	ln -f -s $(FASTDB_SHARED) libfastdb$(SUFF).so
168
169$(CLI_LIB): $(CLI_OBJS)
170	rm -f $(CLI_LIB)
171	$(AR) $(ARFLAGS) $(CLI_LIB) $(CLI_OBJS)
172	$(RANLIB) $(CLI_LIB)
173
174$(CLI_SHARED): $(CLI_OBJS)
175	rm -f $(CLI_SHARED)
176	$(CC) $(SHFLAGS) -o  $(CLI_SHARED) $(CLI_OBJS) $(THRLIBS)
177	ln -f -s $(CLI_SHARED) libcli$(SUFF).so
178
179
180clitest.o: examples/clitest.c inc/cli.h
181	$(CC) $(CFLAGS) examples/clitest.c
182
183clitest: clitest.o $(CLI_LIB)
184	$(LD) $(LDFLAGS) -o clitest clitest.o $(CLI_LIBS) $(STDLIBS) $(SOCKLIBS)
185
186clitest2.o: examples/clitest2.c inc/cli.h
187	$(CC) $(CFLAGS) examples/clitest2.c
188
189clitest2: clitest2.o $(FASTDB_LIB)
190	$(LD) $(LDFLAGS) -o clitest2 clitest2.o $(FASTDB_LIB) $(STDLIBS)
191
192testalter.o: examples/testalter.c inc/cli.h
193	$(CC) $(CFLAGS) examples/testalter.c
194
195testalter: testalter.o $(FASTDB_LIB)
196	$(LD) $(LDFLAGS) -o testalter testalter.o $(FASTDB_LIB) $(STDLIBS)
197
198localclitest: clitest.o $(FASTDB_LIB)
199	$(LD) $(LDFLAGS) -o localclitest clitest.o $(FASTDB_LIB) $(STDLIBS)
200
201subsql.o: src/subsql.cpp inc/subsql.h inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
202	$(CC) $(CFLAGS) src/subsql.cpp
203
204server.o: src/server.cpp inc/server.h inc/cli.h inc/cliproto.h inc/subsql.h inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
205	$(CC) $(CFLAGS) src/server.cpp
206
207subsql: subsql.o $(FASTDB_LIB)
208	$(LD) $(LDFLAGS) -o subsql subsql.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
209
210bugdb.o: examples/bugdb.cpp examples/bugdb.h $(INCS)
211	$(CC) $(CFLAGS) examples/bugdb.cpp
212
213bugdb: bugdb.o  $(FASTDB_LIB)
214	$(LD) $(LDFLAGS) -o bugdb bugdb.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
215
216clidb.o: examples/clidb.cpp examples/clidb.h $(INCS)
217	$(CC) $(CFLAGS) examples/clidb.cpp
218
219clidb: clidb.o  $(FASTDB_LIB)
220	$(LD) $(LDFLAGS) -o clidb clidb.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
221
222cgistub.o: src/cgistub.cpp inc/stdtp.h inc/sockio.h
223	$(CC) $(CFLAGS) src/cgistub.cpp
224
225cgistub: cgistub.o
226	$(LD) $(LDFLAGS) -o cgistub cgistub.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
227
228
229forcerecovery.o: src/forcerecovery.cpp inc/database.h
230	$(CC) $(CFLAGS) src/forcerecovery.cpp
231
232forcerecovery: forcerecovery.o
233	$(LD) $(LDFLAGS)  -o forcerecovery forcerecovery.o
234
235cleanupsem.o: src/cleanupsem.cpp inc/database.h
236	$(CC) $(CFLAGS) src/cleanupsem.cpp
237
238cleanupsem: cleanupsem.o
239	$(LD) $(LDFLAGS)  -o cleanupsem cleanupsem.o
240
241
242guess.o: examples/guess.cpp $(INCS)
243	$(CC) $(CFLAGS) examples/guess.cpp
244
245guess: guess.o $(FASTDB_LIB)
246	$(LD) $(LDFLAGS) -o guess guess.o $(FASTDB_LIBS) $(STDLIBS)
247
248testharr.o: examples/testharr.cpp $(INCS)
249	$(CC) $(CFLAGS) examples/testharr.cpp
250
251testharr: testharr.o $(FASTDB_LIB)
252	$(LD) $(LDFLAGS) -o testharr testharr.o $(FASTDB_LIBS) $(STDLIBS)
253
254testdb.o: examples/testdb.cpp $(INCS)
255	$(CC) $(CFLAGS) examples/testdb.cpp
256
257testdb: testdb.o $(FASTDB_LIB)
258	$(LD) $(LDFLAGS) -o testdb testdb.o $(FASTDB_LIBS) $(STDLIBS)
259
260testraw.o: examples/testraw.cpp $(INCS)
261	$(CC) $(CFLAGS) examples/testraw.cpp
262
263testraw: testraw.o $(FASTDB_LIB)
264	$(LD) $(LDFLAGS) -o testraw testraw.o $(FASTDB_LIBS) $(STDLIBS)
265
266testleak.o: examples/testleak.cpp $(INCS)
267	$(CC) $(CFLAGS) examples/testleak.cpp
268
269testleak: testleak.o $(FASTDB_LIB)
270	$(LD) $(LDFLAGS) -o testleak testleak.o $(FASTDB_LIBS) $(STDLIBS)
271
272testjoin.o: examples/testjoin.cpp $(INCS)
273	$(CC) $(CFLAGS) examples/testjoin.cpp
274
275testjoin: testjoin.o $(FASTDB_LIB)
276	$(LD) $(LDFLAGS) -o testjoin testjoin.o $(FASTDB_LIBS) $(STDLIBS)
277
278testddl.o: examples/testddl.cpp $(INCS)
279	$(CC) $(CFLAGS) examples/testddl.cpp
280
281testddl: testddl.o $(FASTDB_LIB)
282	$(LD) $(LDFLAGS) -o testddl testddl.o $(FASTDB_LIBS) $(STDLIBS)
283
284testperf.o: examples/testperf.cpp $(INCS)
285	$(CC) $(CFLAGS) examples/testperf.cpp
286
287testperf: testperf.o $(FASTDB_LIB)
288	$(LD) $(LDFLAGS) -o testperf testperf.o $(FASTDB_LIBS) $(STDLIBS)
289
290testidx.o: examples/testidx.cpp $(INCS)
291	$(CC) $(CFLAGS) examples/testidx.cpp
292
293testidx: testidx.o $(FASTDB_LIB)
294	$(LD) $(LDFLAGS) -o testidx testidx.o $(FASTDB_LIBS) $(STDLIBS)
295
296testtl.o: examples/testtl.cpp $(INCS)
297	$(CC) $(CFLAGS) examples/testtl.cpp
298
299testtl: testtl.o $(FASTDB_LIB)
300	$(LD) $(LDFLAGS) -o testtl testtl.o $(FASTDB_LIBS) $(STDLIBS)
301
302testspat.o: examples/testspat.cpp $(INCS)
303	$(CC) $(CFLAGS) examples/testspat.cpp
304
305testspat: testspat.o $(FASTDB_LIB)
306	$(LD) $(LDFLAGS) -o testspat testspat.o $(FASTDB_LIBS) $(STDLIBS)
307
308testsync.o: examples/testsync.cpp $(INCS)
309	$(CC) $(CFLAGS) examples/testsync.cpp
310
311testsync: testsync.o $(FASTDB_LIB)
312	$(LD) $(LDFLAGS) -o testsync testsync.o $(FASTDB_LIBS) $(STDLIBS)
313
314testconc.o: examples/testconc.cpp $(INCS)
315	$(CC) $(CFLAGS) examples/testconc.cpp
316
317testconc: testconc.o $(FASTDB_LIB)
318	$(LD) $(LDFLAGS) -o testconc testconc.o $(FASTDB_LIBS) $(STDLIBS)
319
320testiref.o: examples/testiref.cpp $(INCS)
321	$(CC) $(CFLAGS) examples/testiref.cpp
322
323testiref: testiref.o $(FASTDB_LIB)
324	$(LD) $(LDFLAGS) -o testiref testiref.o $(FASTDB_LIBS) $(STDLIBS)
325
326testtrav.o: examples/testtrav.cpp $(INCS)
327	$(CC) $(CFLAGS) examples/testtrav.cpp
328
329testtrav: testtrav.o $(FASTDB_LIB)
330	$(LD) $(LDFLAGS) -o testtrav testtrav.o $(FASTDB_LIBS) $(STDLIBS)
331
332
333
334install: subsql installlib
335	mkdir -p $(BINSPATH)
336	cp subsql $(BINSPATH)
337	strip $(BINSPATH)/subsql
338
339installlib: $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED)
340	mkdir -p $(INCSPATH)
341	cp $(INCS) $(INCSPATH)
342	mkdir -p $(LIBSPATH)
343	cp $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED) $(LIBSPATH)
344	cd $(LIBSPATH); ln -f -s $(FASTDB_SHARED) libfastdb$(SUFF).so
345	cd $(LIBSPATH); ln -f -s $(CLI_SHARED) libcli$(SUFF).so
346
347
348
349uninstall:
350	rm -fr $(INCSPATH)
351	cd $(LIBSPATH); rm -f $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED) libfastdb$(SUFF).so libcli$(SUFF).so
352	rm $(BINSPATH)/subsql
353
354cleanobj:
355	rm -fr *.o *.tgz core *~ cxx_repository
356
357cleandbs:
358	rm -f *.fdb
359
360
361clean: cleanobj cleandbs
362	rm -f *.a *.so *.so.* $(EXAMPLES) $(WEB_EXAMPLES) $(EXES)
363
364tgz:	clean
365	cd ..; tar cvzf fastdb.tgz fastdb
366
367copytgz: tgz
368	mcopy -o ../fastdb.tgz a:
369