]> git.saurik.com Git - wxWidgets.git/blame - BuildCVS.txt
Adapted notebook sample to demonstrate wxToolbook
[wxWidgets.git] / BuildCVS.txt
CommitLineData
f6577bba
RR
1------------------------------------------------------------------------
2 How to build the sources from CVS
3------------------------------------------------------------------------
4
f2854a24
JS
5Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
6etc. alongside these instructions.
7
f6577bba
RR
8I) Windows using plain makefiles
9----------------------------------------
10
a353a0be
RD
11a) If using Microsoft Visual C++ 5.0 or 6.0
12
13Ensure that the command-line compiler and tools (including
14nmake) are installed and ready to run. Depending on your
c10eeb63
DS
15installation there may be a batch file (commonly named VCVARS32.BAT)
16that needs to be run to set correct environment variables and PATH entries.
a353a0be
RD
17
18Continue with item c) below.
19
20
9a718b86 21b) If using the MinGW or Cygwin compilers
f6577bba 22
9a718b86 23You can get MinGW from http://www.mingw.org/
2662e49e 24
c10eeb63 25Cygwin is available at http://www.cygwin.com/
2662e49e 26
75fcbf8e
VS
27If you are using Cygwin or MinGW together with the MSYS environment, you
28can build the library using configure (see "Unix ports" and
29"Windows using configure" below). You can also
d4663851 30build wxWidgets without configure using native makefile, but only with
75fcbf8e
VS
31MinGW. Using Cygwin together with Windows makefile is no longer supported.
32
c10eeb63 33If building with MinGW without configure:
c45a644e 34
2662e49e
RR
35-> Set your path so that it includes the directory
36 where your compiler and tools reside
a353a0be 37
75fcbf8e
VS
38-> Make sure you have GNU Make installed. It must be Windows native version.
39 Download it from http://www.mingw.org, the executable will be called
40 mingw32-make.exe.
41
42-> Modern version of MinGW is required; preferably MinGW 2.0 (with gcc3),
43 but MinGW with gcc-2.95.3 will suffice. If you are using 2.95, you will
44 have to change variable GCC_VERSION in config.gcc (see msw/install.txt
45 for details).
46
47If using configure, Unix instructions apply.
d66d3ce6 48
ce1a1ff4 49
a353a0be
RD
50c) Build instructions
51
d4663851
VZ
52Assumming that you installed the wxWidgets sources
53into c:\wxWidgets:
c10eeb63 54
d4663851
VZ
55-> Copy c:\wxWidgets\include\wx\msw\setup0.h
56 to c:\wxWidgets\include\wx\msw\setup.h
57-> Edit c:\wxWidgets\include\wx\msw\setup.h to choose
58 the features you would like to compile wxWidgets with[out].
2662e49e 59
f6bcfd97 60 and std iostreams are disabled with
2662e49e 61 #define wxUSE_STD_IOSTREAM 0
f6bcfd97 62
d4663851 63-> type: cd c:\wxWidgets\build\msw
75fcbf8e 64-> type: make -f makefile.gcc (if using GNU tools)
f6bcfd97 65or type: nmake -f makefile.vc (if using MS VC++)
75fcbf8e 66etc.
a353a0be 67
9a718b86
MB
68 See also docs/msw/install.txt for additional compilation options.
69
9fce8d2e
JS
70d) Borland (including free command line tools)
71 Download tools from http://www.borland.com/downloads/
72
c10eeb63 73 See docs/msw/install.txt for details; in brief:
9fce8d2e 74
d4663851 75-> type cd c:\wxWidgets\build\msw
75fcbf8e
VS
76-> type make -f makefile.bcc
77
78You can customize many things in the build process, detailed description is
79in docs/msw/install.txt.
80
f6577bba 81
583a6578
RR
82II) Unix ports
83--------------
8e877c19
RR
84
85Building wxGTK or wxMotif completely without configure
86won't ever work, but there is now a new makefile system
87that works without libtool and automake, using only
a353a0be
RD
88configure to create what is needed.
89
90In order to create configure, you need to have the
75fcbf8e 91GNU autoconf package (version > 2.54) installed
a353a0be
RD
92on your system and type run "autoconf" in the base
93directory (or run the autogen.sh script in the same
75fcbf8e 94directory, which just calls autoconf). Note that you usually don't
c10eeb63 95need to do this because configure is included in CVS.
f6577bba 96
a533f5c1 97Set WXWIN environment variable to the base directory such
d4663851 98as ~/wxWidgets (this is actually not really needed).
a533f5c1 99
d4663851 100-> type: export WXWIN=~/wxWidgets
8e877c19
RR
101-> type: md mybuild
102-> type: cd mybuild
103-> type: ../configure --with-motif
104or type: ../configure --with-gtk
583a6578
RR
105-> type: make
106-> type: su <type root password>
107-> type: make install
108-> type: ldconfig
109-> type: exit
f6577bba 110
a4aad961
RR
111Call configure with --disable-shared to create a static
112library. Calling "make uninstall" will remove the installed
113library and "make dist" will create a distribution (not
114yet complete).
115
f6577bba
RR
116III) Windows using configure
117----------------------------------------
118
d4663851 119wxWidgets can be built on Windows using MSYS (see
9a718b86
MB
120http://www.mingw.org/), which is a POSIX build environment
121for Windows. With MSYS you can just ./configure && make (see also VII,
122Unix->Windows cross-compiling using configure).
22baaed3 123
a353a0be 124Of course, you can also build the library using plain makefiles (see
22baaed3 125section I).
f6577bba 126
79199066 127IV) Classic MacOS using CodeWarrior (eg MacOS 8.x/9.x)
f6577bba
RR
128----------------------------------------
129
79199066 130Refer to the readme.txt and install.txt files in docs/mac to build
d4663851 131wxWidgets under Classic Mac OS using CodeWarrior.
79199066
GD
132
133If you are checking out the CVS sources using cvs under Mac OS X and
b383b2c1
GD
134compiling under Classic Mac OS:
135
136- make sure that all text files have a Mac OS type of 'TEXT' otherwise
137 CodeWarrior may ignore them. Checking out the CVS sources using cvs
138 under Mac OS X creates untyped files which can lead to compilation
139 errors under CodeWarrior which are hard to track down.
140
141- convert the xml files to CodeWarrior binary projects using the supplied
142 AppleScript in docs/mac (M5xml2mcp.applescript for CodeWarrior 5.3)
79199066
GD
143
144V) MacOS X using configure and the Developer Tools
145----------------------------------------
146
147You need to have the Developer Tools installed. If this is not the case,
148you will need to register at the Apple Developer web site (this is a free
149registration) in order to download the Developer Tools installer.
150
151In order to create configure, you need to have the
75fcbf8e 152GNU autoconf package (version >= 2.54) installed
79199066
GD
153on your system and type run "autoconf" in the base
154directory (or run the autogen.sh script in the same
155directory, which just calls autoconf).
156
157-> type: mkdir macbuild
158-> type: cd macbuild
159-> type: ../configure --with-mac
160or type: ../configure
161-> type: make
162
0a2fe387 163VI) OS/2
f6577bba 164----------------------------------------
c10eeb63 165No notes.
f6577bba 166
0a2fe387
HH
167VII) Unix->Windows cross-compiling using configure
168--------------------------------------------------
169
9a718b86
MB
170First you'll need a cross-compiler; linux glibc binaries of MinGW and
171Cygwin (both based on egcs) can be found at
1d341cf4
MB
172ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,
173based on the latest MinGW release can be found at
9a718b86 174http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html
1d341cf4 175Otherwise you can compile one yourself.
0a2fe387 176
9a718b86 177[ A Note about Cygwin and MinGW: the main difference is that Cygwin
0a2fe387
HH
178binaries are always linked against cygwin.dll. This dll encapsulates most
179standard Unix C extensions, which is very handy if you're porting unix
9a718b86 180software to windows. However, wxMSW doesn't need this, so MinGW is
0a2fe387
HH
181preferable if you write portable C(++). ]
182
183You might want to build both Unix and Windows binaries in the same source
184tree; to do this make subdirs for each e.g. unix and win32. If you've
d4663851 185already build wxWidgets in the main dir, do a 'make distclean' there,
0a2fe387 186otherwise configure will get confused. (In any case, read the section 'Unix
d4663851 187using configure' and make sure you're able to build a native wxWidgets
0a2fe387
HH
188library; cross-compiling errors can be pretty obscure and you'll want to be
189sure that your configure setup is basically sound.)
190
191To cross compile the windows library, do
a353a0be 192-> cd win32
0d639168 193(or whatever you called it)
214960fb 194Now run configure. There are two ways to do this
1d341cf4 195-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw
214960fb
HH
196where --build= should read whatever platform you're building on. Configure
197will notice that build and host platforms differ, and automatically prepend
a353a0be
RD
198i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
199The other way to run configure is by specifying the names of the binaries
214960fb 200yourself:
0a2fe387
HH
201-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
202 DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
1d341cf4 203 ../configure --host=i586-mingw32 --with-mingw
0a2fe387 204
9a718b86 205(all assuming you're using MinGW)
1d341cf4
MB
206By default this will compile a DLL, if you want a static library,
207specify --disable-shared.
0a2fe387 208
a353a0be 209Type
0d639168 210-> make
0a2fe387
HH
211and wait, wait, wait. Don't leave the room, because the minute you do there
212will be a compile error :-)
213
1d341cf4
MB
214NB: if you are using a very old compiler you risk to get quite a few warnings
215 about "ANSI C++ forbids implicit conversion from 'void *'" in all places
216 where va_arg macro is used. This is due to a bug in (some versions of)
9a718b86 217 MinGW headers which may be corrected by upgrading your compier,
1d341cf4 218 otherwise you might edit the file
ce1a1ff4
VZ
219
220 ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h
221
222 (instead of egcs-2.91.57 you may have something different), searching for
223 the lines
224
225/* Define __gnuc_va_list. */
226
227#ifndef __GNUC_VA_LIST
228#define __GNUC_VA_LIST
229#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
230typedef char *__gnuc_va_list;
231#else
232typedef void *__gnuc_va_list;
233#endif
234#endif
235
236 and adding "|| defined(_WIN32)" to the list of platforms on which
237 __gnuc_va_list is char *.
238
1d341cf4 239If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib
9a718b86 240(or just libwx_msw.a if you opted for a static build).
1d341cf4 241Now try building the minimal sample:
0d639168 242
0a2fe387
HH
243-> cd samples/minimal
244-> make
0a2fe387 245
ce1a1ff4 246and run it with wine, for example (or copy to a Windows box)
0a2fe387
HH
247-> wine minimal.exe
248
249If all is well, do an install; from win32
250-> make install
251
a353a0be
RD
252Native and cross-compiled installations can co-exist peacefully
253(as long as their widget sets differ), except for wx-config. You might
0a2fe387 254want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
25a2a4b0
HH
255
256Cross-compiling TODO:
257---------------------
a353a0be 258- resource compiling must be done manually for now (should/can we link the
22baaed3
HH
259default wx resources into libwx_msw.a?) [ No we can't; the linker won't
260link it in... you have to supply an object file ]
25a2a4b0 261- static executables are HUGE -- there must be room for improvement.
214960fb 262