Re: GTK+-2.11.1 - further installation WOES.



Craig Burtenshaw - Sun Microsystems writes:
 > -I/usr/include/glib-2.0 -I/usr/include/pango-1.0
 > -I/usr/include/cairo

You are apparently using those GLib, Pango and cairo packages provided
by Cygwin. OK, I guess. (But see my comments at the very end.)

Or, I hope you didn't build also glib, Pango and cairo yourself and
installed them in the /usr prefix? Unless you are the maintainer of
these packages for Cygwin, that would have been horribly wrong.

 > -I/usr/X11R6/include

Note this? X11!

 > -I/usr/include/freetype2

And this? Freetype!

 > gdkwindow-win32.lo -MD -MP -MF .deps/gdkwindow-win32.Tpo -c 

But then you are compiling gdkwindow-win32.c. That is part of the
Win32 (GDI) backend. What the heck are X11 and Freetype doing there
then? There is some serious confusion going on here. If you are
building GTK+ with the Win32 backend, that means using the GDI API for
drawing. No X11, freetype or fontconfig should be involved at
all. That you still get the -I/usr/X11R6/include and
-I/usr/include/freetype2 switches from somewhere means that something
might be seriously mixed up.

But that is not the immediate cause for your compilation error, read
on.

 > gdkwindow-win32.c:425: error: `_winver' undeclared (first use in
this function)

_winver is declared in mingw's stdlib.h, it's a variable imported from
the Microsoft C runtime. But as you are building for Cygwin, not
native Win32, you aren't using that header (and not the Microsoft C
runtime).

Apparently what you are trying to do, build GTK+ with the Win32
backend, hasn't been done in a while, which is why this hasn't been
noticed. We should use the g_win32_get_windows_version() function here
instead of using the _winver variable. (This function is available
also in a GLib built for Cygwin.)

Unfortunately the lower two bytes of the return value of that function
(which is just a wrapper around the GetVersion() function) are in
different order than in the _winver variable so one needs a bit more
complicated test. Like this:

Index: gdk/win32/gdkwindow-win32.c
===================================================================
--- gdk/win32/gdkwindow-win32.c	(revision 18125)
+++ gdk/win32/gdkwindow-win32.c	(working copy)
@@ -422,8 +422,12 @@
             {
               wcl.lpszClassName = "gdkWindowTempShadow";
               wcl.style |= CS_SAVEBITS;
-              if (_winver >= 0x0501) /* Windows XP (5.1) or above */
-                wcl.style |= 0x00020000; /* CS_DROPSHADOW */
+              if (LOBYTE (g_win32_get_windows_version()) > 0x05 ||
+		  LOWORD (g_win32_get_windows_version()) == 0x0105)
+		{
+		  /* Windows XP (5.1) or above */
+		  wcl.style |= 0x00020000; /* CS_DROPSHADOW */
+		}
               ONCE_PER_CLASS ();
               klassTEMPSHADOW = RegisterClassEx (&wcl);
             }

But still, even if you fix that to call g_win32_get_windows_version()
instead, I am not sure that what you are doing makes sense. But I'll
leave it up to you to keep trying... 

I suspect your next problem will be that the cairo that Cygwin
provides hasn't been built with the Win32 backend, and the GTK+ Win32
backend calls cairo_win32_surface_create. Also, the GTK+ Win32 backend
wants to call functions from pangocairo, and that doesn't exist in the
old Pango version that Cygwin provides. (And if they did provide a
newer Pango, their pangocairo presumably would be built for
fontconfig, not Win32.)

--tml



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]