Skip to content

Commit 8ac0bec

Browse files
authored
Try #1112: --target *android* --target *none*
2 parents 35a1e17 + b0c868a commit 8ac0bec

14 files changed

+268
-114
lines changed

ci/test.sh

+17-3
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ main() {
7171
popd
7272

7373
rm -rf "${td}"
74-
75-
return
7674
fi
7775

7876
# `cross build` test for the other targets
@@ -166,7 +164,7 @@ main() {
166164
fi
167165

168166
# Test C++ support
169-
if (( ${CPP:-0} )); then
167+
if (( ${STD:-0} )) && (( ${CPP:-0} )); then
170168
td="$(mkcargotemp -d)"
171169

172170
git clone --depth 1 https://github.com/cross-rs/rust-cpp-hello-word "${td}"
@@ -197,6 +195,22 @@ main() {
197195

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

202216
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.thumbv6m-none-eabi

+13-5
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13-
COPY qemu.sh /
1413
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
1514
gcc-arm-none-eabi \
16-
libnewlib-arm-none-eabi && \
17-
/qemu.sh arm
15+
libnewlib-arm-none-eabi \
16+
libstdc++-arm-none-eabi-newlib
17+
18+
COPY qemu.sh /
19+
RUN /qemu.sh arm
20+
21+
COPY newlib.cmake /opt/newlib.cmake
22+
ENV CMAKE_TOOLCHAIN_FILE=/opt/newlib.cmake
23+
ENV CROSS_NEWLIB_OBJECT_FLAGS="-ffunction-sections -fdata-sections -mthumb -march=armv6s-m"
1824

19-
ENV QEMU_CPU=cortex-m3 \
25+
ENV QEMU_CPU=cortex-m1 \
2026
AR_thumbv6m_none_eabi=arm-none-eabi-ar \
2127
CC_thumbv6m_none_eabi=arm-none-eabi-gcc \
2228
CXX_thumbv6m_none_eabi=arm-none-eabi-g++ \
23-
CARGO_TARGET_THUMBV6M_NONE_EABI_RUNNER=qemu-arm
29+
CARGO_TARGET_THUMBV6M_NONE_EABI_RUNNER=qemu-arm \
30+
CROSS_NEWLIB_ARCH=armv6-m \
31+
CROSS_NEWLIB_TARGET=arm-none-eabi

docker/Dockerfile.thumbv7em-none-eabi

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13-
COPY qemu.sh /
1413
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
1514
gcc-arm-none-eabi \
16-
libnewlib-arm-none-eabi && \
17-
/qemu.sh arm
15+
libnewlib-arm-none-eabi \
16+
libstdc++-arm-none-eabi-newlib
17+
18+
COPY qemu.sh /
19+
RUN /qemu.sh arm
20+
21+
COPY newlib.cmake /opt/newlib.cmake
22+
ENV CMAKE_TOOLCHAIN_FILE=/opt/newlib.cmake
23+
ENV CROSS_NEWLIB_OBJECT_FLAGS="-ffunction-sections -fdata-sections -mthumb -march=armv7e-m"
1824

1925
ENV QEMU_CPU=cortex-m4 \
2026
AR_thumbv7em_none_eabi=arm-none-eabi-ar \
2127
CC_thumbv7em_none_eabi=arm-none-eabi-gcc \
2228
CXX_thumbv7em_none_eabi=arm-none-eabi-g++ \
23-
CARGO_TARGET_THUMBV7EM_NONE_EABI_RUNNER=qemu-arm
29+
CARGO_TARGET_THUMBV7EM_NONE_EABI_RUNNER=qemu-arm \
30+
CROSS_NEWLIB_ARCH=armv7e-m \
31+
CROSS_NEWLIB_TARGET=arm-none-eabi

docker/Dockerfile.thumbv7em-none-eabihf

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13-
COPY qemu.sh /
1413
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
1514
gcc-arm-none-eabi \
16-
libnewlib-arm-none-eabi && \
17-
/qemu.sh arm
15+
libnewlib-arm-none-eabi \
16+
libstdc++-arm-none-eabi-newlib
17+
18+
COPY qemu.sh /
19+
RUN /qemu.sh arm
20+
21+
COPY newlib.cmake /opt/newlib.cmake
22+
ENV CMAKE_TOOLCHAIN_FILE=/opt/newlib.cmake
23+
ENV CROSS_NEWLIB_OBJECT_FLAGS="-ffunction-sections -fdata-sections -mthumb -mfloat-abi=hard -march=armv7e-m -mfpu=fpv4-sp-d16"
1824

1925
ENV QEMU_CPU=cortex-m4 \
2026
AR_thumbv7em_none_eabihf=arm-none-eabi-ar \
2127
CC_thumbv7em_none_eabihf=arm-none-eabi-gcc \
2228
CXX_thumbv7em_none_eabihf=arm-none-eabi-g++ \
23-
CARGO_TARGET_THUMBV7EM_NONE_EABIHF_RUNNER=qemu-arm
29+
CARGO_TARGET_THUMBV7EM_NONE_EABIHF_RUNNER=qemu-arm \
30+
CROSS_NEWLIB_ARCH=armv7e-m \
31+
CROSS_NEWLIB_TARGET=arm-none-eabi

docker/Dockerfile.thumbv7m-none-eabi

+12-4
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13-
COPY qemu.sh /
1413
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
1514
gcc-arm-none-eabi \
16-
libnewlib-arm-none-eabi && \
17-
/qemu.sh arm
15+
libnewlib-arm-none-eabi \
16+
libstdc++-arm-none-eabi-newlib
17+
18+
COPY qemu.sh /
19+
RUN /qemu.sh arm
20+
21+
COPY newlib.cmake /opt/newlib.cmake
22+
ENV CMAKE_TOOLCHAIN_FILE=/opt/newlib.cmake
23+
ENV CROSS_NEWLIB_OBJECT_FLAGS="-ffunction-sections -fdata-sections -mthumb -march=armv7-m"
1824

1925
ENV QEMU_CPU=cortex-m3 \
2026
AR_thumbv7m_none_eabi=arm-none-eabi-ar \
2127
CC_thumbv7m_none_eabi=arm-none-eabi-gcc \
2228
CXX_thumbv7m_none_eabi=arm-none-eabi-g++ \
23-
CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER=qemu-arm
29+
CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER=qemu-arm \
30+
CROSS_NEWLIB_ARCH=armv7-m \
31+
CROSS_NEWLIB_TARGET=arm-none-eabi

0 commit comments

Comments
 (0)