From 0f3a6accd756c191c28e0cf9a15b50f12402f87b Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 26 Jun 2013 21:32:08 -0400 Subject: [PATCH] pass extra variables into Environment.execute() --- lib/rscons/builders/cc.rb | 6 +++++- lib/rscons/builders/program.rb | 6 +++++- lib/rscons/environment.rb | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/rscons/builders/cc.rb b/lib/rscons/builders/cc.rb index 7b91cdf..3453ce3 100644 --- a/lib/rscons/builders/cc.rb +++ b/lib/rscons/builders/cc.rb @@ -23,7 +23,11 @@ module Rscons '-o', o_file, source ] - env.execute("CC #{o_file}", command) + vars = { + 'TARGET' => o_file, + 'SOURCES' => source, + } + env.execute("CC #{o_file}", command, vars) Cache.open.register_build(target, [source]) end o_file diff --git a/lib/rscons/builders/program.rb b/lib/rscons/builders/program.rb index 8eb60da..30eb08b 100644 --- a/lib/rscons/builders/program.rb +++ b/lib/rscons/builders/program.rb @@ -34,7 +34,11 @@ module Rscons *env['LIBPATHS'].map {|lp| "-L#{lp}"}, *env['LIBS'].map {|lib| "-l#{lib}"} ] - env.execute("LINK #{target}", command) + vars = { + 'TARGET' => target, + 'SOURCES' => sources, + } + env.execute("LINK #{target}", command, vars) Cache.open.register_build(target, sources) end target diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index 4084779..d90ca8f 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -47,7 +47,8 @@ module Rscons @build_dirs[src_dir] = build_dir end - def execute(short_desc, command) + def execute(short_desc, command, extra_vars) + merged_variables = @variables.merge(extra_vars) expand_varref = proc do |varref| if varref.is_a?(Array) varref.map do |ent| @@ -56,7 +57,7 @@ module Rscons else if varref[0] == '$' varname = varref[1, varref.size] - varval = self[varname] + varval = merged_variables[varname] if varval expand_varref.call(varval) else