From: Ian Lynagh Date: Wed, 24 Jun 2009 12:54:22 +0000 (+0000) Subject: Fix iconv detection on OpenBSD X-Git-Tag: 2009-06-25~3 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=7ee4b814562d3eeba5db2919d8462501c6b93e43;p=ghc-base.git Fix iconv detection on OpenBSD Matthias Kilian discovered that iconv_open is #define'd to something else on OpenBSD, so the test needs to include the iconv header. --- diff --git a/aclocal.m4 b/aclocal.m4 index 615cbe1..d40392a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -228,3 +228,39 @@ char **argv; [fptools_cv_readdir_eof_errno=0])]) AC_DEFINE_UNQUOTED([READDIR_ERRNO_EOF], [$fptools_cv_readdir_eof_errno], [readdir() sets errno to this upon EOF]) ])# FP_READDIR_EOF_ERRNO + +# FP_SEARCH_LIBS_PROTO(WHAT, PROTOTYPE, FUNCTION, SEARCH-LIBS, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [OTHER-LIBRARIES]) +# -------------------------------------------------------- +# Search for a library defining FUNC, if it's not already available. +# This is a copy of the AC_SEARCH_LIBS definition, but extended to take +# the name of the thing we are looking for as its first argument, and +# prototype text as its second argument. It also calls AC_LANG_PROGRAM +# instead of AC_LANG_CALL +AC_DEFUN([FP_SEARCH_LIBS_PROTO], +[AS_VAR_PUSHDEF([ac_Search], [ac_cv_search_$3])dnl +AC_CACHE_CHECK([for library containing $1], [ac_Search], +[ac_func_search_save_LIBS=$LIBS +AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])]) +for ac_lib in '' $4; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $7 $ac_func_search_save_LIBS" + fi + AC_LINK_IFELSE([], [AS_VAR_SET([ac_Search], [$ac_res])]) + AS_VAR_SET_IF([ac_Search], [break])dnl +done +AS_VAR_SET_IF([ac_Search], , [AS_VAR_SET([ac_Search], [no])])dnl +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS]) +ac_res=AS_VAR_GET([ac_Search]) +AS_IF([test "$ac_res" != no], + [test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + $5], + [$6])dnl +AS_VAR_POPDEF([ac_Search])dnl +]) + diff --git a/configure.ac b/configure.ac index cd153c3..ce85ed0 100644 --- a/configure.ac +++ b/configure.ac @@ -99,8 +99,22 @@ FP_CHECK_CONST([O_BINARY], [#include ], [0]) # Check for idiosyncracies in some mingw impls of directory handling. FP_READDIR_EOF_ERRNO -AC_CHECK_LIB(iconv, iconv_open, - [EXTRA_LIBS="$EXTRA_LIBS iconv"]) +# We can't just use AC_SEARCH_LIBS for this, as on OpenBSD the iconv.h +# header needs to be included as iconv_open is #define'd to something +# else. We therefore use our own FP_SEARCH_LIBS_PROTO, which allows us +# to give prototype text. +FP_SEARCH_LIBS_PROTO(iconv, + [ +#include +#include + ], + [iconv_t cd; + cd = iconv_open("", ""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + iconv, + [EXTRA_LIBS="$EXTRA_LIBS $ac_lib"], + [exit 1]) AC_SUBST(EXTRA_LIBS) AC_CONFIG_FILES([base.buildinfo])