diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 168cbde7e0d1..5f66d0b102e2 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -178,7 +178,7 @@ #[cfg(windows)] mod job; -#[cfg(unix)] +#[cfg(all(unix, not(target_os = "haiku")))] mod job { use libc; @@ -189,7 +189,7 @@ pub unsafe fn setup(build: &mut ::Build) { } } -#[cfg(not(any(unix, windows)))] +#[cfg(any(target_os = "haiku", not(any(unix, windows))))] mod job { pub unsafe fn setup(_build: &mut ::Build) { } diff --git a/src/librustc_target/spec/x86_64_unknown_haiku.rs b/src/librustc_target/spec/x86_64_unknown_haiku.rs index 1e78461861a9..68fa58b92201 100644 --- a/src/librustc_target/spec/x86_64_unknown_haiku.rs +++ b/src/librustc_target/spec/x86_64_unknown_haiku.rs @@ -16,6 +16,8 @@ pub fn target() -> TargetResult { base.max_atomic_width = Some(64); base.pre_link_args.insert(LinkerFlavor::Gcc, vec!["-m64".to_string()]); base.stack_probes = true; + // This option is required to build executables on Haiku x86_64 + base.position_independent_executables = true; Ok(Target { llvm_target: "x86_64-unknown-haiku".to_string(), diff --git a/src/libstd/build.rs b/src/libstd/build.rs index 9d5aebde6256..26d93f97e69f 100644 --- a/src/libstd/build.rs +++ b/src/libstd/build.rs @@ -121,7 +121,8 @@ fn build_libbacktrace(target: &str) -> Result<(), ()> { if !target.contains("apple-ios") && !target.contains("solaris") && !target.contains("redox") && - !target.contains("android") { + !target.contains("android") && + !target.contains("haiku") { build.define("HAVE_DL_ITERATE_PHDR", "1"); } build.define("_GNU_SOURCE", "1");