Parts of gcj up to and including 4.2 branch are compiled without libiconv when it's present in the system in a non-default location and --with-libiconv-prefix specified correctly. The reason for this is usage of HAVE_ICONV_H macro in gcc/java/lex.h 1. The check for iconv.h in gcc/configure does not use the value of --with-libiconv-prefix option. 2. HAVE_ICONV_H is useless because check for libiconv in gcc/configure uses iconv.h anyway. 3. HAVE_ICONV is changed in gcc/java/lex.h like this: #ifndef HAVE_ICONV_H #undef HAVE_ICONV #endif which is inherently incorrect in and of itself: any information produced by configure must not be changed in the source code. If configure tests don't work right - fix them, but all source code must be compiled with the same global settings. Solution: get rid of HAVE_ICONV_H in gcc/java/lex.h. 2007-05-18 Sergiy Vyshnevetskiy PR propocessor/31932 * lex.h: Remove unnecessary usage of HAVE_ICONV_H