From bbb80ee03d5afac7d2ffdc03dace85a580d12765 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 9 Aug 2010 20:54:29 +0000 Subject: [PATCH] Port tools/message.jam. [SVN r64708] --- v2/tools/builtin.py | 1 + v2/tools/message.py | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 v2/tools/message.py diff --git a/v2/tools/builtin.py b/v2/tools/builtin.py index c0142db98..31a7bffee 100644 --- a/v2/tools/builtin.py +++ b/v2/tools/builtin.py @@ -715,3 +715,4 @@ get_manager().projects().add_rule("variant", variant) import stage import symlink +import message diff --git a/v2/tools/message.py b/v2/tools/message.py new file mode 100644 index 000000000..cc0b946ff --- /dev/null +++ b/v2/tools/message.py @@ -0,0 +1,46 @@ +# Status: ported. +# Base revision: 64488. +# +# Copyright 2008, 2010 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 b2.build.targets as targets +import b2.build.property_set as property_set + +from b2.manager import get_manager + +class MessageTargetClass(targets.BasicTarget): + + def __init__(self, name, project, *args): + + targets.BasicTarget.__init__(self, name, project, []) + self.args = args + self.built = False + + def construct(self, name, sources, ps): + + if not self.built: + for arg in self.args: + if type(arg) == type([]): + arg = " ".join(arg) + print arg + self.built = True + + return (property_set.empty(), []) + +def message(name, *args): + + if type(name) == type([]): + name = name[0] + + t = get_manager().targets() + + project = get_manager().projects().current() + + return t.main_target_alternative(MessageTargetClass(*((name, project) + args))) + +get_manager().projects().add_rule("message", message)