Fix the issues with GNU libiconv vs. libc iconv (which especially appear on
    Solarii). Approach suggested by Tim Mooney.
reviewed by: plam
diff --git a/ChangeLog b/ChangeLog
index c0a366d..2b990bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-2006-04-24  Patrick Lam	 <plam@mit.edu>
+2006-04-25  Patrick Lam	 <plam@mit.edu>
 	* ChangeLog:
 	* README:
 	* configure.in:
@@ -6,6 +6,16 @@
 
 	Bump version to 2.3.95.
 
+2006-04-25  Behdad Esfahbod  <behdad@cs.toronto.edu>
+	reviewed by: plam
+
+	* configure.in:
+	* src/Makefile.am:
+	* src/fcfreetype.c:
+
+	Fix the issues with GNU libiconv vs. libc iconv (which especially
+	appear on Solarii).  Approach suggested by Tim Mooney.
+	
 2006-04-24  Dominic Lachowicz  <cinamod@hotmail.com>
 	reviewed by: plam
 	
diff --git a/configure.in b/configure.in
index 884bbe8..acdc1f1 100644
--- a/configure.in
+++ b/configure.in
@@ -135,7 +135,7 @@
 # Checks for header files.
 AC_HEADER_DIRENT
 AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h iconv.h])
+AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -145,7 +145,40 @@
 # Checks for library functions.
 AC_FUNC_VPRINTF
 AC_FUNC_MMAP
-AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long iconv sysconf ftruncate chsize rand_r])
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand_r])
+
+#
+# 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_MSG_RESULT([libc])
+else
+	# try using libiconv
+	fontconfig_save_libs="$LIBS"
+	LIBS="$LIBS -liconv"
+
+	AC_TRY_LINK([#include <iconv.h>],
+		    [iconv_open ("from", "to");],
+		    [use_iconv=true],
+		    [use_iconv=false])
+	
+	if test x$use_iconv = x1; then
+		ICONV_LIBS="-liconv"
+		AC_MSG_RESULT([libiconv])
+	else
+		AC_MSG_RESULT([no])
+	fi
+
+	LIBS="$fontconfig_save_libs"
+fi
+AC_SUBST(ICONV_LIBS)
+AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
 
 #
 # Checks for FreeType
diff --git a/src/Makefile.am b/src/Makefile.am
index 750b8d2..01c9c5e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -106,7 +106,7 @@
 libfontconfig_la_LDFLAGS =			\
 	-version-info @LT_VERSION_INFO@ -no-undefined $(export_symbols)
 
-libfontconfig_la_LIBADD = $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS)
+libfontconfig_la_LIBADD = $(ICONV_LIBS) $(FREETYPE_LIBS) $(LIBXML2_LIBS) $(EXPAT_LIBS)
 
 install-data-local: install-ms-import-lib install-libtool-import-lib
 
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index f31aef8..9eb591e 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -554,8 +554,7 @@
 
 #define NUM_FC_MAC_ROMAN_FAKE	(int) (sizeof (fcMacRomanFake) / sizeof (fcMacRomanFake[0]))
 
-#if HAVE_ICONV && HAVE_ICONV_H
-#define USE_ICONV 1
+#if USE_ICONV
 #include <iconv.h>
 #endif