Skip to content

Commit 9400805

Browse files
committed
Initial support for aarch64-linux-android
1 parent e375a89 commit 9400805

File tree

6 files changed

+66
-4
lines changed

6 files changed

+66
-4
lines changed

mk/cfg/aarch64-linux-android.mk

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# aarch64-linux-android configuration
2+
# CROSS_PREFIX_aarch64-linux-android-
3+
CC_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc
4+
CXX_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-g++
5+
CPP_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-gcc -E
6+
AR_aarch64-linux-android=$(CFG_ANDROID_CROSS_PATH)/bin/aarch64-linux-android-ar
7+
CFG_LIB_NAME_aarch64-linux-android=lib$(1).so
8+
CFG_STATIC_LIB_NAME_aarch64-linux-android=lib$(1).a
9+
CFG_LIB_GLOB_aarch64-linux-android=lib$(1)-*.so
10+
CFG_LIB_DSYM_GLOB_aarch64-linux-android=lib$(1)-*.dylib.dSYM
11+
CFG_JEMALLOC_CFLAGS_aarch64-linux-android := -D__aarch64__ -DANDROID -D__ANDROID__ $(CFLAGS)
12+
CFG_GCCISH_CFLAGS_aarch64-linux-android := -Wall -g -fPIC -D__aarch64__ -DANDROID -D__ANDROID__ $(CFLAGS)
13+
CFG_GCCISH_CXXFLAGS_aarch64-linux-android := -fno-rtti $(CXXFLAGS)
14+
CFG_GCCISH_LINK_FLAGS_aarch64-linux-android := -shared -fPIC -ldl -g -lm -lsupc++
15+
CFG_GCCISH_DEF_FLAG_aarch64-linux-android := -Wl,--export-dynamic,--dynamic-list=
16+
CFG_GCCISH_PRE_LIB_FLAGS_aarch64-linux-android := -Wl,-whole-archive
17+
CFG_GCCISH_POST_LIB_FLAGS_aarch64-linux-android := -Wl,-no-whole-archive
18+
CFG_DEF_SUFFIX_aarch64-linux-android := .android.def
19+
CFG_LLC_FLAGS_aarch64-linux-android :=
20+
CFG_INSTALL_NAME_aarch64-linux-android =
21+
CFG_EXE_SUFFIX_aarch64-linux-android :=
22+
CFG_WINDOWSY_aarch64-linux-android :=
23+
CFG_UNIXY_aarch64-linux-android := 1
24+
CFG_PATH_MUNGE_aarch64-linux-android := true
25+
CFG_LDPATH_aarch64-linux-android :=
26+
CFG_RUN_aarch64-linux-android=
27+
CFG_RUN_TARG_aarch64-linux-android=
28+
RUSTC_FLAGS_aarch64-linux-android :=
29+
RUSTC_CROSS_FLAGS_aarch64-linux-android :=
30+
CFG_GNU_TRIPLE_aarch64-linux-android := aarch64-linux-android

mk/rt.mk

+2
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ else ifeq ($(OSTYPE_$(1)), apple-ios)
141141
JEMALLOC_ARGS_$(1) := --disable-tls
142142
else ifeq ($(OSTYPE_$(1)), linux-androideabi)
143143
JEMALLOC_ARGS_$(1) := --disable-tls
144+
else ifeq ($(OSTYPE_$(1)), linux-android)
145+
JEMALLOC_ARGS_$(1) := --disable-tls
144146
endif
145147

146148
################################################################################

src/liblibc/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4647,13 +4647,13 @@ pub mod funcs {
46474647
use types::os::arch::c95::c_int;
46484648
use types::os::common::posix01::sighandler_t;
46494649

4650-
#[cfg(not(target_os = "android"))]
4650+
#[cfg(not(all(target_os = "android", target_arch = "arm")))]
46514651
extern {
46524652
pub fn signal(signum: c_int,
46534653
handler: sighandler_t) -> sighandler_t;
46544654
}
46554655

4656-
#[cfg(target_os = "android")]
4656+
#[cfg(all(target_os = "android", target_arch = "arm"))]
46574657
extern {
46584658
#[link_name = "bsd_signal"]
46594659
pub fn signal(signum: c_int,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use target::Target;
12+
13+
pub fn target() -> Target {
14+
let mut base = super::linux_base::opts();
15+
base.pre_link_args.push("-Wl,--allow-multiple-definition".to_string());
16+
base.position_independent_executables = true;
17+
Target {
18+
data_layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-\
19+
f32:32:32-f64:64:64-v64:64:64-v128:128:128-a:0:64-\
20+
n32:64-S128".to_string(),
21+
llvm_target: "aarch64-linux-android".to_string(),
22+
target_endian: "little".to_string(),
23+
target_pointer_width: "64".to_string(),
24+
arch: "aarch64".to_string(),
25+
target_os: "android".to_string(),
26+
options: base,
27+
}
28+
}

src/librustc_back/target/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ mod arm_linux_androideabi;
6565
mod arm_unknown_linux_gnueabi;
6666
mod arm_unknown_linux_gnueabihf;
6767
mod aarch64_apple_ios;
68+
mod aarch64_linux_android;
6869
mod aarch64_unknown_linux_gnu;
6970
mod i686_apple_darwin;
7071
mod i686_pc_windows_gnu;
@@ -357,6 +358,7 @@ impl Target {
357358
i386_apple_ios,
358359
x86_64_apple_ios,
359360
aarch64_apple_ios,
361+
aarch64_linux_android,
360362
armv7_apple_ios,
361363
armv7s_apple_ios,
362364

src/libstd/sys/unix/backtrace.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ mod uw {
418418
trace_argument: *mut libc::c_void)
419419
-> _Unwind_Reason_Code;
420420

421-
#[cfg(all(not(target_os = "android"),
421+
#[cfg(all(not(all(target_os = "android", target_arch = "arm")),
422422
not(all(target_os = "linux", target_arch = "arm"))))]
423423
pub fn _Unwind_GetIP(ctx: *mut _Unwind_Context) -> libc::uintptr_t;
424424

@@ -431,7 +431,7 @@ mod uw {
431431
// On android, the function _Unwind_GetIP is a macro, and this is the
432432
// expansion of the macro. This is all copy/pasted directly from the
433433
// header file with the definition of _Unwind_GetIP.
434-
#[cfg(any(target_os = "android",
434+
#[cfg(any(all(target_os = "android", target_arch = "arm"),
435435
all(target_os = "linux", target_arch = "arm")))]
436436
pub unsafe fn _Unwind_GetIP(ctx: *mut _Unwind_Context) -> libc::uintptr_t {
437437
#[repr(C)]

0 commit comments

Comments
 (0)