blob: 672b6e0bce24f2f1e6107c0ee2883aaab9bf89d0 [file] [log] [blame]
# Copyright 2008 Vladimir Prus
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
# Defines main target type 'message', that prints a message when built for the
# first time.
import project ;
import "class" : new ;
import targets ;
import property-set ;
class message-target-class : basic-target
{
rule set-message ( * )
{
self.1 = $(1) ;
self.2 = $(2) ;
self.3 = $(3) ;
self.4 = $(4) ;
self.5 = $(5) ;
self.6 = $(6) ;
self.7 = $(7) ;
self.8 = $(8) ;
self.9 = $(9) ;
self.built = ;
}
rule construct ( name : source-targets * : property-set )
{
if ! $(self.built)
{
for i in 1 2 3 4 5 6 7 8 9
{
if $(self.$(i))
{
ECHO $(self.$(i)) ;
}
}
self.built = 1 ;
}
return [ property-set.empty ] ;
}
}
rule message ( name : * )
{
local project = [ project.current ] ;
local result = [ targets.main-target-alternative
[ new message-target-class $(name) : $(project)
: [ targets.main-target-sources : $(name) ]
: [ targets.main-target-requirements : $(project) ]
: [ targets.main-target-default-build : $(project) ]
: [ targets.main-target-usage-requirements : $(project) ]
] ] ;
$(result).set-message $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
return $(result) ;
}
IMPORT $(__name__) : message : : message ;