mirror of
https://github.com/boostorg/build.git
synced 2026-02-16 01:12:13 +00:00
virtual-target.jam.
- Added the missing explicit imports, now that we don't dump
everything into the global module with qualification
- stopped using the feature-space hack for temporary testing states of
the feature module. Instead we move its global variable definitions
to a temporary module.
- the way feature.action was invoking the rule it was being passed was
evil. Now you pass (even local) rules without qualification and
they are invoked in the source module context.
- module __test__ rules are always executed in a separate module, so
that their import dependencies can be separated from those of the
module being tested.
- better reporting of circular module-loading dependencies
implemented.
- minor changes:
property-set.jam: moved .empty initialization to avert circular
load dependency .
symlink.jam: fixed global variable naming.
[SVN r18407]
48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
# Copyright (C) Vladimir Prus 2002. Permission to copy, use, modify, sell and
|
|
# distribute this software is granted provided this copyright notice appears in
|
|
# all copies. This software is provided "as is" without express or implied
|
|
# warranty, and with no claim as to its suitability for any purpose.
|
|
|
|
# This module defines a special generator, which handles targets with
|
|
# <file> property. It allows to use prebuilt targets.
|
|
|
|
import class : class new ;
|
|
import generators ;
|
|
import feature : feature ;
|
|
|
|
feature file : : free path ;
|
|
|
|
rule prebuilt-file-generator
|
|
{
|
|
generator.__init__ prebuilt-file-generator : : * : <file> ;
|
|
|
|
import feature type errors path ;
|
|
|
|
rule run ( project name ? : property-set : sources * )
|
|
{
|
|
local properties = [ $(property-set).raw ] ;
|
|
local filename = [ feature.get-values <file> : $(properties) ] ;
|
|
local type = [ type.type $(filename:S) ] ;
|
|
if ! $(type)
|
|
{
|
|
errors.error "Unknown type for prebuilt target " $(name) in $(project) ;
|
|
}
|
|
|
|
local t = [ new file-target $(filename:S=:D=) : $(type) : $(project) ] ;
|
|
$(t).set-path [ path.parent $(filename) ] ;
|
|
|
|
$(t).action [ new null-action $(t) : $(property-set) ] ;
|
|
|
|
$(t).suffix [ MATCH .(.*) : $(name:S) ] ;
|
|
return $(t) ;
|
|
|
|
}
|
|
}
|
|
|
|
class prebuilt-file-generator : generator ;
|
|
|
|
generators.register [ new prebuilt-file-generator ] ;
|
|
|
|
|
|
|