From 13b9499fbfecf471a5992a6c070cc7271f92e032 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 5 Aug 2013 14:48:47 -0400 Subject: [PATCH] Environment#build_dir(): allow src_dir to be a regex --- lib/rscons/environment.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index 6f360da..7d78749 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -20,7 +20,7 @@ module Rscons @varset = VarSet.new(variables) @targets = {} @builders = {} - @build_dirs = {} + @build_dirs = [] @varset[:exclude_builders] ||= [] unless @varset[:exclude_builders] == :all exclude_builders = Set.new(@varset[:exclude_builders] || []) @@ -76,7 +76,9 @@ module Rscons # Specify a build directory for this Environment. # Source files from src_dir will produce object files under obj_dir. def build_dir(src_dir, obj_dir) - @build_dirs[src_dir.gsub('\\', '/')] = obj_dir.gsub('\\', '/') + src_dir = src_dir.gsub('\\', '/') if src_dir.is_a?(String) + obj_dir = obj_dir.gsub('\\', '/') + @build_dirs << [src_dir, obj_dir] end # Return the file name to be built from source_fname with suffix suffix. @@ -86,7 +88,12 @@ module Rscons def get_build_fname(source_fname, suffix) build_fname = source_fname.set_suffix(suffix).gsub('\\', '/') @build_dirs.each do |src_dir, obj_dir| - build_fname.sub!(/^#{src_dir}\//, "#{obj_dir}/") + if src_dir.is_a?(Regexp) + build_fname.sub!(src_dir, obj_dir) + else + build_fname.sub!(/^#{src_dir}\//, "#{obj_dir}/") + end + build_fname.gsub!('\\', '/') end FileUtils.mkdir_p(File.dirname(build_fname)) build_fname