This same problem also occurs on i686-pc-cygwin, it likely would occur on all platforms.
The ./configure scripts "gcc-4_2-branch/libjava/configure" and "gcc-4_2-branch/libjava/classpath/configure" are out of sync. During "make" I get this message: checking for pkg-config... /usr/bin/pkg-config checking for gtk+-2.0 >= 2.4... yes checking GTK_CFLAGS... -DXTHREADS -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include checking GTK_LIBS... -L/gtk/bin -L/usr/X11R6/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangoxft-1.0 -lXft -lfreetype -lz -lXrender -lXext -lfontconfig -lpangox-1.0 -lX11 -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv checking for glib-2.0 >= 2.4 gthread-2.0 >= 2.4... yes Then later I get this message (for classpath directory's configure): checking for gtk+-2.0 >= 2.8 gthread-2.0 >= 2.2 gdk-pixbuf-2.0... Requested 'gtk+-2.0 >= 2.8' but version of GTK+ is 2.6.10 configure: error: Library requirements (gtk+-2.0 >= 2.8 gthread-2.0 >= 2.2 gdk-pixbuf-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. configure: error: /bin/sh '/cygdrive/C/makecygwin/gcc-4_2-branch/libjava/classpath/configure' failed for classpath make[1]: *** [configure-target-libjava] Error 1 So I fix that, type "make", then this happens: make[3]: Leaving directory `/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libjava' Making all in libltdl /bin/sh: line 17: cd: libltdl: No such file or directory make[2]: *** [all-recursive] Error 1 I deleted /cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libjava, to get configure to retry. (Note: Later I found out that I could simply create the missing directory and type "make" again.) My complaint is that the first message is "checking for gtk+-2.0 >= 2.4... yes", then sometime later it wants 2.8. When that is fixed ./configure doesn't know what to do about the missing libltdl directory. The _first_ configure script should check for 2.8 (if a _later_ script requires that version) and it should work through the missing directory issue correctly. The scripts in Cygwin's gcc, configure uses a more thorough method for testing gtk. This is from the /cygdrive/c/cygwin/usr/src/gcc-3.4.4/libjava/configure script (obtained by downloading source from cygwin.com using setup.exe). Here is a modified snippet from config.log: /* configure:6823: checking for pkg-config configure:6871: checking for GTK+ - version >= 2.2.0 configure:6981: gcc -o conftest.exe -DXTHREADS -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include -I/include -I/usr/local/include conftest.c -L/gtk/bin -L/usr/X11R6/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangoxft-1.0 -lXft -lfreetype -lz -lXrender -lXext -lfontconfig -lpangox-1.0 -lX11 -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv 1>&5 configure: failed program was: #line 6906 "configure" */ /* Compile using gcc -o test1.exe -DXTHREADS -DXUSE_MTSAFE_API -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include -I/include -I/usr/local/include test1.c -L/gtk/bin -L/usr/X11R6/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangoxft-1.0 -lXft -lfreetype -lz -lXrender -lXext -lfontconfig -lpangox-1.0 -lX11 -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv */ #include "confdefs.h" #include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> int main () { int major, minor, micro; char *tmp_version; system ("touch conf.gtktest"); /* HP/UX 9 ([EMAIL PROTECTED]) writes to sscanf strings */ tmp_version = g_strdup("2.2.0"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "2.2.0"); exit(1); } if ((gtk_major_version != 2) || (gtk_minor_version != 10) || (gtk_micro_version != 6)) /* ./configure figures out those values and sed's them here */ { printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 2, 10, 6, gtk_major_version, gtk_minor_version, gtk_micro_version); /* Call the .dlls */ printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((gtk_major_version != GTK_MAJOR_VERSION) || (gtk_minor_version != GTK_MINOR_VERSION) || (gtk_micro_version != GTK_MICRO_VERSION)) /* Compare with installed headers */ { printf("*** GTK+ header files (version %d.%d.%d) do not match\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", gtk_major_version, gtk_minor_version, gtk_micro_version); } else { if ((gtk_major_version > major) || ((gtk_major_version == major) && (gtk_minor_version > minor)) || ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", gtk_major_version, gtk_minor_version, gtk_micro_version); printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", major, minor, micro); printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } The "old" method was to create a program and make a call to the library to get it to tell you it's version. The "modern" way is to use pkg-config (which usually requires you to get the xyz-DEVEL-version just to get the .pc file). Note that the above code is not perfect. First it tests "!=" and if true, fails. It does not get to the test further on that checks ">". The code (as written) requires that the version of the headers match the version of the .dlls, but the (windows) gtk site (http://www.gimp.org/~tml/gimp/win32/downloads.html) says it is OK to use old headers and new .dlls. It _might_ be OK to change the test to allow older headers with the newer .dlls for _some_ versions (no doubt there are versions of each that this would not work - it is easier not to check a compatability list but leads to more work to install dev libs). A good place to get gtk for Cygwin (ready to roll) is from: GTK+ and The GIMP installers for Windows http://sourceforge.net/project/showfiles.php?group_id=121075 First install the Cygwin setup.exe Gtk (and other needed files), then install the sourceforge version using directory c:\cygwin\gtk\2.0\ (instead of the installer program's default). Next, alter your C:\cygwin\lib\pkgconfig\gtk+-2.0.pc file and fix these two lines like this: libdir=/gtk/2.0/bin/ Version: 2.10.11 (You might also need to impgen the .dll files.) Java seems to be configuring fine (for Cygwin) and compiling without error. For Linux I used a non-stable gtk (and all the other gtk dependancies) obtained with Aptitude (and a LOT of dependancy tweaking). Evrything _IS_ compiling and testing very well under Linux (for the JAVA portion of gcc). -- Summary: Libjava configuration scripts out of sync for pkg-config tests Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31891