diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index 9f7ace6..563c037 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -258,7 +258,7 @@ module Rscons unless vars.nil? or vars.is_a?(Hash) or vars.is_a?(VarSet) raise "Unexpected construction variable set: #{vars.inspect}" end - sources = [sources] unless sources.is_a?(Array) + sources = Array(sources) add_target(target, @builders[method.to_s], sources, vars, rest) else super diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 6783cea..8e24359 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -484,4 +484,18 @@ EOF File.read("simplepp.cc").should =~ /# \d+ "simple.cc"/ `./simple`.should == "This is a simple C++ program\n" end + + it "supports invoking builders with no sources and a build_root defined" do + class TestBuilder < Rscons::Builder + def run(target, sources, cache, env, vars) + target + end + end + test_dir("simple") + Rscons::Environment.new do |env| + env.build_root = "build" + env.add_builder(TestBuilder.new) + env.TestBuilder("file") + end + end end