mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-21 22:34:05 +00:00
add support for mips(el)-unknown-linux-musl
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.
This commit is contained in:
parent
0f196bcc3b
commit
7b026f0355
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -16,4 +16,5 @@
|
||||
url = https://github.com/rust-lang/rust-installer.git
|
||||
[submodule "src/liblibc"]
|
||||
path = src/liblibc
|
||||
url = https://github.com/rust-lang-nursery/libc.git
|
||||
url = https://github.com/japaric/libc.git
|
||||
branch = mips-musl
|
||||
|
2
configure
vendored
2
configure
vendored
@ -1178,7 +1178,7 @@ do
|
||||
;;
|
||||
|
||||
|
||||
*-musl)
|
||||
x86_64-*-musl)
|
||||
if [ ! -f $CFG_MUSL_ROOT/lib/libc.a ]
|
||||
then
|
||||
err "musl libc $CFG_MUSL_ROOT/lib/libc.a not found"
|
||||
|
24
mk/cfg/mips-unknown-linux-musl.mk
Normal file
24
mk/cfg/mips-unknown-linux-musl.mk
Normal file
@ -0,0 +1,24 @@
|
||||
# mips-unknown-linux-musl configuration
|
||||
CC_mips-unknown-linux-musl=mips-openwrt-linux-gcc
|
||||
CXX_mips-unknown-linux-musl=mips-openwrt-linux-g++
|
||||
CPP_mips-unknown-linux-musl=mips-openwrt-linux-gcc -E
|
||||
AR_mips-unknown-linux-musl=mips-openwrt-linux-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 := -C target-cpu=mips32r2 -C target-feature="+mips32r2" -C soft-float
|
||||
CFG_GNU_TRIPLE_mips-unknown-linux-musl := mips-unknown-linux-musl
|
24
mk/cfg/mipsel-unknown-linux-musl.mk
Normal file
24
mk/cfg/mipsel-unknown-linux-musl.mk
Normal file
@ -0,0 +1,24 @@
|
||||
# mipsel-unknown-linux-musl configuration
|
||||
CC_mipsel-unknown-linux-musl=mipsel-openwrt-linux-gcc
|
||||
CXX_mipsel-unknown-linux-musl=mipsel-openwrt-linux-g++
|
||||
CPP_mipsel-unknown-linux-musl=mipsel-openwrt-linux-gcc
|
||||
AR_mipsel-unknown-linux-musl=mipsel-openwrt-linux-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 := -C target-cpu=mips32 -C target-feature="+mips32"
|
||||
CFG_GNU_TRIPLE_mipsel-unknown-linux-musl := mipsel-unknown-linux-musl
|
@ -1 +1 @@
|
||||
Subproject commit 91ff43c736de664f8d3cd351e148c09cdea6731e
|
||||
Subproject commit 81c05bcddb05d0e5facf66f3945405bbf50b04d3
|
24
src/librustc_back/target/mips_unknown_linux_musl.rs
Normal file
24
src/librustc_back/target/mips_unknown_linux_musl.rs
Normal file
@ -0,0 +1,24 @@
|
||||
// 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;
|
||||
|
||||
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: super::linux_base::opts()
|
||||
}
|
||||
}
|
25
src/librustc_back/target/mipsel_unknown_linux_musl.rs
Normal file
25
src/librustc_back/target/mipsel_unknown_linux_musl.rs
Normal file
@ -0,0 +1,25 @@
|
||||
// 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;
|
||||
|
||||
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: super::linux_base::opts()
|
||||
}
|
||||
}
|
@ -420,6 +420,8 @@ impl Target {
|
||||
armv7_unknown_linux_gnueabihf,
|
||||
aarch64_unknown_linux_gnu,
|
||||
x86_64_unknown_linux_musl,
|
||||
mips_unknown_linux_musl,
|
||||
mipsel_unknown_linux_musl,
|
||||
|
||||
i686_linux_android,
|
||||
arm_linux_androideabi,
|
||||
|
@ -93,11 +93,20 @@ mod arch {
|
||||
use os::raw::{c_long, c_ulong};
|
||||
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 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 nlink_t = u32;
|
||||
#[cfg(target_env = "musl")]
|
||||
#[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;
|
||||
|
||||
#[repr(C)]
|
||||
|
@ -101,9 +101,10 @@ pub type _Unwind_Exception_Cleanup_Fn =
|
||||
exception: *mut _Unwind_Exception);
|
||||
|
||||
#[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"))]
|
||||
#[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"))]
|
||||
#[cfg_attr(any(target_os = "android", target_os = "openbsd"),
|
||||
link(name = "gcc"))]
|
||||
|
Loading…
Reference in New Issue
Block a user