Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r51334 - in branches/release: . tools/build/v2/test/qt4 tools/build/v2/tools
From: juergen.hunold_at_[hidden]
Date: 2009-02-19 14:36:48


Author: jhunold
Date: 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
New Revision: 51334
URL: http://svn.boost.org/trac/boost/changeset/51334

Log:
Merged revisions 51013,51230,51275,51300,51313 via svnmerge from
https://svn.boost.org/svn/boost/trunk

........
  r51013 | jhunold | 2009-02-04 20:14:01 +0100 (Wed, 04 Feb 2009) | 3 lines
  
  Apply patch from Alexey Pakhunov for improved msvc assembler support.
  Fixes https://zigzag.lvk.cs.msu.su:7813/boost.build/ticket/214
........
  r51230 | jhunold | 2009-02-12 21:38:33 +0100 (Thu, 12 Feb 2009) | 7 lines
  
  Major refactoring of Qt4 toolchain featuring:
  - support for multiple 'using qt' statements.
  - auto-detection of Qt version using qmake.
  - support for user-specified version.
  - better debug messages.
  - support for toolset requirements.
........
  r51275 | jhunold | 2009-02-16 20:35:15 +0100 (Mon, 16 Feb 2009) | 2 lines
  
  Fix: Correct handling of include paths with spaces.
........
  r51300 | jhunold | 2009-02-17 20:30:19 +0100 (Tue, 17 Feb 2009) | 2 lines
  
  Add support for QtScriptTools (Qt-4.5)
........
  r51313 | jhunold | 2009-02-18 20:11:49 +0100 (Wed, 18 Feb 2009) | 2 lines
  
  Refactoring: Rename uic-h to uic to get uniform toolnames.
........

Added:
   branches/release/tools/build/v2/test/qt4/qtscripttools.cpp
      - copied unchanged from r51300, /trunk/tools/build/v2/test/qt4/qtscripttools.cpp
Properties modified:
   branches/release/ (props changed)
Text files modified:
   branches/release/tools/build/v2/test/qt4/jamroot.jam | 1
   branches/release/tools/build/v2/test/qt4/qtscript.cpp | 3
   branches/release/tools/build/v2/tools/msvc.jam | 24 +
   branches/release/tools/build/v2/tools/qt.jam | 4
   branches/release/tools/build/v2/tools/qt4.jam | 527 ++++++++++++++++++++++++++-------------
   5 files changed, 367 insertions(+), 192 deletions(-)

Modified: branches/release/tools/build/v2/test/qt4/jamroot.jam
==============================================================================
--- branches/release/tools/build/v2/test/qt4/jamroot.jam (original)
+++ branches/release/tools/build/v2/test/qt4/jamroot.jam 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
@@ -27,6 +27,7 @@
       [ run qtxml.cpp /qt//QtXml ]
       [ run qtnetwork.cpp /qt//QtNetwork ]
       [ run qtscript.cpp /qt//QtScript ]
+ [ run qtscripttools.cpp /qt//QtScriptTools ]
       [ run qtxmlpatterns.cpp /qt//QtXmlPatterns ]
     
       # ToDo: runable example code

Modified: branches/release/tools/build/v2/test/qt4/qtscript.cpp
==============================================================================
--- branches/release/tools/build/v2/test/qt4/qtscript.cpp (original)
+++ branches/release/tools/build/v2/test/qt4/qtscript.cpp 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
@@ -20,7 +20,7 @@
 
 BOOST_AUTO_TEST_CASE( defines)
 {
- BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_CORE_LIB), true);
+ BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_SCRIPT_LIB), true);
 }
 
 BOOST_AUTO_TEST_CASE( script )
@@ -30,5 +30,4 @@
 
    BOOST_CHECK_EQUAL(three.toNumber(), 3);
    BOOST_CHECK_EQUAL(three.toString(), QLatin1String("3"));
-
 }

Modified: branches/release/tools/build/v2/tools/msvc.jam
==============================================================================
--- branches/release/tools/build/v2/tools/msvc.jam (original)
+++ branches/release/tools/build/v2/tools/msvc.jam 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
@@ -296,14 +296,13 @@
 
 # For the assembler the following options are turned on by default:
 #
