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