- !!! When sending bug reports tell us what version of wxWindows you are
- using (including the beta) and what compiler on what system. One
- example: wxWINE 2.1 snapshot 6, egcs 1.1.1, Redhat 5.0 !!!
-
-* Preparing WINE
-----------------
-
-Most C++ compilers cannot compile the WINE sources yet (this includes
-all versions of g++ and egcs) so you have to make a minimal change
-and recompile all of WINE in order to get anywhere.
-
-This change has do be applied to the /include/windef.h file, line 59
-in the section "Calling convention definitions", where the sources
-reads:
-
-#if __i386__
-
-which has to be changed into
-
-#if 0
-
-After this change, you'll have to recompile all of WINE without
-forgetting to install it. The direct consequence of this change
-is that the Win32 binary emulator won't work anymore, as the
-change disables the Windows native calling convention.
-
* The most simple case
-----------------------
-If you compile wxWindows on Linux for the first time and don't like to read
+If you compile wxWidgets on Linux for the first time and don't like to read
install instructions just do (in the base dir):
> ./configure --with-wine
are not supported out of the box due to the utter stupidity of libtool, so you'll
have to do this to get shared library support:
-> ./configure --with-wine --disable-static --enable-shared
+> ./configure --with-wine --disable-unicode --disable-static --enable-shared
Then you'll have to edit the wrongly created libtool script. There are two
important entries with respect to shared library creation, which are
> ldconfig
> exit
-If you want to remove wxWindows on Unix you can do this:
+If you want to remove wxWidgets on Unix you can do this:
> su <type root password>
> make uninstall
* The expert case
-----------------
-If you want to do some more serious cross-platform programming with wxWindows,
+If you want to do some more serious cross-platform programming with wxWidgets,
such as for GTK and Motif, you can now build two complete libraries and use
them concurrently. For this end, you have to create a directory for each build
-of wxWindows - you may also want to create different versions of wxWindows
+of wxWidgets - you may also want to create different versions of wxWidgets
and test them concurrently. Most typically, this would be a version configured
with --enable-debug_flag and one without. Note, that only one build can currently
be installed, so you'd have to use local version of the library for that purpose.
* General
-----------------------
-The Unix variants of wxWindows use GNU configure. If you have problems with your
+The Unix variants of wxWidgets use GNU configure. If you have problems with your
make use GNU make instead.
If you have general problems with installation, read my homepage at
* GUI libraries
-----------------------
-wxWindows/WINE requires the WINE library to be installed on your system.
+wxWidgets/WINE requires the WINE library to be installed on your system.
You can get the newest version of the WINE from the WINE homepage at:
-----------------------------
Usage:
- ./configure options
+ ./configure options
If you want to use system's C and C++ compiler,
set environment variables CC and CCC as
- % setenv CC cc
- % setenv CCC CC
- % ./configure options
+ % setenv CC cc
+ % setenv CCC CC
+ % ./configure options
to see all the options please use:
- ./configure --help
+ ./configure --help
The basic philosophy is that if you want to use different
configurations, like a debug and a release version,
are enabled by default.
Many of the configure options have been thoroughly tested
-in wxWindows snapshot 6, but not yet all (ODBC not).
+in wxWidgets snapshot 6, but not yet all (ODBC not).
You must do this by running configure with either of:
- --with-wine Use the WINE library
-
+ --with-wine Use the WINE library
+
The following options handle the kind of library you want to build.
- --enable-threads Compile without thread support. Threads
- support is also required for the
- socket code to work.
-
- --disable-shared Do not create shared libraries.
-
- --disable-optimise Do not optimise the code. Can
- sometimes be useful for debugging
- and is required on some architectures
- such as Sun with gcc 2.8.X which
- would otherwise produce segvs.
-
- --enable-profile Add profiling info to the object
- files. Currently broken, I think.
-
- --enable-no_rtti Enable compilation without creation of
- C++ RTTI information in object files.
- This will speed-up compilation and reduce
- binary size.
-
- --enable-no_exceptions Enable compilation without creation of
- C++ exception information in object files.
- This will speed-up compilation and reduce
- binary size. Also fewer crashes during the
- actual compilation...
-
- --enable-mem_tracing Add built-in memory tracing.
-
- --enable-dmalloc Use the dmalloc memory debugger.
- Read more at www.letters.com/dmalloc/
-
- --enable-debug_info Add debug info to object files and
- executables for use with debuggers
- such as gdb (or its many frontends).
-
- --enable-debug_flag Define __DEBUG__ and __WXDEBUG__ when
- compiling. This enable wxWindows' very
- useful internal debugging tricks (such
- as automatically reporting illegal calls)
- to work. Note that program and library
- must be compiled with the same debug
- options.
+ --enable-threads Compile with thread support. Threads
+ support is also required for the
+ socket code to work.
+
+ --disable-shared Do not create shared libraries.
+
+ --disable-optimise Do not optimise the code. Can
+ sometimes be useful for debugging
+ and is required on some architectures
+ such as Sun with gcc 2.8.X which
+ would otherwise produce segvs.
+
+ --enable-profile Add profiling info to the object
+ files. Currently broken, I think.
+
+ --enable-no_rtti Enable compilation without creation of
+ C++ RTTI information in object files.
+ This will speed-up compilation and reduce
+ binary size.
+
+ --enable-no_exceptions Enable compilation without creation of
+ C++ exception information in object files.
+ This will speed-up compilation and reduce
+ binary size. Also fewer crashes during the
+ actual compilation...
+
+ --enable-mem_tracing Add built-in memory tracing.
+
+ --enable-dmalloc Use the dmalloc memory debugger.
+ Read more at www.letters.com/dmalloc/
+
+ --enable-debug_info Add debug info to object files and
+ executables for use with debuggers
+ such as gdb (or its many frontends).
+
+ --enable-debug_flag Define __DEBUG__ and __WXDEBUG__ when
+ compiling. This enable wxWidgets' very
+ useful internal debugging tricks (such
+ as automatically reporting illegal calls)
+ to work. Note that program and library
+ must be compiled with the same debug
+ options.
* Feature Options
-------------------
Many of the configure options have been thoroughly tested
-in wxWindows snapshot 6, but not yet all (ODBC not).
+in wxWidgets snapshot 6, but not yet all (ODBC not).
When producing an executable that is linked statically with wxGTK
you'll be surprised at its immense size. This can sometimes be
-drastically reduced by removing features from wxWindows that
+drastically reduced by removing features from wxWidgets that
are not used in your program. The most relevant such features
are
- --without-libpng Disables PNG image format code.
-
- --without-libjpeg Disables JPEG image format code.
-
-{ --without-odbc Disables ODBC code. Not yet. }
-
- --disable-resources Disables the use of *.wxr type
- resources.
-
- --disable-threads Disables threads. Will also
- disable sockets.
-
- --disable-sockets Disables sockets.
-
- --disable-dnd Disables Drag'n'Drop.
-
- --disable-clipboard Disables Clipboard.
-
- --disable-serial Disables object instance serialisation.
-
- --disable-streams Disables the wxStream classes.
-
- --disable-file Disables the wxFile class.
-
- --disable-textfile Disables the wxTextFile class.
-
- --disable-intl Disables the internationalisation.
-
- --disable-validators Disables validators.
-
- --disable-accel Disables accel.
-
+ --without-libpng Disables PNG image format code.
+
+ --without-libjpeg Disables JPEG image format code.
+
+{ --without-odbc Disables ODBC code. Not yet. }
+
+ --disable-resources Disables the use of *.wxr type
+ resources.
+
+ --disable-threads Disables threads. Will also
+ disable sockets.
+
+ --disable-sockets Disables sockets.
+
+ --disable-dnd Disables Drag'n'Drop.
+
+ --disable-clipboard Disables Clipboard.
+
+ --disable-serial Disables object instance serialisation.
+
+ --disable-streams Disables the wxStream classes.
+
+ --disable-file Disables the wxFile class.
+
+ --disable-textfile Disables the wxTextFile class.
+
+ --disable-intl Disables the internationalisation.
+
+ --disable-validators Disables validators.
+
+ --disable-accel Disables accel.
+
Apart from disabling certain features you can very often "strip"
the program of its debugging information resulting in a significant
reduction in size.
Now the makefiles are created (by configure) and you can compile
the library by typing:
- make
+ make
make yourself some coffee, as it will take some time. On an old
386SX possibly two weeks. During compilation, you'll get a few
have to log in as root (i.e. run "su" and enter the root
password) and type
- make install
+ make install
-You can remove any traces of wxWindows by typing
+You can remove any traces of wxWidgets by typing
make uninstall
-
+
If you want to save disk space by removing unnecessary
object-files:
- make clean
+ make clean
in the various directories will do the work for you.
Using this way, a make file for the minimal sample would look
like this
-CC = g++
+CXX = g++
minimal: minimal.o
- $(CC) -o minimal minimal.o `wx-config --libs`
+ $(CXX) -o minimal minimal.o `wx-config --libs`
-minimal.o: minimal.cpp mondrian.xpm
- $(CC) `wx-config --cflags` -c minimal.cpp -o minimal.o
+minimal.o: minimal.cpp
+ $(CXX) `wx-config --cflags` -c minimal.cpp -o minimal.o
clean:
- rm -f *.o minimal
+ rm -f *.o minimal
This is certain to become the standard way unless we decide
to stick to tmake.
2) The other way creates a project within the source code
-directories of wxWindows. For this endeavour, you'll need
+directories of wxWidgets. For this endeavour, you'll need
the usual number of GNU tools, at least
GNU automake version 1.4
In the hope that it will be useful,
Robert Roebling <roebling@sun2.ruf.uni-freiburg.de>
-
-
+
+
+Addition notes by Julian Smart, August 2002
+===========================================
+
+I've fixed some compile errors, and got as far as
+compiling wxWINE, but actually linking a sample will take
+further work.
+
+To compile wxWINE, export these variables:
+
+export CPPFLAGS=-I/usr/local/include/wine
+export LDFLAGS=-L/usr/local/lib/wine
+
+and configure with:
+
+configure --disable-static --enable-shared --enable-gui \
+ --with-wine --without-libpng --enable-debug_flag --enable-log \
+ --enable-debug_info --enable-ole --enable-clipboard --enable-dataobj \
+ --enable-debug --enable-threads --disable-sockets \
+ --with-libjpeg --enable-debug_cntxt
+
+Compiling a sample won't work yet because 'winebuild' needs
+to be called, and the resuling C file compiled and linked.
+Plus, Windows DLLs need to be imported.
+
+Note that the documentation on the WINE web site on using
+winebuild is out of date (August 2002) -- the spec file no
+longer supports import and type keywords. Instead look at
+samples in the WINE 'programs' directory for inspiration
+and compile options to use. It's probable that the
+wxWINE library will need recompiling with different options.
+
+Any progress on this front will be very welcome.
+
+Note that while wxWINE builds with --enable-unicode, samples
+don't run. Some samples will run when built with
+--disable-unicode, and others (such as auidemo) fail.
+