1# -*- makefile -*-
2# Makefile for Solaris with GCC compiler
3
4FAULT_TOLERANT?=0
5DEBUG?=1
6
7# Default install directory
8PREFIX ?= /usr/local
9
10# Place where to copy FastDB header files
11INCSPATH=$(PREFIX)/include/fastdb
12
13#Place where to copy Fastdb library
14LIBSPATH=$(PREFIX)/lib
15
16#Place where to copy Fastdb subsql utility
17BINSPATH=$(PREFIX)/bin
18
19ifdef NO_PTHREADS
20OBJS = class.o compiler.o database.o xml.o hashtab.o file.o symtab.o ttree.o rtree.o container.o \
21	cursor.o query.o wwwapi.o unisock.o sync.o localcli.o stdtp.o
22else
23OBJS = class.o compiler.o database.o xml.o hashtab.o file.o symtab.o ttree.o rtree.o container.o \
24	cursor.o query.o wwwapi.o unisock.o sync.o localcli.o stdtp.o server.o
25endif
26
27CLI_OBJS = cli.o unisock.o repsock.o stdtp.o
28
29INCS = inc/fastdb.h inc/stdtp.h inc/config.h inc/class.h inc/database.h inc/cursor.h inc/reference.h inc/wwwapi.h \
30	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 \
31	inc/query.h inc/datetime.h inc/harray.h inc/rectangle.h inc/timeseries.h inc/exception.h
32
33#
34# threads settings - please comment this lines for single-threaded libs
35#
36ifdef NO_PTHREADS
37TFLAGS=-DNO_PTHREADS
38THRLIBS=
39SUFF=
40else
41TFLAGS=-pthreads
42THRLIBS=-pthreads
43SUFF=_r
44endif
45
46STDLIBS =  -lm  $(THRLIBS)
47SOCKLIBS = -lnsl -lsocket
48TFLAGS += -fPIC
49
50
51VERSION=2
52FASTDB_LIB = libfastdb$(SUFF).a
53FASTDB_SHARED = libfastdb$(SUFF).so.${VERSION}
54CLI_LIB = libcli$(SUFF).a
55JNI_LIB = libjnicli$(SUFF).so.${VERSION}
56CLI_SHARED = libcli$(SUFF).so.${VERSION}
57
58EXES = subsql forcerecovery cleanupsem
59#FASTDB_LIBS=-L. -lfastdb$(SUFF)
60#CLI_LIBS=-L. -lcli$(SUFF)
61FASTDB_LIBS=$(FASTDB_LIB)
62CLI_LIBS=$(CLI_LIB)
63
64EXAMPLES = guess testdb testleak testfrag testjoin testddl testperf testpar testindex testfuzzy testsync testconc testiref testtrav testidx clitest clitest2 testrect testalter testraw localclitest testharr testspat testtimeseries testwcs testtl
65
66WEB_EXAMPLES = cgistub bugdb clidb
67
68CC = g++
69
70# DEFS macro is deprecatred, edit config.h file instead
71DEFS = -Wno-invalid-offsetof
72
73ifeq ($(DEBUG), 1)
74CFLAGS = -c -Iinc -Wall -O0 -g -fPIC $(DEFS) $(TFLAGS)
75else
76CFLAGS = -c -Iinc -Wall -O5 -g -fPIC $(DEFS) $(TFLAGS)
77endif
78
79#SHFLAGS=-shared -Wl,-soname,$@
80SHFLAGS=-shared
81
82
83LD = $(CC)
84LDFLAGS = -g $(TFLAGS)
85
86AR = ar
87ARFLAGS = -cru
88RANLIB = true
89
90ifneq (0,$(FAULT_TOLERANT))
91STDLIBS +=  $(SOCKLIBS)
92DEFS += -DREPLICATION_SUPPORT
93endif
94
95
96all: static shared bins
97
98static: $(FASTDB_LIB) $(CLI_LIB)
99
100shared: $(FASTDB_SHARED) $(CLI_SHARED)
101
102bins: $(EXES) $(EXAMPLES)
103
104www: $(FASTDB_SHARED) $(WEB_EXAMPLES)
105
106
107class.o: src/class.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
108	$(CC) $(CFLAGS) src/class.cpp
109
110compiler.o: src/compiler.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
111	$(CC) $(CFLAGS) src/compiler.cpp
112
113query.o: src/query.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
114	$(CC) $(CFLAGS) src/query.cpp
115
116database.o: src/database.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
117	$(CC) $(CFLAGS) src/database.cpp
118
119xml.o: src/xml.cpp inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
120	$(CC) $(CFLAGS) src/xml.cpp
121
122localcli.o: src/localcli.cpp inc/compiler.h inc/compiler.d inc/symtab.h inc/localcli.h $(INCS)
123	$(CC) $(CFLAGS) src/localcli.cpp
124
125cursor.o: src/cursor.cpp inc/compiler.h inc/compiler.d $(INCS)
126	$(CC) $(CFLAGS) src/cursor.cpp
127
128hashtab.o: src/hashtab.cpp $(INCS)
129	$(CC) $(CFLAGS) src/hashtab.cpp
130
131file.o: src/file.cpp $(INCS)
132	$(CC) $(CFLAGS) src/file.cpp
133
134stdtp.o: src/stdtp.cpp $(INCS)
135	$(CC) $(CFLAGS) src/stdtp.cpp
136
137sync.o: src/sync.cpp $(INCS)
138	$(CC) $(CFLAGS) src/sync.cpp
139
140symtab.o: src/symtab.cpp inc/symtab.h $(INCS)
141	$(CC) $(CFLAGS) src/symtab.cpp
142
143ttree.o: src/ttree.cpp $(INCS)
144	$(CC) $(CFLAGS) src/ttree.cpp
145
146rtree.o: src/rtree.cpp $(INCS)
147	$(CC) $(CFLAGS) src/rtree.cpp
148
149container.o: src/container.cpp $(INCS)
150	$(CC) $(CFLAGS) src/container.cpp
151
152wwwapi.o: src/wwwapi.cpp inc/wwwapi.h inc/sockio.h inc/stdtp.h inc/sync.h inc/config.h inc/sync_unix.h
153	$(CC) $(CFLAGS) src/wwwapi.cpp
154
155unisock.o: src/unisock.cpp inc/unisock.h inc/sockio.h inc/stdtp.h
156	$(CC) $(CFLAGS) src/unisock.cpp
157
158repsock.o: src/repsock.cpp inc/unisock.h inc/sockio.h inc/stdtp.h inc/sync.h inc/sync_unix.h inc/config.h
159	$(CC) $(CFLAGS) src/repsock.cpp
160
161cli.o: src/cli.cpp inc/cli.h inc/cliproto.h
162	$(CC) $(CFLAGS) src/cli.cpp
163
164$(FASTDB_LIB): $(OBJS)
165	rm -f $(FASTDB_LIB)
166	$(AR) $(ARFLAGS) $(FASTDB_LIB) $(OBJS)
167	$(RANLIB) $(FASTDB_LIB)
168
169$(FASTDB_SHARED): $(OBJS)
170	rm -f $(FASTDB_SHARED)
171	$(CC) $(SHFLAGS) -o $(FASTDB_SHARED) $(OBJS) $(THRLIBS)
172	ln -f -s $(FASTDB_SHARED) libfastdb$(SUFF).so
173
174$(CLI_LIB): $(CLI_OBJS)
175	rm -f $(CLI_LIB)
176	$(AR) $(ARFLAGS) $(CLI_LIB) $(CLI_OBJS)
177	$(RANLIB) $(CLI_LIB)
178
179$(CLI_SHARED): $(CLI_OBJS)
180	rm -f $(CLI_SHARED)
181	$(CC) $(SHFLAGS) -o  $(CLI_SHARED) $(CLI_OBJS) $(THRLIBS)
182	ln -f -s $(CLI_SHARED) libcli$(SUFF).so
183
184
185clitest.o: examples/clitest.c inc/cli.h
186	$(CC) $(CFLAGS) examples/clitest.c
187
188clitest: clitest.o $(CLI_LIB)
189	$(LD) $(LDFLAGS) -o clitest clitest.o $(CLI_LIBS) $(STDLIBS) $(SOCKLIBS)
190
191clitest2.o: examples/clitest2.c inc/cli.h
192	$(CC) $(CFLAGS) examples/clitest2.c
193
194clitest2: clitest2.o $(FASTDB_LIB)
195	$(LD) $(LDFLAGS) -o clitest2 clitest2.o $(FASTDB_LIB) $(STDLIBS)
196
197testalter.o: examples/testalter.c inc/cli.h
198	$(CC) $(CFLAGS) examples/testalter.c
199
200testalter: testalter.o $(FASTDB_LIB)
201	$(LD) $(LDFLAGS) -o testalter testalter.o $(FASTDB_LIB) $(STDLIBS)
202
203localclitest: clitest.o $(FASTDB_LIB)
204	$(LD) $(LDFLAGS) -o localclitest clitest.o $(FASTDB_LIB) $(STDLIBS)
205
206testrect.o: examples/testrect.c inc/cli.h
207	$(CC) $(CFLAGS) examples/testrect.c
208
209testrect: testrect.o $(FASTDB_LIB)
210	$(LD) $(LDFLAGS) -o testrect testrect.o $(FASTDB_LIB) $(STDLIBS)
211
212subsql.o: src/subsql.cpp inc/subsql.h inc/compiler.h inc/compiler.d inc/symtab.h $(INCS)
213	$(CC) $(CFLAGS) src/subsql.cpp
214
215server.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)
216	$(CC) $(CFLAGS) src/server.cpp
217
218subsql: subsql.o $(FASTDB_LIB)
219	$(LD) $(LDFLAGS) -o subsql subsql.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
220
221bugdb.o: examples/bugdb.cpp examples/bugdb.h $(INCS)
222	$(CC) $(CFLAGS) examples/bugdb.cpp
223
224bugdb: bugdb.o  $(FASTDB_LIB)
225	$(LD) $(LDFLAGS) -o bugdb bugdb.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
226
227clidb.o: examples/clidb.cpp examples/clidb.h $(INCS)
228	$(CC) $(CFLAGS) examples/clidb.cpp
229
230clidb: clidb.o  $(FASTDB_LIB)
231	$(LD) $(LDFLAGS) -o clidb clidb.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
232
233cgistub.o: src/cgistub.cpp inc/stdtp.h inc/sockio.h
234	$(CC) $(CFLAGS) src/cgistub.cpp
235
236cgistub: cgistub.o
237	$(LD) $(LDFLAGS) -o cgistub cgistub.o $(FASTDB_LIBS) $(STDLIBS) $(SOCKLIBS)
238
239
240forcerecovery.o: src/forcerecovery.cpp inc/database.h
241	$(CC) $(CFLAGS) src/forcerecovery.cpp
242
243forcerecovery: forcerecovery.o
244	$(LD) $(LDFLAGS)  -o forcerecovery forcerecovery.o
245
246cleanupsem.o: src/cleanupsem.cpp inc/database.h
247	$(CC) $(CFLAGS) src/cleanupsem.cpp
248
249cleanupsem: cleanupsem.o
250	$(LD) $(LDFLAGS)  -o cleanupsem cleanupsem.o
251
252
253guess.o: examples/guess.cpp $(INCS)
254	$(CC) $(CFLAGS) examples/guess.cpp
255
256guess: guess.o $(FASTDB_LIB)
257	$(LD) $(LDFLAGS) -o guess guess.o $(FASTDB_LIBS) $(STDLIBS)
258
259testharr.o: examples/testharr.cpp $(INCS)
260	$(CC) $(CFLAGS) examples/testharr.cpp
261
262testharr: testharr.o $(FASTDB_LIB)
263	$(LD) $(LDFLAGS) -o testharr testharr.o $(FASTDB_LIBS) $(STDLIBS)
264
265testdb.o: examples/testdb.cpp $(INCS)
266	$(CC) $(CFLAGS) examples/testdb.cpp
267
268testdb: testdb.o $(FASTDB_LIB)
269	$(LD) $(LDFLAGS) -o testdb testdb.o $(FASTDB_LIBS) $(STDLIBS)
270
271testraw.o: examples/testraw.cpp $(INCS)
272	$(CC) $(CFLAGS) examples/testraw.cpp
273
274testraw: testraw.o $(FASTDB_LIB)
275	$(LD) $(LDFLAGS) -o testraw testraw.o $(FASTDB_LIBS) $(STDLIBS)
276
277testleak.o: examples/testleak.cpp $(INCS)
278	$(CC) $(CFLAGS) examples/testleak.cpp
279
280testleak: testleak.o $(FASTDB_LIB)
281	$(LD) $(LDFLAGS) -o testleak testleak.o $(FASTDB_LIBS) $(STDLIBS)
282
283testfrag.o: examples/testfrag.cpp $(INCS)
284	$(CC) $(CFLAGS) examples/testfrag.cpp
285
286testfrag: testfrag.o $(FASTDB_LIB)
287	$(LD) $(LDFLAGS) -o testfrag testfrag.o $(FASTDB_LIBS) $(STDLIBS)
288
289testjoin.o: examples/testjoin.cpp $(INCS)
290	$(CC) $(CFLAGS) examples/testjoin.cpp
291
292testjoin: testjoin.o $(FASTDB_LIB)
293	$(LD) $(LDFLAGS) -o testjoin testjoin.o $(FASTDB_LIBS) $(STDLIBS)
294
295testddl.o: examples/testddl.cpp $(INCS)
296	$(CC) $(CFLAGS) examples/testddl.cpp
297
298testddl: testddl.o $(FASTDB_LIB)
299	$(LD) $(LDFLAGS) -o testddl testddl.o $(FASTDB_LIBS) $(STDLIBS)
300
301testperf.o: examples/testperf.cpp $(INCS)
302	$(CC) $(CFLAGS) examples/testperf.cpp
303
304testperf: testperf.o $(FASTDB_LIB)
305	$(LD) $(LDFLAGS) -o testperf testperf.o $(FASTDB_LIBS) $(STDLIBS)
306
307testwcs.o: examples/testwcs.cpp $(INCS)
308	$(CC) $(CFLAGS) examples/testwcs.cpp
309
310testwcs: testwcs.o $(FASTDB_LIB)
311	$(LD) $(LDFLAGS) -o testwcs testwcs.o $(FASTDB_LIBS) $(STDLIBS)
312
313testpar.o: examples/testpar.cpp $(INCS)
314	$(CC) $(CFLAGS) examples/testpar.cpp
315
316testpar: testpar.o $(FASTDB_LIB)
317	$(LD) $(LDFLAGS) -o testpar testpar.o $(FASTDB_LIBS) $(STDLIBS)
318
319testindex.o: examples/testindex.cpp $(INCS)
320	$(CC) $(CFLAGS) examples/testindex.cpp
321
322testindex: testindex.o $(FASTDB_LIB)
323	$(LD) $(LDFLAGS) -o testindex testindex.o $(FASTDB_LIBS) $(STDLIBS)
324
325testspat.o: examples/testspat.cpp $(INCS)
326	$(CC) $(CFLAGS) examples/testspat.cpp
327
328testspat: testspat.o $(FASTDB_LIB)
329	$(LD) $(LDFLAGS) -o testspat testspat.o $(FASTDB_LIBS) $(STDLIBS)
330
331testtimeseries.o: examples/testtimeseries.cpp $(INCS)
332	$(CC) $(CFLAGS) examples/testtimeseries.cpp
333
334testtimeseries: testtimeseries.o $(FASTDB_LIB)
335	$(LD) $(LDFLAGS) -o testtimeseries testtimeseries.o $(FASTDB_LIBS) $(STDLIBS)
336
337testfuzzy.o: examples/testfuzzy.cpp $(INCS)
338	$(CC) $(CFLAGS) examples/testfuzzy.cpp
339
340testfuzzy: testfuzzy.o $(FASTDB_LIB)
341	$(LD) $(LDFLAGS) -o testfuzzy testfuzzy.o $(FASTDB_LIBS) $(STDLIBS)
342
343testidx.o: examples/testidx.cpp $(INCS)
344	$(CC) $(CFLAGS) examples/testidx.cpp
345
346testidx: testidx.o $(FASTDB_LIB)
347	$(LD) $(LDFLAGS) -o testidx testidx.o $(FASTDB_LIBS) $(STDLIBS)
348
349testtl.o: examples/testtl.cpp $(INCS)
350	$(CC) $(CFLAGS) examples/testtl.cpp
351
352testtl: testtl.o $(FASTDB_LIB)
353	$(LD) $(LDFLAGS) -o testtl testtl.o $(FASTDB_LIBS) $(STDLIBS)
354
355testsync.o: examples/testsync.cpp $(INCS)
356	$(CC) $(CFLAGS) examples/testsync.cpp
357
358testsync: testsync.o $(FASTDB_LIB)
359	$(LD) $(LDFLAGS) -o testsync testsync.o $(FASTDB_LIBS) $(STDLIBS)
360
361testconc.o: examples/testconc.cpp $(INCS)
362	$(CC) $(CFLAGS) examples/testconc.cpp
363
364testconc: testconc.o $(FASTDB_LIB)
365	$(LD) $(LDFLAGS) -o testconc testconc.o $(FASTDB_LIBS) $(STDLIBS)
366
367testreplic.o: examples/testreplic.cpp $(INCS)
368	$(CC) $(CFLAGS) examples/testreplic.cpp
369
370testreplic: testreplic.o $(FASTDB_LIB)
371	$(LD) $(LDFLAGS) -o testreplic testreplic.o $(FASTDB_LIBS) $(STDLIBS)
372
373testiref.o: examples/testiref.cpp $(INCS)
374	$(CC) $(CFLAGS) examples/testiref.cpp
375
376testiref: testiref.o $(FASTDB_LIB)
377	$(LD) $(LDFLAGS) -o testiref testiref.o $(FASTDB_LIBS) $(STDLIBS)
378
379testtrav.o: examples/testtrav.cpp $(INCS)
380	$(CC) $(CFLAGS) examples/testtrav.cpp
381
382testtrav: testtrav.o $(FASTDB_LIB)
383	$(LD) $(LDFLAGS) -o testtrav testtrav.o $(FASTDB_LIBS) $(STDLIBS)
384
385
386java: javacli.jar jnicli.jar $(JNI_LIB) examples/JniTestIndex.class examples/JniTestRelations.class examples/TestIndex.class examples/CliTest.class
387
388jnicli.o: jnicli/jnicli.cpp
389	$(CC) $(CFLAGS) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I. jnicli/jnicli.cpp
390
391$(JNI_LIB): jnicli.o $(GB_LIB)
392	$(CC) $(SHFLAGS) -o $(JNI_LIB) jnicli.o $(FASTDB_LIB)
393	ln -f -s $(JNI_LIB) libjnicli.so
394
395javacli.jar: javacli/*.java
396	javac -g javacli/*.java
397	jar cvf javacli.jar javacli/*.class
398	javadoc -d javacli/docs -public javacli/*.java
399
400jnicli.jar: jnicli/*.java
401	javac -g jnicli/*.java
402	jar cvf jnicli.jar jnicli/*.class
403	javadoc -d jnicli/docs -public jnicli/*.java
404
405examples/JniTestIndex.class: examples/JniTestIndex.java jnicli.jar
406	javac -classpath jnicli.jar examples/JniTestIndex.java
407
408examples/JniTestRelations.class: examples/JniTestRelations.java jnicli.jar
409	javac -classpath jnicli.jar examples/JniTestRelations.java
410
411examples/CliTest.class: examples/CliTest.java javacli.jar
412	javac -classpath .;javacli.jar examples/CliTest.java
413
414examples/TestIndex.class: examples/TestIndex.java javacli.jar
415	javac -classpath .;javacli.jar examples/TestIndex.java
416
417install: subsql cleanupsem installlib
418	mkdir -p $(BINSPATH)
419	cp subsql $(BINSPATH)
420	strip $(BINSPATH)/subsql
421	cp cleanupsem $(BINSPATH)
422	strip $(BINSPATH)/cleanupsem
423
424installlib: $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED)
425	mkdir -p $(INCSPATH)
426	cp $(INCS) $(INCSPATH)
427	mkdir -p $(LIBSPATH)
428	cp $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED) $(LIBSPATH)
429	(cd $(LIBSPATH) && ln -f -s $(FASTDB_SHARED) libfastdb$(SUFF).so \
430	 && ln -f -s $(CLI_SHARED) libcli$(SUFF).so)
431	if [ -f $(JNI_LIB) ]; then cp $(JNI_LIB) $(LIBSPATH); \
432	  cd $(LIBSPATH) && ln -f -s $(JNI_LIB) libjnicli.so; fi
433
434uninstall:
435	rm -fr $(INCSPATH)
436	cd $(LIBSPATH); rm -f $(FASTDB_LIB) $(CLI_LIB) $(FASTDB_SHARED) $(CLI_SHARED) $(JNI_LIB) libfastdb$(SUFF).so libjnicli.so libcli$(SUFF).so
437	rm $(BINSPATH)/subsql
438
439cleanobj:
440	rm -fr *.o *.tgz examples/*.class javacli/*~ javacli/*.class jnicli/*~ jnicli/*.class jnicli/*.o jnicli/*.so core *~ cxx_repository
441
442cleandbs:
443	rm -f *.fdb
444
445
446clean: cleanobj cleandbs
447	rm -f *.a *.so *.so.* $(EXAMPLES) $(WEB_EXAMPLES) $(EXES)
448
449tgz:	clean
450	chmod +x configure genauto.sh
451	cd ..; tar cvzf fastdb.tgz fastdb
452
453copytgz: tgz
454	mcopy -o ../fastdb.tgz a:
455