Skip to content

Commit

Permalink
Newer Android NDK for better C++17 support (#1166)
Browse files Browse the repository at this point in the history
  • Loading branch information
lealgo committed Apr 7, 2020
1 parent 0cd52f7 commit 69c12a1
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 22 deletions.
8 changes: 4 additions & 4 deletions appveyor.yml
Expand Up @@ -44,13 +44,12 @@ install:
- cmd: set PATH=C:\Python36;C:\Python36\scripts;%PATH%
- cmd: pip3 install --upgrade meson
- cmd: call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
- cmd: IF %NAME%==android C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r17\build\tools\make_standalone_toolchain.py --arch arm64 --api 21 --stl libc++ --install-dir \android-standalone-64
- cmd: IF %NAME%==android set PATH=C:\android-standalone-64\bin;%PATH%
- cmd: IF %NAME%==android IF NOT EXIST C:\ndk\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64 appveyor DownloadFile https://dl.google.com/android/repository/android-ndk-r19c-windows-x86_64.zip
- cmd: IF %NAME%==android IF NOT EXIST C:\ndk\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64 7z x android-ndk-r19c-windows-x86_64.zip -oC:\ndk
- cmd: IF %NAME%==android set PATH=C:\ndk\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64\bin;%PATH%
- cmd: IF %NAME%==android sed "s/clang+*/&.cmd/" cross-files/aarch64-linux-android >crossfile-aarch64
- cmd: IF %NAME%==android IF NOT EXIST C:\cache\OpenBLAS\android-aarch64 appveyor DownloadFile https://github.com/borg323/OpenBLAS/releases/download/android-0.3.8-2/openblas-android-aarch64.zip
- cmd: IF %NAME%==android IF NOT EXIST C:\cache\OpenBLAS\android-aarch64 7z x openblas-android-aarch64.zip -oC:\cache\OpenBLAS
- cmd: IF %NAME%==android C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r17\build\tools\make_standalone_toolchain.py --arch arm --api 21 --stl libc++ --install-dir \android-standalone-32
- cmd: IF %NAME%==android set PATH=C:\android-standalone-32\bin;%PATH%
- cmd: IF %NAME%==android sed "s/clang+*/&.cmd/" cross-files/armv7a-linux-android >crossfile-armv7a
- cmd: IF %NAME%==android IF NOT EXIST C:\cache\OpenBLAS\android-armv7a appveyor DownloadFile https://github.com/borg323/OpenBLAS/releases/download/android-0.3.8-2/openblas-android-armv7a.zip
- cmd: IF %NAME%==android IF NOT EXIST C:\cache\OpenBLAS\android-armv7a 7z x openblas-android-armv7a.zip -oC:\cache\OpenBLAS
Expand All @@ -68,6 +67,7 @@ cache:
- C:\cache -> appveyor.yml
- 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0'
- C:\projects\lc0\subprojects\packagecache
- C:\ndk\android-ndk-r19c\toolchains\llvm\prebuilt\windows-x86_64
before_build:
- cmd: git submodule update --init --recursive
- cmd: SET BUILD_BLAS=%BLAS%
Expand Down
12 changes: 4 additions & 8 deletions cross-files/aarch64-linux-android
@@ -1,13 +1,9 @@

# Tested with Android NDK r18, default toolchain
# Tested with Android NDK r19c, default toolchain
# Targeting API level 21

# Make the standalone toolchain
# cd android-ndk-r18b/build/tools/
# ./make_standalone_toolchain.py --arch arm64 --api 21 --stl libc++ --install-dir android-standalone-64

# Set the toolchain path on your environment
# export PATH="$HOME/.local/share/android-sdk/android-toolchains/android-standalone-64/bin:$PATH"
# export PATH="$HOME/.local/share/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"

[host_machine]
system = 'android'
Expand All @@ -19,8 +15,8 @@ endian = 'little'
cpp_link_args = ['-llog', '-static-libstdc++']

[binaries]
c = 'aarch64-linux-android-clang'
cpp = 'aarch64-linux-android-clang++'
c = 'aarch64-linux-android21-clang'
cpp = 'aarch64-linux-android21-clang++'
ar = 'aarch64-linux-android-ar'
strip = 'aarch64-linux-android-strip'
ld = 'aarch64-linux-android-ld'
Expand Down
17 changes: 7 additions & 10 deletions cross-files/armv7a-linux-android
@@ -1,18 +1,15 @@

# Tested with Android NDK r18, standalone toolchain
# Tested with Android NDK r19c, default toolchain
# Targeting API level 21
#

# When targeting API levels < 24 the build fails unless _FILE_OFFSET_BITS is unset.
# Meson passes _FILE_OFFSET_BITS=64 but recent NDK toolchains have issues building
# for 32-bit ABIs when such macro it set. Relevant links:
# https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
# https://github.com/mesonbuild/meson/pull/2996#issuecomment-384045808
#
# First create the standalone toolchain:
# ./make_standalone_toolchain.py --arch arm --api 21 --stl libc++ --install-dir android-standalone-32
#
# Then set the toolchain path on your environment:
# export PATH="$HOME/.local/share/android-sdk/android-toolchains/android-standalone-32/bin:$PATH"

# Set the toolchain path on your environment
# export PATH="$HOME/.local/share/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"

[host_machine]
system = 'android'
Expand All @@ -25,8 +22,8 @@ cpp_args = ['-U_FILE_OFFSET_BITS']
cpp_link_args = ['-llog', '-static-libstdc++']

[binaries]
c = 'arm-linux-androideabi-clang'
cpp = 'arm-linux-androideabi-clang++'
c = 'armv7a-linux-androideabi21-clang'
cpp = 'armv7a-linux-androideabi21-clang++'
ar = 'arm-linux-androideabi-ar'
strip = 'arm-linux-androideabi-strip'
ld = 'arm-linux-androideabi-ld'
Expand Down

0 comments on commit 69c12a1

Please sign in to comment.