1#
2# Copyright (C) 2000-2020 Kern Sibbald
3# License: BSD 2-Clause; see file LICENSE-FOSS
4#
5@MCOMMON@
6
7srcdir =	.
8.PATH:		.
9
10# one up
11basedir = ..
12# top dir
13topdir = ../..
14# this dir relative to top dir
15thisdir = src/cats
16
17#CPPFLAGS += -DCATS_PRIVATE_DBI @DBI_DBD_DRIVERDIR@
18CPPFLAGS += -DCATS_PRIVATE_DBI
19
20DEBUG=@DEBUG@
21MKDIR=$(topdir)/autoconf/mkinstalldirs
22
23first_rule: all
24dummy:
25
26#
27# include files installed when using libtool
28#
29INCLUDE_FILES = cats.h protos.h sql_cmds.h
30
31MYSQL_INCLUDE = @MYSQL_INCLUDE@
32MYSQL_LIBS = @MYSQL_LIBS@
33MYSQL_SRCS = mysql.c
34MYSQL_OBJS = $(MYSQL_SRCS:.c=.o)
35MYSQL_LOBJS = $(MYSQL_SRCS:.c=.lo)
36
37POSTGRESQL_INCLUDE = @POSTGRESQL_INCLUDE@
38POSTGRESQL_LIBS = @POSTGRESQL_LIBS@
39POSTGRESQL_SRCS = postgresql.c
40POSTGRESQL_OBJS = $(POSTGRESQL_SRCS:.c=.o)
41POSTGRESQL_LOBJS = $(POSTGRESQL_SRCS:.c=.lo)
42
43SQLITE_INCLUDE = @SQLITE_INCLUDE@
44SQLITE_LIBS = @SQLITE_LIBS@
45SQLITE_SRCS = sqlite.c
46SQLITE_OBJS = $(SQLITE_SRCS:.c=.o)
47SQLITE_LOBJS = $(SQLITE_SRCS:.c=.lo)
48
49#DBI_INCLUDE = @DBI_INCLUDE@
50#DBI_LIBS = @DBI_LIBS@
51#DBI_SRCS = dbi.c
52#DBI_OBJS = $(DBI_SRCS:.c=.o)
53#DBI_LOBJS = $(DBI_SRCS:.c=.lo)
54
55DB_LIBS=@DB_LIBS@
56
57CATS_SRCS  = mysql.c postgresql.c sqlite.c
58LIBBACSQL_SRCS = bvfs.c cats.c sql.c sql_cmds.c sql_create.c sql_delete.c \
59		 sql_find.c sql_get.c sql_list.c sql_update.c
60LIBBACSQL_OBJS = $(LIBBACSQL_SRCS:.c=.o)
61LIBBACCATS_OBJS = $(CATS_SRCS:.c=.o)
62LIBBACSQL_LOBJS = $(LIBBACSQL_SRCS:.c=.lo)
63
64LIBBACSQL_LT_RELEASE = @LIBBACSQL_LT_RELEASE@
65LIBBACCATS_LT_RELEASE = @LIBBACCATS_LT_RELEASE@
66
67.SUFFIXES:	.c .o .lo
68.PHONY:
69.DONTCARE:
70
71# inference rules
72.c.o:
73	@echo "Compiling $<"
74	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
75
76.c.lo:
77	@echo "Compiling $<"
78	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
79
80$(MYSQL_LOBJS):
81	@echo "Compiling $(@:.lo=.c)"
82	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(MYSQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.lo=.c)
83
84$(POSTGRESQL_LOBJS):
85	@echo "Compiling $(@:.lo=.c)"
86	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(POSTGRESQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.lo=.c)
87
88$(SQLITE_LOBJS):
89	@echo "Compiling $(@:.lo=.c)"
90	$(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(SQLITE_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.lo=.c)
91
92#$(DBI_LOBJS):
93#	 @echo "Compiling $(@:.lo=.c)"
94#	 $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DBI_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.lo=.c)
95
96$(MYSQL_OBJS):
97	@echo "Compiling $(@:.o=.c)"
98	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(MYSQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
99
100$(POSTGRESQL_OBJS):
101	@echo "Compiling $(@:.o=.c)"
102	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(POSTGRESQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
103
104$(SQLITE_OBJS):
105	@echo "Compiling $(@:.o=.c)"
106	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(SQLITE_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
107
108#$(DBI_OBJS):
109#	 @echo "Compiling $(@:.o=.c)"
110#	 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DBI_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
111#-------------------------------------------------------------------------
112all: Makefile libbacsql$(DEFAULT_ARCHIVE_TYPE) libbaccats$(DEFAULT_ARCHIVE_TYPE) @SHARED_CATALOG_TARGETS@
113	@echo "==== Make of sqllibs is good ===="
114	@echo " "
115
116libbacsql.a: $(LIBBACSQL_OBJS)
117	@echo "Making $@ ..."
118	$(AR) rc  $@ $(LIBBACSQL_OBJS)
119	$(RANLIB) $@
120
121libbaccats.a: $(LIBBACCATS_OBJS)
122	@echo "Making $@ ..."
123	$(AR) rc  $@ $(LIBBACCATS_OBJS)
124	$(RANLIB) $@
125
126libbacsql.la: Makefile $(LIBBACSQL_LOBJS)
127	@echo "Making $@ ..."
128	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(LIBBACSQL_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACSQL_LT_RELEASE) $(DB_LIBS)
129
130libbaccats.la: Makefile cats_null.lo
131	@echo "Making $@ ..."
132	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ cats_null.lo -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE)
133
134libbaccats-mysql.la: Makefile $(MYSQL_LOBJS)
135	@echo "Making $@ ..."
136	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(MYSQL_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
137							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(MYSQL_LIBS)
138
139libbaccats-postgresql.la: Makefile $(POSTGRESQL_LOBJS)
140	@echo "Making $@ ..."
141	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(POSTGRESQL_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
142							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(POSTGRESQL_LIBS)
143
144libbaccats-sqlite3.la: Makefile $(SQLITE_LOBJS)
145	@echo "Making $@ ..."
146	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(SQLITE_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
147							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(SQLITE_LIBS)
148#libbaccats-dbi.la: Makefile $(DBI_LOBJS)
149#	 @echo "Making $@ ..."
150#	 $(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(DBI_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
151#							    -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(DBI_LIBS)
152
153Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
154	cd $(topdir) \
155	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
156
157libtool-clean:
158	@find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF)
159	@$(RMF) *.la
160	@$(RMF) -r .libs _libs
161
162clean:	libtool-clean
163	@$(RMF) core a.out *.o *.bak *~ *.intpro *.extpro 1 2 3
164
165realclean: clean
166	$(RMF) tags
167
168	$(RMF) create_bacula_database	   update_bacula_tables     make_bacula_tables
169	$(RMF) grant_bacula_privileges	   drop_bacula_tables	    drop_bacula_database
170
171	$(RMF) create_mysql_database	   update_mysql_tables	    make_mysql_tables
172	$(RMF) grant_mysql_privileges	   drop_mysql_tables	    drop_mysql_database
173
174	$(RMF) create_postgresql_database  update_postgresql_tables make_postgresql_tables
175	$(RMF) grant_postgresql_privileges drop_postgresql_tables   drop_postgresql_database
176
177	$(RMF) create_sqlite_database	   update_sqlite_tables     make_sqlite_tables
178	$(RMF) grant_sqlite_privileges	   drop_sqlite_tables	    drop_sqlite_database
179
180	$(RMF) create_sqlite3_database	   update_sqlite3_tables     make_sqlite3_tables
181	$(RMF) grant_sqlite3_privileges    drop_sqlite3_tables	    drop_sqlite3_database
182
183	$(RMF) mysql sqlite postgresql
184	$(RMF) make_catalog_backup make_catalog_backup.pl delete_catalog_backup
185
186distclean: realclean
187	if test $(srcdir) = .; then $(MAKE) realclean; fi
188	(cd $(srcdir); $(RMF) Makefile)
189
190devclean: realclean
191	if test $(srcdir) = .; then $(MAKE) realclean; fi
192	(cd $(srcdir); $(RMF) Makefile)
193
194install-includes:
195	$(MKDIR) $(DESTDIR)/$(includedir)/bacula/sql
196	for I in $(INCLUDE_FILES); do \
197	   $(INSTALL_DATA) $$I $(DESTDIR)$(includedir)/bacula/sql/`basename $$I`; \
198	done
199
200uninstall-includes:
201	for I in $(INCLUDE_FILES); do \
202	   $(RMF) $(DESTDIR)$(includedir)/bacula/sql/`basename $$I`; \
203	done
204
205libtool-install: all
206	$(MKDIR) $(DESTDIR)$(libdir)
207	$(RMF) $(DESTDIR)$(libdir)/libbacsql-*.so $(DESTDIR)$(libdir)/libbacsql.la
208	$(RMF) $(DESTDIR)$(libdir)/libbaccats-*.so $(DESTDIR)$(libdir)/libbaccats.la
209	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbacsql.la $(DESTDIR)$(libdir)
210	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbaccats.la $(DESTDIR)$(libdir)
211	for db_type in @DB_BACKENDS@; do \
212	    $(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbaccats-$${db_type}.la $(DESTDIR)$(libdir); \
213	done
214	./install-default-backend @DEFAULT_DB_TYPE@ $(LIBBACCATS_LT_RELEASE) $(DESTDIR)$(libdir)
215
216libtool-uninstall:
217	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(libdir)/libbacsql.la
218	$(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(libdir)/libbaccats.la
219	for db_type in @DB_BACKENDS@; do \
220	    $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(libdir)/libbacsql-$${db_type}.la; \
221	done
222
223install: @LIBTOOL_INSTALL_TARGET@ @INCLUDE_INSTALL_TARGET@
224	for db_type in @DB_BACKENDS@; do \
225	    if [ -f create_$${db_type}_database ]; then \
226	    $(INSTALL_SCRIPT) create_$${db_type}_database $(DESTDIR)$(scriptdir)/create_$${db_type}_database; \
227	    $(INSTALL_SCRIPT) update_$${db_type}_tables $(DESTDIR)$(scriptdir)/update_$${db_type}_tables; \
228	    $(INSTALL_SCRIPT) make_$${db_type}_tables $(DESTDIR)$(scriptdir)/make_$${db_type}_tables; \
229	    $(INSTALL_SCRIPT) grant_$${db_type}_privileges $(DESTDIR)$(scriptdir)/grant_$${db_type}_privileges; \
230	    $(INSTALL_SCRIPT) drop_$${db_type}_tables $(DESTDIR)$(scriptdir)/drop_$${db_type}_tables; \
231	    $(INSTALL_SCRIPT) drop_$${db_type}_database $(DESTDIR)$(scriptdir)/drop_$${db_type}_database; \
232	    fi; \
233	done
234
235	$(INSTALL_SCRIPT) create_bacula_database $(DESTDIR)$(scriptdir)/create_bacula_database
236	$(INSTALL_SCRIPT) update_bacula_tables $(DESTDIR)$(scriptdir)/update_bacula_tables
237	$(INSTALL_SCRIPT) make_bacula_tables $(DESTDIR)$(scriptdir)/make_bacula_tables
238	$(INSTALL_SCRIPT) grant_bacula_privileges $(DESTDIR)$(scriptdir)/grant_bacula_privileges
239	$(INSTALL_SCRIPT) drop_bacula_tables $(DESTDIR)$(scriptdir)/drop_bacula_tables
240	$(INSTALL_SCRIPT) drop_bacula_database $(DESTDIR)$(scriptdir)/drop_bacula_database
241
242	@filename=make_catalog_backup.pl; \
243	   if  test -f $(DESTDIR)$(scriptdir)/$$filename; then \
244	      destname=$$filename.new; \
245	      echo "  ==> Found existing $$filename, installing new file as $$destname"; \
246	   else \
247	      destname=$$filename; \
248	   fi; \
249	   echo "$(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname"; \
250	   $(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname
251	@filename=make_catalog_backup; \
252	   if  test -f $(DESTDIR)$(scriptdir)/$$filename; then \
253	      destname=$$filename.new; \
254	      echo "  ==> Found existing $$filename, installing new file as $$destname"; \
255	   else \
256	      destname=$$filename; \
257	   fi; \
258	   echo "$(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname"; \
259	   $(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname
260	@filename=delete_catalog_backup; \
261	   if  test -f $(DESTDIR)$(scriptdir)/$$filename; then \
262	      destname=$$filename.new; \
263	      echo "  ==> Found existing $$filename, installing new file as $$destname"; \
264	   else \
265	      destname=$$filename; \
266	   fi; \
267	   echo "$(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname"; \
268	   $(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname
269
270uninstall: @LIBTOOL_UNINSTALL_TARGET@ @INCLUDE_UNINSTALL_TARGET@
271	@for db_type in @DB_BACKENDS@; do \
272	    (cd $(DESTDIR)$(scriptdir); $(RMF) create_$${db_type}_database); \
273	    (cd $(DESTDIR)$(scriptdir); $(RMF) update_$${db_type}_tables); \
274	    (cd $(DESTDIR)$(scriptdir); $(RMF) make_$${db_type}_tables); \
275	    (cd $(DESTDIR)$(scriptdir); $(RMF) grant_$${db_type}_privileges); \
276	    (cd $(DESTDIR)$(scriptdir); $(RMF) drop_$${db_type}_tables); \
277	    (cd $(DESTDIR)$(scriptdir); $(RMF) drop_$${db_type}_database); \
278	done
279
280	(cd $(DESTDIR)$(scriptdir); $(RMF) create_bacula_database)
281	(cd $(DESTDIR)$(scriptdir); $(RMF) update_bacula_tables)
282	(cd $(DESTDIR)$(scriptdir); $(RMF) make_bacula_tables)
283	(cd $(DESTDIR)$(scriptdir); $(RMF) grant_bacula_privileges)
284	(cd $(DESTDIR)$(scriptdir); $(RMF) drop_bacula_tables)
285	(cd $(DESTDIR)$(scriptdir); $(RMF) drop_bacula_database)
286
287	(cd $(DESTDIR)$(scriptdir); $(RMF) make_catalog_backup)
288	(cd $(DESTDIR)$(scriptdir); $(RMF) make_catalog_backup.pl)
289	(cd $(DESTDIR)$(scriptdir); $(RMF) delete_catalog_backup)
290
291# Semi-automatic generation of dependencies:
292# Use gcc -M because X11 `makedepend' doesn't work on all systems
293# and it also includes system headers.
294# `semi'-automatic since dependencies are generated at distribution time.
295
296depend:
297	@$(MV) Makefile Makefile.bak
298	@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
299	@$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
300	@for src in $(LIBBACSQL_SRCS); do \
301	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(DEFS) -I$(srcdir) -I$(basedir) $$src >> Makefile; \
302	done
303	@for src in $(MYSQL_SRCS); do \
304	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(DEFS) -I$(srcdir) -I$(basedir) $(MYSQL_INCLUDE) $$src >> Makefile; \
305	done
306	@for src in $(POSTGRESQL_SRCS); do \
307	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(DEFS) -I$(srcdir) -I$(basedir) $(POSTGRESQL_INCLUDE) $$src >> Makefile; \
308	done
309	@for src in $(SQLITE_SRCS); do \
310	    $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(DEFS) -I$(srcdir) -I$(basedir) $(SQLITE_INCLUDE) $$src >> Makefile; \
311	done
312#	 @for src in $(DBI_SRCS); do \
313#	     $(CXX) -S -M -MT `basename $$src .c`$(DEFAULT_OBJECT_TYPE) $(CPPFLAGS) $(XINC) $(DEFS) -I$(srcdir) -I$(basedir) $(DBI_INCLUDE) $$src >> Makefile; \
314#	 done
315	@if test -f Makefile ; then \
316	    $(RMF) Makefile.bak; \
317	else \
318	   $(MV) Makefile.bak Makefile; \
319	   echo " ===== Something went wrong in make depend ====="; \
320	fi
321
322# -----------------------------------------------------------------------
323# DO NOT DELETE: nice dependency list follows
324