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