Auto merge of #31298 - japaric:mips-musl, r=alexcrichton
This target covers MIPS devices that run the trunk version of OpenWRT. The x86_64-unknown-linux-musl target always links statically to C libraries. For the mips(el)-unknown-linux-musl target, we opt for dynamic linking (like most of other targets do) to keep binary size down. As for the C compiler flags used in the build system, we use the same flags used for the mips(el)-unknown-linux-gnu target. r? @alexcrichton
This commit is contained in:
commit
9041b93058
|
@ -1164,7 +1164,7 @@ do
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
*-musl)
|
x86_64-*-musl)
|
||||||
if [ ! -f $CFG_MUSL_ROOT/lib/libc.a ]
|
if [ ! -f $CFG_MUSL_ROOT/lib/libc.a ]
|
||||||
then
|
then
|
||||||
err "musl libc $CFG_MUSL_ROOT/lib/libc.a not found"
|
err "musl libc $CFG_MUSL_ROOT/lib/libc.a not found"
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# mips-unknown-linux-musl configuration
|
||||||
|
CC_mips-unknown-linux-musl=mips-linux-musl-gcc
|
||||||
|
CXX_mips-unknown-linux-musl=mips-linux-musl-g++
|
||||||
|
CPP_mips-unknown-linux-musl=mips-linux-musl-gcc -E
|
||||||
|
AR_mips-unknown-linux-musl=mips-linux-musl-ar
|
||||||
|
CFG_LIB_NAME_mips-unknown-linux-musl=lib$(1).so
|
||||||
|
CFG_STATIC_LIB_NAME_mips-unknown-linux-musl=lib$(1).a
|
||||||
|
CFG_LIB_GLOB_mips-unknown-linux-musl=lib$(1)-*.so
|
||||||
|
CFG_LIB_DSYM_GLOB_mips-unknown-linux-musl=lib$(1)-*.dylib.dSYM
|
||||||
|
CFG_JEMALLOC_CFLAGS_mips-unknown-linux-musl := -mips32r2 -msoft-float -mabi=32 $(CFLAGS)
|
||||||
|
CFG_GCCISH_CFLAGS_mips-unknown-linux-musl := -Wall -g -fPIC -mips32r2 -msoft-float -mabi=32 $(CFLAGS)
|
||||||
|
CFG_GCCISH_CXXFLAGS_mips-unknown-linux-musl := -fno-rtti $(CXXFLAGS)
|
||||||
|
CFG_GCCISH_LINK_FLAGS_mips-unknown-linux-musl := -shared -fPIC -g -mips32r2 -msoft-float -mabi=32
|
||||||
|
CFG_GCCISH_DEF_FLAG_mips-unknown-linux-musl := -Wl,--export-dynamic,--dynamic-list=
|
||||||
|
CFG_LLC_FLAGS_mips-unknown-linux-musl :=
|
||||||
|
CFG_INSTALL_NAME_mips-unknown-linux-musl =
|
||||||
|
CFG_EXE_SUFFIX_mips-unknown-linux-musl =
|
||||||
|
CFG_WINDOWSY_mips-unknown-linux-musl :=
|
||||||
|
CFG_UNIXY_mips-unknown-linux-musl := 1
|
||||||
|
CFG_LDPATH_mips-unknown-linux-musl :=
|
||||||
|
CFG_RUN_mips-unknown-linux-musl=
|
||||||
|
CFG_RUN_TARG_mips-unknown-linux-musl=
|
||||||
|
RUSTC_FLAGS_mips-unknown-linux-musl :=
|
||||||
|
CFG_GNU_TRIPLE_mips-unknown-linux-musl := mips-unknown-linux-musl
|
|
@ -0,0 +1,24 @@
|
||||||
|
# mipsel-unknown-linux-musl configuration
|
||||||
|
CC_mipsel-unknown-linux-musl=mipsel-linux-musl-gcc
|
||||||
|
CXX_mipsel-unknown-linux-musl=mipsel-linux-musl-g++
|
||||||
|
CPP_mipsel-unknown-linux-musl=mipsel-linux-musl-gcc
|
||||||
|
AR_mipsel-unknown-linux-musl=mipsel-linux-musl-ar
|
||||||
|
CFG_LIB_NAME_mipsel-unknown-linux-musl=lib$(1).so
|
||||||
|
CFG_STATIC_LIB_NAME_mipsel-unknown-linux-musl=lib$(1).a
|
||||||
|
CFG_LIB_GLOB_mipsel-unknown-linux-musl=lib$(1)-*.so
|
||||||
|
CFG_LIB_DSYM_GLOB_mipsel-unknown-linux-musl=lib$(1)-*.dylib.dSYM
|
||||||
|
CFG_JEMALLOC_CFLAGS_mipsel-unknown-linux-musl := -mips32 -mabi=32 $(CFLAGS)
|
||||||
|
CFG_GCCISH_CFLAGS_mipsel-unknown-linux-musl := -Wall -g -fPIC -mips32 -mabi=32 $(CFLAGS)
|
||||||
|
CFG_GCCISH_CXXFLAGS_mipsel-unknown-linux-musl := -fno-rtti $(CXXFLAGS)
|
||||||
|
CFG_GCCISH_LINK_FLAGS_mipsel-unknown-linux-musl := -shared -fPIC -g -mips32
|
||||||
|
CFG_GCCISH_DEF_FLAG_mipsel-unknown-linux-musl := -Wl,--export-dynamic,--dynamic-list=
|
||||||
|
CFG_LLC_FLAGS_mipsel-unknown-linux-musl :=
|
||||||
|
CFG_INSTALL_NAME_mipsel-unknown-linux-musl =
|
||||||
|
CFG_EXE_SUFFIX_mipsel-unknown-linux-musl :=
|
||||||
|
CFG_WINDOWSY_mipsel-unknown-linux-musl :=
|
||||||
|
CFG_UNIXY_mipsel-unknown-linux-musl := 1
|
||||||
|
CFG_LDPATH_mipsel-unknown-linux-musl :=
|
||||||
|
CFG_RUN_mipsel-unknown-linux-musl=
|
||||||
|
CFG_RUN_TARG_mipsel-unknown-linux-musl=
|
||||||
|
RUSTC_FLAGS_mipsel-unknown-linux-musl :=
|
||||||
|
CFG_GNU_TRIPLE_mipsel-unknown-linux-musl := mipsel-unknown-linux-musl
|
|
@ -1 +1 @@
|
||||||
Subproject commit 91ff43c736de664f8d3cd351e148c09cdea6731e
|
Subproject commit 30f70baa6cc1ba3ddebb55b988fafbad0c0cc810
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright 2014 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 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
use target::{Target, TargetOptions};
|
||||||
|
|
||||||
|
pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "mips-unknown-linux-musl".to_string(),
|
||||||
|
target_endian: "big".to_string(),
|
||||||
|
target_pointer_width: "32".to_string(),
|
||||||
|
arch: "mips".to_string(),
|
||||||
|
target_os: "linux".to_string(),
|
||||||
|
target_env: "musl".to_string(),
|
||||||
|
target_vendor: "unknown".to_string(),
|
||||||
|
options: TargetOptions {
|
||||||
|
cpu: "mips32r2".to_string(),
|
||||||
|
features: "+mips32r2,+soft-float".to_string(),
|
||||||
|
..super::linux_base::opts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright 2014 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 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
use target::{Target, TargetOptions};
|
||||||
|
|
||||||
|
pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "mipsel-unknown-linux-musl".to_string(),
|
||||||
|
target_endian: "little".to_string(),
|
||||||
|
target_pointer_width: "32".to_string(),
|
||||||
|
arch: "mips".to_string(),
|
||||||
|
target_os: "linux".to_string(),
|
||||||
|
target_env: "musl".to_string(),
|
||||||
|
target_vendor: "unknown".to_string(),
|
||||||
|
options: TargetOptions {
|
||||||
|
cpu: "mips32".to_string(),
|
||||||
|
features: "+mips32".to_string(),
|
||||||
|
..super::linux_base::opts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -420,6 +420,8 @@ impl Target {
|
||||||
armv7_unknown_linux_gnueabihf,
|
armv7_unknown_linux_gnueabihf,
|
||||||
aarch64_unknown_linux_gnu,
|
aarch64_unknown_linux_gnu,
|
||||||
x86_64_unknown_linux_musl,
|
x86_64_unknown_linux_musl,
|
||||||
|
mips_unknown_linux_musl,
|
||||||
|
mipsel_unknown_linux_musl,
|
||||||
|
|
||||||
i686_linux_android,
|
i686_linux_android,
|
||||||
arm_linux_androideabi,
|
arm_linux_androideabi,
|
||||||
|
|
|
@ -93,11 +93,20 @@ mod arch {
|
||||||
use os::raw::{c_long, c_ulong};
|
use os::raw::{c_long, c_ulong};
|
||||||
use os::unix::raw::{gid_t, uid_t};
|
use os::unix::raw::{gid_t, uid_t};
|
||||||
|
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i64;
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type blkcnt_t = i32;
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type blksize_t = i32;
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u64;
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type ino_t = u32;
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type nlink_t = u32;
|
||||||
|
#[cfg(target_env = "musl")]
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i32;
|
||||||
|
#[cfg(not(target_env = "musl"))]
|
||||||
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type off_t = i64;
|
||||||
#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
|
#[stable(feature = "raw_ext", since = "1.1.0")] pub type time_t = i32;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
|
|
@ -101,9 +101,10 @@ pub type _Unwind_Exception_Cleanup_Fn =
|
||||||
exception: *mut _Unwind_Exception);
|
exception: *mut _Unwind_Exception);
|
||||||
|
|
||||||
#[cfg_attr(any(all(target_os = "linux", not(target_env = "musl")),
|
#[cfg_attr(any(all(target_os = "linux", not(target_env = "musl")),
|
||||||
target_os = "freebsd"),
|
target_os = "freebsd",
|
||||||
|
all(target_os = "linux", target_env = "musl", not(target_arch = "x86_64"))),
|
||||||
link(name = "gcc_s"))]
|
link(name = "gcc_s"))]
|
||||||
#[cfg_attr(all(target_os = "linux", target_env = "musl", not(test)),
|
#[cfg_attr(all(target_os = "linux", target_env = "musl", target_arch = "x86_64", not(test)),
|
||||||
link(name = "unwind", kind = "static"))]
|
link(name = "unwind", kind = "static"))]
|
||||||
#[cfg_attr(any(target_os = "android", target_os = "openbsd"),
|
#[cfg_attr(any(target_os = "android", target_os = "openbsd"),
|
||||||
link(name = "gcc"))]
|
link(name = "gcc"))]
|
||||||
|
|
Loading…
Reference in New Issue