summaryrefslogtreecommitdiff
path: root/README.win32
blob: 4557515135b7e845787f3c79d06955139fd10ee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Building gtkmm on Win32
===========================

Currently, only the mingw (native win32) gcc compiler is supported
through the gnu autotools (automake, autoconf, libtool). As explicitly
stated in the gtk+ for win32 distribution (http://www.gimp.org/win32/),
the gcc compiler provided by the cygwin distribution should not be
used to build gtk+/gtkmm libraries and/or applications (see the
README.win32 that comes with the gtk+ DLLs). This MIGHT cause
conflicts between the cygwin and msvcrt runtime environments.

1. Mingw

The mingw distribution which has been tested with this release is the
following :

* MinGW-2.0 as the base distribution.

The bare mingw distribution does not provide the necessary tools (sh, perl, m4
, autoconf, automake, ..) to run the provided configure script "as is". One 
(currently non supported) solution is to use mingw in conjunction with msys,
which is readily available on the mingw website (http://www.mingw.org/).

The preferred method is to combine the cygwin distribution (for the unix tools
that were mentioned above) with mingw by making sure that the mingw
tools (gcc, ld, dlltool, ..) are called first.

First, make sure that you have working distribution of the native port
of both libsigc++-1.2.x and gtk+-2.0 on win32 (see
http://www.gimp.org/win32). If you can't compile a simple gtk+ example
using gcc and `pkg-config --cflags --libs`, you should not even think
about trying to compile gtkmm, let alone using precompiled libgtkmm
DLLs to port your gtkmm application !

The configure script can then be called using (as an example) the
following options

./configure --prefix=/target --build=i386-pc-mingw32 --disable-static

then

make
make check
make install

Because Dll support with libtool on the mingw32 platform is fairly recent, it 
requires developement version of autoconf/automake and libtool, as provided by
the autotools-devel package in the cygwin distribution. Currently, this means

libtool : 1.4e
automake : 1.7.2
autoconf : 2.57

IMPORTANT WARNING : the libtool scripts contained in the source distribution
of the library might not be recent enough to support dll creation. It will 
create a static library instead. The main reason for this situation
comes from the fact that the gnome distribution uses the last stable
releases of the autotools, as opposed to their development (cvs)
versions. Therefore, it is recommended to always checked the version
of libtool that is being used when compiling libsigc++ on win32 by calling

libtool --version 

once it has been created by the configure script.

If libtool is too old, it will be necessary to overwrite it using 

libtoolize --force 

from the cygwin autotools-devel package (usually located on 
/usr/autotools/devel), followed by

aclocal
automake
autoconf

before running the configure script again.

In the future, a specially tuned source distribution along with a binary 
package might be provided for mingw.

2. Other compilers (MSVC, borland)

While some compiler options are present in the configuration files,
other compilers are currently not supported, but everyone is free to give it 
a try ! 

3. Gtkmm methods and signals not available on win32

Although is the win32 port of gtk+-2 is rapidly catching up with it
unix counterpart, some gtkmm methods and signals are still missing on
win32. These are

* Implemented in the C library but not DLL exported

Glibmm :	
	ThreadPool::get_num_unused_threads
	ThreadPool::stop_unused_threads

Atkmm :
	Component::get_layer
	Component::get_mdi_zorder

Gdkmm :
	Screen::list_visuals
	Screen::make_display_name
	Screen::get_width_mm
	Screen::get_height_mm
	Screen::broadcast_client_message
	Display::get_drag_protocol
	DisplayManager::get_type (DisplayManager is currently disabled)

Gtkmm :
	Clipboard::get_type (Clipboard is currently disabled)
	TreeRowReference::get_type (TreeRowReference is currently disabled)
	Widget::get_clipboard (because Clipboard is currently disabled)
	Window::get_skip_taskbar_hint

* Not Implemented in the C library

Atkmm :
	Action::get_localized_name
	Object::add_relationship
	Object::remove_relationship
	Object::active_descendant_changed (signal)
	Text::text_attributes_changed

Gtkmm :
	Gtk::Plug (not available on win32)
	Gtk::Socket (not available on win32)