endif
endif
-ifdef CFG_DISABLE_RPATH
ifeq ($$(OSTYPE_$(3)),apple-darwin)
RPATH_VAR$(1)_T_$(2)_H_$(3) := \
DYLD_LIBRARY_PATH="$$$$DYLD_LIBRARY_PATH:$$(CURDIR)/$$(HLIB$(1)_H_$(3))"
RPATH_VAR$(1)_T_$(2)_H_$(3) := \
LD_LIBRARY_PATH="$$$$LD_LIBRARY_PATH:$$(CURDIR)/$$(HLIB$(1)_H_$(3))"
endif
-else
- RPATH_VAR$(1)_T_$(2)_H_$(3) :=
-endif
STAGE$(1)_T_$(2)_H_$(3) := \
$$(Q)$$(RPATH_VAR$(1)_T_$(2)_H_$(3)) \
// crates they depend on.
let rel_rpaths = get_rpaths_relative_to_output(os, output, libs);
- // Make backup absolute paths to the libraries. Binaries can
- // be moved as long as the crates they link against don't move.
- let abs_rpaths = get_absolute_rpaths(libs);
-
// And a final backup rpath to the global library location.
let fallback_rpaths = vec!(get_install_prefix_rpath(sysroot, target_triple));
}
log_rpaths("relative", rel_rpaths.as_slice());
- log_rpaths("absolute", abs_rpaths.as_slice());
log_rpaths("fallback", fallback_rpaths.as_slice());
let mut rpaths = rel_rpaths;
- rpaths.push_all(abs_rpaths.as_slice());
rpaths.push_all(fallback_rpaths.as_slice());
// Remove duplicates
prefix+"/"+relative.as_str().expect("non-utf8 component in path")
}
-fn get_absolute_rpaths(libs: &[Path]) -> Vec<~str> {
- libs.iter().map(|a| get_absolute_rpath(a)).collect()
-}
-
-pub fn get_absolute_rpath(lib: &Path) -> ~str {
- let mut p = os::make_absolute(lib);
- p.pop();
- // FIXME (#9639): This needs to handle non-utf8 paths
- p.as_str().expect("non-utf8 component in rpath").to_owned()
-}
-
pub fn get_install_prefix_rpath(sysroot: &Path, target_triple: &str) -> ~str {
let install_prefix = env!("CFG_PREFIX");
mod test {
use std::os;
- use back::rpath::{get_absolute_rpath, get_install_prefix_rpath};
+ use back::rpath::get_install_prefix_rpath;
use back::rpath::{minimize_rpaths, rpaths_to_flags, get_rpath_relative_to_output};
use syntax::abi;
use metadata::filesearch;
&Path::new("lib/libstd.so"));
assert_eq!(res.as_slice(), "@loader_path/../lib");
}
-
- #[test]
- fn test_get_absolute_rpath() {
- let res = get_absolute_rpath(&Path::new("lib/libstd.so"));
- let lib = os::make_absolute(&Path::new("lib"));
- debug!("test_get_absolute_rpath: {} vs. {}",
- res.to_str(), lib.display());
-
- // FIXME (#9639): This needs to handle non-utf8 paths
- assert_eq!(res.as_slice(), lib.as_str().expect("non-utf8 component in path"));
- }
}