GTK is a multi-platform toolkit for creating graphical user interfaces.
Go to file
2009-04-11 15:54:33 -04:00
contrib Update README files to refer to git 2009-03-31 18:49:48 -04:00
debian
demos Minor file descriptor leak in testgtk 2009-04-11 13:42:14 -04:00
docs Remove generated files 2009-04-11 15:54:33 -04:00
examples examples/gtkdial/gtkdial.c gdk/gdkapplaunchcontext.c gdk/gdkpango.c 2008-08-12 09:51:16 +00:00
gdk Fix memory leak in gdkscreen-x11 2009-04-10 00:14:23 -04:00
gdk-pixbuf Fixed memory leak in jasper loader 2009-04-08 10:50:30 -04:00
gtk Display localised accelerator keys also in OTHER mode 2009-04-11 01:53:32 -04:00
m4macros
modules Update README files to refer to git 2009-03-31 18:49:48 -04:00
perf define -DGDK_PIXBUF_DISABLE_DEPRECATED in the global CFLAGS. 2008-08-12 15:04:55 +00:00
po Updated Greek translation 2009-04-10 23:29:14 +01:00
po-properties Updated Crimean Tatar (Crimean Turkish) translation 2009-04-09 04:37:32 -05:00
tests Don't use deprecated API. Reported by Tobias Mueller 2009-02-28 05:38:25 +00:00
acinclude.m4
AUTHORS
autogen.sh Bug 551355 – [PATCH] Make glib build with libtool 2.2 2008-10-11 00:05:31 +00:00
ChangeLog.gtk-async-file-chooser
ChangeLog.gtk-printing
ChangeLog.pre-1-0
ChangeLog.pre-1-2
ChangeLog.pre-2-0
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-14 updated version number to 2.15.0 for development. 2008-09-18 14:55:35 +00:00
ChangeLog.pre-2-16 Rename ChangeLog to ChangeLog.pre-2-20 2009-04-03 01:48:22 -04:00
config.h.win32.in
configure.in Bump version 2009-03-13 15:09:54 +00:00
COPYING
gail-uninstalled.pc.in
gail.pc.in
gdk-2.0-uninstalled.pc.in
gdk-2.0.pc.in
gdk-pixbuf-2.0-uninstalled.pc.in
gdk-pixbuf-2.0.pc.in
gtk-config-2.0.in
gtk-engine-check-abi.sh
gtk-zip.sh.in Include all of share/man, lib/pkgconfig, share/aclocal and share/gtk-doc 2008-09-24 09:22:58 +00:00
gtk+-2.0-uninstalled.pc.in
gtk+-2.0.pc.in
gtk+-unix-print-2.0.pc.in
gtk+.spec.in
HACKING Mention writable git location, too 2009-04-07 19:20:53 -04:00
INSTALL.in Update 2008-09-04 05:48:17 +00:00
MAINTAINERS
makecopyright
Makefile.am Add a rule to generate ChangeLog 2009-04-03 02:00:48 -04:00
Makefile.decl Fix make check 2009-01-01 21:14:07 +00:00
makefile.msc
NEWS Update for 2.16.1 2009-04-11 15:52:28 -04:00
NEWS.pre-1-0
README.commits Update README files to refer to git 2009-03-31 19:34:23 -04:00
README.in Late release notes 2009-03-13 16:27:55 +00:00
README.win32
sanitize-la.sh
sanity_check

The Win32 backend in GTK+ is not as stable or correct as the X11 one.

For prebuilt runtime and developer packages see
http://ftp.gnome.org/pub/gnome/binaries/win32/

Building GTK+ on Win32
======================

First you obviously need developer packages for the compile-time
dependencies: Pango, atk, glib, gettext-runtime, libiconv, libpng,
zlib, libtiff at least. See
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies .

After installing the dependencies, there are two ways to build GTK+
for win32.

1) GNU tools, ./configure && make install
-----------------------------------------

This requires you have mingw and MSYS.

Use the configure script, and the resulting Makefiles (which use
libtool and gcc to do the compilation). I use this myself, but it can
be hard to setup correctly.

The full script I run to build GTK+ 2.10 unpacked from a source
distribution is as below. This is from bulding GTK+ 2.10.9, slightly
edited to make it match this 2.11 development branch. Actually I don't
use any script like this to build the development branch, as I don't
distribute any binaries from development branches.

MOD=gtk+
VER=2.10.9
THIS=$MOD-$VER
HEX=`echo $THIS | md5sum | cut -d' ' -f1`
TARGET=c:/devel/target/$HEX
DEPS="`/devel/src/tml/latest.sh glib atk cairo pango`"
sed -e 's/need_relink=yes/need_relink=no # no way --tml/' <ltmain.sh >ltmain.temp && mv ltmain.temp ltmain.sh
usedev
usemsvs6
MY_PKG_CONFIG_PATH=""
for D in $DEPS; do
    PATH=/devel/dist/$D/bin:$PATH
    MY_PKG_CONFIG_PATH=/devel/dist/$D/lib/pkgconfig:$MY_PKG_CONFIG_PATH
