]> git.saurik.com Git - wxWidgets.git/blame - BuildCVS.txt
more type-safety
[wxWidgets.git] / BuildCVS.txt
CommitLineData
f6577bba
RR
1------------------------------------------------------------------------
2 How to build the sources from CVS
3------------------------------------------------------------------------
4
5I) Windows using plain makefiles
6----------------------------------------
7
2662e49e 8a) Using the GNU MingW32 or GNU Cygwin32 compilers
f6577bba 9
2662e49e
RR
10You'll need the compiler itself which is available from
11
12 http://www.cygwin.com
13
14When using MingW32 you'll need a few of the tools that
15are either shipped separately or only as part of the
16Cygwin32 toolchain. First and foremost, you'll need
17
18make.exe
19byacc.exe
20
21make.exe is also available from
22 http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32
23
24-> Set your path so that it includes the directory
25 where your compiler and tools reside
26-> Assume that you installed the wxWindows sources
27 into c:\wxWin
28-> Copy c:\wxWin\include\wx\msw\setup0.h
29 to c:\wxWin\include\wx\msw\setup.h
30-> Edit c:\wxWin\include\wx\msw\setup.h so that
31 most features are enabled (i.e. defined to 1) with
32 #define wxUSE_SOCKETS 1
33 #define wxUSE_HTML 1
34 #define wxUSE_THREADS 1
35 #define wxUSE_FS_INET 1
36 #define wxUSE_FS_ZIP 1
37 #define wxUSE_BUSYINFO 1
38 #define wxUSE_DYNLIB_CLASS 1
39 #define wxUSE_ZIPSTREAM 1
40
41 and disbale iostreams with
42 #define wxUSE_STD_IOSTREAM 0
43-> type: cd c:\wxWin\src\msw
44-> type: make -f makefile.g95
f6577bba
RR
45
46II) Unix using plain makefiles.
47----------------------------------------
48
a533f5c1
RR
49Set WXWIN environment variable to the base directory such
50as ~/wxWindows
51
52-> type: export WXWIN=~/wxWindows
f6577bba 53
a533f5c1
RR
54Edit ~/wxWindows/src/make.env as you wish.
55-> type: cd ~/wxWindows/src/gtk
56-> type: cp ./setup0.h setup.h
57-> type: make -f makefile.unx gtk
58-> pray
f6577bba
RR
59
60III) Windows using configure
61----------------------------------------
62
22baaed3 63Take a look at Unix->Windows cross compiling. With minor
0a2fe387
HH
64modifications, this should work in Windows if you've got the cygnus
65utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed.
22baaed3
HH
66See http://www.cygnus.com for these programs, or go straight to their
67ftp server at ftp://sourceware.cygnus.com/pub/cygwin/.
68
69Of course, you can also build the library using plain makefiles (see
70section I).
f6577bba
RR
71
72IV) Unix using configure
73----------------------------------------
74
75a) You have all the newest and greatest GNU tools installed on your system
76and in the same directory hierachy (e.g. either all tools in /usr or all
77in /usr/local), these tools are:
78- GNU libtool 1.2e (1.3 doesn't work here)
a533f5c1 79- GNU autoconf 2.13 (including autoheader 2.13)
f6577bba
RR
80- GNU automake 1.4 (including aclocal 1.4)
81and possibly but not forcibly
82- GNU make 3.76.1
83- GNU C++ (EGCS)
84
85-> Go to the base directory
86-> type: ./autogen.sh
87
88b) You don't know what autos are and have no driver's licence anyway:
89
90-> Go to the testconf directory
91-> type: ./apply
92
93a+b) Then proceed in either case with:
94
95-> Choose a directory name that seems fit for building wxWindows, e.g. mybuild
96-> Go the base directory
97-> type: mkdir mybuild
98-> type: cd mybuild
99-> type: ../configure --with-gtk
100or type: ../configure --with-motif
101or type: ../configure --with-wine
102-> type make
103-> drink lots of coffee and go shopping
104
105
106V) MacOS
107----------------------------------------
108
0a2fe387 109VI) OS/2
f6577bba
RR
110----------------------------------------
111
0a2fe387
HH
112VII) Unix->Windows cross-compiling using configure
113--------------------------------------------------
114
115First you'll need a cross-compiler; linux glibc binaries of mingw32 and
116cygwin32 (both based on egcs) can be found at
117ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Otherwise you can
118compile one yourself. Check the relevant FAQs.
119
120[ A Note about cygwin32 and mingw32: the main difference is that cygwin32
121binaries are always linked against cygwin.dll. This dll encapsulates most
122standard Unix C extensions, which is very handy if you're porting unix
123software to windows. However, wxMSW doesn't need this, so mingw32 is
124preferable if you write portable C(++). ]
125
126You might want to build both Unix and Windows binaries in the same source
127tree; to do this make subdirs for each e.g. unix and win32. If you've
128already build wxWindows in the main dir, do a 'make distclean' there,
129otherwise configure will get confused. (In any case, read the section 'Unix
130using configure' and make sure you're able to build a native wxWindows
131library; cross-compiling errors can be pretty obscure and you'll want to be
132sure that your configure setup is basically sound.)
133
134To cross compile the windows library, do
135-> cd win32
136-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
137 DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
138 ../configure --host=i586-mingw32 --with-mingw --enable-dnd=no
139
140(assuming you're using mingw32)
141
142The important thing to notice here is that we suply configure with the names
143of all the non-default binutils (make sure they're in the PATH!), and that
144we tell configure to build for the host platform i586-mingw32.
145Drag'n'drop is disabled because mingw32 lacks (AFAIK) OLE headers.
146
147Configure will conclude that shared libraries are out of the question and
148opt for a static one. I haven't looked into DLL creation yet.
149
0a2fe387
HH
150Type
151-> make -C src
152and wait, wait, wait. Don't leave the room, because the minute you do there
153will be a compile error :-)
154
155If this is successful, try building the minimal sample:
156-> cd samples/minimal
157-> make
158-> mv minimal minimal.exe
159
160and run it with wine, for example
161-> wine minimal.exe
162
163If all is well, do an install; from win32
164-> make install
165
166Native and cross-compiled installations can co-exist peacefully
167(as long as their widget sets differ), except for wx-config. You might
168want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
25a2a4b0
HH
169
170Cross-compiling TODO:
171---------------------
172- resource compiling must be done manually for now (should/can we link the
22baaed3
HH
173default wx resources into libwx_msw.a?) [ No we can't; the linker won't
174link it in... you have to supply an object file ]
25a2a4b0
HH
175- dynamic libraries
176- static executables are HUGE -- there must be room for improvement.