diff options
author | Rodrigo Arias Mallo <rodarima@gmail.com> | 2023-12-28 01:08:10 +0100 |
---|---|---|
committer | Rodrigo Arias Mallo <rodarima@gmail.com> | 2023-12-30 01:37:15 +0100 |
commit | 7c07ae2431668dd92c4417b0f4d3d0a88d4cf9da (patch) | |
tree | 9f01d84fd5e942d67e97ba8fb0900af0c776e5bf | |
parent | 3ac33673869b6f1ae1a29a329e5fa5c100bdd562 (diff) |
Search for libiconv before libc
In BSD systems where libiconv provides /usr/local/include/iconv.h and
libc provides /usr/include/iconv.h there is a problem when we can
use the headers of libiconv but end up linking with libc. The workaround
is to search first for libiconv, and if not found assume it is safe to
link with the libc.
-rw-r--r-- | configure.ac | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index 7317245f..6dfdf9a0 100644 --- a/configure.ac +++ b/configure.ac @@ -427,13 +427,20 @@ fi AM_CONDITIONAL([USE_OPENSSL], [test "x$openssl_ok" = "xyes"]) AM_CONDITIONAL([USE_MBEDTLS], [test "x$mbedtls_ok" = "xyes"]) -dnl -------------------------------------------------------------- -dnl Test for iconv functionality in libc or for libiconv usability -dnl -------------------------------------------------------------- +dnl ---------------------------------------------------------------- +dnl Test for iconv implementation first in libiconv and then in libc +dnl ---------------------------------------------------------------- AC_CHECK_HEADER(iconv.h, iconv_ok=yes, iconv_ok=no) if test "x$iconv_ok" = "xyes"; then - AC_CHECK_LIB(c, iconv_open, LIBICONV_LIBS="", - AC_CHECK_LIB(iconv, iconv_open, LIBICONV_LIBS="-liconv", iconv_ok=no)) + dnl First try to link with the libiconv library if available, otherwise + dnl fall back to the implementation of libc. It is required to be done + dnl in this order because FreeBSD distributes libiconv headers in + dnl /usr/include/local/iconv.h, in the same place the headers for FLTK + dnl are placed. If we select to link with libc, the headers provided by + dnl libiconv will be used while linking with libc. This causes a linkage + dnl error. + AC_CHECK_LIB(iconv, iconv_open, LIBICONV_LIBS="-liconv", + AC_CHECK_LIB(c, iconv_open, LIBICONV_LIBS="", iconv_ok=no)) fi if test "x$iconv_ok" = "xno"; then dnl Test for OpenBSD |