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