-# -coff generate COFF format object file (compatible with cl.exe output)
 # -Zp4 align structures to 4 bytes
 # -Cp preserve case of user identifiers
 # -Cx preserve case in publics, externs
 #
 actions compile.asm
 {
- $(.ASM) -nologo -c -coff -Zp4 -Cp -Cx $(USER_ASMFLAGS) -Fo "$(<:W)" "$(>:W)"
+ $(.ASM) -c -Zp4 -Cp -Cx -D$(DEFINES) $(ASMFLAGS) $(USER_ASMFLAGS) -Fo "$(<:W)" "$(>:W)"
 }
 
 
@@ -852,8 +851,13 @@
         resource-compiler = [ feature.get-values <resource-compiler> : $(options) ] ;
         resource-compiler ?= rc ;
 
+ # Turn on some options for i386 assembler
+ # -coff generate COFF format object file (compatible with cl.exe output)
+ local default-assembler-amd64 = ml64 ;
+ local default-assembler-i386 = "ml -coff" ;
+ local default-assembler-ia64 = ias ;
+
         assembler = [ feature.get-values <assembler> : $(options) ] ;
- assembler ?= ml ;
 
         idl-compiler = [ feature.get-values <idl-compiler> : $(options) ] ;
         idl-compiler ?= midl ;
@@ -880,9 +884,12 @@
                 }
             }
 
+ local cpu-assembler = $(assembler) ;
+ cpu-assembler ?= $(default-assembler-$(c)) ;
+
             toolset.flags msvc.compile .CC $(cpu-conditions) : $(setup-$(c))$(compiler) /Zm800 -nologo ;
             toolset.flags msvc.compile .RC $(cpu-conditions) : $(setup-$(c))$(resource-compiler) ;
- toolset.flags msvc.compile .ASM $(cpu-conditions) : $(setup-$(c))$(assembler) ;
+ toolset.flags msvc.compile .ASM $(cpu-conditions) : $(setup-$(c))$(cpu-assembler) -nologo ;
             toolset.flags msvc.link .LD $(cpu-conditions) : $(setup-$(c))$(linker) /NOLOGO /INCREMENTAL:NO ;
             toolset.flags msvc.archive .LD $(cpu-conditions) : $(setup-$(c))$(linker) /lib /NOLOGO ;
             toolset.flags msvc.compile .IDL $(cpu-conditions) : $(setup-$(c))$(idl-compiler) ;
@@ -1113,6 +1120,15 @@
     # Declare flags for the assembler.
     toolset.flags msvc.compile.asm USER_ASMFLAGS <asmflags> ;
 
