Skip to content

Commit 781c3d9

Browse files
committed
Add thumbv7neon-* targets.
Add the `thumbv7neon-linux-androideabi` and `thumbv7neon-unknown-linux-gnueabihf` targets. Closes cross-rs#254.
1 parent a51135f commit 781c3d9

5 files changed

+106
-0
lines changed

.github/workflows/ci.yml

+2
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ jobs:
139139
- { target: arm-unknown-linux-gnueabihf, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1 }
140140
- { target: armv7-unknown-linux-gnueabi, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
141141
- { target: armv7-unknown-linux-gnueabihf, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
142+
- { target: thumbv7neon-unknown-linux-gnueabihf, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
142143
- { target: i586-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1 }
143144
- { target: i686-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: native qemu-user qemu-system }
144145
- { target: mips-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
@@ -167,6 +168,7 @@ jobs:
167168
- { target: aarch64-linux-android, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
168169
- { target: arm-linux-androideabi, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
169170
- { target: armv7-linux-androideabi, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
171+
- { target: thumbv7neon-linux-androideabi, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
170172
- { target: i686-linux-android, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
171173
- { target: x86_64-linux-android, os: ubuntu-latest, cpp: 1, std: 1, run: 1, cpp: 1, runners: qemu-user }
172174
- { target: x86_64-pc-windows-gnu, os: ubuntu-latest, cpp: 1, std: 1, run: 1 }

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
77

88
### Added
99

10+
- #745 - added `thumbv7neon-*` targets.
1011
- #741 - added `armv7-unknown-linux-gnueabi` and `armv7-unknown-linux-musleabi` targets.
1112
- #721 - add support for running doctests on nightly if `CROSS_UNSTABLE_ENABLE_DOCTESTS=true`.
1213
- #719 - add `--list` to known subcommands.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
FROM ubuntu:20.04
2+
ARG DEBIAN_FRONTEND=noninteractive
3+
4+
COPY common.sh lib.sh /
5+
RUN /common.sh
6+
7+
COPY cmake.sh /
8+
RUN /cmake.sh
9+
10+
COPY xargo.sh /
11+
RUN /xargo.sh
12+
13+
COPY android-ndk.sh /
14+
RUN /android-ndk.sh arm 28
15+
ENV PATH=$PATH:/android-ndk/bin
16+
17+
COPY android-system.sh /
18+
RUN /android-system.sh arm
19+
20+
COPY qemu.sh /
21+
RUN /qemu.sh arm
22+
23+
RUN cp /android-ndk/sysroot/usr/lib/arm-linux-androideabi/28/libz.so /system/lib/
24+
25+
COPY android-runner /
26+
27+
# Libz is distributed in the android ndk, but for some unknown reason it is not
28+
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
29+
# likewise, the toolchains expect the prefix `thumbv7neon-linux-androideabi`,
30+
# which we don't have, so just export every possible variable, such as AR.
31+
# Also export all target binutils just in case required.
32+
ENV CARGO_TARGET_THUMBV7NEON_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
33+
CARGO_TARGET_THUMBV7NEON_LINUX_ANDROIDEABI_RUNNER="/android-runner arm" \
34+
AR_thumbv7neon_linux_androideabi=arm-linux-androideabi-ar \
35+
AS_thumbv7neon_linux_androideabi=arm-linux-androideabi-as \
36+
CC_thumbv7neon_linux_androideabi=arm-linux-androideabi-gcc \
37+
CXX_thumbv7neon_linux_androideabi=arm-linux-androideabi-g++ \
38+
LD_thumbv7neon_linux_androideabi=arm-linux-androideabi-ld \
39+
NM_thumbv7neon_linux_androideabi=arm-linux-androideabi-nm \
40+
OBJCOPY_thumbv7neon_linux_androideabi=arm-linux-androideabi-objcopy \
41+
OBJDUMP_thumbv7neon_linux_androideabi=arm-linux-androideabi-objdump \
42+
RANLIB_thumbv7neon_linux_androideabi=arm-linux-androideabi-ranlib \
43+
READELF_thumbv7neon_linux_androideabi=arm-linux-androideabi-readelf \
44+
SIZE_thumbv7neon_linux_androideabi=arm-linux-androideabi-size \
45+
STRINGS_thumbv7neon_linux_androideabi=arm-linux-androideabi-strings \
46+
STRIP_thumbv7neon_linux_androideabi=arm-linux-androideabi-strip \
47+
BINDGEN_EXTRA_CLANG_ARGS_thumbv7neon_linux_androideabi="--sysroot=/android-ndk/sysroot" \
48+
DEP_Z_INCLUDE=/android-ndk/sysroot/usr/include/ \
49+
RUST_TEST_THREADS=1 \
50+
HOME=/tmp/ \
51+
TMPDIR=/tmp/ \
52+
ANDROID_DATA=/ \
53+
ANDROID_DNS_MODE=local \
54+
ANDROID_ROOT=/system
55+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
FROM ubuntu:16.04
2+
ARG DEBIAN_FRONTEND=noninteractive
3+
4+
COPY common.sh lib.sh /
5+
RUN /common.sh
6+
7+
COPY cmake.sh /
8+
RUN /cmake.sh
9+
10+
COPY xargo.sh /
11+
RUN /xargo.sh
12+
13+
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
14+
g++-arm-linux-gnueabihf \
15+
libc6-dev-armhf-cross
16+
17+
COPY qemu.sh /
18+
RUN /qemu.sh arm softmmu
19+
20+
COPY dropbear.sh /
21+
RUN /dropbear.sh
22+
23+
COPY linux-image.sh /
24+
RUN /linux-image.sh armv7
25+
26+
COPY linux-runner /
27+
28+
# Export all target binutils just in case required.
29+
ENV CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
30+
CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_RUNNER="/linux-runner armv7" \
31+
AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
32+
AS_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-as \
33+
CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
34+
CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ \
35+
LD_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ld \
36+
NM_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-nm \
37+
OBJCOPY_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-objcopy \
38+
OBJDUMP_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-objdump \
39+
RANLIB_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ranlib \
40+
READELF_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-readelf \
41+
SIZE_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-size \
42+
STRINGS_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-strings \
43+
STRIP_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-strip \
44+
BINDGEN_EXTRA_CLANG_ARGS_thumbv7neon_unknown_linux_gnueabihf="--sysroot=/usr/arm-linux-gnueabihf" \
45+
QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf \
46+
RUST_TEST_THREADS=1 \
47+
PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig/:${PKG_CONFIG_PATH}"

src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ impl Target {
213213

214214
fn needs_docker_privileged(&self) -> bool {
215215
let arch_32bit = self.triple().starts_with("arm")
216+
|| self.triple().starts_with("thumb")
216217
|| self.triple().starts_with("i586")
217218
|| self.triple().starts_with("i686");
218219

0 commit comments

Comments
 (0)