add spec for building a shared library using D

This commit is contained in:
Josh Holtrop 2017-06-07 15:22:20 -04:00
parent db2ec82a25
commit 10d4c647b9
4 changed files with 34 additions and 0 deletions

View File

@ -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

View File

@ -0,0 +1,6 @@
import core.stdc.stdio;
extern (C) void one()
{
printf("Hi from one()\n");
}

View File

@ -0,0 +1,6 @@
import core.stdc.stdio;
extern (C) void two()
{
printf("Hi from two()\n");
}

View File

@ -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