1
0
Fork 0
mirror of https://gitlab.alpinelinux.org/alpine/aports.git synced 2025-07-26 04:35:39 +03:00
aports/community/rust/need-rpath.patch
Rasmus Thomsen 6af1d32896 community/rust: upgrade to 1.36.0
* Update alpine-target.patch to fix the triplet on armhf and add the armv7 and ppc64le
  triplets. This should have been done in 69851bdae1,
  but has been forgotten.
* Remove the following patches:
  	* llvm-with-ffi.patch -> only required when statically linking LLVM
	* bootstrap-tool-respect-tool-config.patch -> plain outdated, not required anymore
2019-07-07 17:29:18 -03:00

62 lines
2.8 KiB
Diff

From: Shiz <hi@shiz.me>
Date: Thu, 20 Aug 2017 01:48:22 +0200
Subject: [PATCH] Add need_rpath target option to force RPATH generation
This adds a `need_rpath` option to the target options in order to implicitly
have the equivalent of `-C rpath` specified by default for final products
(executables and dynamic libraries), so that RPATHs are always added.
We have to skip this step in the bootstrap phase as it does its own manual
RPATH additions, but unfortunately there's no clean way to detect this.
As such, we have to resort to checking the `RUSTC_BOOTSTRAP` variable.
Hacky hacky!
--- a/src/librustc_target/spec/mod.rs
+++ b/src/librustc_target/spec/mod.rs
@@ -379,6 +379,8 @@
pub allows_weak_linkage: bool,
/// Whether the linker support rpaths or not. Defaults to false.
pub has_rpath: bool,
+ /// Whether to force rpath support on by default. Defaults to false.
+ pub need_rpath: bool,
/// Whether to disable linking to the default libraries, typically corresponds
/// to `-nodefaultlibs`. Defaults to true.
pub no_default_libraries: bool,
@@ -519,6 +519,7 @@
linker_is_gnu: false,
allows_weak_linkage: true,
has_rpath: false,
+ need_rpath: false,
no_default_libraries: true,
position_independent_executables: false,
static_position_independent_executables: false,
@@ -776,6 +776,7 @@
key!(linker_is_gnu, bool);
key!(allows_weak_linkage, bool);
key!(has_rpath, bool);
+ key!(need_rpath, bool);
key!(no_default_libraries, bool);
key!(position_independent_executables, bool);
key!(static_position_independent_executables, bool);
@@ -980,6 +980,7 @@
target_option_val!(linker_is_gnu);
target_option_val!(allows_weak_linkage);
target_option_val!(has_rpath);
+ target_option_val!(need_rpath);
target_option_val!(no_default_libraries);
target_option_val!(position_independent_executables);
target_option_val!(static_position_independent_executables);
--- a/src/librustc_codegen_ssa/back/link.rs.orig 2019-05-23 17:57:22.587173355 +0200
+++ b/src/librustc_codegen_ssa/back/link.rs 2019-05-23 17:58:28.833841560 +0200
@@ -1018,7 +1018,10 @@
// FIXME (#2397): At some point we want to rpath our guesses as to
// where extern libraries might live, based on the
// addl_lib_search_paths
- if sess.opts.cg.rpath {
+ // XXX: hacky hacky
+ let bootstrap = env::var("RUSTC_BOOTSTRAP").is_ok();
+ if !bootstrap && !sess.crt_static() &&
+ (sess.opts.cg.rpath || sess.target.target.options.need_rpath) {
let target_triple = sess.opts.target_triple.triple();
let mut get_install_prefix_lib_path = || {
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");