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