bfd, opcodes, libctf: support --with-included-gettext
authorNick Alcock <nick.alcock@oracle.com>
Wed, 3 Feb 2021 18:42:06 +0000 (18:42 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Wed, 10 Feb 2021 15:26:57 +0000 (15:26 +0000)
Right now, these libraries hardwire -L../intl -lintl on a few fixed
platforms, which works fine on those platforms but on other platforms
leads to shared libraries that lack libintl_* symbols when configured
--with-included-gettext, and/or static libraries that contain libintl as
*another* static library.  If we instead use the LIBINTL variable
defined in ../intl/config.intl, this gives us the right thing on all
three classes of platform (gettext in libc, gettext in system libintl,
gettext in ../intl/libintl.a)..  This also means we can rip out some
Darwin-specific machinery from configure.ac and also simplify the Cygwin
side.

This also means that the libctf testsuite (and other places that include
libbfd, libopcodes or libctf) don't need to grow libintl dependencies
just on account of those libraries (though they still need such
dependencies if they themselves use gettext machinery).

bfd/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* configure: Regenerated.

libctf/ChangeLog
2021-02-02  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (CTF_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* Makefile.am (libctf_nobfd_la_LIBADD): No longer explicitly
include $(LIBINTL).
(check-DEJAGNU): Pass down to tests as well.
* configure: Regenerated.
* Makefile.in: Likewise.

opcodes/ChangeLog
2021-02-04  Nick Alcock  <nick.alcock@oracle.com>

* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
favour of LIBINTL.
* configure: Regenerated.

bfd/ChangeLog
bfd/configure
bfd/configure.ac
libctf/ChangeLog
libctf/Makefile.am
libctf/Makefile.in
libctf/configure
libctf/configure.ac
opcodes/ChangeLog
opcodes/configure
opcodes/configure.ac

index 08e6790870b1657e52e664293863a9140266d2c7..ebe2b5882e364da421fd020df0574324a2448fbf 100644 (file)
@@ -1,3 +1,9 @@
+2021-02-03  Nick Alcock  <nick.alcock@oracle.com>
+
+       * configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
+       favour of LIBINTL.
+       * configure: Regenerated.
+
 2021-02-09  Alan Modra  <amodra@gmail.com>
 
        * config.bfd (arm*-*-symbianelf*): Move from obsolete to removed.
index 5a7e88eccef1600fc5292b3aef0caa8ea3c2325a..accd39cc59ea86032e4b74bb7dec41afe789154a 100755 (executable)
@@ -14632,17 +14632,16 @@ if test "$enable_shared" = "yes"; then
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+SHARED_LIBADD="$SHARED_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
   *-*-cygwin*)
     SHARED_LDFLAGS="-no-undefined"
-    SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin -lkernel32"
-  ;;
-
-  # Use built-in libintl on macOS, since it is not provided by libc.
-  *-*-darwin*)
-    SHARED_LIBADD="-L`pwd`/../libiberty/pic -L`pwd`/../intl -liberty -lintl"
+    SHARED_LIBADD="-L`pwd`/../libiberty -liberty $SHARED_LIBADD -lcygwin -lkernel32"
   ;;
   esac
 
index fae4ea217546c53af3c8f61e75f4bdd4db86dfab..e9a07b8ff05b7ba5ed381fef2bc42852641003c5 100644 (file)
@@ -317,17 +317,16 @@ changequote([,])dnl
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+SHARED_LIBADD="$SHARED_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
   *-*-cygwin*)
     SHARED_LDFLAGS="-no-undefined"
-    SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin -lkernel32"
-  ;;
-
-  # Use built-in libintl on macOS, since it is not provided by libc.
-  *-*-darwin*)
-    SHARED_LIBADD="-L`pwd`/../libiberty/pic -L`pwd`/../intl -liberty -lintl"
+    SHARED_LIBADD="-L`pwd`/../libiberty -liberty $SHARED_LIBADD -lcygwin -lkernel32"
   ;;
   esac
 
index 35c22d9fa48d214f1c67b4f14fc80bdc512c4b55..c7f3da1d4f6c36c402553e40250ff7bb8c7a62dd 100644 (file)
@@ -1,3 +1,13 @@
+2021-02-02  Nick Alcock  <nick.alcock@oracle.com>
+
+       * configure.ac (CTF_LIBADD): Remove explicit -lintl population in
+       favour of LIBINTL.
+       * Makefile.am (libctf_nobfd_la_LIBADD): No longer explicitly
+       include $(LIBINTL).
+       (check-DEJAGNU): Pass down to tests as well.
+       * configure: Regenerated.
+       * Makefile.in: Likewise.
+
 2021-01-27  Nick Alcock  <nick.alcock@oracle.com>
 
        * ctf-string.c (ctf_str_add): Treat adding a NULL as adding "".
index f45433483c03217b594dcaf055141585fca9f839..908564c35cbeebe38f388c28fe41fcd216ad52ff 100644 (file)
@@ -41,7 +41,7 @@ include_HEADERS =
 noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
 endif
 
-libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(LIBINTL) $(ZLIB)
+libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
 libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
 libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
 libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c ctf-decl.c ctf-error.c \
@@ -86,7 +86,7 @@ check-DEJAGNU: site.exp development.exp
        if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
          $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
                CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS) -I$(INCDIR) -I$(srcdir) -I$(builddir) -I$(builddir)/../bfd $(ZLIBINC)" \
-               CC_FOR_HOST="$(CC)" LIBS="$(LIBS)" $(RUNTESTFLAGS); \
+               CC_FOR_HOST="$(CC)" LIBS="$(libctf_nobfd_la_LIBADD) $(LIBS)" $(RUNTESTFLAGS); \
        else echo "WARNING: could not find \`runtest'" 1>&2; :;\
        fi
 
index 4fc351c011c362eb92cf7359d72c669045ae7588..17a9a7f32ba5ca67fbc3d9f7a157dc37bb4cc304 100644 (file)
@@ -164,8 +164,7 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libctf_nobfd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
+libctf_nobfd_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am__libctf_nobfd_la_SOURCES_DIST = ctf-archive.c ctf-dump.c \
        ctf-create.c ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c \
        ctf-dedup.c ctf-link.c ctf-lookup.c ctf-open.c ctf-sha1.c \
@@ -191,7 +190,7 @@ libctf_nobfd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        -o $@
 @INSTALL_LIBBFD_FALSE@am_libctf_nobfd_la_rpath =
 @INSTALL_LIBBFD_TRUE@am_libctf_nobfd_la_rpath = -rpath $(libdir)
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
 libctf_la_DEPENDENCIES = ../bfd/libbfd.la $(am__DEPENDENCIES_2)
 am__libctf_la_SOURCES_DIST = ctf-archive.c ctf-dump.c ctf-create.c \
        ctf-decl.c ctf-error.c ctf-hash.c ctf-labels.c ctf-dedup.c \
@@ -458,7 +457,7 @@ AM_CFLAGS = -std=gnu99 @ac_libctf_warn_cflags@ @warn@ @c_warn@ @WARN_PEDANTIC@ @
 @INSTALL_LIBBFD_FALSE@include_HEADERS = 
 @INSTALL_LIBBFD_TRUE@include_HEADERS = $(INCDIR)/ctf.h $(INCDIR)/ctf-api.h
 @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libctf.la libctf-nobfd.la
-libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(LIBINTL) $(ZLIB)
+libctf_nobfd_la_LIBADD = @CTF_LIBADD@ $(ZLIB)
 libctf_nobfd_la_LDFLAGS = -version-info 0:0:0 @SHARED_LDFLAGS@ @VERSION_FLAGS@
 libctf_nobfd_la_CPPFLAGS = $(AM_CPPFLAGS) -DNOBFD=1
 libctf_nobfd_la_SOURCES = ctf-archive.c ctf-dump.c ctf-create.c \
@@ -1337,7 +1336,7 @@ check-DEJAGNU: site.exp development.exp
        if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
          $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
                CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS) -I$(INCDIR) -I$(srcdir) -I$(builddir) -I$(builddir)/../bfd $(ZLIBINC)" \
-               CC_FOR_HOST="$(CC)" LIBS="$(LIBS)" $(RUNTESTFLAGS); \
+               CC_FOR_HOST="$(CC)" LIBS="$(libctf_nobfd_la_LIBADD) $(LIBS)" $(RUNTESTFLAGS); \
        else echo "WARNING: could not find \`runtest'" 1>&2; :;\
        fi
 
index 544bca2b10454d4f0babba8abf0399afa199ca0b..bef55bb8cc5c228f9d39de7d9d36a3635aff52c6 100755 (executable)
@@ -13357,29 +13357,34 @@ $as_echo "#define HAVE_O_CLOEXEC 1" >>confdefs.h
 
 fi
 
-# Horrible hacks to build DLLs on Windows and a shared library elsewhere.
-
 CTF_LIBADD="-L`pwd`/../libiberty -liberty"
 SHARED_LDFLAGS=
+
+# Horrible hacks to build DLLs on Windows and a shared library elsewhere.
 if test "$enable_shared" = "yes"; then
 # When building a shared libctf, link against the pic version of libiberty
 # so that apps that use libctf won't need libiberty just to satisfy any
-# libctf references.
-# We can't do that if a pic libiberty is unavailable since including non-pic
-# code would insert text relocations into libctf.
+# libctf references.  We can't do that if a pic libiberty is unavailable
+# since including non-pic # code would insert text relocations into libctf.
 # Note that linking against libbfd as we do here, which is itself linked
 # against libiberty, may not satisfy all the libctf libiberty references
 # since libbfd may not pull in the entirety of libiberty.
+# Also, jam libintl into the right place in all of this: after libiberty,
+# which uses it, but before -lcygwin, which it uses.
   x=`sed -n -e 's/^[   ]*PICFLAG[      ]*=[    ]*//p' < ../libiberty/Makefile | sed -n '$p'`
   if test -n "$x"; then
     CTF_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+CTF_LIBADD="$CTF_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
     *-*-cygwin*)
       SHARED_LDFLAGS="-no-undefined"
-      CTF_LIBADD="$CTF_LIBADD -L`pwd`/../intl -lintl -lcygwin"
+      CTF_LIBADD="$CTF_LIBADD -lcygwin"
       ;;
   esac
 fi
index c3fea731ea8d919224a777507f26b8a1a45c1f2a..ef00efe1fe1faaf3c8d8829569a972b454ba8ca4 100644 (file)
@@ -169,31 +169,36 @@ if test $ac_cv_libctf_macro_O_CLOEXEC = yes; then
            [Whether the platform has a definition of O_CLOEXEC.])
 fi
 
-# Horrible hacks to build DLLs on Windows and a shared library elsewhere.
-
 CTF_LIBADD="-L`pwd`/../libiberty -liberty"
 SHARED_LDFLAGS=
+
+# Horrible hacks to build DLLs on Windows and a shared library elsewhere.
 if test "$enable_shared" = "yes"; then
 # When building a shared libctf, link against the pic version of libiberty
 # so that apps that use libctf won't need libiberty just to satisfy any
-# libctf references.
-# We can't do that if a pic libiberty is unavailable since including non-pic
-# code would insert text relocations into libctf.
+# libctf references.  We can't do that if a pic libiberty is unavailable
+# since including non-pic # code would insert text relocations into libctf.
 # Note that linking against libbfd as we do here, which is itself linked
 # against libiberty, may not satisfy all the libctf libiberty references
 # since libbfd may not pull in the entirety of libiberty.
+# Also, jam libintl into the right place in all of this: after libiberty,
+# which uses it, but before -lcygwin, which it uses.
 changequote(,)dnl
   x=`sed -n -e 's/^[   ]*PICFLAG[      ]*=[    ]*//p' < ../libiberty/Makefile | sed -n '$p'`
 changequote([,])dnl
   if test -n "$x"; then
     CTF_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+CTF_LIBADD="$CTF_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
     *-*-cygwin*)
       SHARED_LDFLAGS="-no-undefined"
-      CTF_LIBADD="$CTF_LIBADD -L`pwd`/../intl -lintl -lcygwin"
+      CTF_LIBADD="$CTF_LIBADD -lcygwin"
       ;;
   esac
 fi
index 24d063a23890b71fabd6c279d27cc1a999db39aa..fa1830e6ceef882d6fa4eb761a168e128479de02 100644 (file)
@@ -1,3 +1,9 @@
+2021-02-04  Nick Alcock  <nick.alcock@oracle.com>
+
+       * configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
+       favour of LIBINTL.
+       * configure: Regenerated.
+
 2021-02-08  Mike Frysinger  <vapier@gentoo.org>
 
        * tic54x-dis.c (sprint_mmr): Change to tic54x_mmregs.
index a0934e14421f73ff9f16beea9d27604fcd75de8c..d17d2543fb7769b62b74ed0064ac8a790f78445c 100755 (executable)
@@ -12798,15 +12798,21 @@ if test "$enable_shared" = "yes"; then
 # Note that linking against libbfd as we do here, which is itself linked
 # against libiberty, may not satisfy all the libopcodes libiberty references
 # since libbfd may not pull in the entirety of libiberty.
+# Also, jam libintl into the right place in all of this: after libiberty,
+# which uses it, but before -lcygwin, which it uses.
   x=`sed -n -e 's/^[   ]*PICFLAG[      ]*=[    ]*//p' < ../libiberty/Makefile | sed -n '$p'`
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+SHARED_LIBADD="$SHARED_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
     *-*-cygwin*)
       SHARED_LDFLAGS="-no-undefined"
-      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin"
+      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
       ;;
    *-*-darwin*)
      SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib ${SHARED_LIBADD}"
index 21929796fef76905f5dc4d58ed94415ccc8425e1..c19d2f8c9584b1487e7439f27c95322d91ab8d00 100644 (file)
@@ -166,17 +166,23 @@ if test "$enable_shared" = "yes"; then
 # Note that linking against libbfd as we do here, which is itself linked
 # against libiberty, may not satisfy all the libopcodes libiberty references
 # since libbfd may not pull in the entirety of libiberty.
+# Also, jam libintl into the right place in all of this: after libiberty,
+# which uses it, but before -lcygwin, which it uses.
 changequote(,)dnl
   x=`sed -n -e 's/^[   ]*PICFLAG[      ]*=[    ]*//p' < ../libiberty/Makefile | sed -n '$p'`
 changequote([,])dnl
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
+
+SHARED_LIBADD="$SHARED_LIBADD $LIBINTL"
 
+if test "$enable_shared" = "yes"; then
   case "${host}" in
     *-*-cygwin*)
       SHARED_LDFLAGS="-no-undefined"
-      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin"
+      SHARED_LIBADD="-L`pwd`/../bfd -lbfd -L`pwd`/../libiberty -liberty $SHARED_LIBADD"
       ;;
    *-*-darwin*)
      SHARED_LIBADD="-Wl,`pwd`/../bfd/.libs/libbfd.dylib ${SHARED_LIBADD}"