add SHLIBPREFIX
This commit is contained in:
parent
10d4c647b9
commit
b7f609b7e8
@ -1,6 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/lib"
|
||||
libmine = env.SharedLibrary("libmine", Dir["src/lib/*.c"])
|
||||
libmine = env.SharedLibrary("mine", Dir["src/lib/*.c"])
|
||||
env.Program("test-shared.exe",
|
||||
Dir["src/*.c"],
|
||||
"LIBPATH" => %w[.],
|
||||
|
@ -1,6 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/lib"
|
||||
libmine = env.SharedLibrary("libmine", Dir["src/lib/*.cc"])
|
||||
libmine = env.SharedLibrary("mine", Dir["src/lib/*.cc"])
|
||||
env.Program("test-shared.exe",
|
||||
Dir["src/*.cc"],
|
||||
"LIBPATH" => %w[.],
|
||||
|
@ -1,6 +1,6 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/lib"
|
||||
libmine = env.SharedLibrary("libmine", Dir["src/lib/*.d"])
|
||||
libmine = env.SharedLibrary("mine", Dir["src/lib/*.d"])
|
||||
env.Program("test-shared.exe",
|
||||
Dir["src/*.c"],
|
||||
"LIBPATH" => %w[.],
|
||||
|
@ -1,7 +1,7 @@
|
||||
Rscons::Environment.new do |env|
|
||||
env["CPPPATH"] << "src/lib"
|
||||
env["SHLD"] = "gcc"
|
||||
libmine = env.SharedLibrary("libmine", Dir["src/lib/*.c"])
|
||||
libmine = env.SharedLibrary("mine", Dir["src/lib/*.c"])
|
||||
env.Program("test-shared.exe",
|
||||
Dir["src/*.c"],
|
||||
"LIBPATH" => %w[.],
|
||||
|
@ -41,7 +41,7 @@ module Rscons
|
||||
def create_build_target(options)
|
||||
env, target, vars = options.values_at(:env, :target, :vars)
|
||||
my_options = options.dup
|
||||
unless target["."]
|
||||
unless File.basename(target)["."]
|
||||
my_options[:target] += env.expand_varref("${PROGSUFFIX}", vars)
|
||||
end
|
||||
super(my_options)
|
||||
|
@ -11,6 +11,7 @@ module Rscons
|
||||
# @return [Hash] Default construction variables for the builder.
|
||||
def default_variables(env)
|
||||
{
|
||||
'SHLIBPREFIX' => (RUBY_PLATFORM =~ /mingw/ ? '' : 'lib'),
|
||||
'SHLIBSUFFIX' => (RUBY_PLATFORM =~ /mingw/ ? '.dll' : '.so'),
|
||||
'SHLDFLAGS' => ['${LDFLAGS}', '-shared'],
|
||||
'SHLD' => nil,
|
||||
@ -38,7 +39,11 @@ module Rscons
|
||||
def create_build_target(options)
|
||||
env, target, vars = options.values_at(:env, :target, :vars)
|
||||
my_options = options.dup
|
||||
unless env.expand_varref(target, vars) =~ /\./
|
||||
libprefix = env.expand_varref("${SHLIBPREFIX}", vars)
|
||||
unless File.basename(target).start_with?(libprefix)
|
||||
my_options[:target].sub!(%r{^(.*/)?([^/]+)$}, "\\1#{libprefix}\\2")
|
||||
end
|
||||
unless File.basename(target)["."]
|
||||
my_options[:target] += env.expand_varref("${SHLIBSUFFIX}", vars)
|
||||
end
|
||||
super(my_options)
|
||||
|
@ -446,7 +446,11 @@ EOF
|
||||
# point anyway...
|
||||
#expect(result.stderr).to eq ""
|
||||
slines = lines(result.stdout)
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
if RUBY_PLATFORM =~ /mingw/
|
||||
expect(slines).to include("SHLD mine.dll")
|
||||
else
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -690,13 +694,20 @@ EOF
|
||||
result = run_test
|
||||
expect(result.stderr).to eq ""
|
||||
slines = lines(result.stdout)
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
if RUBY_PLATFORM =~ /mingw/
|
||||
expect(slines).to include("SHLD mine.dll")
|
||||
expect(File.exists?("mine.dll")).to be_truthy
|
||||
else
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
expect(File.exists?("libmine.so")).to be_truthy
|
||||
end
|
||||
|
||||
result = run_test
|
||||
expect(result.stderr).to eq ""
|
||||
expect(result.stdout).to eq ""
|
||||
|
||||
expect(`LD_LIBRARY_PATH=. ./test-shared.exe`).to match /Hi from one/
|
||||
ld_library_path_prefix = (RUBY_PLATFORM =~ /mingw/ ? "" : "LD_LIBRARY_PATH=. ")
|
||||
expect(`#{ld_library_path_prefix}./test-shared.exe`).to match /Hi from one/
|
||||
expect(`./test-static.exe`).to match /Hi from one/
|
||||
end
|
||||
|
||||
@ -706,13 +717,18 @@ EOF
|
||||
result = run_test(rsconsfile: "shared_library_cxx.rb")
|
||||
expect(result.stderr).to eq ""
|
||||
slines = lines(result.stdout)
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
if RUBY_PLATFORM =~ /mingw/
|
||||
expect(slines).to include("SHLD mine.dll")
|
||||
else
|
||||
expect(slines).to include("SHLD libmine.so")
|
||||
end
|
||||
|
||||
result = run_test(rsconsfile: "shared_library_cxx.rb")
|
||||
expect(result.stderr).to eq ""
|
||||
expect(result.stdout).to eq ""
|
||||
|
||||
expect(`LD_LIBRARY_PATH=. ./test-shared.exe`).to match /Hi from one/
|
||||
ld_library_path_prefix = (RUBY_PLATFORM =~ /mingw/ ? "" : "LD_LIBRARY_PATH=. ")
|
||||
expect(`#{ld_library_path_prefix}./test-shared.exe`).to match /Hi from one/
|
||||
expect(`./test-static.exe`).to match /Hi from one/
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user