]>
Commit | Line | Data |
---|---|---|
f6577bba RR |
1 | ------------------------------------------------------------------------ |
2 | How to build the sources from CVS | |
3 | ------------------------------------------------------------------------ | |
4 | ||
5 | I) Windows using plain makefiles | |
6 | ---------------------------------------- | |
7 | ||
2662e49e | 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 | ||
14 | When using MingW32 you'll need a few of the tools that | |
15 | are either shipped separately or only as part of the | |
16 | Cygwin32 toolchain. First and foremost, you'll need | |
17 | ||
18 | make.exe | |
19 | byacc.exe | |
20 | ||
21 | make.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 | |
46 | II) Unix using plain makefiles. | |
47 | ---------------------------------------- | |
48 | ||
a533f5c1 RR |
49 | Set WXWIN environment variable to the base directory such |
50 | as ~/wxWindows | |
51 | ||
52 | -> type: export WXWIN=~/wxWindows | |
f6577bba | 53 | |
a533f5c1 RR |
54 | Edit ~/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 | |
60 | III) Windows using configure | |
61 | ---------------------------------------- | |
62 | ||
22baaed3 | 63 | Take a look at Unix->Windows cross compiling. With minor |
0a2fe387 HH |
64 | modifications, this should work in Windows if you've got the cygnus |
65 | utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed. | |
22baaed3 HH |
66 | See http://www.cygnus.com for these programs, or go straight to their |
67 | ftp server at ftp://sourceware.cygnus.com/pub/cygwin/. | |
68 | ||
69 | Of course, you can also build the library using plain makefiles (see | |
70 | section I). | |
f6577bba RR |
71 | |
72 | IV) Unix using configure | |
73 | ---------------------------------------- | |
74 | ||
75 | a) You have all the newest and greatest GNU tools installed on your system | |
76 | and in the same directory hierachy (e.g. either all tools in /usr or all | |
77 | in /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) |
81 | and 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 | ||
88 | b) 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 | ||
93 | a+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 | |
100 | or type: ../configure --with-motif | |
101 | or type: ../configure --with-wine | |
102 | -> type make | |
103 | -> drink lots of coffee and go shopping | |
104 | ||
105 | ||
106 | V) MacOS | |
107 | ---------------------------------------- | |
108 | ||
0a2fe387 | 109 | VI) OS/2 |
f6577bba RR |
110 | ---------------------------------------- |
111 | ||
0a2fe387 HH |
112 | VII) Unix->Windows cross-compiling using configure |
113 | -------------------------------------------------- | |
114 | ||
115 | First you'll need a cross-compiler; linux glibc binaries of mingw32 and | |
116 | cygwin32 (both based on egcs) can be found at | |
117 | ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Otherwise you can | |
118 | compile one yourself. Check the relevant FAQs. | |
119 | ||
120 | [ A Note about cygwin32 and mingw32: the main difference is that cygwin32 | |
121 | binaries are always linked against cygwin.dll. This dll encapsulates most | |
122 | standard Unix C extensions, which is very handy if you're porting unix | |
123 | software to windows. However, wxMSW doesn't need this, so mingw32 is | |
124 | preferable if you write portable C(++). ] | |
125 | ||
126 | You might want to build both Unix and Windows binaries in the same source | |
127 | tree; to do this make subdirs for each e.g. unix and win32. If you've | |
128 | already build wxWindows in the main dir, do a 'make distclean' there, | |
129 | otherwise configure will get confused. (In any case, read the section 'Unix | |
130 | using configure' and make sure you're able to build a native wxWindows | |
131 | library; cross-compiling errors can be pretty obscure and you'll want to be | |
132 | sure that your configure setup is basically sound.) | |
133 | ||
134 | To 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 | ||
142 | The important thing to notice here is that we suply configure with the names | |
143 | of all the non-default binutils (make sure they're in the PATH!), and that | |
144 | we tell configure to build for the host platform i586-mingw32. | |
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. |