Boost logo

Boost-Build :

From: Juergen Hunold (hunold_at_[hidden])
Date: 2005-11-06 16:05:16


Hi !

I've been playing around with the upcoming Qt-4.1 and got V2 to compile
it. Please find the necessary patch to qt4.jam and types/qt.jam
attached. It does the following:

- add a new pseudo-target "moccable-h" for "moc and include" header
files.
- rename "moc.cpp"-rule to "moc.inc" because it is now used to handle
both .cpp and .h files for "moc and include"
- fixes a really bad typo (defines added with -I$(DEFINES).
 
Please find my set of Jamfiles for compiling Qt4.1 attached too.
These still require a full configure; make cycle because of:
- QTDIR/include/global/qconfig.h (generated by configure)
- I still don't build the tools (moc, rcc, uic, qt3to4 etc)

I'll take a look at the Quickbook toolset in order to find out how to
"auto-build" the tools in the next weeks.

Caveats:
- Works and tested on Linux (Debian Unstable) with gcc-4.0.2 and "full"
Qt-configuration including MySQ and especially Freetype2. That means
I'm not sure how to implement the numerous configuration checks of
"configure".
- QtSvg is not compiling because the current "moc and include" solution
fails to add the necessary include paths to the generated file to the
commandline. Strange, as the rest is compiling, but this may be due to
the fact that there the old "moc to cpp and compile" mechanism is at
work.
- The "[cast _ mocable-h : some_source ]" is not working when put into
the sources of a testsuite, see examples/qtestlib/tutorial2 and 3 for
examples. I've got tutorial3 working with an extra declaration but with
hardcoded paths to the generated file. The good news is that the new
QTestlib seems to be working with to current V2 Test framework in
principle ;-). This is important because KDE4 will use QTestlib a
lot ;-)
- The Jamroot contain commented out "build-project src" and
"build-project examples" lines. Enabling this lines leads to strange
"circular dependencies" warnings.

- So you can only build from "QTDIR/examples" or "QTDIR/src".

If anything else is unclear, feel free to ask me.
But be aware: This is a test !

So, and now for questions this experiments has raised:

1. How to detect 3rdparty libraries ?
Qt relies on *lots* of libraries. In order to get it compiles, you have
to detect (on Linux)
- X11 with half a dozen extensions (XRender, XRandr, ...)
- OpenGL
- FreeType

2. How to choose which library to use ?
Qt ship its own versions of
- zlib
- bzlib
- freetype
- png
-sqlite

in order to use them if they are not available on the system.
How to I implement the "configure" - switches in bjam.

3. How to select how to build which selection ?
Qt enables you to build several extensions as "plugins" (default) or as
"builtins" or disable them.
The most prominent are of course databases plugins.
I've done some experimening with mysql an sqlite (see Jamroot) but I
don't like the exploding numbers of build-variant (directories) when
you change some extension to "builtin".

I hope I can spent some time on this next weekend and wait for comments.

Yours,

Jürgen

-- 
* Dipl.-Math. Jürgen Hunold  ! Institut für Verkehrswesen, Eisenbahnbau
* voice: ++49 511 762-2529   ! und -betrieb, Universität Hannover  
* fax  : ++49 511 762-3001   ! Appelstrasse 9a, D-30167 Hannover
* hunold_at_[hidden] ! www.ive.uni-hannover.de





Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk