I'm not sure why this in necessary. First, it's very linux specific, libtool and gcc and ld version specific.
Does the standard libtool "--enable-shared --disable-static" not work? It's been a while since I had time or need to backport to solaris, but that used to be all that was necessary to get shared libraries without static libs. Does "--enable-pkg-libs" not build a set of installable shared libraries? Does "make install" not install them properly? Does "--enable-pkg-devel" not provide for an installable development package? Does "--enable-dynamic-client-linkage" no longer build a dynamically linked client? If these mechanism aren't working, it's better to fix the existing mechanisms than to add a new one that duplicates functionality. On Tue, Jun 17, 2014 at 6:11 AM, Gianfranco Costamagna < [email protected]> wrote: > Hi Boinc development team, > > as you already know debian has a little patched boinc version that > dynamically links almost everything and exports those libraries to > applications that uses them (e.g. seti, milkyway) > > > > This approach has never been merged upstream since you don't want to > dynamically link almost anything in your source tree, however since in > debian we have really nice results I decided to merge my patches and give > you a single patch with a new autoconf swich, that permits distros who > wants to automagically dynamically build the source code. > > This approach is disabled by default, so the current behaviour will still > be the default > what do you think about? > > This will simplify a lot the debian maintaining of your package. > > Thanks, > > > > > Gianfranco > > --- /dev/null > +++ b/debian/patches/dynamic-libs.patch > @@ -0,0 +1,203 @@ > +--- a/configure.ac > ++++ b/configure.ac > +@@ -71,6 +71,11 @@ > + [dynamic_client=${enableval}], > + [dynamic_client=no]) > + > ++AC_ARG_ENABLE(dynamic-libs, > ++ AS_HELP_STRING([--enable-dynamic-libs], > ++ [build dynamic libraries]), > ++ [dynamic_libs=yes]) > ++ > + AC_ARG_ENABLE(server, > + AS_HELP_STRING([--disable-server], > + [disable building the scheduling server]), > +@@ -949,6 +954,7 @@ > + > + dnl tell automake about whether to build client and/or server > + AM_CONDITIONAL(DYNAMIC_CLIENT, [test "${dynamic_client}" = yes]) > ++AM_CONDITIONAL(DYNAMIC_LIBS, [test "x${dynamic_libs}" = xyes]) > + AM_CONDITIONAL(ENABLE_SERVER, [test "${enable_server}" = yes]) > + AM_CONDITIONAL(ENABLE_CLIENT, [test "${enable_client}" = yes]) > + AM_CONDITIONAL(ENABLE_MANAGER, [ test "x${ac_cv_have_wxwidgets}" = xyes > -a "${enable_manager}" = yes ]) > +--- a/Makefile.incl > ++++ b/Makefile.incl > +@@ -41,26 +41,36 @@ > + # dependencies to make sure libs gets compiled before > + # programs linking to them: > + > +-LIBSCHED = $(top_builddir)/sched/libsched.la > ++if DYNAMIC_LIBS > ++ LIBSCHED = -lsched > ++ LIBSCHED_FCGI = -lsched_fcgi > ++ LIBBOINC = -lboinc > ++ LIBBOINC_CRYPT = -lboinc_crypt > ++ LIBBOINC_FCGI = -lboinc_fcgi > ++ LIBAPI = -lboinc_api > ++else > ++ LIBSCHED = $(top_builddir)/sched/libsched.la > ++ LIBSCHED_FCGI = $(top_builddir)/sched/libsched_fcgi.la > ++ LIBBOINC = $(top_builddir)/lib/libboinc.la > ++ LIBBOINC_CRYPT = $(top_builddir)/lib/libboinc_crypt.la > ++ LIBBOINC_FCGI = $(top_builddir)/lib/libboinc_fcgi.la > ++ LIBAPI = $(top_builddir)/api/libboinc_api.la > ++endif > ++ > + $(LIBSCHED): > + cd $(top_builddir)/sched; ${MAKE} libsched.la > +-LIBSCHED_FCGI = $(top_builddir)/sched/libsched_fcgi.la > + $(LIBSCHED_FCGI): > + cd $(top_builddir)/sched; ${MAKE} libsched_fcgi.la > +-LIBBOINC = $(top_builddir)/lib/libboinc.la > + $(LIBBOINC): > + cd $(top_builddir)/lib; ${MAKE} libboinc.la > +-LIBBOINC_CRYPT = $(top_builddir)/lib/libboinc_crypt.la > + $(LIBBOINC_CRYPT): > + cd $(top_builddir)/lib; ${MAKE} libboinc.la > +-LIBBOINC_FCGI = $(top_builddir)/lib/libboinc_fcgi.la > + $(LIBBOINC_FCGI): > + cd $(top_builddir)/lib; ${MAKE} libboinc_fcgi.la > +-LIBAPI = $(top_builddir)/api/libboinc_api.la > + $(LIBAPI): > + cd $(top_builddir)/api; ${MAKE} libboinc_api.la > + > + SERVERLIBS = $(LIBSCHED) $(LIBBOINC_CRYPT) $(LIBBOINC) $(MYSQL_LIBS) > $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS) > + SERVERLIBS_FCGI = $(LIBSCHED_FCGI) $(LIBBOINC_CRYPT) $(LIBBOINC_FCGI) > -lfcgi $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS) > + APPLIBS = $(LIBAPI) $(LIBBOINC) > +- > ++.PHONY: $(LIBBOINC) $(LIBBOINC_CRYPT) $(LIBBOINC_FCGI) $(LIBAPI) > $(LIBSCHED) $(LIBSCHED_FCGI) > +--- a/client/Makefile.am > ++++ b/client/Makefile.am > +@@ -31,7 +31,11 @@ > + boinccmd_DEPENDENCIES = $(LIBBOINC) > + boinccmd_CPPFLAGS = $(AM_CPPFLAGS) > + boinccmd_LDFLAGS = $(AM_LDFLAGS) -L$(top_srcdir)/lib > ++if DYNAMIC_LIBS > ++boinccmd_LDADD = $(LIBBOINC) $(BOINC_EXTRA_LIBS) $(PTHREAD_LIBS) > -L../lib/.libs > ++else > + boinccmd_LDADD = $(LIBBOINC) $(BOINC_EXTRA_LIBS) $(PTHREAD_LIBS) > ++endif > + > + boinc_client_SOURCES = \ > + acct_mgr.cpp \ > +--- a/apps/Makefile.am > ++++ b/apps/Makefile.am > +@@ -8,15 +8,27 @@ > + > + upper_case_SOURCES = upper_case.cpp > + upper_case_CXXFLAGS = $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++upper_case_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) > -L../api/.libs -L../lib/.libs > ++else > + upper_case_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) > ++endif > + upper_case_LDADD = $(APPLIBS) > + > + concat_SOURCES = concat.cpp > + concat_CXXFLAGS = $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++concat_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) -L../api/.libs > -L../lib/.libs > ++else > + concat_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) > ++endif > + concat_LDADD = $(APPLIBS) > + > + 1sec_SOURCES = 1sec.cpp > + 1sec_CXXFLAGS = $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++1sec_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) -L../api/.libs > -L../lib/.libs > ++else > + 1sec_LDFLAGS = -static-libtool-libs $(PTHREAD_CFLAGS) > ++endif > + 1sec_LDADD = $(APPLIBS) > +--- a/lib/Makefile.am > ++++ b/lib/Makefile.am > +@@ -175,13 +175,21 @@ > + libboinc_la_SOURCES = $(generic_sources) $(mac_sources) $(win_sources) > + libboinc_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS) > + libboinc_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++libboinc_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number > $(LIBBOINC_VERSION) > ++else > + libboinc_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -static > -version-number $(LIBBOINC_VERSION) > ++endif > + libboinc_la_LIBADD = > + > + libboinc_crypt_la_SOURCES = crypt.cpp > + libboinc_crypt_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS) > $(SSL_CFLAGS) > + libboinc_crypt_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) > $(PTHREAD_CFLAGS) $(SSL_CXXFLAGS) > ++if DYNAMIC_LIBS > ++libboinc_crypt_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number > $(LIBBOINC_VERSION) > ++else > + libboinc_crypt_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -static > -version-number $(LIBBOINC_VERSION) > ++endif > + libboinc_crypt_la_LIBADD = > + > + > +@@ -250,7 +258,11 @@ > + msg_test_LDADD = $(LIBBOINC) > + crypt_prog_SOURCES = crypt_prog.cpp > + crypt_prog_CXXFLAGS = $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++crypt_prog_LDADD = $(LIBBOINC_CRYPT_STATIC) $(LIBBOINC) $(SSL_LIBS) > -L../lib/.libs > ++else > + crypt_prog_LDADD = $(LIBBOINC_CRYPT_STATIC) $(LIBBOINC) $(SSL_LIBS) > ++endif > + parse_test_SOURCES = parse_test.cpp > + parse_test_CXXFLAGS = $(PTHREAD_CFLAGS) > + parse_test_LDADD = $(LIBBOINC) > +--- a/vda/Makefile.am > ++++ b/vda/Makefile.am > +@@ -4,7 +4,11 @@ > + vda_PROGRAMS = vda vdad ssim > + > + AM_CXXFLAGS += $(MYSQL_CFLAGS) > ++if DYNAMIC_LIBS > ++AM_LDFLAGS += -L../sched -L../lib/.libs > ++else > + AM_LDFLAGS += -static > ++endif > + > + vda_SOURCES = vda.cpp vda_lib.cpp vda_lib2.cpp vda_policy.cpp stats.cpp > + vda_LDADD = $(SERVERLIBS) > +--- a/sched/Makefile.am > ++++ b/sched/Makefile.am > +@@ -4,7 +4,11 @@ > + include $(top_srcdir)/Makefile.incl > + > + AM_CPPFLAGS += $(MYSQL_CFLAGS) $(PTHREAD_CFLAGS) > ++if DYNAMIC_LIBS > ++AM_LDFLAGS += -L../lib/.libs > ++else > + AM_LDFLAGS += -static > ++endif > + > + if ENABLE_LIBRARIES > + > +--- a/tools/Makefile.am > ++++ b/tools/Makefile.am > +@@ -44,7 +44,11 @@ > + gui_urls.xml > + > + AM_CXXFLAGS += $(MYSQL_CFLAGS) > ++if DYNAMIC_LIBS > ++AM_LDFLAGS += -L../sched -L../lib/.libs > ++else > + AM_LDFLAGS += -static > ++endif > + > + cancel_jobs_SOURCES = cancel_jobs.cpp > + cancel_jobs_LDADD = $(SERVERLIBS) > +--- a/clientgui/Makefile.am > ++++ b/clientgui/Makefile.am > +@@ -13,7 +13,9 @@ if ENABLE_CLIENT_RELEASE > + ## so we'll use the safer "-static-libtool-libs" by default. > + else > + if DYNAMIC_CLIENT > +-## if libtool starts to need flags for dynamic linking, add them here > ++if DYNAMIC_LIBS > ++ AM_LDFLAGS += -L../lib/.libs > ++endif > + else > + AM_LDFLAGS += -static > + endif > _______________________________________________ > boinc_dev mailing list > [email protected] > http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev > To unsubscribe, visit the above URL and > (near bottom of page) enter your email address. > _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
