2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-16 01:12:13 +00:00
Files
build/v2/tools/prebuilt.jam
Dave Abrahams 5eb7ea1192 Note: there is currently a circular dependency between type.jam and
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]
2003-05-15 22:22:13 +00:00

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 ] ;