diff options
author | Kenneth Heafield <github@kheafield.com> | 2012-10-22 12:07:20 +0100 |
---|---|---|
committer | Kenneth Heafield <github@kheafield.com> | 2012-10-22 12:07:20 +0100 |
commit | 5f98fe5c4f2a2090eeb9d30c030305a70a8347d1 (patch) | |
tree | 9b6002f850e6dea1e3400c6b19bb31a9cdf3067f /jam-files/boost-build/tools/cast.jam | |
parent | cf9994131993b40be62e90e213b1e11e6b550143 (diff) | |
parent | 21825a09d97c2e0afd20512f306fb25fed55e529 (diff) |
Merge remote branch 'upstream/master'
Conflicts:
Jamroot
bjam
decoder/Jamfile
decoder/cdec.cc
dpmert/Jamfile
jam-files/sanity.jam
klm/lm/Jamfile
klm/util/Jamfile
mira/Jamfile
Diffstat (limited to 'jam-files/boost-build/tools/cast.jam')
-rw-r--r-- | jam-files/boost-build/tools/cast.jam | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/jam-files/boost-build/tools/cast.jam b/jam-files/boost-build/tools/cast.jam deleted file mode 100644 index 6c84922f..00000000 --- a/jam-files/boost-build/tools/cast.jam +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright 2005 Vladimir Prus. -# Distributed under 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) - -# Defines main target 'cast', used to change type for target. For example, in Qt -# library one wants two kinds of CPP files -- those that just compiled and those -# that are passed via the MOC tool. -# -# This is done with: -# -# exe main : main.cpp [ cast _ moccable-cpp : widget.cpp ] ; -# -# Boost.Build will assing target type CPP to both main.cpp and widget.cpp. Then, -# the cast rule will change target type of widget.cpp to MOCCABLE-CPP, and Qt -# support will run the MOC tool as part of the build process. -# -# At the moment, the 'cast' rule only works for non-derived (source) targets. -# -# TODO: The following comment is unclear or incorrect. Clean it up. -# > Another solution would be to add a separate main target 'moc-them' that -# > would moc all the passed sources, no matter what their type is, but I prefer -# > cast, as defining a new target type + generator for that type is somewhat -# > simpler than defining a main target rule. - -import "class" : new ; -import errors ; -import project ; -import property-set ; -import targets ; -import type ; - - -class cast-target-class : typed-target -{ - import type ; - - rule __init__ ( name : project : type : sources * : requirements * : - default-build * : usage-requirements * ) - { - typed-target.__init__ $(name) : $(project) : $(type) : $(sources) : - $(requirements) : $(default-build) : $(usage-requirements) ; - } - - rule construct ( name : source-targets * : property-set ) - { - local result ; - for local s in $(source-targets) - { - if ! [ class.is-a $(s) : file-target ] - { - import errors ; - errors.user-error Source to the 'cast' rule is not a file! ; - } - if [ $(s).action ] - { - import errors ; - errors.user-error Only non-derived target are allowed for - 'cast'. : when building [ full-name ] ; - } - local r = [ $(s).clone-with-different-type $(self.type) ] ; - result += [ virtual-target.register $(r) ] ; - } - return [ property-set.empty ] $(result) ; - } -} - - -rule cast ( name type : sources * : requirements * : default-build * : - usage-requirements * ) -{ - local project = [ project.current ] ; - - local real-type = [ type.type-from-rule-name $(type) ] ; - if ! $(real-type) - { - errors.user-error No type corresponds to the main target rule name - '$(type)' : "Hint: try a lowercase name" ; - } - - targets.main-target-alternative [ new cast-target-class $(name) : $(project) - : $(real-type) - : [ targets.main-target-sources $(sources) : $(name) ] - : [ targets.main-target-requirements $(requirements) : $(project) ] - : [ targets.main-target-default-build $(default-build) : $(project) ] - : [ targets.main-target-usage-requirements $(usage-requirements) : - $(project) ] ] ; -} - - -IMPORT $(__name__) : cast : : cast ; |