aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cc/cc.go31
-rw-r--r--cc/x86_darwin_host.go4
-rw-r--r--cc/x86_linux_host.go4
3 files changed, 30 insertions, 9 deletions
diff --git a/cc/cc.go b/cc/cc.go
index 56655b96..3b3128f3 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1086,9 +1086,17 @@ type baseLinker struct {
VariantIsStatic bool `blueprint:"mutated"`
VariantIsStaticBinary bool `blueprint:"mutated"`
}
+
+ runPaths []string
}
-func (linker *baseLinker) begin(ctx BaseModuleContext) {}
+func (linker *baseLinker) begin(ctx BaseModuleContext) {
+ if ctx.toolchain().Is64Bit() {
+ linker.runPaths = []string{"../lib64", "lib64"}
+ } else {
+ linker.runPaths = []string{"../lib", "lib"}
+ }
+}
func (linker *baseLinker) props() []interface{} {
return []interface{}{&linker.Properties, &linker.dynamicProperties}
@@ -1152,6 +1160,17 @@ func (linker *baseLinker) flags(ctx ModuleContext, flags Flags) Flags {
}
}
+ if ctx.Host() && !linker.static() {
+ rpath_prefix := `\$$ORIGIN/`
+ if ctx.Darwin() {
+ rpath_prefix = "@loader_path/"
+ }
+
+ for _, rpath := range linker.runPaths {
+ flags.LdFlags = append(flags.LdFlags, "-Wl,-rpath,"+rpath_prefix+rpath)
+ }
+ }
+
if flags.Clang {
flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainClangLdflags())
} else {
@@ -1781,6 +1800,16 @@ type testLinker struct {
Properties TestLinkerProperties
}
+func (test *testLinker) begin(ctx BaseModuleContext) {
+ test.binaryLinker.begin(ctx)
+
+ runpath := "../../lib"
+ if ctx.toolchain().Is64Bit() {
+ runpath += "64"
+ }
+ test.runPaths = append([]string{runpath}, test.runPaths...)
+}
+
func (test *testLinker) props() []interface{} {
return append(test.binaryLinker.props(), &test.Properties)
}
diff --git a/cc/x86_darwin_host.go b/cc/x86_darwin_host.go
index 87e50b06..559a9a51 100644
--- a/cc/x86_darwin_host.go
+++ b/cc/x86_darwin_host.go
@@ -57,14 +57,10 @@ var (
darwinX86Ldflags = []string{
"-m32",
- "-Wl,-rpath,@loader_path/../lib",
- "-Wl,-rpath,@loader_path/lib",
}
darwinX8664Ldflags = []string{
"-m64",
- "-Wl,-rpath,@loader_path/../lib64",
- "-Wl,-rpath,@loader_path/lib64",
}
darwinClangCflags = append(clangFilterUnknownCflags(darwinCflags), []string{
diff --git a/cc/x86_linux_host.go b/cc/x86_linux_host.go
index e05d2a52..e33862d3 100644
--- a/cc/x86_linux_host.go
+++ b/cc/x86_linux_host.go
@@ -56,14 +56,10 @@ var (
linuxX86Ldflags = []string{
"-m32",
- `-Wl,-rpath,\$$ORIGIN/../lib`,
- `-Wl,-rpath,\$$ORIGIN/lib`,
}
linuxX8664Ldflags = []string{
"-m64",
- `-Wl,-rpath,\$$ORIGIN/../lib64`,
- `-Wl,-rpath,\$$ORIGIN/lib64`,
}
linuxClangCflags = append(clangFilterUnknownCflags(linuxCflags), []string{