Hi Bruce, > On Mon, Oct 4, 2010 at 12:55 PM, Bruno Haible <[email protected]> wrote: > > $ for m in `./posix-modules` ; do ./gnulib-tool --extract-link-directive $m > > ; done > [...] > > $(LTLIBICONV) when linking with libtool, $(LIBICONV) otherwise > > It seems that ``--extract-link-directive'' thinks it is sending output > to a human.
Yes. The format of the link directive is documented here: <http://www.gnu.org/software/gnulib/manual/html_node/Module-description.html> > Obviously, I can parse this output, but if it presumes a human reader, > someone could change the output in unpredictable ways. > > Perhaps pay attention to "--libtool" and "--no-libtool" for it? > Such that this works for my purpose: > > for m in $(posix-modules) > do gnulib-tool --libtool --extract-link-directive $m > done > libadd-list > > It should also not be necessary to remove empty lines. Actually, this should be the default when --libtool was specified. Like Eric said, '-no-undefined' is necessary for creating shared libraries on some platforms (such as Cygwin and AIX). And '-no-undefined' in turn requires that the dependencies are specified on the command line. I'm applying this fix. It also fixes a build failure of libunistring, when that is configured with --enable-threads=pth --with-libpth-prefix=... on MacOS X. It failed like this: Undefined symbols: "_pth_mutex_release", referenced from: _libunistring_gl_locale_name_thread in localename.o "_pth_mutex_acquire", referenced from: _libunistring_gl_locale_name_thread in localename.o "_pth_once", referenced from: _libunistring_glthread_once_multithreaded in lock.o ld: symbol(s) not found collect2: ld returned 1 exit status make[3]: *** [libunistring.la] Error 1 2010-10-04 Bruno Haible <[email protected]> gnulib-tool: Synthesize appropriate _LDFLAGS for a libtool library. * gnulib-tool (func_emit_lib_Makefile_am): When preparing for a libtool library, put '-no-undefined' and the link dependencies into _LDFLAGS. Reported by Bruce Korb and Eric Blake. --- gnulib-tool.orig Tue Oct 5 02:24:42 2010 +++ gnulib-tool Tue Oct 5 02:18:49 2010 @@ -2931,6 +2931,18 @@ echo "EXTRA_${libname}_${libext}_SOURCES =" if test "$libtool" = true; then echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)" + echo "${libname}_${libext}_LDFLAGS += -no-undefined" + # Synthesize an ${libname}_${libext}_LDFLAGS augmentation by combining + # the link dependencies of all modules. + for module in $modules; do + func_verify_nontests_module + if test -n "$module"; then + func_get_link_directive "$module" + fi + done \ + | LC_ALL=C sed -e '/^$/d' -e 's/ when linking with libtool.*//' \ + | LC_ALL=C sort -u \ + | LC_ALL=C sed -e 's/^/'"${libname}_${libext}"'_LDFLAGS += /' fi echo if test -n "$pobase"; then
