mirror of
https://github.com/boostorg/build.git
synced 2026-02-14 00:32:11 +00:00
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. ........ [SVN r51334]
This commit is contained in:
@@ -296,14 +296,13 @@ else
|
||||
|
||||
# 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 @@ local rule configure-really ( version ? : options * )
|
||||
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 rule configure-really ( version ? : options * )
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ local rule register-toolset-really ( )
|
||||
# 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
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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 @@ import scanner ;
|
||||
# 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 ;
|
||||
}
|
||||
|
||||
# Initialized the QT support module. The 'prefix' parameter tells where QT is
|
||||
# installed.
|
||||
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) ;
|
||||
}
|
||||
|
||||
# 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 @@ rule init ( prefix : full_bin ? : full_inc ? : full_lib ? )
|
||||
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
|
||||
{
|
||||
.initialized = true ;
|
||||
.prefix = $(prefix) ;
|
||||
# Globally needed variables
|
||||
.incprefix = $(inc_prefix) ;
|
||||
.libprefix = $(lib_prefix) ;
|
||||
.binprefix = $(bin_prefix) ;
|
||||
|
||||
# Setup prefixes for include, binaries and libs.
|
||||
.incprefix = $(.prefix)/include ;
|
||||
.libprefix = $(.prefix)/lib ;
|
||||
.binprefix = $(.prefix)/bin ;
|
||||
if ! $(.initialized)
|
||||
{
|
||||
# Make sure this is initialised only once
|
||||
.initialized = true ;
|
||||
|
||||
# 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 @@ rule init ( prefix : full_bin ? : full_inc ? : full_lib ? )
|
||||
|
||||
# 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 ;
|
||||
}
|
||||
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 ;
|
||||
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)
|
||||
<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 ;
|
||||
# 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=.) ;
|
||||
}
|
||||
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 ]
|
||||
{
|
||||
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
|
||||
$(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 @@ rule initialized ( )
|
||||
# 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 @@ class uic-h-generator : generator
|
||||
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 @@ class moc-inc-generator : generator
|
||||
#
|
||||
rule directory
|
||||
{
|
||||
return $(.prefix) ;
|
||||
return $(.PREFIX) ;
|
||||
}
|
||||
|
||||
# Add a shared Qt library.
|
||||
@@ -474,19 +629,22 @@ rule add-library ( lib-name : version ? : depends-on * : usage-defines * : requi
|
||||
<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 @@ rule add-library ( lib-name : version ? : depends-on * : usage-defines * : requi
|
||||
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
|
||||
#
|
||||
actions moc.inc
|
||||
{
|
||||
$(.binprefix)/moc -I$(INCLUDES) -D$(DEFINES) $(>) -o $(<)
|
||||
$(.BINPREFIX[-1])/moc -I"$(INCLUDES)" -D$(DEFINES) $(>) -o $(<)
|
||||
}
|
||||
|
||||
|
||||
@@ -522,15 +681,15 @@ actions moc.inc
|
||||
#
|
||||
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 $(<)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ if [ qt4.initialized ]
|
||||
[ 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
|
||||
|
||||
@@ -20,7 +20,7 @@ operator << (std::ostream& stream, QString const& string)
|
||||
|
||||
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_AUTO_TEST_CASE( script )
|
||||
|
||||
BOOST_CHECK_EQUAL(three.toNumber(), 3);
|
||||
BOOST_CHECK_EQUAL(three.toString(), QLatin1String("3"));
|
||||
|
||||
}
|
||||
|
||||
47
test/qt4/qtscripttools.cpp
Normal file
47
test/qt4/qtscripttools.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
// (c) Copyright Juergen Hunold 2009
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#define BOOST_TEST_MODULE QtScriptTools
|
||||
|
||||
#include <QScriptEngine>
|
||||
|
||||
#include <QScriptEngineDebugger>
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace utf = boost::unit_test::framework;
|
||||
|
||||
std::ostream&
|
||||
operator << (std::ostream& stream, QString const& string)
|
||||
{
|
||||
stream << qPrintable(string);
|
||||
return stream;
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( defines)
|
||||
{
|
||||
BOOST_CHECK_EQUAL(BOOST_IS_DEFINED(QT_SCRIPTTOOLS_LIB), true);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( script )
|
||||
{
|
||||
QApplication app(utf::master_test_suite().argc,
|
||||
utf::master_test_suite().argv);
|
||||
|
||||
QScriptEngine myEngine;
|
||||
QScriptValue three = myEngine.evaluate("1 + 2");
|
||||
|
||||
QScriptEngineDebugger debugger;
|
||||
debugger.attachTo(&myEngine);
|
||||
|
||||
BOOST_CHECK_EQUAL(three.toNumber(), 3);
|
||||
BOOST_CHECK_EQUAL(three.toString(), QLatin1String("3"));
|
||||
|
||||
debugger.detach();
|
||||
}
|
||||
Reference in New Issue
Block a user