| # 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 __init__ ( name-and-dir : project : * ) |
| { |
| basic-target.__init__ $(name-and-dir) : $(project) ; |
| 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 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 ] ; |
| |
| targets.main-target-alternative |
| [ new message-target-class $(name) : $(project) |
| : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) ] ; |
| } |
| IMPORT $(__name__) : message : : message ; |