From: Radosław Korzeniewski Date: Thu, 11 Feb 2021 16:20:22 +0000 (+0100) Subject: build: Refactor FD Plugins build procedures. X-Git-Tag: Release-11.3.2~695 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84be5a6f02d19986ac589c31b1d819462f91e209;p=thirdparty%2Fbacula.git build: Refactor FD Plugins build procedures. --- diff --git a/bacula/autoconf/configure.in b/bacula/autoconf/configure.in index 0c2fca889..64fc3f7c2 100644 --- a/bacula/autoconf/configure.in +++ b/bacula/autoconf/configure.in @@ -3252,8 +3252,7 @@ if test x$support_docker = xyes -o x$support_docker = xauto; then AC_CHECK_PROG(docker_bin, docker, yes, no, "/usr/bin/") if test x$docker_bin = xyes; then support_docker=yes - FD_PLUGIN_DIR="$FD_PLUGIN_DIR src/plugins/fd/docker" - PLUGCONFILES="${PLUGCONFILES} src/plugins/fd/docker/Makefile" + FD_PLUGIN_DIR="${FD_PLUGIN_DIR} src/plugins/fd/docker" else if test x$support_docker = xyes; then echo " " @@ -3354,7 +3353,7 @@ if test x$support_ldap_bpam = xyes -o x$support_ldap_bpam = xauto; then fi fi if test x$support_ldap_bpam = xyes; then - DIR_PLUGIN_DIR="$DIR_PLUGIN_DIR src/plugins/dir/ldap/src" + DIR_PLUGIN_DIR="${DIR_PLUGIN_DIR} src/plugins/dir/ldap/src" PLUGCONFILES="${PLUGCONFILES} src/plugins/dir/ldap/src/Makefile" fi @@ -3840,7 +3839,7 @@ AC_CONFIG_FILES([ src/findlib/Makefile \ src/tools/Makefile \ src/plugins/fd/Makefile \ - src/plugins/fd/pluginlib/Makefile \ + src/plugins/fd/Makefile.inc \ src/plugins/sd/Makefile \ src/plugins/dir/Makefile \ po/Makefile.in \ diff --git a/bacula/src/plugins/fd/Makefile.in b/bacula/src/plugins/fd/Makefile.in index 9e131ea4b..b48a4456a 100644 --- a/bacula/src/plugins/fd/Makefile.in +++ b/bacula/src/plugins/fd/Makefile.in @@ -5,20 +5,8 @@ # License: BSD 2-Clause; see file LICENSE-FOSS # # -@MCOMMON@ - -# No optimization for now for easy debugging - -FDDIR=../../filed -SRCDIR=../.. -LIBDIR=../../lib -PLUGINLIBDIR=./pluginlib - -topdir = @BUILD_DIR@ -thisdir = src/plugins/fd - -.SUFFIXES: .c .lo +include Makefile.inc .c.lo: $(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -DTEST_PROGRAM -c $< @@ -61,9 +49,12 @@ install-test-plugin: all $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) test-deltaseq-fd.la $(DESTDIR)$(plugindir) $(RMF) $(DESTDIR)$(plugindir)/test-deltaseq-fd.la +install-docker: + $(MAKE) -C docker install + Makefile: Makefile.in $(topdir)/config.status cd $(topdir) \ - && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + && CONFIG_FILES=$(FDPLUGDIR)/$@ CONFIG_HEADERS= $(SHELL) ./config.status libtool-clean: @find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF) @@ -80,6 +71,6 @@ distclean: clean libtool-uninstall: $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/bpipe-fd.so -uninstall: @LIBTOOL_UNINSTALL_TARGET@ +uninstall: $(LIBTOOL_UNINSTALL_TARGET) depend: diff --git a/bacula/src/plugins/fd/Makefile.inc.in b/bacula/src/plugins/fd/Makefile.inc.in new file mode 100644 index 000000000..fdc8a20a8 --- /dev/null +++ b/bacula/src/plugins/fd/Makefile.inc.in @@ -0,0 +1,29 @@ +# +# Makefile for building FD plugins PluginLibrary for Bacula +# +# Copyright (C) 2000-2020 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS +# +# Author: Radoslaw Korzeniewski, radoslaw@korzeniewski.net +# + +@MCOMMON@ + +topdir = @BUILD_DIR@ +working_dir = @working_dir@ +SYBASE_TMPDIR = @sybase_tmpdir@ +SYBASE_CONFIG = @sysconfdir@/sbt.conf +ORACLE_TMPDIR = @oracle_tmpdir@ +SAP_TMPDIR = @sap_tmpdir@ +RMAN_SCRIPT_DIR = @sysconfdir@ +RSYNC_INC = @RSYNC_INC@ +RSYNC_LIBS = @RSYNC_LIBS@ +LIBTOOL_UNINSTALL_TARGET = @LIBTOOL_UNINSTALL_TARGET@ + +SRCDIR = $(topdir)/src +FDDIR = $(SRCDIR)/filed +LIBDIR = $(SRCDIR)/lib +FDPLUGDIR = $(SRCDIR)/plugins/fd +PLUGINLIBDIR = $(FDPLUGDIR)/pluginlib + +.SUFFIXES: .c .cpp .lo diff --git a/bacula/src/plugins/fd/docker/Makefile b/bacula/src/plugins/fd/docker/Makefile new file mode 100644 index 000000000..2356c87be --- /dev/null +++ b/bacula/src/plugins/fd/docker/Makefile @@ -0,0 +1,75 @@ +# +# Makefile for building FD plugins PluginLibrary for Bacula +# +# Copyright (C) 2000-2020 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS +# +# Author: Radoslaw Korzeniewski, radoslaw@korzeniewski.net +# + +include ../Makefile.inc + +thisdir = $(FDPLUGDIR)/docker + +UNITTESTSOBJ = $(LIBDIR)/unittests.lo +LIBBACOBJ = $(LIBDIR)/libbac.la + +DOCKERSRC = dkid.c dkinfo.c dkcommctx.c docker-fd.c +DOCKERSRCH = dkid.h dkinfo.h dkcommctx.h docker-fd.h +DOCKEROBJ = $(DOCKERSRC:.c=.lo) +DOCKERTESTS = dkid_test + +all: docker-fd.la + +tests: $(DOCKERTESTS) + +.c.lo: + @echo "Compiling $< ..." + $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -I${FDPLUGDIR} -I${LIBDIR} -DWORKDIR=\"$(DESTDIR)$(working_dir)\" -c $< + +%.lo: %.c %.h + @echo "Pattern compiling $< ..." + $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -I${FDPLUGDIR} -I${LIBDIR} -DWORKDIR=\"$(DESTDIR)$(working_dir)\" -c $(@:.lo=.c) + +$(PLUGINLIBDIR)/pluginlib.lo: + $(MAKE) -C $(PLUGINLIBDIR) pluginlib.lo + +$(UNITTESTSOBJ): + $(MAKE) -C $(LIBDIR) unittests.lo + +$(LIBBACOBJ): + $(MAKE) -C $(LIBDIR) libbac.la + +docker-fd.la: Makefile $(DOCKEROBJ) $(PLUGINLIBDIR)/pluginlib.lo $(DOCKERSRCH) $(LIBDIR)/libbac.la + @echo "Linking $(@:.la=.so) ..." + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -shared $^ -o $@ -rpath $(plugindir) -module -export-dynamic -avoid-version + +dkid_test: Makefile dkid.lo dkid_test.lo $(UNITTESTSOBJ) $(LIBBACOBJ) + @echo "Building $@ ..." + $(NO_ECHO)$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L$(LIBDIR) -o $@ dkid.lo dkid_test.lo $(UNITTESTSOBJ) $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS) + +install: all install-docker + +install-docker: docker-fd.la + @echo "Installing plugin $(^:.la=.so) ..." + $(MKDIR) $(DESTDIR)$(plugindir) + $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) docker-fd.la $(DESTDIR)$(plugindir) + $(NO_ECHO)$(RMF) $(DESTDIR)$(plugindir)/docker-fd.la + +libtool-clean: + @find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF) + @find . -name '*.la' -print | xargs $(LIBTOOL_CLEAN) $(RMF) + @$(RMF) -r .libs _libs + +clean: libtool-clean + @$(RMF) -f main *.so *.o + @$(RMF) -f $(DOCKERTESTS) + +distclean: clean + +libtool-uninstall: + $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/docker-fd.so + +depend: + +uninstall: $(LIBTOOL_UNINSTALL_TARGET) diff --git a/bacula/src/plugins/fd/docker/Makefile.in b/bacula/src/plugins/fd/docker/Makefile.in deleted file mode 100644 index fcc66ef5f..000000000 --- a/bacula/src/plugins/fd/docker/Makefile.in +++ /dev/null @@ -1,90 +0,0 @@ -# -# Simple Makefile for building test FD plugins for Bacula -# -# Copyright (C) 2000-2015 by Kern Sibbald -# License: BSD 2-Clause; see file LICENSE-FOSS -# -# -@MCOMMON@ - -# No optimization for now for easy debugging - -FDPLUGDIR=.. -SRCDIR=$(FDPLUGDIR)/../.. -FDDIR=$(SRCDIR)/filed -LIBDIR=$(SRCDIR)/lib -PLUGINLIBDIR=$(FDPLUGDIR)/pluginlib - -topdir = @BUILD_DIR@ -working_dir=@working_dir@ -thisdir = src/plugins/fd/docker - -DOCKERSRC = dkid.c dkinfo.c dkcommctx.c docker-fd.c -DOCKERSRCH = dkid.h dkinfo.h dkcommctx.h docker-fd.h -DOCKEROBJ = $(DOCKERSRC:.c=.lo) - -.SUFFIXES: .c .lo - -all: docker-fd.la - -.c.lo: - @echo "Compiling $< ..." - $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -I${FDPLUGDIR} -DWORKDIR=\"$(DESTDIR)$(working_dir)\" -c $< - -%.lo: %.c %.h Makefile - @echo "Compiling $< ..." - $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -I${FDPLUGDIR} -DWORKDIR=\"$(DESTDIR)$(working_dir)\" -c $(@:.lo=.c) - -$(PLUGINLIBDIR)/pluginlib.lo: $(PLUGINLIBDIR)/pluginlib.cpp $(PLUGINLIBDIR)/pluginlib.h - $(MAKE) -C $(PLUGINLIBDIR) pluginlib.lo - -docker-fd.la: Makefile $(DOCKEROBJ) $(PLUGINLIBDIR)/pluginlib.lo $(DOCKERSRCH) - @echo "Linking $(@:.la=.so) ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -shared $^ -o $@ -rpath $(plugindir) -module -export-dynamic -avoid-version - -$(LIBDIR)/unittests.o: $(LIBDIR)/unittests.c - $(MAKE) -C $(LIBDIR) unittests.o - -test_dkid: Makefile dkid.c $(LIBDIR)/unittests.o - $(RMF) dkid.o - $(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(SRCDIR) -I$(LIBDIR) $(DINCLUDE) $(CFLAGS) dkid.c - $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L$(LIBDIR) -o $@ dkid.o $(LIBDIR)/unittests.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS) - $(RMF) dkid.o - -install: all - $(MKDIR) $(DESTDIR)$(plugindir) - $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) docker-fd.la $(DESTDIR)$(plugindir) - $(NO_ECHO)$(RMF) $(DESTDIR)$(plugindir)/docker-fd.la - -install-test-plugin: all - $(MKDIR) $(DESTDIR)$(plugindir) - $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) docker-fd.la $(DESTDIR)$(plugindir) - $(NO_ECHO)$(RMF) $(DESTDIR)$(plugindir)/docker-fd.la - $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) test_docker $(DESTDIR)$(sbindir) - -Makefile: Makefile.in $(topdir)/config.status - cd $(topdir) \ - && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -libtool-clean: - @find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF) - @$(RMF) *.la - @$(RMF) -r .libs _libs - -test_docker-clean: - @$(RMF) test_docker - -clean: libtool-clean test_docker-clean - @rm -f main *.so *.o - -distclean: clean - @rm -f Makefile *.la *.lo - @rm -rf .libs - -libtool-uninstall: - $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/docker-fd.so - $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/test_docker - -uninstall: @LIBTOOL_UNINSTALL_TARGET@ - -depend: diff --git a/bacula/src/plugins/fd/pluginlib/Makefile.in b/bacula/src/plugins/fd/pluginlib/Makefile similarity index 65% rename from bacula/src/plugins/fd/pluginlib/Makefile.in rename to bacula/src/plugins/fd/pluginlib/Makefile index de9a16f5e..a4566cbd3 100644 --- a/bacula/src/plugins/fd/pluginlib/Makefile.in +++ b/bacula/src/plugins/fd/pluginlib/Makefile @@ -3,24 +3,14 @@ # # Copyright (C) 2000-2020 Kern Sibbald # License: BSD 2-Clause; see file LICENSE-FOSS +# +# Author: Radoslaw Korzeniewski, radoslaw@korzeniewski.net +# -# Author: Radoslaw Korzeniewski, radekk@inteos.pl, Inteos Sp. z o.o. - -@MCOMMON@ - -# No optimization for now for easy debugging - -SRCDIR = ../../.. -FDDIR = $(SRCDIR)/filed -LIBDIR = $(SRCDIR)/lib -FINDLIBDIR = $(SRCDIR)/findlib -FDPLUGDIR=.. - -topdir = @BUILD_DIR@ -working_dir=@working_dir@ -thisdir = src/plugins/fd/pluginlib +include ../Makefile.inc UNITTESTSOBJ = $(LIBDIR)/unittests.lo +LIBBACOBJ = $(LIBDIR)/libbac.la PLUGINLIBSSRC = pluginlib.cpp pluginlib.h PLUGINLIBSOBJ = $(filter %.lo,$(PLUGINLIBSSRC:.cpp=.lo)) @@ -52,13 +42,9 @@ TESTMETAPLUGINBACKENDOBJ = $(TESTMETAPLUGINBACKENDSRC:.c=.lo) # COMMONPLUGINOBJ = $(PLUGINLIBSOBJ) $(ISO8601OBJ) $(EXECPROGOBJ) COMMONPLUGINOBJ = $(PLUGINLIBSOBJ) $(PTCOMMOBJ) -# COMMONPLUGINTESTS = pluginlib_test iso8601_test +# COMMONPLUGINTESTS = iso8601_test COMMONPLUGINTESTS = pluginlib_test smartalist_test smartptr_test commctx_test -.SUFFIXES: .c .cpp .lo - -LIBBAC = -lbac -L$(LIBDIR)/.libs - .c.lo: @echo "Compiling $< ..." $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I$(SRCDIR) -I$(FDDIR) -I$(FDPLUGDIR) -I$(LIBDIR) -I$(FINDLIBDIR) -I. -c $< @@ -71,60 +57,58 @@ LIBBAC = -lbac -L$(LIBDIR)/.libs @echo "Pattern compiling c++ $< ..." $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I$(SRCDIR) -I$(FDDIR) -I$(FDPLUGDIR) -I$(LIBDIR) -I$(FINDLIBDIR) -I. -c $< -all: $(COMMONPLUGINOBJ) $(COMMONPLUGINTESTS) $(TESTMETAPLUGINBACKENDOBJ) +all: $(COMMONPLUGINOBJ) # $(TESTMETAPLUGINBACKENDOBJ) + +tests: $(COMMONPLUGINTESTS) $(UNITTESTSOBJ): $(MAKE) -C $(LIBDIR) unittests.lo -test_metaplugin_backend.lo: $(TESTMETAPLUGINBACKENDSRC) +$(LIBBACOBJ): + $(MAKE) -C $(LIBDIR) libbac.la + +test_metaplugin_backend.lo: Makefile $(TESTMETAPLUGINBACKENDSRC) @echo "Compiling backend $< ..." $(NO_ECHO)$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I${SRCDIR} -I${FDDIR} -DLOGDIR=\"$(DESTDIR)$(working_dir)\" -c $< -pluginlib_test: Makefile $(PLUGINLIBSTESTOBJ) $(PLUGINLIBSTEST) +pluginlib_test: Makefile $(PLUGINLIBSTESTOBJ) $(PLUGINLIBSTEST) $(UNITTESTSOBJ) $(LIBBACOBJ) @echo "Building $@ ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) $(LIBCURL) $(LIBBAC) $(PLUGINLIBSTESTOBJ) -o $@ + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -L$(LIBDIR) -lbac $(PLUGINLIBSTESTOBJ) -o $@ -smartalist_test: Makefile $(SMARTALISTTESTOBJ) $(SMARTALISTTEST) +smartalist_test: Makefile $(SMARTALISTTESTOBJ) $(SMARTALISTTEST) $(UNITTESTSOBJ) $(LIBBACOBJ) @echo "Building $@ ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) $(LIBCURL) $(LIBBAC) $(SMARTALISTTESTOBJ) -o $@ + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -L$(LIBDIR) -lbac $(SMARTALISTTESTOBJ) -o $@ -smartptr_test: Makefile $(SMARTPTRTESTOBJ) $(SMARTPTRTEST) +smartptr_test: Makefile $(SMARTPTRTESTOBJ) $(SMARTPTRTEST) $(UNITTESTSOBJ) $(LIBBACOBJ) @echo "Building $@ ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) $(LIBCURL) $(LIBBAC) $(SMARTPTRTESTOBJ) -o $@ + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -L$(LIBDIR) -lbac $(SMARTPTRTESTOBJ) -o $@ -commctx_test: Makefile $(COMMCTXTESTOBJ) $(COMMCTXTEST) +commctx_test: Makefile $(COMMCTXTESTOBJ) $(COMMCTXTEST) $(UNITTESTSOBJ) $(LIBBACOBJ) @echo "Building $@ ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) $(LIBCURL) $(LIBBAC) $(COMMCTXTESTOBJ) -o $@ + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -L$(LIBDIR) -lbac $(COMMCTXTESTOBJ) -o $@ -iso8601_test: Makefile $(ISO8601TESTOBJ) $(ISO8601SRC) +iso8601_test: Makefile $(ISO8601TESTOBJ) $(ISO8601SRC) $(UNITTESTSOBJ) $(LIBBACOBJ) @echo "Building $@ ..." - $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) $(LIBCURL) $(LIBBAC) $(PLUGINLIBSTESTOBJ) -o $@ + $(NO_ECHO)$(LIBTOOL_LINK) --silent $(CXX) $(LDFLAGS) -L$(LIBDIR) -lbac $(PLUGINLIBSTESTOBJ) -o $@ install: all $(MKDIR) $(DESTDIR)$(plugindir) $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) bpipe-fd.la $(DESTDIR)$(plugindir) $(RMF) $(DESTDIR)$(plugindir)/bpipe-fd.la -Makefile: Makefile.in $(topdir)/config.status - cd $(topdir) \ - && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - libtool-clean: @find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF) - @$(RMF) *.la + @find . -name '*.la' -print | xargs $(LIBTOOL_CLEAN) $(RMF) @$(RMF) -r .libs _libs -clean: libtool-clean - @rm -f main *.so *.o 1 2 3 +clean: libtool-clean + @rm -f main *.so *.o @rm -f $(COMMONPLUGINTESTS) distclean: clean - @rm -f Makefile *.la *.lo - @rm -rf .libs libtool-uninstall: - $(LIBTOOL_UNINSTALL) $(RMF) $(DESTDIR)$(plugindir)/bpipe-fd.so - -uninstall: @LIBTOOL_UNINSTALL_TARGET@ depend: + +uninstall: $(LIBTOOL_UNINSTALL_TARGET)