diff --git a/android-arm64/Dockerfile b/android-arm64/Dockerfile new file mode 100644 index 0000000..ec71b3c --- /dev/null +++ b/android-arm64/Dockerfile @@ -0,0 +1,51 @@ +FROM dockcross/base:latest +MAINTAINER Matt McCormick "matt.mccormick@kitware.com" + +# The cross-compiling emulator +RUN apt-get update && apt-get install -y \ + qemu-user \ + qemu-user-static \ + unzip + +ENV CROSS_TRIPLE=aarch64-linux-androideabi +ENV CROSS_ROOT=/usr/${CROSS_TRIPLE} +ENV AS=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-as \ + AR=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ar \ + CC=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-gcc \ + CPP=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-cpp \ + CXX=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-g++ \ + LD=${CROSS_ROOT}/bin/${CROSS_TRIPLE}-ld + +ENV ANDROID_NDK_REVISION 13b +ENV ANDROID_NDK_API 16 +RUN mkdir -p /build && \ + cd /build && \ + curl -O https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \ + unzip ./android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip && \ + cd android-ndk-r${ANDROID_NDK_REVISION} && \ + ./build/tools/make_standalone_toolchain.py \ + --arch arm64 \ + --api $(ANDROID_NDK_API) \ + --stl=libc++ \ + --install-dir=${CROSS_ROOT} && \ + cd / && \ + rm -rf /build && \ + find ${CROSS_ROOT} -exec chmod a+r '{}' \; && \ + find ${CROSS_ROOT} -executable -exec chmod a+x '{}' \; + + +ENV DEFAULT_DOCKCROSS_IMAGE dockcross/android-arm64 + +COPY Toolchain.cmake ${CROSS_ROOT}/ +ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake + +# Build-time metadata as defined at http://label-schema.org +ARG BUILD_DATE +ARG IMAGE +ARG VCS_REF +ARG VCS_URL +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.name=$IMAGE \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url=$VCS_URL \ + org.label-schema.schema-version="1.0" diff --git a/android-arm64/Toolchain.cmake b/android-arm64/Toolchain.cmake new file mode 100644 index 0000000..1399fee --- /dev/null +++ b/android-arm64/Toolchain.cmake @@ -0,0 +1,18 @@ +set(CMAKE_SYSTEM_NAME Android) +set(CMAKE_SYSTEM_VERSION 1) + +set(cross_triple arm-linux-androideabi) +set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /usr/${cross_triple}/) +set(CMAKE_ANDROID_ARM_MODE 1) +set(CMAKE_ANDROID_ARM_NEON 1) + +set(CMAKE_C_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang) +set(CMAKE_CXX_COMPILER /usr/${cross_triple}/bin/${cross_triple}-clang++) + +set(CMAKE_FIND_ROOT_PATH /usr/${cross_triple}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_SYSROOT /usr/${cross_triple}/sysroot) + +set(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-arm)