+ toolset.flags msvc.compile.asm ASMFLAGS <debug-symbols>on : "/Zi /Zd" ;
+
+ toolset.flags msvc.compile.asm ASMFLAGS <warnings>on : /W3 ;
+ toolset.flags msvc.compile.asm ASMFLAGS <warnings>off : /W0 ;
+ toolset.flags msvc.compile.asm ASMFLAGS <warnings>all : /W4 ;
+ toolset.flags msvc.compile.asm ASMFLAGS <warnings-as-errors>on : /WX ;
+
+ toolset.flags msvc.compile.asm DEFINES <define> ;
+
     # Declare flags for linking.
     {
         toolset.flags msvc.link PDB_LINKFLAG <debug-symbols>on/<debug-store>database : /PDB: ; # not used yet

Modified: branches/release/tools/build/v2/tools/qt.jam
==============================================================================
--- branches/release/tools/build/v2/tools/qt.jam (original)
+++ branches/release/tools/build/v2/tools/qt.jam 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
@@ -9,9 +9,9 @@
 
 import qt4 ;
 
-rule init ( prefix ? )
+rule init ( prefix : full_bin ? : full_inc ? : full_lib ? : version ? : condition * )
 {
- qt4.init $(prefix) ;
+ qt4.init $(prefix) : $(full_bin) : $(full_inc) : $(full_lib) : $(version) : $(condition) ;
 }
 
 

Modified: branches/release/tools/build/v2/tools/qt4.jam
==============================================================================
--- branches/release/tools/build/v2/tools/qt4.jam (original)
+++ branches/release/tools/build/v2/tools/qt4.jam 2009-02-19 14:36:47 EST (Thu, 19 Feb 2009)
@@ -1,6 +1,6 @@
 # Copyright 2002-2006 Vladimir Prus
 # Copyright 2005 Alo Sarv
-# Copyright 2005-2006 Juergen Hunold
+# Copyright 2005-2009 Juergen Hunold
 #
 # Distributed under the Boost Software License, Version 1.0. (See
 # accompanying file LICENSE_1_0.txt or copy at
@@ -66,20 +66,108 @@
 # Or add more auto-configuration (like python).
 feature.feature qt3support : off on : propagated link-incompatible ;
 
+# The Qt version used for requirements
+# Valid are <qt>4.4 or <qt>4.5.0
+# Auto-detection via qmake sets '<qt>major.minor.patch'
+feature.feature qt : : propagated ;
+
 project.initialize $(__name__) ;
 project qt ;
 
 # Save the project so that we tolerate 'import + using' combo.
 .project = [ project.current ] ;
 
+# Helper utils for easy debug output
+if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
+{
+ .debug-configuration = TRUE ;
+}
+
+local rule debug-message ( message * )
+{
+ if $(.debug-configuration) = TRUE
+ {
+ ECHO notice: [qt4-cfg] $(message) ;
+ }
+}
+
+# Capture qmake output line by line
+local rule read-output ( content )
+{
+ local lines ;
+ local nl = "
+" ;
+ local << = "([^$(nl)]*)[$(nl)](.*)" ;
+ local line+ = [ MATCH "$(<<)" : "$(content)" ] ;
+ while $(line+)
+ {
+ lines += $(line+[1]) ;
+ line+ = [ MATCH "$(<<)" : "$(line+[2])" ] ;
+ }
+ return $(lines) ;
+}
+
+# Capture Qt version from qmake
+local rule check-version ( bin_prefix )
+{
+ full-cmd = $(bin_prefix)"/qmake -v" ;
+ debug-message Running '$(full-cmd)' ;
+ local output = [ SHELL $(full-cmd) ] ;
+ for line in [ read-output $(output) ]
+ {
+ # Parse the output to get all the results.
+ if [ MATCH "QMake" : $(line) ]
+ {
+ # Skip first line of output
+ }
+ else
+ {
+ temp = [ MATCH "([0-9]*)\\.([0-9]*)\\.([0-9]*)" : $(line) ] ;
+ }
+ }
+ return $(temp) ;
+}
 
-# Initialized the QT support module. The 'prefix' parameter tells where QT is
-# installed.
+# Validate the version string and extract the major/minor part we care about.
 #
-rule init ( prefix : full_bin ? : full_inc ? : full_lib ? )
+local rule split-version ( version )
+{
+ local major-minor = [ MATCH ^([0-9]+)\.([0-9]+)(.*)$ : $(version) : 1 2 3 ] ;
+ if ! $(major-minor[2]) || $(major-minor[3])
+ {
+ ECHO "Warning: 'using qt' expects a two part (major, minor) version number; got" $(version) instead ;
+
+ # Add a zero to account for the missing digit if necessary.
+ major-minor += 0 ;
+ }
+
+ return $(major-minor[1]) $(major-minor[2]) ;
+}
+
+# Initialize the QT support module.
+# Parameters:
+# - 'prefix' parameter tells where Qt is installed.
+# - 'full_bin' optional full path to Qt binaries (qmake,moc,uic,rcc)
+# - 'full_inc' optional full path to Qt top-level include directory
+# - 'full_lib' optional full path to Qt library directory
+# - 'version' optional version of Qt, else autodetected via 'qmake -v'
+# - 'condition' optional requirements
+rule init ( prefix : full_bin ? : full_inc ? : full_lib ? : version ? : condition * )
 {
     project.push-current $(.project) ;
 
+ debug-message "==== Configuring Qt ... ====" ;
+ for local v in version cmd-or-prefix includes libraries condition
+ {
+ if $($(v))
+ {
+ debug-message " user-specified "$(v): '$($(v))' ;
+ }
+ }
+
+ # Needed as default value
+ .prefix = $(prefix) ;
+
     # pre-build paths to detect reinitializations changes
     local inc_prefix lib_prefix bin_prefix ;
     if $(full_inc)
@@ -107,45 +195,22 @@
         bin_prefix = $(prefix)/bin ;
     }
 
- if $(.initialized)
- {
- if $(prefix) != $(.prefix)
- {
- errors.error
- "Attempt the reinitialize QT with different installation prefix" ;
- }
- if $(inc_prefix) != $(.incprefix)
- {
- errors.error
- "Attempt the reinitialize QT with different include path" ;
- }
- if $(lib_prefix) != $(.libprefix)
- {
- errors.error
- "Attempt the reinitialize QT with different library path" ;
- }
- if $(bin_prefix) != $(.binprefix)
- {
- errors.error
- "Attempt the reinitialize QT with different bin path" ;
- }
- }
- else
+ # Globally needed variables
+ .incprefix = $(inc_prefix) ;
+ .libprefix = $(lib_prefix) ;
+ .binprefix = $(bin_prefix) ;
+
+ if ! $(.initialized)
     {
+ # Make sure this is initialised only once
         .initialized = true ;
- .prefix = $(prefix) ;
-
- # Setup prefixes for include, binaries and libs.
- .incprefix = $(.prefix)/include ;
- .libprefix = $(.prefix)/lib ;
- .binprefix = $(.prefix)/bin ;
 
         # Generates cpp files from header files using "moc" tool
         generators.register-standard qt4.moc : H : CPP(moc_%) : <allow>qt4 ;
 
         # The OBJ result type is a fake, 'H' will be really produced. See
         # comments on the generator class, defined below the 'init' function.
- generators.register [ new uic-h-generator qt4.uic-h : UI : OBJ :
+ generators.register [ new uic-generator qt4.uic : UI : OBJ :
             <allow>qt4 ] ;
 
         # The OBJ result type is a fake here too.
@@ -160,138 +225,228 @@
 
         # dependency scanner for wrapped files.
         type.set-scanner QRC : qrc-scanner ;
-
- # Test for a buildable Qt.
- if [ glob $(.prefix)/Jamroot ]
- {
- .bjam-qt = true
 
- # this will declare QtCore (and qtmain on <target-os>windows)
- add-shared-library QtCore ;
+ # Save value of first occuring prefix
+ .PREFIX = $(prefix) ;
+ }
+
+ if $(version)
+ {
+ major-minor = [ split-version $(version) ] ;
+ version = $(major-minor:J=.) ;
+ }
+ else
+ {
+ version = [ check-version $(bin_prefix) ] ;
+ if $(version)
+ {
+ version = $(version:J=.) ;
         }
- else
- # Setup common pre-built Qt.
- # Special setup for QtCore on which everything depends
+ debug-message Detected version '$(version)' ;
+ }
+
+ local target-requirements = $(condition) ;
+
+ # Add the version, if any, to the target requirements.
+ if $(version)
+ {
+ if ! $(version) in [ feature.values qt ]
         {
- local usage-requirements =
- <include>$(.incprefix)
- <library-path>$(.libprefix)
- <dll-path>$(.libprefix)
- <threading>multi
- <allow>qt4 ;
-
- local suffix ;
- if [ os.name ] = NT
- {
- # On NT, the libs have "4" suffix, and "d" suffix in debug
- # builds. Also, on NT we must link against the qtmain library
- # (for WinMain).
- .suffix_version = "4" ;
- .suffix_debug = "d" ;
- lib qtmain
- : # sources
- : # requirements
- <name>qtmain$(.suffix_debug)
- <variant>debug
- ;
-
- lib qtmain
- : # sources
- : # requirements
- <name>qtmain
- ;
- main = qtmain ;
- }
- else if [ os.name ] = MACOSX
- {
- # On MacOS X, both debug and release libraries are available.
- .suffix_version = "" ;
- .suffix_debug = "_debug" ;
- }
- else
- {
- # Since Qt-4.2, debug versions on unix have to be built
- # separately and therefore have no suffix.
- .suffix_version = "" ;
- .suffix_debug = "" ;
- }
-
- lib QtCore : $(main)
- : # requirements
- <name>QtCore$(.suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_CORE_LIB
- <define>QT_NO_DEBUG
- <include>$(.incprefix)/QtCore
- $(usage-requirements)
- ;
- lib QtCore : $(main)
- : # requirements
- <name>QtCore$(.suffix_debug)$(.suffix_version)
+ feature.extend qt : $(version) ;
+ }
+ target-requirements += <qt>$(version:E=default) ;
+ }
+
+ local target-os = [ feature.get-values target-os : $(condition) ] ;
+ if ! $(target-os)
+ {
+ target-os ?= [ feature.defaults target-os ] ;
+ target-os = $(target-os:G=) ;
+ target-requirements += <target-os>$(target-os) ;
+ }
+
+ # Build exact requirements for the tools
+ local tools-requirements = $(target-requirements:J=/) ;
+
+ debug-message "Details of this Qt configuration:" ;
+ debug-message " prefix: " '$(prefix:E=<empty>)' ;
+ debug-message " binary path: " '$(bin_prefix:E=<empty>)' ;
+ debug-message " include path:" '$(inc_prefix:E=<empty>)' ;
+ debug-message " library path:" '$(lib_prefix:E=<empty>)' ;
+ debug-message " target requirements:" '$(target-requirements)' ;
+ debug-message " tool requirements: " '$(tools-requirements)' ;
+
+ # setup the paths for the tools
+ toolset.flags qt4.moc .BINPREFIX $(tools-requirements) : $(bin_prefix) ;
+ toolset.flags qt4.rcc .BINPREFIX $(tools-requirements) : $(bin_prefix) ;
+ toolset.flags qt4.uic .BINPREFIX $(tools-requirements) : $(bin_prefix) ;
+
+ # TODO: 2009-02-12: Better support for directories
+ # Most likely needed are separate getters for: include,libraries,binaries and sources.
+ toolset.flags qt4.directory .PREFIX $(tools-requirements) : $(prefix) ;
+
+ # Test for a buildable Qt.
+ if [ glob $(.prefix)/Jamroot ]
+ {
+ .bjam-qt = true
+
+ # this will declare QtCore (and qtmain on <target-os>windows)
+ add-shared-library QtCore ;
+ }
+ else
+ # Setup common pre-built Qt.
+ # Special setup for QtCore on which everything depends
+ {
+ local usage-requirements =
+ <include>$(.incprefix)
+ <library-path>$(.libprefix)
+ <dll-path>$(.libprefix)
+ <threading>multi
+ <allow>qt4 ;
+
+ local suffix ;
+
+ # Since Qt-4.2, debug versions on unix have to be built
+ # separately and therefore have no suffix.
+ .suffix_version = "" ;
+ .suffix_debug = "" ;
+
+ # Control flag for auto-configuration of the debug libraries.
+ # This setup requires Qt 'configure -debug-and-release'.
+ # Only available on some platforms.
+ # ToDo: 2009-02-12: Maybe throw this away and
+ # require separate setup with <variant>debug as condition.
+ .have_separate_debug = FALSE ;
+
+ # Setup other platforms
+ if $(target-os) in windows cygwin
+ {
+ .have_separate_debug = TRUE ;
+
+ # On NT, the libs have "4" suffix, and "d" suffix in debug builds.
+ .suffix_version = "4" ;
+ .suffix_debug = "d" ;
+
+ # On Windows we must link against the qtmain library
+ lib qtmain
+ : # sources
+ : # requirements
+ <name>qtmain$(.suffix_debug)
                   <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_CORE_LIB
- <include>$(.incprefix)/QtCore
- $(usage-requirements)
- ;
- }
-
- # Initialising the remaining libraries is canonical
- add-shared-library QtGui : QtCore : QT_GUI_LIB ;
- add-shared-library QtNetwork : QtCore : QT_NETWORK_LIB ;
- add-shared-library QtSql : QtCore : QT_SQL_LIB ;
- add-shared-library QtXml : QtCore : QT_XML_LIB ;
-
- add-shared-library Qt3Support : QtGui QtNetwork QtXml QtSql
- : QT_QT3SUPPORT_LIB QT3_SUPPORT
- : <qt3support>on ;
-
- # Dummy target to enable "<qt3support>off" and
- # "<library>/qt//Qt3Support" at the same time. This enables quick
- # switching from one to the other for test/porting purposes.
- alias Qt3Support : : : : <qt3support>off ;
-
- # OpenGl Support
- add-shared-library QtOpenGL : QtGui : QT_OPENGL_LIB ;
-
- # SVG-Support (Qt 4.1)
- add-shared-library QtSvg : QtXml QtOpenGL : QT_SVG_LIB ;
-
- # Test-Support (Qt 4.1)
- add-shared-library QtTest : QtCore ;
-
- # Qt designer library
- add-shared-library QtDesigner : QtGui QtXml ;
-
- # Support for dynamic Widgets (Qt 4.1)
- add-static-library QtUiTools : QtGui QtXml ;
-
- # DBus-Support (Qt 4.2)
- add-shared-library QtDBus : QtXml ;
-
- # Script-Engine (Qt 4.3)
- add-shared-library QtScript : QtGui QtXml ;
-
- # WebKit (Qt 4.4)
- add-shared-library QtWebKit : QtGui : QT_WEBKIT_LIB ;
-
- # Phonon Multimedia (Qt 4.4)
- add-shared-library phonon : QtGui QtXml : QT_PHONON_LIB ;
-
- # XmlPatterns-Engine (Qt 4.4)
- add-shared-library QtXmlPatterns : QtNetwork : QT_XMLPATTERNS_LIB ;
-
- # Help-Engine (Qt 4.4)
- add-shared-library QtHelp : QtGui QtSql QtXml ;
-
- # AssistantClient Support
- # Compat library
- # Pre-4.4 help system, use QtHelp for new programs
- add-shared-library QtAssistantClient : QtGui : : : QtAssistant ;
+ $(target-requirements)
+ ;
+
+ lib qtmain
+ : # sources
+ : # requirements
+ <name>qtmain
+ $(target-requirements)
+ ;
+ }
+ else if $(target-os) = darwin
+ {
+ # On MacOS X, both debug and release libraries are available.
+ .suffix_debug = "_debug" ;
+
+ .have_separate_debug = TRUE ;
+
+ alias qtmain ;
+ }
+ else
+ {
+ alias qtmain : : $(target-requirements) ;
+ }
+
+ lib QtCore : qtmain
+ : # requirements
+ <name>QtCore$(.suffix_version)
+ $(target-requirements)
+ : # default-build
+ : # usage-requirements
+ <define>QT_CORE_LIB
+ <define>QT_NO_DEBUG
+ <include>$(.incprefix)/QtCore
+ $(usage-requirements)
+ ;
+
+ if $(.have_separate_debug) = TRUE
+ {
+ debug-message Configure debug libraries with suffix '$(.suffix_debug)' ;
+
+ lib QtCore : $(main)
+ : # requirements
+ <name>QtCore$(.suffix_debug)$(.suffix_version)
+ <variant>debug
+ $(target-requirements)
+ : # default-build
+ : # usage-requirements
+ <define>QT_CORE_LIB
+ <include>$(.incprefix)/QtCore
+ $(usage-requirements)
+ ;
+ }
     }
 
+ # Initialising the remaining libraries is canonical
+ # parameters 'module' : 'depends-on' : 'usage-define' : 'requirements' : 'include'
+ # 'include' only for non-canonical include paths.
+ add-shared-library QtGui : QtCore : QT_GUI_LIB : $(target-requirements) ;
+ add-shared-library QtNetwork : QtCore : QT_NETWORK_LIB : $(target-requirements) ;
+ add-shared-library QtSql : QtCore : QT_SQL_LIB : $(target-requirements) ;
+ add-shared-library QtXml : QtCore : QT_XML_LIB : $(target-requirements) ;
+
+ add-shared-library Qt3Support : QtGui QtNetwork QtXml QtSql
+ : QT_QT3SUPPORT_LIB QT3_SUPPORT
+ : <qt3support>on $(target-requirements) ;
+
+ # Dummy target to enable "<qt3support>off" and
+ # "<library>/qt//Qt3Support" at the same time. This enables quick
+ # switching from one to the other for test/porting purposes.
+ alias Qt3Support : : <qt3support>off $(target-requirements) ;
+
+ # OpenGl Support
+ add-shared-library QtOpenGL : QtGui : QT_OPENGL_LIB : $(target-requirements) ;
+
+ # SVG-Support (Qt 4.1)
+ add-shared-library QtSvg : QtXml QtOpenGL : QT_SVG_LIB : $(target-requirements) ;
+
+ # Test-Support (Qt 4.1)
+ add-shared-library QtTest : QtCore : : $(target-requirements) ;
+
+ # Qt designer library
+ add-shared-library QtDesigner : QtGui QtXml : : $(target-requirements) ;
+
+ # Support for dynamic Widgets (Qt 4.1)
+ add-static-library QtUiTools : QtGui QtXml : $(target-requirements) ;
+
+ # DBus-Support (Qt 4.2)
+ add-shared-library QtDBus : QtXml : : $(target-requirements) ;
+
+ # Script-Engine (Qt 4.3)
+ add-shared-library QtScript : QtGui QtXml : QT_SCRIPT_LIB : $(target-requirements) ;
+
+ # Tools for the Script-Engine (Qt 4.5)
+ add-shared-library QtScriptTools : QtScript : QT_SCRIPTTOOLS_LIB : $(target-requirements) ;
+
+ # WebKit (Qt 4.4)
+ add-shared-library QtWebKit : QtGui : QT_WEBKIT_LIB : $(target-requirements) ;
+
+ # Phonon Multimedia (Qt 4.4)
+ add-shared-library phonon : QtGui QtXml : QT_PHONON_LIB : $(target-requirements) ;
+
+ # XmlPatterns-Engine (Qt 4.4)
+ add-shared-library QtXmlPatterns : QtNetwork : QT_XMLPATTERNS_LIB : $(target-requirements) ;
+
+ # Help-Engine (Qt 4.4)
+ add-shared-library QtHelp : QtGui QtSql QtXml : : $(target-requirements) ;
+
+ # AssistantClient Support
+ # Compat library
+ # Pre-4.4 help system, use QtHelp for new programs
+ add-shared-library QtAssistantClient : QtGui : : $(target-requirements) : QtAssistant ;
+
+ debug-message "==== Configured Qt-$(version) ====" ;
+
     project.pop-current ;
 }
 
@@ -312,7 +467,7 @@
 # linking generator tries to convert sources to OBJ, but it produces target of
 # type H. This is non-standard, but allowed. That header won't be mocced.
 #
-class uic-h-generator : generator
+class uic-generator : generator
 {
     rule __init__ ( * : * )
     {
@@ -327,7 +482,7 @@
             name = $(name:B) ;
         }
 
- local a = [ new action $(sources[1]) : qt4.uic-h : $(property-set) ] ;
+ local a = [ new action $(sources[1]) : qt4.uic : $(property-set) ] ;
 
         # The 'ui_' prefix is to match qmake's default behavior.
         local target = [ new file-target ui_$(name) : H : $(project) : $(a) ] ;
@@ -420,7 +575,7 @@
 #
 rule directory
 {
- return $(.prefix) ;
+ return $(.PREFIX) ;
 }
 
 # Add a shared Qt library.
@@ -474,19 +629,22 @@
              <define>$(usage-defines)
              <include>$(.incprefix)/$(real_include)
            ;
-
- lib $(lib-name)
- : # sources
- $(depends-on)
- : # requirements
- <name>$(lib-name)$(.suffix_debug)$(version)
- $(requirements)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>$(usage-defines)
- <include>$(.incprefix)/$(real_include)
- ;
+
+ if $(.have_separate_debug) = TRUE
+ {
+ lib $(lib-name)
+ : # sources
+ $(depends-on)
+ : # requirements
+ <name>$(lib-name)$(.suffix_debug)$(version)
+ $(requirements)
+ <variant>debug
+ : # default-build
+ : # usage-requirements
+ <define>$(usage-defines)
+ <include>$(.incprefix)/$(real_include)
+ ;
+ }
     }
 
     # Make library explicit so that a simple <use>qt4 will not bring in everything.
@@ -494,18 +652,19 @@
     explicit $(lib-name) ;
 }
 
+# Use $(.BINPREFIX[-1]) for the paths as several tools-requirements can match.
+# The exact match is the last one.
 
 # Get <include> and <defines> from current toolset.
 flags qt4.moc INCLUDES <include> ;
 flags qt4.moc DEFINES <define> ;
 
-
 # Processes headers to create Qt MetaObject information. Qt4-moc has its
 # c++-parser, so pass INCLUDES and DEFINES.
-#
+#
 actions moc
 {
- $(.binprefix)/moc -I$(INCLUDES) -D$(DEFINES) -f $(>) -o $(<)
+ $(.BINPREFIX[-1])/moc -I"$(INCLUDES)" -D$(DEFINES) -f $(>) -o $(<)
 }
 
 
@@ -514,7 +673,7 @@
 #
 actions moc.inc
 {
- $(.binprefix)/moc -I$(INCLUDES) -D$(DEFINES) $(>) -o $(<)
+ $(.BINPREFIX[-1])/moc -I"$(INCLUDES)" -D$(DEFINES) $(>) -o $(<)
 }
 
 
@@ -522,15 +681,15 @@
 #
 actions rcc
 {
- $(.binprefix)/rcc $(>) -name $(>:B) -o $(<)
+ $(.BINPREFIX[-1])/rcc $(>) -name $(>:B) -o $(<)
 }
 
 
 # Generates user-interface source from .ui files.
 #
-actions uic-h
+actions uic
 {
- $(.binprefix)/uic $(>) -o $(<)
+ $(.BINPREFIX[-1])/uic $(>) -o $(<)
 }
 
 


Boost-Commit 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