2 # Copyright (C) 2000-2015 Kern Sibbald
3 # License: BSD 2-Clause; see file LICENSE-FOSS
14 # this dir relative to top dir
17 #CPPFLAGS += -DCATS_PRIVATE_DBI @DBI_DBD_DRIVERDIR@
18 CPPFLAGS += -DCATS_PRIVATE_DBI
21 MKDIR=$(topdir)/autoconf/mkinstalldirs
27 # include files installed when using libtool
29 INCLUDE_FILES = cats.h protos.h sql_cmds.h
31 MYSQL_INCLUDE = @MYSQL_INCLUDE@
32 MYSQL_LIBS = @MYSQL_LIBS@
34 MYSQL_OBJS = $(MYSQL_SRCS:.c=.o)
35 MYSQL_LOBJS = $(MYSQL_SRCS:.c=.lo)
37 POSTGRESQL_INCLUDE = @POSTGRESQL_INCLUDE@
38 POSTGRESQL_LIBS = @POSTGRESQL_LIBS@
39 POSTGRESQL_SRCS = postgresql.c
40 POSTGRESQL_OBJS = $(POSTGRESQL_SRCS:.c=.o)
41 POSTGRESQL_LOBJS = $(POSTGRESQL_SRCS:.c=.lo)
43 SQLITE_INCLUDE = @SQLITE_INCLUDE@
44 SQLITE_LIBS = @SQLITE_LIBS@
45 SQLITE_SRCS = sqlite.c
46 SQLITE_OBJS = $(SQLITE_SRCS:.c=.o)
47 SQLITE_LOBJS = $(SQLITE_SRCS:.c=.lo)
49 #DBI_INCLUDE = @DBI_INCLUDE@
50 #DBI_LIBS = @DBI_LIBS@
52 #DBI_OBJS = $(DBI_SRCS:.c=.o)
53 #DBI_LOBJS = $(DBI_SRCS:.c=.lo)
57 CATS_SRCS = mysql.c postgresql.c sqlite.c
58 LIBBACSQL_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
60 LIBBACSQL_OBJS = $(LIBBACSQL_SRCS:.c=.o)
61 LIBBACCATS_OBJS = $(CATS_SRCS:.c=.o)
62 LIBBACSQL_LOBJS = $(LIBBACSQL_SRCS:.c=.lo)
64 LIBBACSQL_LT_RELEASE = @LIBBACSQL_LT_RELEASE@
65 LIBBACCATS_LT_RELEASE = @LIBBACCATS_LT_RELEASE@
74 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
78 $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
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)
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)
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)
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)
97 @echo "Compiling $(@:.o=.c)"
98 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(MYSQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
101 @echo "Compiling $(@:.o=.c)"
102 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(POSTGRESQL_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
105 @echo "Compiling $(@:.o=.c)"
106 $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(SQLITE_INCLUDE) $(DINCLUDE) $(CFLAGS) $(@:.o=.c)
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 #-------------------------------------------------------------------------
112 all: Makefile libbacsql$(DEFAULT_ARCHIVE_TYPE) libbaccats$(DEFAULT_ARCHIVE_TYPE) @SHARED_CATALOG_TARGETS@
113 @echo "==== Make of sqllibs is good ===="
116 libbacsql.a: $(LIBBACSQL_OBJS)
117 @echo "Making $@ ..."
118 $(AR) rc $@ $(LIBBACSQL_OBJS)
121 libbaccats.a: $(LIBBACCATS_OBJS)
122 @echo "Making $@ ..."
123 $(AR) rc $@ $(LIBBACCATS_OBJS)
126 libbacsql.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)
130 libbaccats.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)
134 libbaccats-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)
139 libbaccats-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)
144 libbaccats-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)
153 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
155 && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
158 @find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF)
160 @$(RMF) -r .libs _libs
163 @$(RMF) core a.out *.o *.bak *~ *.intpro *.extpro 1 2 3
168 $(RMF) create_bacula_database update_bacula_tables make_bacula_tables
169 $(RMF) grant_bacula_privileges drop_bacula_tables drop_bacula_database
171 $(RMF) create_mysql_database update_mysql_tables make_mysql_tables
172 $(RMF) grant_mysql_privileges drop_mysql_tables drop_mysql_database
174 $(RMF) create_postgresql_database update_postgresql_tables make_postgresql_tables
175 $(RMF) grant_postgresql_privileges drop_postgresql_tables drop_postgresql_database
177 $(RMF) create_sqlite_database update_sqlite_tables make_sqlite_tables
178 $(RMF) grant_sqlite_privileges drop_sqlite_tables drop_sqlite_database
180 $(RMF) create_sqlite3_database update_sqlite3_tables make_sqlite3_tables
181 $(RMF) grant_sqlite3_privileges drop_sqlite3_tables drop_sqlite3_database
183 $(RMF) mysql sqlite postgresql
184 $(RMF) make_catalog_backup make_catalog_backup.pl delete_catalog_backup
187 if test $(srcdir) = .; then $(MAKE) realclean; fi
188 (cd $(srcdir); $(RMF) Makefile)
191 if test $(srcdir) = .; then $(MAKE) realclean; fi
192 (cd $(srcdir); $(RMF) Makefile)
195 $(MKDIR) $(DESTDIR)/$(includedir)/bacula/sql
196 for I in $(INCLUDE_FILES); do \
197 $(INSTALL_DATA) $$I $(DESTDIR)$(includedir)/bacula/sql/`basename $$I`; \
201 for I in $(INCLUDE_FILES); do \
202 $(RMF) $(DESTDIR)$(includedir)/bacula/sql/`basename $$I`; \
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); \
214 ./install-default-backend @DEFAULT_DB_TYPE@ $(LIBBACCATS_LT_RELEASE) $(DESTDIR)$(libdir)
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; \
223 install: @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; \
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
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"; \
247 destname=$$filename; \
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"; \
256 destname=$$filename; \
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"; \
265 destname=$$filename; \
267 echo "$(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname"; \
268 $(INSTALL_SCRIPT) $$filename $(DESTDIR)$(scriptdir)/$$destname
270 uninstall: @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); \
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)
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)
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.
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; \
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; \
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; \
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; \
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; \
315 @if test -f Makefile ; then \
316 $(RMF) Makefile.bak; \
318 $(MV) Makefile.bak Makefile; \
319 echo " ===== Something went wrong in make depend ====="; \
322 # -----------------------------------------------------------------------
323 # DO NOT DELETE: nice dependency list follows