allow passing Builder objects as sources to build targets - close #95

This commit is contained in:
Josh Holtrop 2019-04-09 20:35:46 -04:00
parent 568b78e2e2
commit 008fa4844d
3 changed files with 15 additions and 0 deletions

View File

@ -0,0 +1,6 @@
build do
Environment.new do |env|
object = env.Object("simple.o", "simple.c")
env.Program("simple.exe", object)
end
end

View File

@ -310,6 +310,7 @@ module Rscons
end
target = expand_path(expand_varref(target))
sources = Array(sources).map do |source|
source = source.target if sources.is_a?(Builder)
expand_path(expand_varref(source))
end.flatten
builder = @builders[method.to_s].new(

View File

@ -173,6 +173,14 @@ EOF
expect(`./simple.exe`).to eq "This is a simple C program\n"
end
it "allows specifying a Builder object as the source to another build target" do
test_dir("simple")
result = run_rscons(rsconscript: "builder_as_source.rb")
expect(result.stderr).to eq ""
expect(File.exists?("simple.o")).to be_truthy
expect(`./simple.exe`).to eq "This is a simple C program\n"
end
it 'prints commands as they are executed' do
test_dir('simple')
result = run_rscons(rsconscript: "command.rb")