From 986b8f08cc86bedcfdfd2a033c82f6889d0c6487 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 16 Sep 2013 22:30:16 -0400 Subject: [PATCH] prepend builder-temporary construction variables with "_"; reserve lowercase string variables for user --- lib/rscons/builders/library.rb | 6 +++--- lib/rscons/builders/object.rb | 24 ++++++++++++------------ lib/rscons/builders/program.rb | 6 +++--- lib/rscons/environment.rb | 7 ++++--- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/rscons/builders/library.rb b/lib/rscons/builders/library.rb index 6461c75..fd8bb3a 100644 --- a/lib/rscons/builders/library.rb +++ b/lib/rscons/builders/library.rb @@ -8,7 +8,7 @@ module Rscons 'AR' => 'ar', 'LIBSUFFIX' => '.a', 'ARFLAGS' => [], - 'ARCOM' => ['$AR', 'rcs', '$ARFLAGS', '$TARGET', '$SOURCES'] + 'ARCOM' => ['$AR', 'rcs', '$ARFLAGS', '$_TARGET', '$_SOURCES'] } end @@ -17,8 +17,8 @@ module Rscons objects = env.build_sources(sources, [env['OBJSUFFIX'], env['LIBSUFFIX']].flatten, cache, vars) if objects vars = vars.merge({ - 'TARGET' => target, - 'SOURCES' => objects, + '_TARGET' => target, + '_SOURCES' => objects, }) command = env.build_command(env['ARCOM'], vars) standard_build("AR #{target}", target, command, objects, env, cache) diff --git a/lib/rscons/builders/object.rb b/lib/rscons/builders/object.rb index 00c4f78..ca10704 100644 --- a/lib/rscons/builders/object.rb +++ b/lib/rscons/builders/object.rb @@ -11,8 +11,8 @@ module Rscons 'ASSUFFIX' => '.S', 'ASPPPATH' => '$CPPPATH', 'ASPPFLAGS' => '$CPPFLAGS', - 'ASDEPGEN' => ['-MMD', '-MF', '$DEPFILE'], - 'ASCOM' => ['$AS', '-c', '-o', '$TARGET', '$ASDEPGEN', '-I$[ASPPPATH]', '$ASPPFLAGS', '$ASFLAGS', '$SOURCES'], + 'ASDEPGEN' => ['-MMD', '-MF', '$_DEPFILE'], + 'ASCOM' => ['$AS', '-c', '-o', '$_TARGET', '$ASDEPGEN', '-I$[ASPPPATH]', '$ASPPFLAGS', '$ASFLAGS', '$_SOURCES'], 'CPPFLAGS' => [], 'CPPPATH' => [], @@ -20,14 +20,14 @@ module Rscons 'CC' => 'gcc', 'CFLAGS' => [], 'CSUFFIX' => '.c', - 'CCDEPGEN' => ['-MMD', '-MF', '$DEPFILE'], - 'CCCOM' => ['$CC', '-c', '-o', '$TARGET', '$CCDEPGEN', '-I$[CPPPATH]', '$CPPFLAGS', '$CFLAGS', '$SOURCES'], + 'CCDEPGEN' => ['-MMD', '-MF', '$_DEPFILE'], + 'CCCOM' => ['$CC', '-c', '-o', '$_TARGET', '$CCDEPGEN', '-I$[CPPPATH]', '$CPPFLAGS', '$CFLAGS', '$_SOURCES'], 'CXX' => 'g++', 'CXXFLAGS' => [], 'CXXSUFFIX' => '.cc', - 'CXXDEPGEN' => ['-MMD', '-MF', '$DEPFILE'], - 'CXXCOM' =>['$CXX', '-c', '-o', '$TARGET', '$CXXDEPGEN', '-I$[CPPPATH]', '$CPPFLAGS', '$CXXFLAGS', '$SOURCES'], + 'CXXDEPGEN' => ['-MMD', '-MF', '$_DEPFILE'], + 'CXXCOM' =>['$CXX', '-c', '-o', '$_TARGET', '$CXXDEPGEN', '-I$[CPPPATH]', '$CPPFLAGS', '$CXXFLAGS', '$_SOURCES'], } end @@ -40,9 +40,9 @@ module Rscons def run(target, sources, cache, env, vars = {}) vars = vars.merge({ - 'TARGET' => target, - 'SOURCES' => sources, - 'DEPFILE' => target.set_suffix('.mf'), + '_TARGET' => target, + '_SOURCES' => sources, + '_DEPFILE' => target.set_suffix('.mf'), }) com_prefix = if sources.first.has_suffix?(env['ASSUFFIX']) 'AS' @@ -59,9 +59,9 @@ module Rscons FileUtils.rm_f(target) return false unless env.execute("#{com_prefix} #{target}", command) deps = sources - if File.exists?(vars['DEPFILE']) - deps += env.parse_makefile_deps(vars['DEPFILE'], target) - FileUtils.rm_f(vars['DEPFILE']) + if File.exists?(vars['_DEPFILE']) + deps += env.parse_makefile_deps(vars['_DEPFILE'], target) + FileUtils.rm_f(vars['_DEPFILE']) end cache.register_build(target, command, deps.uniq) end diff --git a/lib/rscons/builders/program.rb b/lib/rscons/builders/program.rb index 5fd6192..e69f066 100644 --- a/lib/rscons/builders/program.rb +++ b/lib/rscons/builders/program.rb @@ -10,7 +10,7 @@ module Rscons 'LDFLAGS' => [], 'LIBPATH' => [], 'LIBS' => [], - 'LDCOM' => ['$LD', '-o', '$TARGET', '$LDFLAGS', '$SOURCES', '-L$[LIBPATH]', '-l$[LIBS]'] + 'LDCOM' => ['$LD', '-o', '$_TARGET', '$LDFLAGS', '$_SOURCES', '-L$[LIBPATH]', '-l$[LIBS]'] } end @@ -23,8 +23,8 @@ module Rscons end.any? ld_alt = use_cxx ? env['CXX'] : env['CC'] vars = vars.merge({ - 'TARGET' => target, - 'SOURCES' => objects, + '_TARGET' => target, + '_SOURCES' => objects, 'LD' => env['LD'] || ld_alt, }) command = env.build_command(env['LDCOM'], vars) diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index 376ce68..ac2cb8e 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -11,9 +11,10 @@ module Rscons # Create an Environment object. # @param variables [Hash] - # The variables hash can contain both construction variables, which are - # uppercase strings (such as "CC" or "LDFLAGS"), and RScons options, - # which are lowercase symbols (such as :echo). + # The variables hash can contain construction variables, which are + # uppercase strings (such as "CC" or "LDFLAGS"), user variables, which + # are lowercase strings (such as "sources"), and RScons options, which + # are lowercase symbols (such as :echo). # If a block is given, the Environment object is yielded to the block and # when the block returns, the {#process} method is automatically called. def initialize(variables = {})