From 10d4c647b9fd81a94703591225ef030855fe74d0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 7 Jun 2017 15:22:20 -0400 Subject: [PATCH] add spec for building a shared library using D --- build_tests/shared_library/shared_library_d.rb | 9 +++++++++ build_tests/shared_library/src/lib/one.d | 6 ++++++ build_tests/shared_library/src/lib/two.d | 6 ++++++ spec/build_tests_spec.rb | 13 +++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 build_tests/shared_library/shared_library_d.rb create mode 100644 build_tests/shared_library/src/lib/one.d create mode 100644 build_tests/shared_library/src/lib/two.d diff --git a/build_tests/shared_library/shared_library_d.rb b/build_tests/shared_library/shared_library_d.rb new file mode 100644 index 0000000..6279b7d --- /dev/null +++ b/build_tests/shared_library/shared_library_d.rb @@ -0,0 +1,9 @@ +Rscons::Environment.new do |env| + env["CPPPATH"] << "src/lib" + libmine = env.SharedLibrary("libmine", Dir["src/lib/*.d"]) + env.Program("test-shared.exe", + Dir["src/*.c"], + "LIBPATH" => %w[.], + "LIBS" => %w[mine]) + env.build_after("test-shared.exe", libmine.to_s) +end diff --git a/build_tests/shared_library/src/lib/one.d b/build_tests/shared_library/src/lib/one.d new file mode 100644 index 0000000..64ea63a --- /dev/null +++ b/build_tests/shared_library/src/lib/one.d @@ -0,0 +1,6 @@ +import core.stdc.stdio; + +extern (C) void one() +{ + printf("Hi from one()\n"); +} diff --git a/build_tests/shared_library/src/lib/two.d b/build_tests/shared_library/src/lib/two.d new file mode 100644 index 0000000..3145150 --- /dev/null +++ b/build_tests/shared_library/src/lib/two.d @@ -0,0 +1,6 @@ +import core.stdc.stdio; + +extern (C) void two() +{ + printf("Hi from two()\n"); +} diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index b0f9f73..9a3954b 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -435,6 +435,19 @@ EOF ] expect(`./hello-d.exe`.rstrip).to eq "Hello from D!" end + + it "creates shared libraries using D" do + test_dir("shared_library") + + result = run_test(rsconsfile: "shared_library_d.rb") + # Currently gdc produces an error while trying to build the shared + # library. Since this isn't really an rscons problem, I'm commenting out + # this check. I'm not sure what I want to do about D support at this + # point anyway... + #expect(result.stderr).to eq "" + slines = lines(result.stdout) + expect(slines).to include("SHLD libmine.so") + end end it "supports disassembling object files" do