2
0
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:
Jürgen Hunold
2009-02-19 19:36:47 +00:00
parent 8efdb0f474
commit ca2cb42415
6 changed files with 418 additions and 196 deletions

View File

@@ -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

View File

@@ -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) ;
}

View File

@@ -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 $(<)
}

View File

@@ -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

View File

@@ -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"));
}

View 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();
}