Skip to content

Commit 9d09856

Browse files
authored
Try #1112: --target *android*
2 parents 35a1e17 + 3b4a7b1 commit 9d09856

8 files changed

+170
-90
lines changed

ci/test.sh

+16
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,22 @@ main() {
197197

198198
rm -rf "${td}"
199199
fi
200+
201+
# tst cmake support
202+
td="$(mkcargotemp -d)"
203+
204+
git clone --depth 1 https://github.com/cross-rs/rust-cmake-hello-world "${td}"
205+
206+
pushd "${td}"
207+
retry cargo fetch
208+
if (( ${RUN:-0} )); then
209+
cross_run --target "${TARGET}"
210+
else
211+
"${CROSS[@]}" build --target "${TARGET}" ${CROSS_FLAGS}
212+
fi
213+
popd
214+
215+
rm -rf "${td}"
200216
}
201217

202218
cross_run() {

docker/Dockerfile.aarch64-linux-android

+21-15
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,34 @@ COPY android $PYTHON_TMPDIR
3333
RUN /android-system.sh arm64
3434

3535
ENV CROSS_SYSROOT=/android-ndk/sysroot
36+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
37+
ENV CROSS_ANDROID_ARCH=aarch64
38+
ENV CROSS_ANDROID_TARGET=aarch64-linux-android
3639
COPY android-symlink.sh /
37-
RUN /android-symlink.sh aarch64 aarch64-linux-android
40+
RUN /android-symlink.sh aarch64 $CROSS_ANDROID_TARGET
3841

3942
COPY android-runner /
4043

44+
COPY android.cmake /opt/android.cmake
45+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
46+
4147
# Libz is distributed in the android ndk, but for some unknown reason it is not
4248
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
43-
ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc \
49+
ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$CROSS_ANDROID_TARGET-gcc" \
4450
CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER="/android-runner aarch64" \
45-
AR_aarch64_linux_android=aarch64-linux-android-ar \
46-
AS_aarch64_linux_android=aarch64-linux-android-as \
47-
CC_aarch64_linux_android=aarch64-linux-android-gcc \
48-
CXX_aarch64_linux_android=aarch64-linux-android-g++ \
49-
LD_aarch64_linux_android=aarch64-linux-android-ld \
50-
NM_aarch64_linux_android=aarch64-linux-android-nm \
51-
OBJCOPY_aarch64_linux_android=aarch64-linux-android-objcopy \
52-
OBJDUMP_aarch64_linux_android=aarch64-linux-android-objdump \
53-
RANLIB_aarch64_linux_android=aarch64-linux-android-ranlib \
54-
READELF_aarch64_linux_android=aarch64-linux-android-readelf \
55-
SIZE_aarch64_linux_android=aarch64-linux-android-size \
56-
STRINGS_aarch64_linux_android=aarch64-linux-android-strings \
57-
STRIP_aarch64_linux_android=aarch64-linux-android-strip \
51+
AR_aarch64_linux_android="$CROSS_ANDROID_TARGET-ar" \
52+
AS_aarch64_linux_android="$CROSS_ANDROID_TARGET-as" \
53+
CC_aarch64_linux_android="$CROSS_ANDROID_TARGET-gcc" \
54+
CXX_aarch64_linux_android="$CROSS_ANDROID_TARGET-g++" \
55+
LD_aarch64_linux_android="$CROSS_ANDROID_TARGET-ld" \
56+
NM_aarch64_linux_android="$CROSS_ANDROID_TARGET-nm" \
57+
OBJCOPY_aarch64_linux_android="$CROSS_ANDROID_TARGET-objcopy" \
58+
OBJDUMP_aarch64_linux_android="$CROSS_ANDROID_TARGET-objdump" \
59+
RANLIB_aarch64_linux_android="$CROSS_ANDROID_TARGET-ranlib" \
60+
READELF_aarch64_linux_android="$CROSS_ANDROID_TARGET-readelf" \
61+
SIZE_aarch64_linux_android="$CROSS_ANDROID_TARGET-size" \
62+
STRINGS_aarch64_linux_android="$CROSS_ANDROID_TARGET-strings" \
63+
STRIP_aarch64_linux_android="$CROSS_ANDROID_TARGET-strip" \
5864
BINDGEN_EXTRA_CLANG_ARGS_aarch64_linux_android="--sysroot=$CROSS_SYSROOT" \
5965
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include"/ \
6066
RUST_TEST_THREADS=1 \

docker/Dockerfile.arm-linux-androideabi

+21-15
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,34 @@ COPY android $PYTHON_TMPDIR
3333
RUN /android-system.sh arm
3434

3535
ENV CROSS_SYSROOT=/android-ndk/sysroot
36+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
37+
ENV CROSS_ANDROID_ARCH=armv5te
38+
ENV CROSS_ANDROID_TARGET=arm-linux-androideabi
3639
COPY android-symlink.sh /
37-
RUN /android-symlink.sh arm arm-linux-androideabi
40+
RUN /android-symlink.sh arm $CROSS_ANDROID_TARGET
3841

3942
COPY android-runner /
4043

44+
COPY android.cmake /opt/android.cmake
45+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
46+
4147
# Libz is distributed in the android ndk, but for some unknown reason it is not
4248
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
43-
ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
49+
ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER="$CROSS_ANDROID_TARGET-gcc" \
4450
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER="/android-runner arm" \
45-
AR_arm_linux_androideabi=arm-linux-androideabi-ar \
46-
AS_arm_linux_androideabi=arm-linux-androideabi-as \
47-
CC_arm_linux_androideabi=arm-linux-androideabi-gcc \
48-
CXX_arm_linux_androideabi=arm-linux-androideabi-g++ \
49-
LD_arm_linux_androideabi=arm-linux-androideabi-ld \
50-
NM_arm_linux_androideabi=arm-linux-androideabi-nm \
51-
OBJCOPY_arm_linux_androideabi=arm-linux-androideabi-objcopy \
52-
OBJDUMP_arm_linux_androideabi=arm-linux-androideabi-objdump \
53-
RANLIB_arm_linux_androideabi=arm-linux-androideabi-ranlib \
54-
READELF_arm_linux_androideabi=arm-linux-androideabi-readelf \
55-
SIZE_arm_linux_androideabi=arm-linux-androideabi-size \
56-
STRINGS_arm_linux_androideabi=arm-linux-androideabi-strings \
57-
STRIP_arm_linux_androideabi=arm-linux-androideabi-strip \
51+
AR_arm_linux_androideabi="$CROSS_ANDROID_TARGET-ar" \
52+
AS_arm_linux_androideabi="$CROSS_ANDROID_TARGET-as" \
53+
CC_arm_linux_androideabi="$CROSS_ANDROID_TARGET-gcc" \
54+
CXX_arm_linux_androideabi="$CROSS_ANDROID_TARGET-g++" \
55+
LD_arm_linux_androideabi="$CROSS_ANDROID_TARGET-ld" \
56+
NM_arm_linux_androideabi="$CROSS_ANDROID_TARGET-nm" \
57+
OBJCOPY_arm_linux_androideabi="$CROSS_ANDROID_TARGET-objcopy" \
58+
OBJDUMP_arm_linux_androideabi="$CROSS_ANDROID_TARGET-objdump" \
59+
RANLIB_arm_linux_androideabi="$CROSS_ANDROID_TARGET-ranlib" \
60+
READELF_arm_linux_androideabi="$CROSS_ANDROID_TARGET-readelf" \
61+
SIZE_arm_linux_androideabi="$CROSS_ANDROID_TARGET-size" \
62+
STRINGS_arm_linux_androideabi="$CROSS_ANDROID_TARGET-strings" \
63+
STRIP_arm_linux_androideabi="$CROSS_ANDROID_TARGET-strip" \
5864
BINDGEN_EXTRA_CLANG_ARGS_arm_linux_androideabi="--sysroot=$CROSS_SYSROOT" \
5965
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include/" \
6066
RUST_TEST_THREADS=1 \

docker/Dockerfile.armv7-linux-androideabi

+21-15
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,34 @@ COPY android $PYTHON_TMPDIR
3333
RUN /android-system.sh arm
3434

3535
ENV CROSS_SYSROOT=/android-ndk/sysroot
36+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
37+
ENV CROSS_ANDROID_ARCH=armv7-a
38+
ENV CROSS_ANDROID_TARGET=arm-linux-androideabi
3639
COPY android-symlink.sh /
37-
RUN /android-symlink.sh arm arm-linux-androideabi
40+
RUN /android-symlink.sh arm $CROSS_ANDROID_TARGET
3841

3942
COPY android-runner /
4043

44+
COPY android.cmake /opt/android.cmake
45+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
46+
4147
# Libz is distributed in the android ndk, but for some unknown reason it is not
4248
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
43-
ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
49+
ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="$CROSS_ANDROID_TARGET-gcc" \
4450
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER="/android-runner arm" \
45-
AR_armv7_linux_androideabi=arm-linux-androideabi-ar \
46-
AS_armv7_linux_androideabi=arm-linux-androideabi-as \
47-
CC_armv7_linux_androideabi=arm-linux-androideabi-gcc \
48-
CXX_armv7_linux_androideabi=arm-linux-androideabi-g++ \
49-
LD_armv7_linux_androideabi=arm-linux-androideabi-ld \
50-
NM_armv7_linux_androideabi=arm-linux-androideabi-nm \
51-
OBJCOPY_armv7_linux_androideabi=arm-linux-androideabi-objcopy \
52-
OBJDUMP_armv7_linux_androideabi=arm-linux-androideabi-objdump \
53-
RANLIB_armv7_linux_androideabi=arm-linux-androideabi-ranlib \
54-
READELF_armv7_linux_androideabi=arm-linux-androideabi-readelf \
55-
SIZE_armv7_linux_androideabi=arm-linux-androideabi-size \
56-
STRINGS_armv7_linux_androideabi=arm-linux-androideabi-strings \
57-
STRIP_armv7_linux_androideabi=arm-linux-androideabi-strip \
51+
AR_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-ar" \
52+
AS_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-as" \
53+
CC_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-gcc" \
54+
CXX_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-g++" \
55+
LD_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-ld" \
56+
NM_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-nm" \
57+
OBJCOPY_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-objcopy" \
58+
OBJDUMP_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-objdump" \
59+
RANLIB_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-ranlib" \
60+
READELF_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-readelf" \
61+
SIZE_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-size" \
62+
STRINGS_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-strings" \
63+
STRIP_armv7_linux_androideabi="$CROSS_ANDROID_TARGET-strip" \
5864
BINDGEN_EXTRA_CLANG_ARGS_armv7_linux_androideabi="--sysroot=$CROSS_SYSROOT" \
5965
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include/" \
6066
RUST_TEST_THREADS=1 \

docker/Dockerfile.i686-linux-android

+21-15
Original file line numberDiff line numberDiff line change
@@ -41,28 +41,34 @@ COPY android $PYTHON_TMPDIR
4141
RUN /android-system.sh x86
4242

4343
ENV CROSS_SYSROOT=/android-ndk/sysroot
44+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
45+
ENV CROSS_ANDROID_ARCH=i686
46+
ENV CROSS_ANDROID_TARGET=i686-linux-android
4447
COPY android-symlink.sh /
45-
RUN /android-symlink.sh i386 i686-linux-android
48+
RUN /android-symlink.sh i386 $CROSS_ANDROID_TARGET
4649

4750
COPY android-runner /
4851

52+
COPY android.cmake /opt/android.cmake
53+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
54+
4955
# Libz is distributed in the android ndk, but for some unknown reason it is not
5056
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
51-
ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \
57+
ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER="$CROSS_ANDROID_TARGET-gcc" \
5258
CARGO_TARGET_I686_LINUX_ANDROID_RUNNER="/android-runner i686" \
53-
AR_i686_linux_android=i686-linux-android-ar \
54-
AS_i686_linux_android=i686-linux-android-as \
55-
CC_i686_linux_android=i686-linux-android-gcc \
56-
CXX_i686_linux_android=i686-linux-android-g++ \
57-
LD_i686_linux_android=i686-linux-android-ld \
58-
NM_i686_linux_android=i686-linux-android-nm \
59-
OBJCOPY_i686_linux_android=i686-linux-android-objcopy \
60-
OBJDUMP_i686_linux_android=i686-linux-android-objdump \
61-
RANLIB_i686_linux_android=i686-linux-android-ranlib \
62-
READELF_i686_linux_android=i686-linux-android-readelf \
63-
SIZE_i686_linux_android=i686-linux-android-size \
64-
STRINGS_i686_linux_android=i686-linux-android-strings \
65-
STRIP_i686_linux_android=i686-linux-android-strip \
59+
AR_i686_linux_android="$CROSS_ANDROID_TARGET-ar" \
60+
AS_i686_linux_android="$CROSS_ANDROID_TARGET-as" \
61+
CC_i686_linux_android="$CROSS_ANDROID_TARGET-gcc" \
62+
CXX_i686_linux_android="$CROSS_ANDROID_TARGET-g++" \
63+
LD_i686_linux_android="$CROSS_ANDROID_TARGET-ld" \
64+
NM_i686_linux_android="$CROSS_ANDROID_TARGET-nm" \
65+
OBJCOPY_i686_linux_android="$CROSS_ANDROID_TARGET-objcopy" \
66+
OBJDUMP_i686_linux_android="$CROSS_ANDROID_TARGET-objdump" \
67+
RANLIB_i686_linux_android="$CROSS_ANDROID_TARGET-ranlib" \
68+
READELF_i686_linux_android="$CROSS_ANDROID_TARGET-readelf" \
69+
SIZE_i686_linux_android="$CROSS_ANDROID_TARGET-size" \
70+
STRINGS_i686_linux_android="$CROSS_ANDROID_TARGET-strings" \
71+
STRIP_i686_linux_android="$CROSS_ANDROID_TARGET-strip" \
6672
BINDGEN_EXTRA_CLANG_ARGS_i686_linux_android="--sysroot=$CROSS_SYSROOT" \
6773
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include/" \
6874
LIBZ_SYS_STATIC=1 \

docker/Dockerfile.thumbv7neon-linux-androideabi

+21-15
Original file line numberDiff line numberDiff line change
@@ -33,31 +33,37 @@ COPY android $PYTHON_TMPDIR
3333
RUN /android-system.sh arm
3434

3535
ENV CROSS_SYSROOT=/android-ndk/sysroot
36+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
37+
ENV CROSS_ANDROID_ARCH=armv7-a
38+
ENV CROSS_ANDROID_TARGET=arm-linux-androideabi
3639
COPY android-symlink.sh /
37-
RUN /android-symlink.sh arm arm-linux-androideabi
40+
RUN /android-symlink.sh arm $CROSS_ANDROID_TARGET
3841

3942
COPY android-runner /
4043

44+
COPY android.cmake /opt/android.cmake
45+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
46+
4147
# Libz is distributed in the android ndk, but for some unknown reason it is not
4248
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
4349
# likewise, the toolchains expect the prefix `thumbv7neon-linux-androideabi`,
4450
# which we don't have, so just export every possible variable, such as AR.
4551
# Also export all target binutils just in case required.
46-
ENV CARGO_TARGET_THUMBV7NEON_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
52+
ENV CARGO_TARGET_THUMBV7NEON_LINUX_ANDROIDEABI_LINKER="$CROSS_ANDROID_TARGET-gcc" \
4753
CARGO_TARGET_THUMBV7NEON_LINUX_ANDROIDEABI_RUNNER="/android-runner arm" \
48-
AR_thumbv7neon_linux_androideabi=arm-linux-androideabi-ar \
49-
AS_thumbv7neon_linux_androideabi=arm-linux-androideabi-as \
50-
CC_thumbv7neon_linux_androideabi=arm-linux-androideabi-gcc \
51-
CXX_thumbv7neon_linux_androideabi=arm-linux-androideabi-g++ \
52-
LD_thumbv7neon_linux_androideabi=arm-linux-androideabi-ld \
53-
NM_thumbv7neon_linux_androideabi=arm-linux-androideabi-nm \
54-
OBJCOPY_thumbv7neon_linux_androideabi=arm-linux-androideabi-objcopy \
55-
OBJDUMP_thumbv7neon_linux_androideabi=arm-linux-androideabi-objdump \
56-
RANLIB_thumbv7neon_linux_androideabi=arm-linux-androideabi-ranlib \
57-
READELF_thumbv7neon_linux_androideabi=arm-linux-androideabi-readelf \
58-
SIZE_thumbv7neon_linux_androideabi=arm-linux-androideabi-size \
59-
STRINGS_thumbv7neon_linux_androideabi=arm-linux-androideabi-strings \
60-
STRIP_thumbv7neon_linux_androideabi=arm-linux-androideabi-strip \
54+
AR_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-ar" \
55+
AS_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-as" \
56+
CC_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-gcc" \
57+
CXX_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-g++" \
58+
LD_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-ld" \
59+
NM_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-nm" \
60+
OBJCOPY_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-objcopy" \
61+
OBJDUMP_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-objdump" \
62+
RANLIB_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-ranlib" \
63+
READELF_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-readelf" \
64+
SIZE_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-size" \
65+
STRINGS_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-strings" \
66+
STRIP_thumbv7neon_linux_androideabi="$CROSS_ANDROID_TARGET-strip" \
6167
BINDGEN_EXTRA_CLANG_ARGS_thumbv7neon_linux_androideabi="--sysroot=$CROSS_SYSROOT" \
6268
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include/" \
6369
RUST_TEST_THREADS=1 \

docker/Dockerfile.x86_64-linux-android

+21-15
Original file line numberDiff line numberDiff line change
@@ -34,28 +34,34 @@ COPY android $PYTHON_TMPDIR
3434
RUN /android-system.sh x86_64
3535

3636
ENV CROSS_SYSROOT=/android-ndk/sysroot
37+
ENV CROSS_ANDROID_SDK=$ANDROID_SDK
38+
ENV CROSS_ANDROID_ARCH=x86_64
39+
ENV CROSS_ANDROID_TARGET=x86_64-linux-android
3740
COPY android-symlink.sh /
38-
RUN /android-symlink.sh x86_64 x86_64-linux-android
41+
RUN /android-symlink.sh x86_64 $CROSS_ANDROID_TARGET
3942

4043
COPY android-runner /
4144

45+
COPY android.cmake /opt/android.cmake
46+
ENV CMAKE_TOOLCHAIN_FILE=/opt/android.cmake
47+
4248
# Libz is distributed in the android ndk, but for some unknown reason it is not
4349
# found in the build process of some crates, so we explicit set the DEP_Z_ROOT
44-
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \
50+
ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="$CROSS_ANDROID_TARGET-gcc" \
4551
CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER="/android-runner x86_64" \
46-
AR_x86_64_linux_android=x86_64-linux-android-ar \
47-
AS_x86_64_linux_android=x86_64-linux-android-as \
48-
CC_x86_64_linux_android=x86_64-linux-android-gcc \
49-
CXX_x86_64_linux_android=x86_64-linux-android-g++ \
50-
LD_x86_64_linux_android=x86_64-linux-android-ld \
51-
NM_x86_64_linux_android=x86_64-linux-android-nm \
52-
OBJCOPY_x86_64_linux_android=x86_64-linux-android-objcopy \
53-
OBJDUMP_x86_64_linux_android=x86_64-linux-android-objdump \
54-
RANLIB_x86_64_linux_android=x86_64-linux-android-ranlib \
55-
READELF_x86_64_linux_android=x86_64-linux-android-readelf \
56-
SIZE_x86_64_linux_android=x86_64-linux-android-size \
57-
STRINGS_x86_64_linux_android=x86_64-linux-android-strings \
58-
STRIP_x86_64_linux_android=x86_64-linux-android-strip \
52+
AR_x86_64_linux_android="$CROSS_ANDROID_TARGET-ar" \
53+
AS_x86_64_linux_android="$CROSS_ANDROID_TARGET-as" \
54+
CC_x86_64_linux_android="$CROSS_ANDROID_TARGET-gcc" \
55+
CXX_x86_64_linux_android="$CROSS_ANDROID_TARGET-g++" \
56+
LD_x86_64_linux_android="$CROSS_ANDROID_TARGET-ld" \
57+
NM_x86_64_linux_android="$CROSS_ANDROID_TARGET-nm" \
58+
OBJCOPY_x86_64_linux_android="$CROSS_ANDROID_TARGET-objcopy" \
59+
OBJDUMP_x86_64_linux_android="$CROSS_ANDROID_TARGET-objdump" \
60+
RANLIB_x86_64_linux_android="$CROSS_ANDROID_TARGET-ranlib" \
61+
READELF_x86_64_linux_android="$CROSS_ANDROID_TARGET-readelf" \
62+
SIZE_x86_64_linux_android="$CROSS_ANDROID_TARGET-size" \
63+
STRINGS_x86_64_linux_android="$CROSS_ANDROID_TARGET-strings" \
64+
STRIP_x86_64_linux_android="$CROSS_ANDROID_TARGET-strip" \
5965
BINDGEN_EXTRA_CLANG_ARGS_x86_64_linux_android="--sysroot=$CROSS_SYSROOT" \
6066
DEP_Z_INCLUDE="$CROSS_SYSROOT/usr/include/" \
6167
RUST_TEST_THREADS=1 \

docker/android.cmake

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# toolchain file for android targets, see #1110
2+
3+
set(CMAKE_SYSTEM_NAME Android)
4+
set(CMAKE_SYSTEM_PROCESSOR "$ENV{CROSS_ANDROID_ARCH}")
5+
set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /android-ndk)
6+
set(CMAKE_ANDROID_API "$ENV{CROSS_ANDROID_SDK}")
7+
8+
# not all of these are standard, however, they're common enough
9+
# that it's good practice to define them.
10+
set(prefix "$ENV{CROSS_ANDROID_TARGET}")
11+
set(CMAKE_C_COMPILER "/android-ndk/bin/${prefix}-gcc")
12+
set(CMAKE_ASM_COMPILER "/android-ndk/bin/${prefix}-gcc")
13+
set(CMAKE_CXX_COMPILER "/android-ndk/bin/${prefix}-g++")
14+
set(CMAKE_AR "/android-ndk/bin/${prefix}-ar")
15+
set(CMAKE_LINKER "/android-ndk/bin/${prefix}-ld")
16+
set(CMAKE_NM "/android-ndk/bin/${prefix}-nm")
17+
set(CMAKE_OBJCOPY "/android-ndk/bin/${prefix}-objcopy")
18+
set(CMAKE_OBJDUMP "/android-ndk/bin/${prefix}-objdump")
19+
set(CMAKE_RANLIB "/android-ndk/bin/${prefix}-ranlib")
20+
set(CMAKE_STRIP "/android-ndk/bin/${prefix}-strip")
21+
22+
# required because otherwise it tries to detect compiler features
23+
# from `/android-ndk/bin/clang`, which fails. these macros are
24+
# technically deprecated, but required for proper function
25+
include(CMakeForceCompiler)
26+
set(CMAKE_WARN_DEPRECATED FALSE)
27+
CMAKE_FORCE_C_COMPILER("${CMAKE_C_COMPILER}" GNU)
28+
CMAKE_FORCE_CXX_COMPILER("${CMAKE_CXX_COMPILER}" GNU)

0 commit comments

Comments
 (0)