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