Created attachment 33674 [details] [review] Add search for libiconv in user-defined directory Current configure checks the availability of libiconv, but has no option to specify the location of libiconv. It might be better to provide such options. I've tried to use iconv.m4 included in gettext (written by Bruno Haible), but it didn't work well. diff --git a/configure.in b/configure.in index 365abff..2b6761f 100644 --- a/configure.in +++ b/configure.in @@ -176,15 +176,64 @@ AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol # # Checks for iconv # -AC_MSG_CHECKING([for a usable iconv]) -ICONV_LIBS="" -AC_TRY_LINK([#include <iconv.h>], - [iconv_open ("from", "to");], - [use_iconv=1], - [use_iconv=0]) -if test x$use_iconv = x1; then +AC_ARG_WITH(libiconv, [ --with-libiconv=DIR Use libiconv in DIR], + libiconv_prefix=$withval, libiconv_prefix=auto) +AC_ARG_WITH(libiconv-includes, [ --with-libiconv-includes=DIR Use libiconv includes in DIR], + libiconv_includes=$withval, libiconv_includes=auto) +AC_ARG_WITH(libiconv-lib, [ --with-libiconv-lib=DIR Use libiconv library in DIR], + libiconv_lib=$withval, libiconv_lib=auto) + +# if none of libiconv,libiconv-includes,libiconv-libs are specified, +if test "$libiconv_prefix" != "auto" -o "$libiconv_includes" != "auto" -o "$libiconv_lib" != "auto" +then + AC_MSG_CHECKING([libiconv in specified directory]) + + if test "${libiconv_includes}" != auto -a -r ${libiconv_includes}/iconv.h + then + libiconv_cflags="-I${libiconv_includes}" + elif test "${libiconv_prefix}" != auto -a -r ${libiconv_prefix}/include/iconv.h + then + libiconv_cflags="-I${libiconv_prefix}/include" + else + AC_MSG_RESULT([not found]) + fi + + if test "${libiconv_lib}" != auto # -a -r ${libiconv_libs}/libiconv* + then + libiconv_lib="-L${libiconv_lib} -liconv" + elif test "${libiconv_prefix}" != auto # -a -r ${libiconv_prefix}/lib/libiconv* + then + libiconv_lib="-L${libiconv_prefix}/lib -liconv" + else + AC_MSG_RESULT([not found]) + fi + + CFLAGS_save="${CFLAGS}" + LIBS_save="${LIBS}" + CFLAGS="${CFLAGS} ${libiconv_cflags}" + LIBS="${LIBS} ${libiconv_lib}" + + AC_TRY_LINK([#include <iconv.h>], + [iconv_open ("from", "to");], + [AC_MSG_RESULT([ok]) + use_iconv=1], + [AC_MSG_RESULT([not found]) + use_iconv=0]) + ICONV_CFLAGS="${libiconv_cflags}" + ICONV_LIBS="${libiconv_lib}" +fi + +if test "x${ICONV_CFLAGS}" = "x" -a "x${ICONV_LIBS}" = "x" +then + AC_MSG_CHECKING([for a usable iconv]) + ICONV_LIBS="" + AC_TRY_LINK([#include <iconv.h>], + [iconv_open ("from", "to");], + [use_iconv=1], + [use_iconv=0]) + if test x$use_iconv = x1; then AC_MSG_RESULT([libc]) -else + else # try using libiconv fontconfig_save_libs="$LIBS" LIBS="$LIBS -liconv" @@ -202,7 +251,10 @@ else fi LIBS="$fontconfig_save_libs" + fi fi + +AC_SUBST(ICONV_CFLAGS) AC_SUBST(ICONV_LIBS) AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) diff --git a/src/Makefile.am b/src/Makefile.am index 9110cde..3645ae9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -70,6 +70,7 @@ endif INCLUDES = \ -I$(top_srcdir) \ -I$(top_srcdir)/src \ + $(ICONV_CFLAGS) \ $(FREETYPE_CFLAGS) \ $(LIBXML2_CFLAGS) \ $(EXPAT_CFLAGS) \
reworked and fixed in 2589207c.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.