321 lines
9.9 KiB
Plaintext
321 lines
9.9 KiB
Plaintext
|
* General
|
||
|
----------
|
||
|
|
||
|
wxGTK uses GNU configure. If you have problems with your make use GNU
|
||
|
make instead.
|
||
|
|
||
|
* Create your configuration
|
||
|
-----------------------------
|
||
|
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
|
||
|
-------------------
|
||
|
|
||
|
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.
|
||
|
Not yet.
|
||
|
|
||
|
--with-debug Add debug info to object
|
||
|
files.
|
||
|
|
||
|
* 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, wxGTK's configure system auto-
|
||
|
matically enables all features, as long as they are already
|
||
|
implemented.
|
||
|
|
||
|
* Additional libraries
|
||
|
-----------------------
|
||
|
|
||
|
[Note: Currently wxGTK will compile out-of-the-box
|
||
|
with no extra libraries required. Support for
|
||
|
OpenGl, threads, Python and hopefully ODBC
|
||
|
support will soon be added.]
|
||
|
|
||
|
wxGTK requires the GTK (The Gimp Toolkit) to be installed,
|
||
|
which probably makes sense.
|
||
|
|
||
|
There will be a few more features of wxGTK, 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 without glibc.
|
||
|
|
||
|
OpenGl:
|
||
|
|
||
|
Requires OpenGl or MesaGl.
|
||
|
|
||
|
Python scripting language support:
|
||
|
|
||
|
Requires Python.
|
||
|
|
||
|
* Compiling
|
||
|
-------------
|
||
|
|
||
|
First you have to create all makefiles in all subdirectories:
|
||
|
|
||
|
make makefiles
|
||
|
|
||
|
Dependencies are generated automatically using
|
||
|
|
||
|
make depend
|
||
|
|
||
|
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
|
||
|
"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/gtk/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 wxxt.
|
||
|
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/gtk/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 wxxt it will create
|
||
|
distribution packages for wxxt 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 wxxt-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:
|
||
|
|
||
|
# wxGTK 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
|
||
|
|
||
|
|