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.

Reply via email to