README.win32 4.01 KB
Newer Older
Tor Lillqvist's avatar
Tor Lillqvist committed
1 2 3 4 5 6 7 8 9 10 11
The Win32 backend in GTK+ is not as stable or correct as the X11
one. 

For prebuilt runtime and developer packages see
http://www.gimp.org/win32/downloads.html .

There is also a gtk-1-3-win32-production branch of GTK+ that was
branched off from before the addition of the no-flicker and other
functionality that was new in GTK+ 2.0.0. The vesion number used for
that branch is 1.3.0. It corresponds most closely to GTK 1.2.7 on
Unix. For new code, you shouldn't be using that.
Tor Lillqvist's avatar
Tor Lillqvist committed
12

13 14 15
Building GTK+ on Win32
======================

Tor Lillqvist's avatar
Tor Lillqvist committed
16
There are two ways to build GTK+ for win32.
17

Tor Lillqvist's avatar
Tor Lillqvist committed
18 19
1) Use the autoconf-generated configure script, and the resulting
Makefiles (which use libtool and gcc to do the compilation). I use
Tor Lillqvist's avatar
Tor Lillqvist committed
20
this myself, but it can be hard to setup correctly.
Tor Lillqvist's avatar
Tor Lillqvist committed
21

22
Personally I run configure with:
Tor Lillqvist's avatar
Tor Lillqvist committed
23
CC='gcc -mpentium -fnative-struct' CPPFLAGS='-I/target/include' CFLAGS=-O2 LDFLAGS='-L/target/lib' ./configure --disable-static --prefix=/target --with-gdktarget=win32 --with-wintab=/src/wtkit126 --with-ie55=/src/workshop/ie55_lib --host=i386-pc-mingw32
24

Tor Lillqvist's avatar
Tor Lillqvist committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
Then, in theory, you can just say "make", like on Unix. In reality,
there are a few hickups that require manual intervention, and it's
best to run make separately in each subdirectory. At least for me,
when libtool creates an .exe file, it puts the real .exe in the .libs
directory, and leaves a wrapper .exe in the work directory. For some
reason that wrapper doesn't work for me, it doesn't do anything. So, I
always do a "cp .libs/*.exe ." after running a make that has produced
some exes.

Another issue is with the gdk-pixbuf.loaders file. It's probably best
to do a "make install" in the gdk-pixbuf directory, and let that set
up a mostly correct gdk-pixbuf.loaders in the target directory. Then
copy that back to the source directory. It's needed in gtk/stock-icons
where make runs gdk-pixbuf-csource.

Etc, you get the idea. It can be a bit of a pain.
Tor Lillqvist's avatar
Tor Lillqvist committed
41

Tor Lillqvist's avatar
Tor Lillqvist committed
42
2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f
Tor Lillqvist's avatar
Tor Lillqvist committed
43 44
makefile.msc in gdk and gtk. Be prepared to manually edit various
makefile.msc files, and the makefile snippets in build/win32.
Tor Lillqvist's avatar
Tor Lillqvist committed
45 46

Alternative 1 also generates Microsoft import libraries (.lib), if you
Tor Lillqvist's avatar
Tor Lillqvist committed
47
have lib.exe available. It might also work for cross-compilation from
Tor Lillqvist's avatar
Tor Lillqvist committed
48 49
Unix.

Tor Lillqvist's avatar
Tor Lillqvist committed
50 51
Note that I use method 1 myself. Hans Breuer has been taking care of
the MSVC makefiles. At times, we disagree a bit about various issues,
52 53 54
and for instance the makefile.msc files will 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.
Tor Lillqvist's avatar
Tor Lillqvist committed
55

56 57 58
Using GTK+ on Win32
===================

Tor Lillqvist's avatar
Tor Lillqvist committed
59
To use GTK+ on Win32, you also need either one of the above mentioned
Tor Lillqvist's avatar
Tor Lillqvist committed
60 61
compilers. Other compilers might work, but don't count on it. Look for
prebuilt developer packages (DLLs, import libraries, headers) on the
Tor Lillqvist's avatar
Tor Lillqvist committed
62
above website.
Tor Lillqvist's avatar
Tor Lillqvist committed
63

64 65 66
Multi-threaded use of GTK+ on Win32
===================================

Tor Lillqvist's avatar
Tor Lillqvist committed
67 68 69 70
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.
71 72 73 74

Wintab
======

Tor Lillqvist's avatar
Tor Lillqvist committed
75
The tablet support uses the Wintab API. The Wintab development kit can
Tor Lillqvist's avatar
Tor Lillqvist committed
76 77 78 79
be downloaded from http://www.pointing.com. Pass the --with-wintab
flag to configure if you use that. If you use nmake and you don't care
for Wintab, undefine HAVE_WINTAB in config.h.win32 and remove
references to the wntab32x library from the makefile before building.
80

81 82 83 84 85 86 87
ActiveIMM
=========

If you want to build a GTK+ that supports ActiveIMM (the Input Method
Manager for non-EastAsia locales that can be used on Win9x/NT4), you
need the dimm.h header file. That is somewhat difficult to find, but
http://msdn.microsoft.com/downloads/samples/internet/wizard/ seems to
Tor Lillqvist's avatar
Tor Lillqvist committed
88
be a good place to look nowadays. If you use "autoconfiscated" build,
Matthias Clasen's avatar
Matthias Clasen committed
89
pass the --with-ie55 flag to configure specifying the location of the
90 91 92
ie55_lib directory created by downloading the IE5.5 headers and libs
from the above URL.

Tor Lillqvist's avatar
Tor Lillqvist committed
93
--Tor Lillqvist <tml@iki.fi>