OK, here's another version, with additions/corrections from building through GTK+. Principal changes: - Add workaround for MSYS bug with command substitution that affects pkg-config output - Add the gnuwin32 Gw32c and Zlib libraries to the list of packages to install. - Add a fixup for the gnuwin32 libpng-1.2.8 library. - Add manual running of pango-querymodules, gdk-pixbuf-queryloadres and gtk-query-im-modules-2.0 to work around bugs where they don't work uninstalled. - Add creation of a systemwide gtkrc to turn on the MS-Windows theme With that, success! It actually feels pretty snappy on this box... (OK, it's a 3ghz PIV). Some things, like initial window map, are a lot cleaner than on X. The main "performance" problems I'm seeing are: - Updates can get arbitrarily behind on expose when dragging another window on top or when resizing them. Being able to block rendering forever indicates that there are performance or scheduling problems in the non-rendering code. - With the MS-Windows theme, some widgets (buttons) flash on resize.
Step 1: Install MingW and MSYS ============================== From http://www.mingw.org/download.shtml Download: MinGW-3.2.0-rc-1.exe MSYS-1.0.10.exe msysDTK-1.0.1.exe And install them in that order, taking the default install locations of c:\mingw and c:\msys\1.0. During SYS installation, you'll be prompted for where you installed mingw. A link for MSYS will be created on your desktop, that launches a terminal. Much work in the following will be done in that terminal. Note that for some of the following steps you need an editor that can be invoked from the command line and handle Unix line endings. vi is included with MSYS, but you may want to use Emacs fom http://ftp.gnu.org/gnu/windows/emacs/, or something more friendly to non-Unix-heads. Step 2: Installing the rest of the dependencies =============================================== From the links on http:///www.gimp.org/~tml/gimp/win32/downloads.html Download: glib-2.4.7.zip pkgconfig-0.15.zip libiconv-1.9.1.tar.gz gettext-runtime-0.13.1.zip gettext-tools-0.13.1.zip Create c:/gtk and unpack all of the zip files directly into that directory. zlib1.dll will need to be moved from c:/gtk to c:/gtk/bin. From http://gnuwin32.sourceforge.net/packages.html, download the "Binaries" and "Developer Files" for: LibPng-1.2.8 LibJpeg-6b LibTiff-3.6.1 LibTiff-3.6.1 LibGw32C-0.4 Zlib-1.2.2 LibTool-1.5.8 (the msys version is too old) Unpack these all directly in c:\gtk, instead of in the default gnuwin32 location. A manual fixup is needed for libtool .. edit /gtk/bin/libtoolize and the line that sets prefix=<default location> to prefix=/gtk. Also libpng13.pc needs to be fixed ... edit /gtk/lib/pkg-config/libpng13.pc and change all reference to '12' to '13'. (The GnuWin32 people apparently somehow broke bincompat between libpng-1.2.7 and libpng-1.2.8 so are being incompatible with the rest of the world and advertising a 'libpng13'. It's only used internally to the png-loader, so we can accept that under protest.) Step 3: Set up your MSYS environment ==================================== Inside msys, edit /etc/fstab and add a line: c:\gtk \gtk Create a .cvsrc in your MSYS homedir (which is *not* the same as your Win32 homedir) with the line: cvs -z3 (This should really have 'diff -up' and 'update -dP' as well, but something is screwed up with CVS under msys.) Create a .profile file in your MSYS homedir (which is *not* the same as your Win32 homedir) with the lines: export CVS_RSH=ssh export ACLOCAL_FLAGS="-I /gtk/share/aclocal/" export LDFLAGS="-L/gtk/lib" export CPPFLAGS="-I/gtk/include" export PATH="/gtk/bin:$PATH" Quit msys and rerun it to pick up these environment variables. Step 4: Work around bug in MSYS bash ==================================== Create a file /gtk/bin/pkg-config.sh, with the contents #!/bin/sh if pkg-config "$@" > /dev/null 2>&1 ; then res=true else res=false fi pkg-config "$@" | tr -d \\r && $res and add: export PKG_CONFIG="/gtk/bin/pkg-config.sh" To your .profile file. Quit msys and rerun it again to pick up this environment variable. Step 5: Make a fake gtk-doc =========================== Check out gtk-doc from gnome cvs $ cvs -d :pserver:anonymous anoncvs gnome org:/cvs/gnome get gtk-doc (Substitute appropriately for non-anonymous CVS.) Inside the gtk-doc directory, copy gtkdocize.in to gtkdocize, and edit the new file. Change: @PACKGAGE@ => gtk-doc @VERSION@ => 1.3 @PREFIX@ => /gtk @datadir@ => /gtk/share Then install a few files into place $ cp gtk-doc.m4 /gtk/share/share/aclocal $ cp gtkdocize /gtk/bin $ mkdir -p /gtk/share/gtk-doc/data/ $ cp gtk gtk-doc.make /gtk/share/gtk-doc/data Step 6: Building glib ===================== Check out glib from gnome cvs $ cvs -d :pserver:anonymous anoncvs gnome org:/cvs/gnome get gtk-doc Inside the glib directory $ run ./autogen.sh --prefix=/gtk $ make $ make install Step 7: Building pango ====================== Repeat glib instructions, substituting pango for glib. Then work around a bug in the 'make install' rule. (pango-querymodules doesn't work uninstalled: #164001) $ pango-querymodules > /gtk/etc/pango/pango.modules Step 8: Building atk ====================== Repeat glib instructions, substituting atk for glib Step 9: Building gtk+ ===================== Repeat gtk+ instructions, substituting pango for glib. Then work around a bug in the 'make install' rule. (gtk-query-immodules and gdk-pixbuf-query-loaders don't work uninstalled: #164001) $ gtk-query-immodules-2.0 > /gtk/etc/gtk-2.0/gtk.immodules $ gdk-pixbuf-query-loaders > /gtk/etc/gtk-2.0/gdk-pixbuf.loaders Set the correct default theme. Create a file /gtk/etc/gtk-2.0/gtkrc With the contents gtk-theme-name = "MS-Windows" Step 10: Testing ================ $ gtk-demo Should bring up the GTK+ demo application.
Attachment:
signature.asc
Description: This is a digitally signed message part