diff --git a/build_tests/simple/build_sources.rb b/build_tests/simple/build_sources.rb new file mode 100644 index 0000000..3db4ac5 --- /dev/null +++ b/build_tests/simple/build_sources.rb @@ -0,0 +1,14 @@ +class MyProgram < Rscons::Builder + def run(options) + target, sources, cache, env, vars = options.values_at(:target, :sources, :cache, :env, :vars) + objects = env.build_sources(sources, [".o"], cache, vars) + command = %W[gcc -o #{target}] + objects + return false unless env.execute("#{name} #{target}", command) + target + end +end + +Rscons::Environment.new do |env| + env.add_builder(MyProgram.new) + env.MyProgram("simple.exe", "simple.c") +end diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 269d401..74a24a7 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -641,6 +641,16 @@ EOF ] end + it "allows a builder to call Environment#build_sources in a non-threaded manner" do + test_dir("simple") + result = run_test(rsconsfile: "build_sources.rb") + expect(result.stderr).to eq "" + expect(lines(result.stdout)).to eq [ + "CC simple.o", + "MyProgram simple.exe", + ] + end + context "Directory builder" do it "creates the requested directory" do test_dir("simple")