383 lines
12 KiB
Plaintext
383 lines
12 KiB
Plaintext
|
* General
|
||
|
----------
|
||
|
|
||
|
The Unix variants of wxWindows use GNU configure. If you have problems
|
||
|
with your make use GNU make instead.
|
||
|
|
||
|
* GUI libraries
|
||
|
-----------------------
|
||
|
|
||
|
wxWindows requires a GUI toolkit to be installed. Does that make
|
||
|
sense? So far only the GTK is supported, but we hope to provide
|
||
|
the choice between GTK, Qt, Motif/Lesstif in the not so distant
|
||
|
future.
|
||
|
|
||
|
You can get the newest version of the GTK from the GTK homepage
|
||
|
at
|
||
|
http://www.gtk.org
|
||
|
|
||
|
The newest versin of Qt can be downloaded for free from the Trolltec's
|
||
|
site at
|
||
|
http://www.troll.no
|
||
|
|
||
|
Lesstif can be downloaded from their site
|
||
|
at
|
||
|
http://www.lesstif.org
|
||
|
|
||
|
If you want to develop using Motif, you need to buy it, unless it comes
|
||
|
with your operating system such as all commercial Unices, as well as
|
||
|
RedHat's, SuSe's and probably other's Linux Motif editions.
|
||
|
|
||
|
* Additional libraries
|
||
|
-----------------------
|
||
|
|
||
|
There will be a few more features of wxWindows, which will
|
||
|
require further libraries (on some platforms). These
|
||
|
features will be optional. I hope to teach configure
|
||
|
to check that out automatically.
|
||
|
|
||
|
Thread support:
|
||
|
|
||
|
Requires pthreads under Linux with glibc 2. pthreads are
|
||
|
always present on such systems, so just compile, unless
|
||
|
you have RedHat 5.0, which has a broken combination of
|
||
|
glibc 2 and X. In this case, you have to run configure
|
||
|
with "--without-threads".
|
||
|
|
||
|
Requires PCthreads under Linux with libc 5. If you
|
||
|
haven't installed pcthreads, there will be no thread
|
||
|
support in wxWindows, but the library will compile.
|
||
|
|
||
|
Requires Posix threads on commercial Unix system,
|
||
|
which are always present. Just compile.
|
||
|
|
||
|
Requires SGI threads on IRIX, which are always present.
|
||
|
Just compile.
|
||
|
|
||
|
Python scripting language support:
|
||
|
|
||
|
Requires Python. Soon to come.
|
||
|
|
||
|
* Other things to do
|
||
|
-----------------------------
|
||
|
|
||
|
wxGTK and wxMotif/wxLesstif require the built-in
|
||
|
ImLib/GdkImlib to be configured. For that purpose
|
||
|
copy the two files from /misc/imlib to your
|
||
|
home directory. You may also edit imrc by hand as
|
||
|
you like. The palette file is required when using
|
||
|
wxWindows in 256-colour mode.
|
||
|
|
||
|
If you want to use wxWindows's ODBC support, you'll have
|
||
|
to create a .odbc.ini file. The readme file in
|
||
|
~/src/iodbc tells you what to do.
|
||
|
|
||
|
|
||
|
* Create your configuration
|
||
|
-----------------------------
|
||
|
|
||
|
This must be done in /install/unix
|
||
|
|
||
|
Usage:
|
||
|
./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
|
||
|
|
||
|
to see all the options please use:
|
||
|
|
||
|
./configure --help
|
||
|
|
||
|
The basic philosophy is that if you want to use different
|
||
|
configurations, like a debug and a release version,
|
||
|
or use the same source tree on different systems,
|
||
|
you have only to change the environment variable OSTYPE.
|
||
|
(Sadly this variable is not set by default on some systems
|
||
|
in some shells - on SGI's for example). So you will have to
|
||
|
set it there. This variable HAS to be set before starting
|
||
|
configure, so that it knows which system it tries to
|
||
|
configure for.
|
||
|
|
||
|
Configure will complain if the system variable OSTYPE has
|
||
|
not been defined. And Make in some circumstances as well...
|
||
|
|
||
|
* General options
|
||
|
-------------------
|
||
|
|
||
|
Obviously, you have to choose a toolkit. You must do this by
|
||
|
running configure with either of
|
||
|
|
||
|
--with-gtk Use the GIMP ToolKit (GTK)
|
||
|
|
||
|
--with-qt Use Qt from TrollTec
|
||
|
|
||
|
--with-motif Use either Motif or Lesstif
|
||
|
Configure will look for both.
|
||
|
|
||
|
The following options handle the kind of library you want to build.
|
||
|
|
||
|
--with-shared Create shared libraries.
|
||
|
|
||
|
--without-optimise Do not optimise the code.
|
||
|
|
||
|
--with-profile Add profiling info to the
|
||
|
object files. Currently
|
||
|
broken.
|
||
|
|
||
|
--with-mem_tracing Add built-in memory tracing.
|
||
|
|
||
|
--with-debug_info Add debug info to object
|
||
|
files.
|
||
|
|
||
|
--with-debug_flag Define __DEBUG__ and __WXDEBUG__ when
|
||
|
compiling.
|
||
|
|
||
|
* Feature Options
|
||
|
-------------------
|
||
|
|
||
|
When using the Windows version of wxWindows, it is possible
|
||
|
to edit the file /include/wx/msw/setup.h in order to enable
|
||
|
or disable some features of wxWindows so that the resulting
|
||
|
binaries get smaller.
|
||
|
|
||
|
As I don't yet care for binary size and target mainly at
|
||
|
producing a shared library, wxWindows's configure system auto-
|
||
|
matically enables all features, as long as they are already
|
||
|
implemented.
|
||
|
|
||
|
* Compiling
|
||
|
-------------
|
||
|
|
||
|
The following must be done in the base directory (e.g. ~/wxGTK
|
||
|
or ~/wxWin)
|
||
|
|
||
|
First you have to create all makefiles in all subdirectories:
|
||
|
|
||
|
make Makefiles
|
||
|
|
||
|
Dependencies are generated automatically using
|
||
|
|
||
|
make depend
|
||
|
|
||
|
for some reason, this doesn't seem to work.
|
||
|
|
||
|
Now the makefiles are created you can compile everything is as simple
|
||
|
as typing:
|
||
|
|
||
|
make
|
||
|
|
||
|
make yourself some coffee, as it will try to compile
|
||
|
ALL the files in this distribution.
|
||
|
|
||
|
if you want to be more selective:
|
||
|
|
||
|
make src will build only the base libraries
|
||
|
make utils will build the utils
|
||
|
make samples will build the samples
|
||
|
make other will build the other samples
|
||
|
make user will build the files in the directory other
|
||
|
|
||
|
Depending on the configuration of some files, the libraries
|
||
|
and binaries will be placed in different directories.
|
||
|
The "global" binaries and libraries will be placed in:
|
||
|
|
||
|
bin/$(OSTYPE) and
|
||
|
lib/$(OSTYPE) respectively
|
||
|
|
||
|
"local" binaries and libraries will be placed in:
|
||
|
|
||
|
(basedir of that application)/$(OSTYPE).
|
||
|
|
||
|
This is also the place where all the object-files will go.
|
||
|
|
||
|
If you want to conserve disk space by removing unnecessary
|
||
|
object-files:
|
||
|
|
||
|
make clean_obj
|
||
|
|
||
|
will do the work for you.
|
||
|
|
||
|
* Creating a new Project
|
||
|
--------------------------
|
||
|
|
||
|
I propose to put all contributed programs in the directory
|
||
|
"~/wxWin/user", with a directory of its own.
|
||
|
|
||
|
This directory then should include the following files:
|
||
|
|
||
|
Makefile (You can copy this one from any application in samples
|
||
|
probably you will not need to edit this one. There is
|
||
|
only one case where you might be interested in changing
|
||
|
this file, but about that see later.)
|
||
|
Makefile.in (This is the base application-Makefile template, from
|
||
|
which the actual Makefile for each system is created.
|
||
|
More about this later)
|
||
|
|
||
|
put ALL your source code along with all the other stuff you need for
|
||
|
your application in this directory (subdirectories are welcome).
|
||
|
|
||
|
** Something about Makefiles
|
||
|
------------------------------
|
||
|
|
||
|
On general principle it should only contain ONE line, which is as follows:
|
||
|
|
||
|
include ../../src/unix/setup/general/makeapp
|
||
|
|
||
|
this will include all the necessary definitions for creating the applications
|
||
|
|
||
|
the only case where you might want to add another line is the following:
|
||
|
this version of configure also supports creation of source archives of the
|
||
|
application for easy distribution and updates to newer version of wxWindows.
|
||
|
For this purpose all files in the application-directory will be put into
|
||
|
a gziped tar-file in the full notation user/<your application>/*
|
||
|
if you want to include some other files that you want "more visible", like
|
||
|
a README.<yourApp> or a shell script for easy
|
||
|
compilation/installation/distribution, then you have to add a variable
|
||
|
|
||
|
DISTRIBUTE_ADDITIONAL=<your files>
|
||
|
|
||
|
to the Makefile.
|
||
|
So it would look like this:
|
||
|
|
||
|
DISTRIBUTE_ADDITIONAL=README.TheApp
|
||
|
include ../../src/unix/setup/general/makeapp
|
||
|
|
||
|
As we have already talked about distribution the command to create a
|
||
|
distribution is:
|
||
|
|
||
|
make distrib
|
||
|
|
||
|
NOTE: If you are in the base directory of wxWindows it will create
|
||
|
distribution packages for wxWindows as well as for all packages in the
|
||
|
user directory.
|
||
|
So if you want to create only packages for the files in user,
|
||
|
then go to the directory other and type:
|
||
|
|
||
|
make distrib
|
||
|
|
||
|
or if you only want one application to be created then
|
||
|
enter the specific directory and type there:
|
||
|
make distrib
|
||
|
|
||
|
All the distribution files will be put in the directory
|
||
|
distrib at the base of the wxWindows-tree (where also configure
|
||
|
and template.mak can be found).
|
||
|
|
||
|
** Something about Makefile.in
|
||
|
--------------------------------
|
||
|
|
||
|
As you have already seen with Makefile, configure makes a lot of use
|
||
|
if the include statement in make to keep the Makefiles as simple as
|
||
|
possible.
|
||
|
|
||
|
So basically there are only variables to define and then a include command.
|
||
|
Exception to this rule is if you have special rules for some stuff...
|
||
|
These rules should go AFTER the include statement!!!
|
||
|
|
||
|
so the general header looks like this:
|
||
|
|
||
|
# wxWindows base directory
|
||
|
WXBASEDIR=@WXBASEDIR@
|
||
|
# set the OS type for compilation
|
||
|
OS=@OS@
|
||
|
# compile a library only
|
||
|
RULE=bin
|
||
|
|
||
|
and the general footer will look like this:
|
||
|
|
||
|
# include the definitions now
|
||
|
include ../../../template.mak
|
||
|
|
||
|
the key variable is RULE, which defines what make should create
|
||
|
in this directory.
|
||
|
|
||
|
here are some examples:
|
||
|
|
||
|
RULE description
|
||
|
===========================================================================
|
||
|
bin creates a local binary (for a global binary prefix bin with g)
|
||
|
additional variables needed:
|
||
|
BIN_TARGET this gives the name of your application
|
||
|
BIN_OBJ this gives the object files needed to
|
||
|
link the application
|
||
|
optional variables are:
|
||
|
BIN_SRC this gives the list of c/c++ files for
|
||
|
which dependencies will be checked.
|
||
|
(This can be achieved with: make depend)
|
||
|
BIN_LINK this gives commands for additional
|
||
|
libraries needed to link the application
|
||
|
---------------------------------------------------------------------------
|
||
|
bin2 creates two local binaries (for global binaries prefix bin2 with g)
|
||
|
in addition to the variables specified above you MUST also
|
||
|
provide the same variables with BIN2_ instead of BIN_
|
||
|
---------------------------------------------------------------------------
|
||
|
lib creates a local library (for a global binary prefix bin with g)
|
||
|
additional variables needed:
|
||
|
LIB_TARGET this gives the name of your library
|
||
|
LIB_OBJ this gives the object files needed for
|
||
|
the library to be build.
|
||
|
optional variables are:
|
||
|
LIB_SRC this gives the list of c/c++ files for
|
||
|
which dependencies will be checked.
|
||
|
libbin and libgbin are also possible and will need in addition
|
||
|
the variables from bin
|
||
|
---------------------------------------------------------------------------
|
||
|
gslib is similar to lib, but it creates a shared library if the system
|
||
|
supports it.
|
||
|
additional variables needed:
|
||
|
LIB_MAJOR major number of the shared library
|
||
|
LIB_MINOR minor number of the shared library
|
||
|
---------------------------------------------------------------------------
|
||
|
other additional variables:
|
||
|
|
||
|
ADD_COMPILE define additional includes/defines that
|
||
|
are needed to compile the object files
|
||
|
(if you need to reference some directory
|
||
|
utils - like wxGrid -, then please
|
||
|
reference them with the variables defined
|
||
|
in template.mak - e.g.: $(SRCDIR),$(UTILS),
|
||
|
$(SAMPLES),$(OTHERS))
|
||
|
|
||
|
NEEDED_DEFINES lists all the defines that HAVE to be set in
|
||
|
/include/wx/setup.h to compile correctly.
|
||
|
|
||
|
SRC_DIR lists all directories that are needed to
|
||
|
compile. (i.e: lists all the directories,
|
||
|
where there are source-files.) But it is
|
||
|
also needed to clean an object and for
|
||
|
machines, for which make does not support
|
||
|
VPATH
|
||
|
|
||
|
currently there are the following compiling rules provided:
|
||
|
object files are created for the following file extensions:
|
||
|
.c .cc .cpp
|
||
|
|
||
|
Please have a closer look at the Makefiles in this distribution.
|
||
|
|
||
|
* Platforms configure is working with
|
||
|
---------------------------------------
|
||
|
|
||
|
Please report build succes on any machine. Especially non-
|
||
|
Linux operating systems (which I don't have).
|
||
|
|
||
|
Original author of the autoconf system for wxxt-1.66 and for this INSTALL
|
||
|
file:
|
||
|
|
||
|
Martin Sperl sperl@dsn.ast.univie.ac.at
|
||
|
|
||
|
Ported to wxGTK 0.1:
|
||
|
|
||
|
Wolfram Gloger wmglo@dent.med.uni-muenchen.de
|
||
|
|
||
|
Thanks alot to both of them.
|
||
|
|
||
|
In the hope that it will be useful,
|
||
|
|
||
|
Robert Roebling roebling@sun2.ruf.uni-freiburg.de
|
||
|
|
||
|
|