From: Shiz Date: Thu, 20 Aug 2017 01:52:36 +0200 Subject: [PATCH] Add Alpine targets This adds `$arch-alpine-linux-musl` targets to Rust to encode our toolchain and distribution-specific quirks instead of polluting the main musl target of `$arch-unknown-linux-musl`. --- /dev/null +++ b/src/librustc_back/target/i586_alpine_linux_musl.rs @@ -0,0 +1,34 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use LinkerFlavor; +use target::{Target, TargetResult}; + +pub fn target() -> TargetResult { + let mut base = super::linux_musl_base::opts(); + base.cpu = "pentium4".to_string(); + base.max_atomic_width = Some(64); + base.crt_static_default = false; + base.static_position_independent_executables = true; + base.need_rpath = true; + + Ok(Target { + llvm_target: "i586-alpine-linux-musl".to_string(), + target_endian: "little".to_string(), + target_pointer_width: "32".to_string(), + data_layout: "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128".to_string(), + arch: "x86".to_string(), + target_os: "linux".to_string(), + target_env: "musl".to_string(), + target_vendor: "alpine".to_string(), + linker_flavor: LinkerFlavor::Gcc, + options: base, + }) +} --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -214,8 +214,11 @@ ("thumbv7m-none-eabi", thumbv7m_none_eabi), ("thumbv7em-none-eabi", thumbv7em_none_eabi), ("thumbv7em-none-eabihf", thumbv7em_none_eabihf), ("msp430-none-elf", msp430_none_elf), + + ("i586-alpine-linux-musl", i586_alpine_linux_musl), + ("x86_64-alpine-linux-musl", x86_64_alpine_linux_musl), } /// Everything `rustc` knows about how to compile for a specific target. --- /dev/null +++ b/src/librustc_back/target/x86_64_alpine_linux_musl.rs @@ -0,0 +1,34 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use LinkerFlavor; +use target::{Target, TargetResult}; + +pub fn target() -> TargetResult { + let mut base = super::linux_musl_base::opts(); + base.cpu = "x86-64".to_string(); + base.max_atomic_width = Some(64); + base.crt_static_default = false; + base.static_position_independent_executables = true; + base.need_rpath = true; + + Ok(Target { + llvm_target: "x86_64-alpine-linux-musl".to_string(), + target_endian: "little".to_string(), + target_pointer_width: "64".to_string(), + data_layout: "e-m:e-i64:64-f80:128-n8:16:32:64-S128".to_string(), + arch: "x86_64".to_string(), + target_os: "linux".to_string(), + target_env: "musl".to_string(), + target_vendor: "alpine".to_string(), + linker_flavor: LinkerFlavor::Gcc, + options: base, + }) +}