done
PKG_CONFIG_PATH=$MY_PKG_CONFIG_PATH:$PKG_CONFIG_PATH CC='gcc -mtune=pentium3 -mthreads' CPPFLAGS='-I/opt/gnu/include -I/opt/gnuwin32/include -I/opt/misc/include' LDFLAGS='-L/opt/gnu/lib -L/opt/gnuwin32/lib -L/opt/misc/lib -Wl,--enable-auto-image-base' LIBS=-lintl CFLAGS=-O2 ./configure --with-gdktarget=win32 --enable-debug=yes --disable-gtk-doc --disable-static --prefix=$TARGET &&
libtoolcacheize &&
unset MY_PKG_CONFIG_PATH &&
PATH=/devel/target/$HEX/bin:.libs:$PATH make install &&
(cd $TARGET/bin; strip --strip-unneeded *.dll *.exe) &&
(cd $TARGET/lib/gtk-2.0/2.10.0/loaders; strip --strip-unneeded *.dll) &&
(cd $TARGET/lib/gtk-2.0/2.10.0/immodules; strip --strip-unneeded *.dll) &&
(cd $TARGET/lib/gtk-2.0/2.10.0/engines; strip --strip-unneeded *.dll) &&
PATH=$TARGET/bin:$PATH gdk-pixbuf-query-loaders >$TARGET/etc/gtk-2.0/gdk-pixbuf.loaders &&
grep -v -E 'Automatically generated|Created by|LoaderDir =' <$TARGET/etc/gtk-2.0/gdk-pixbuf.loaders >$TARGET/etc/gtk-2.0/gdk-pixbuf.loaders.temp &&
mv $TARGET/etc/gtk-2.0/gdk-pixbuf.loaders.temp $TARGET/etc/gtk-2.0/gdk-pixbuf.loaders &&
grep -v -E 'Automatically generated|Created by|ModulesPath =' <$TARGET/etc/gtk-2.0/gtk.immodules >$TARGET/etc/gtk-2.0/gtk.immodules.temp &&
mv $TARGET/etc/gtk-2.0/gtk.immodules.temp $TARGET/etc/gtk-2.0/gtk.immodules &&
./gtk-zip.sh &&
(cd /devel/src/tml && zip /tmp/$MOD-dev-$VER.zip make/$THIS.make) &&
manifestify /tmp/$MOD*-$VER.zip

You should not just copy the above blindly. There are some things in
the script that are very specific to *my* build setup on *my* current
machine. For instance the "latest.sh" script, the "usedev" and
"usemsvs6" shell functions, the /devel/dist folder. The above script
is really just meant for reference, to give an idea. You really need
to understand what things like PKG_CONFIG_PATH are and set them up
properly after installing the dependencies before building GTK+.

As you see above, after running configure, one can just say "make
install", like on Unix. A post-build fix is needed, running
gdk-pixbuf-query-loaders once more to get a correct gdk-pixbuf.loaders
file.

2) Microsoft's tools
--------------------

Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
makefile.msc in gdk and gtk. Be prepared to manually edit various
makefile.msc files, and the makefile snippets in build/win32.

Alternative 1 also generates Microsoft import libraries (.lib), if you
have lib.exe available. It might also work for cross-compilation from
Unix.

I use method 1 myself. Hans Breuer has been taking care of the MSVC
makefiles. At times, we disagree a bit about various issues, and for
instance the makefile.msc files might not produce identically named
DLLs and import libraries as the "autoconfiscated" makefiles and
libtool do. If this bothers you, you will have to fix the makefiles.

Using GTK+ on Win32
===================

To use GTK+ on Win32, you also need either one of the above mentioned
compilers. Other compilers might work, but don't count on it. Look for
prebuilt developer packages (DLLs, import libraries, headers) on the
above website.

Multi-threaded use of GTK+ on Win32
===================================

Multi-threaded GTK+ programs might work on Windows in special simple
cases, but not in general. Sorry. If you have all GTK+ and GDK calls
in the same thread, it might work. Otherwise, probably not at
all. Possible ways to fix this are being investigated.

Wintab
======

The tablet support uses the Wintab API. The Wintab development kit is
no longer required. The wintab.h header file is bundled with GTK+
sources. Unfortunately it seems that only Wacom tablets come with
support for the Wintab API nowadays.

--Tor Lillqvist <tml@iki.fi>, <tml@novell.com>