mod bitrig_base;
mod cloudabi_base;
mod dragonfly_base;
-mod emscripten_base;
mod freebsd_base;
mod haiku_base;
mod linux_base;
("mips64el-unknown-linux-gnuabi64", mips64el_unknown_linux_gnuabi64),
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
+ ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
/// Whether the target is built-in or loaded from a custom target specification.
pub is_builtin: bool,
- /// Linker to invoke. Defaults to "cc".
- pub linker: String,
+ /// Linker to invoke
+ pub linker: Option<String>,
/// Linker arguments that are unconditionally passed *before* any
/// user-defined libraries.
pub staticlib_suffix: String,
/// OS family to use for conditional compilation. Valid options: "unix", "windows".
pub target_family: Option<String>,
- /// Whether the target toolchain is like OpenBSD's.
- /// Only useful for compiling against OpenBSD, for configuring abi when returning a struct.
- pub is_like_openbsd: bool,
+ /// Whether the target toolchain's ABI supports returning small structs as an integer.
+ pub abi_return_struct_as_int: bool,
/// Whether the target toolchain is like macOS's. Only useful for compiling against iOS/macOS,
/// in particular running dsymutil and some other stuff like `-dead_strip`. Defaults to false.
pub is_like_osx: bool,
fn default() -> TargetOptions {
TargetOptions {
is_builtin: false,
- linker: option_env!("CFG_DEFAULT_LINKER").unwrap_or("cc").to_string(),
+ linker: option_env!("CFG_DEFAULT_LINKER").map(|s| s.to_string()),
pre_link_args: LinkArgs::new(),
post_link_args: LinkArgs::new(),
asm_args: Vec::new(),
staticlib_prefix: "lib".to_string(),
staticlib_suffix: ".a".to_string(),
target_family: None,
- is_like_openbsd: false,
+ abi_return_struct_as_int: false,
is_like_osx: false,
is_like_solaris: false,
is_like_windows: false,
}
key!(is_builtin, bool);
- key!(linker);
+ key!(linker, optional);
key!(pre_link_args, link_args);
key!(pre_link_objects_exe, list);
key!(pre_link_objects_dll, list);
key!(staticlib_prefix);
key!(staticlib_suffix);
key!(target_family, optional);
- key!(is_like_openbsd, bool);
+ key!(abi_return_struct_as_int, bool);
key!(is_like_osx, bool);
key!(is_like_solaris, bool);
key!(is_like_windows, bool);
target_option_val!(staticlib_prefix);
target_option_val!(staticlib_suffix);
target_option_val!(target_family);
- target_option_val!(is_like_openbsd);
+ target_option_val!(abi_return_struct_as_int);
target_option_val!(is_like_osx);
target_option_val!(is_like_solaris);
target_option_val!(is_like_windows);