1 2* The most simple case 3----------------------- 4 5If you compile wxWidgets on Linux for the first time and don't like to read 6install instructions just do (in the base dir): 7 8> ./configure --with-wine 9> make 10> su <type root password> 11> make install 12> ldconfig 13> exit 14 15On all variants of Unix except Linux (and maybe except *BSD), shared libraries 16are not supported out of the box due to the utter stupidity of libtool, so you'll 17have to do this to get shared library support: 18 19> ./configure --with-wine --disable-unicode --disable-static --enable-shared 20 21Then you'll have to edit the wrongly created libtool script. There are two 22important entries with respect to shared library creation, which are 23 24 archive_cmds="\$LD -shared .... 25 archive_expsym_cmds="\$LD -shared .... 26 27which should be something like 28 29 archive_cmds="\$CC -shared .... 30 archive_expsym_cmds="\$CC -shared .... 31 32Afterwards you can continue with 33 34> make 35> su <type root password> 36> make install 37> ldconfig 38> exit 39 40If you want to remove wxWidgets on Unix you can do this: 41 42> su <type root password> 43> make uninstall 44> ldconfig 45> exit 46 47* The expert case 48----------------- 49 50If you want to do some more serious cross-platform programming with wxWidgets, 51such as for GTK and Motif, you can now build two complete libraries and use 52them concurrently. For this end, you have to create a directory for each build 53of wxWidgets - you may also want to create different versions of wxWidgets 54and test them concurrently. Most typically, this would be a version configured 55with --enable-debug_flag and one without. Note, that only one build can currently 56be installed, so you'd have to use local version of the library for that purpose. 57For building three versions (one GTK, one WINE and a debug version of the WINE 58source) you'd do this: 59 60md buildmotif 61cd buildmotif 62../configure --with-motif 63make 64cd .. 65 66md buildwine 67cd buildwine 68../configure --with-wine 69make 70cd .. 71 72md buildwined 73cd buildwined 74../configure --with-wine --enable-debug_flag 75make 76cd .. 77 78* The most simple errors 79------------------------ 80 81wxWINE doesn't work yet as WINE isn't really up to the task yet. 82 83You get errors during compilation: The reason is that you probably have a broken 84compiler, which includes almost everything that is called gcc. If you use gcc 2.8 85you have to disable optimisation as the compiler will give up with an internal 86compiler error. 87 88If there is just any way for you to use egcs, use egcs. We cannot fix gcc. 89 90You get immediate segfault when starting any sample or application: This is either 91due to having compiled the library with different flags or options than your program - 92typically you might have the __WXDEBUG__ option set for the library but not for your 93program - or due to using a broken compiler (and its optimisation) such as GCC 2.8. 94 95* The most simple program 96------------------------- 97 98Now create your super-application myfoo.app and compile anywhere with 99 100g++ myfoo.cpp `wx-config --libs --cflags` -o myfoo 101 102* General 103----------------------- 104 105The Unix variants of wxWidgets use GNU configure. If you have problems with your 106make use GNU make instead. 107 108If you have general problems with installation, read my homepage at 109 110 http://wesley.informatik.uni-freiburg.de/~wxxt 111 112for newest information. If you still don't have any success, please send a bug 113report to one of our mailing lists (see my homepage) INCLUDING A DESCRIPTION OF 114YOUR SYSTEM AND YOUR PROBLEM, SUCH AS YOUR VERSION OF WINE, WXWINE, WHAT DISTRIBUTION 115YOU USE AND WHAT ERROR WAS REPORTED. I know this has no effect, but I tried... 116 117* GUI libraries 118----------------------- 119 120wxWidgets/WINE requires the WINE library to be installed on your system. 121 122You can get the newest version of the WINE from the WINE homepage at: 123 124 http://www.winehq.com 125 126* Create your configuration 127----------------------------- 128 129Usage: 130 ./configure options 131 132If you want to use system's C and C++ compiler, 133set environment variables CC and CCC as 134 135 % setenv CC cc 136 % setenv CCC CC 137 % ./configure options 138 139to see all the options please use: 140 141 ./configure --help 142 143The basic philosophy is that if you want to use different 144configurations, like a debug and a release version, 145or use the same source tree on different systems, 146you have only to change the environment variable OSTYPE. 147(Sadly this variable is not set by default on some systems 148in some shells - on SGI's for example). So you will have to 149set it there. This variable HAS to be set before starting 150configure, so that it knows which system it tries to 151configure for. 152 153Configure will complain if the system variable OSTYPE has 154not been defined. And Make in some circumstances as well... 155 156 157* General options 158------------------- 159 160Given below are the commands to change the default behaviour, 161i.e. if it says "--disable-threads" it means that threads 162are enabled by default. 163 164Many of the configure options have been thoroughly tested 165in wxWidgets snapshot 6, but not yet all (ODBC not). 166 167You must do this by running configure with either of: 168 169 --with-wine Use the WINE library 170 171The following options handle the kind of library you want to build. 172 173 --enable-threads Compile with thread support. Threads 174 support is also required for the 175 socket code to work. 176 177 --disable-shared Do not create shared libraries. 178 179 --disable-optimise Do not optimise the code. Can 180 sometimes be useful for debugging 181 and is required on some architectures 182 such as Sun with gcc 2.8.X which 183 would otherwise produce segvs. 184 185 --enable-profile Add profiling info to the object 186 files. Currently broken, I think. 187 188 --enable-no_rtti Enable compilation without creation of 189 C++ RTTI information in object files. 190 This will speed-up compilation and reduce 191 binary size. 192 193 --enable-no_exceptions Enable compilation without creation of 194 C++ exception information in object files. 195 This will speed-up compilation and reduce 196 binary size. Also fewer crashes during the 197 actual compilation... 198 199 --enable-mem_tracing Add built-in memory tracing. 200 201 --enable-dmalloc Use the dmalloc memory debugger. 202 Read more at www.letters.com/dmalloc/ 203 204 --enable-debug_info Add debug info to object files and 205 executables for use with debuggers 206 such as gdb (or its many frontends). 207 208 --enable-debug_flag Define __DEBUG__ and __WXDEBUG__ when 209 compiling. This enable wxWidgets' very 210 useful internal debugging tricks (such 211 as automatically reporting illegal calls) 212 to work. Note that program and library 213 must be compiled with the same debug 214 options. 215 216* Feature Options 217------------------- 218 219Many of the configure options have been thoroughly tested 220in wxWidgets snapshot 6, but not yet all (ODBC not). 221 222When producing an executable that is linked statically with wxGTK 223you'll be surprised at its immense size. This can sometimes be 224drastically reduced by removing features from wxWidgets that 225are not used in your program. The most relevant such features 226are 227 228 --without-libpng Disables PNG image format code. 229 230 --without-libjpeg Disables JPEG image format code. 231 232{ --without-odbc Disables ODBC code. Not yet. } 233 234 --disable-resources Disables the use of *.wxr type 235 resources. 236 237 --disable-threads Disables threads. Will also 238 disable sockets. 239 240 --disable-sockets Disables sockets. 241 242 --disable-dnd Disables Drag'n'Drop. 243 244 --disable-clipboard Disables Clipboard. 245 246 --disable-serial Disables object instance serialisation. 247 248 --disable-streams Disables the wxStream classes. 249 250 --disable-file Disables the wxFile class. 251 252 --disable-textfile Disables the wxTextFile class. 253 254 --disable-intl Disables the internationalisation. 255 256 --disable-validators Disables validators. 257 258 --disable-accel Disables accel. 259 260Apart from disabling certain features you can very often "strip" 261the program of its debugging information resulting in a significant 262reduction in size. 263 264* Compiling 265------------- 266 267The following must be done in the base directory (e.g. ~/wxGTK 268or ~/wxWin or whatever) 269 270Now the makefiles are created (by configure) and you can compile 271the library by typing: 272 273 make 274 275make yourself some coffee, as it will take some time. On an old 276386SX possibly two weeks. During compilation, you'll get a few 277warning messages depending in your compiler. 278 279If you want to be more selective, you can change into a specific 280directory and type "make" there. 281 282Then you may install the library and its header files under 283/usr/local/include/wx and /usr/local/lib respectively. You 284have to log in as root (i.e. run "su" and enter the root 285password) and type 286 287 make install 288 289You can remove any traces of wxWidgets by typing 290 291 make uninstall 292 293If you want to save disk space by removing unnecessary 294object-files: 295 296 make clean 297 298in the various directories will do the work for you. 299 300* Creating a new Project 301-------------------------- 302 3031) The first way uses the installed libraries and header files 304automatically using wx-config 305 306g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo 307 308Using this way, a make file for the minimal sample would look 309like this 310 311CC = g++ 312 313minimal: minimal.o 314 $(CC) -o minimal minimal.o `wx-config --libs` 315 316minimal.o: minimal.cpp mondrian.xpm 317 $(CC) `wx-config --cflags` -c minimal.cpp -o minimal.o 318 319clean: 320 rm -f *.o minimal 321 322This is certain to become the standard way unless we decide 323to stick to tmake. 324 3252) The other way creates a project within the source code 326directories of wxWidgets. For this endeavour, you'll need 327the usual number of GNU tools, at least 328 329GNU automake version 1.4 330GNU autoheader version 2.14 331GNU autoconf version 2.14 332GNU libtool version 1.3 333 334and quite possibly 335 336GNU make 337GNU C++ 338 339and if you have all this then you probably know enough to 340go ahead yourself :-) 341 342---------------------- 343 344In the hope that it will be useful, 345 346 Robert Roebling <roebling@sun2.ruf.uni-freiburg.de> 347 348 349Addition notes by Julian Smart, August 2002 350=========================================== 351 352I've fixed some compile errors, and got as far as 353compiling wxWINE, but actually linking a sample will take 354further work. 355 356To compile wxWINE, export these variables: 357 358export CPPFLAGS=-I/usr/local/include/wine 359export LDFLAGS=-L/usr/local/lib/wine 360 361and configure with: 362 363configure --disable-static --enable-shared --enable-gui \ 364 --with-wine --without-libpng --enable-debug_flag --enable-log \ 365 --enable-debug_info --enable-ole --enable-clipboard --enable-dataobj \ 366 --enable-debug --enable-threads --disable-sockets \ 367 --with-libjpeg --enable-debug_cntxt 368 369Compiling a sample won't work yet because 'winebuild' needs 370to be called, and the resuling C file compiled and linked. 371Plus, Windows DLLs need to be imported. 372 373Note that the documentation on the WINE web site on using 374winebuild is out of date (August 2002) -- the spec file no 375longer supports import and type keywords. Instead look at 376samples in the WINE 'programs' directory for inspiration 377and compile options to use. It's probable that the 378wxWINE library will need recompiling with different options. 379 380Any progress on this front will be very welcome. 381 382Note that while wxWINE builds with --enable-unicode, samples 383don't run. Some samples will run when built with 384--disable-unicode, and others (such as auidemo) fail. 385 386