From 568b78e2e21d85dd2a5e699304d22e5a429f6692 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 9 Apr 2019 19:52:25 -0400 Subject: [PATCH] test tracking object file source language - #87 --- build_tests/d/link_objects.rb | 7 +++++++ build_tests/simple_cc/link_objects.rb | 6 ++++++ spec/build_tests_spec.rb | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 build_tests/d/link_objects.rb create mode 100644 build_tests/simple_cc/link_objects.rb diff --git a/build_tests/d/link_objects.rb b/build_tests/d/link_objects.rb new file mode 100644 index 0000000..0b8178b --- /dev/null +++ b/build_tests/d/link_objects.rb @@ -0,0 +1,7 @@ +build do + Environment.new(echo: :command) do |env| + env.Object("main.o", "main.d") + env.Object("mod.o", "mod.d") + env.Program("hello-d.exe", ["main.o", "mod.o"]) + end +end diff --git a/build_tests/simple_cc/link_objects.rb b/build_tests/simple_cc/link_objects.rb new file mode 100644 index 0000000..9173eba --- /dev/null +++ b/build_tests/simple_cc/link_objects.rb @@ -0,0 +1,6 @@ +build do + Environment.new do |env| + env.Object("simple.o", "simple.cc") + env.Program("simple.exe", "simple.o") + end +end diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 1cca24c..476186a 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -395,6 +395,14 @@ EOF expect(`./simple.exe`).to eq "This is a simple C++ program\n" end + it "links with the C++ linker when object files were built from C++ sources" do + test_dir("simple_cc") + result = run_rscons(rsconscript: "link_objects.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 'allows overriding construction variables for individual builder calls' do test_dir('two_sources') result = run_rscons @@ -484,6 +492,15 @@ EOF expect(`./hello-d.exe`.rstrip).to eq "Hello from D, value is 42!" end + it "links with the D linker when object files were built from D sources" do + test_dir("d") + result = run_rscons(rsconscript: "link_objects.rb") + expect(result.stderr).to eq "" + expect(File.exists?("main.o")).to be_truthy + expect(File.exists?("mod.o")).to be_truthy + expect(`./hello-d.exe`.rstrip).to eq "Hello from D, value is 42!" + end + it "does dependency generation for D sources" do test_dir("d") result = run_rscons