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