Skip to content

Commit a9133f7

Browse files
committed
WIP: Update android toolchain to NDK r21d
Use (legacy) ANDROID_HOME and ANDROID_NDK_HOME environment variables, as provided by Azure Pipelines.
1 parent b1e2899 commit a9133f7

File tree

1 file changed

+40
-24
lines changed

1 file changed

+40
-24
lines changed

android-toolchain-ndk-r19c.cmake renamed to android-toolchain-ndk-r21d.cmake

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ endif()
3636
set(supported_ndks
3737
ndk-r19c
3838
ndk-r20 # compiler bugs pending, to be fixed in ndk-r21
39+
ndk-r21d
3940
)
40-
set(ANDROID_TOOLCHAIN_VERSION "ndk-r19c" CACHE STRING
41+
set(ANDROID_TOOLCHAIN_VERSION "ndk-r21d" CACHE STRING
4142
"Version of the Android NDK toolchain to be used"
4243
)
4344
if(NOT ANDROID_TOOLCHAIN_VERSION IN_LIST supported_ndks)
@@ -97,12 +98,24 @@ if(CMAKE_BUILD_TYPE MATCHES Rel)
9798
endif()
9899
endif()
99100

101+
# Cf. https://developer.android.com/studio/command-line/variables
102+
if(NOT DEFINED ANDROID_SDK_ROOT AND NOT "$ENV{ANDROID_HOME}" STREQUAL "")
103+
message(STATUS "Using ANDROID_SDK_ROOT=ANDROID_HOME=$ENV{ANDROID_HOME}")
104+
set(ANDROID_SDK_ROOT "$ENV{ANDROID_HOME}")
105+
endif()
100106
if(NOT DEFINED ANDROID_SDK_ROOT AND NOT "$ENV{ANDROID_SDK_ROOT}" STREQUAL "")
107+
message(STATUS "Using ANDROID_SDK_ROOT=$ENV{ANDROID_SDK_ROOT}")
101108
set(ANDROID_SDK_ROOT "$ENV{ANDROID_SDK_ROOT}")
102109
endif()
110+
if(NOT DEFINED ANDROID_NDK_ROOT AND NOT "$ENV{ANDROID_NDK_HOME}" STREQUAL "")
111+
message(STATUS "Using ANDROID_NDK_ROOT=ANDROID_NDK_HOME=$ENV{ANDROID_NDK_HOME}")
112+
set(ANDROID_NDK_ROOT "$ENV{ANDROID_NDK_HOME}")
113+
endif()
103114
if(NOT DEFINED ANDROID_NDK_ROOT AND NOT "$ENV{ANDROID_NDK_ROOT}" STREQUAL "")
115+
message(STATUS "Using ANDROID_NDK_ROOT=$ENV{ANDROID_NDK_ROOT}")
104116
set(ANDROID_NDK_ROOT "$ENV{ANDROID_NDK_ROOT}")
105117
endif()
118+
106119
if(NOT "$ENV{ANDROID_PLATFORM}" STREQUAL "")
107120
foreach(abi ${supported_abis})
108121
set(system_platform_${abi} "$ENV{ANDROID_PLATFORM}")
@@ -112,39 +125,40 @@ elseif(DEFINED ANDROID_PLATFORM)
112125
set(system_platform_${abi} "${ANDROID_PLATFORM}")
113126
endforeach()
114127
endif()
128+
115129
if(NOT DEFINED ANDROID_COMPILE_SDK AND NOT "$ENV{ANDROID_COMPILE_SDK}" STREQUAL "")
116130
set(ANDROID_COMPILE_SDK "$ENV{ANDROID_COMPILE_SDK}")
117131
else()
118-
set(ANDROID_COMPILE_SDK android-28)
132+
set(ANDROID_COMPILE_SDK android-29)
119133
endif()
120134

121-
if(ANDROID_SDK_ROOT AND ANDROID_NDK_ROOT)
122-
set(sdk_host "") # external SDK and NDK
123-
elseif(APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
124-
set(sdk_host "darwin")
125-
elseif(UNIX AND NOT APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
135+
if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
136+
message(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR must be x86_64")
137+
elseif(APPLE)
138+
set(sdk_host "mac")
139+
elseif(UNIX)
126140
set(sdk_host "linux")
127-
elseif(NOT ANDROID_SDK_ROOT)
128-
message(FATAL_ERROR "ANDROID_SDK_ROOT must be set to an external SDK")
129-
elseif(NOT ANDROID_NDK_ROOT)
130-
message(FATAL_ERROR "ANDROID_NDK_ROOT must be set to an external NDK")
141+
else()
142+
set(sdk_host "windows")
131143
endif()
132144

133145
set(android_toolchain_dependencies )
134146

135147

136148
if(NOT ANDROID_SDK_ROOT)
137-
# Download SDK tools, platform, platform tools, and build tools.
138-
set(sdk_tools_version "4333796")
139-
set(sdk_tools_darwin_${sdk_tools_version}_hash SHA256=ecb29358bc0f13d7c2fa0f9290135a5b608e38434aad9bf7067d0252c160853e)
140-
set(sdk_tools_linux_${sdk_tools_version}_hash SHA256=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9)
141-
set(build_tools_version "28.0.2")
149+
# Download command line tools, platform tools, platform, and build tools.
150+
set(sdk_tools_version "6609375")
151+
set(sdk_tools_mac_${sdk_tools_version}_hash SHA256=2c3822db1c916655223e5ee8ce0fbf6b73d0b99012045c9dc8eaa6a5736c0c55)
152+
set(sdk_tools_linux_${sdk_tools_version}_hash SHA256=89f308315e041c93a37a79e0627c47f21d5c5edbe5e80ea8dc0aac8a649e0e92)
153+
set(build_tools_version "29.0.2")
142154
string(CONCAT sdk_setup_sh [[
143155
# Generated by ]] "${CMAKE_CURRENT_LIST_FILE}\n" [[
144-
echo y | ./tools/bin/sdkmanager --install "platforms;]] "${ANDROID_COMPILE_SDK}" [["
145-
echo y | ./tools/bin/sdkmanager --install "platform-tools"
146-
echo y | ./tools/bin/sdkmanager --install "build-tools;]] "${build_tools_version}" [["
147-
yes | ./tools/bin/sdkmanager --licenses
156+
set -x
157+
echo y | ./cmdline-tools/tools/bin/sdkmanager --update
158+
echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platforms;]] "${ANDROID_COMPILE_SDK}" [["
159+
echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platform-tools"
160+
echo y | ./cmdline-tools/tools/bin/sdkmanager --install "build-tools;]] "${build_tools_version}" [["
161+
yes | ./cmdline-tools/tools/bin/sdkmanager --licenses
148162
]]
149163
)
150164
set(ANDROID_SDK_INSTALL_ROOT "${PROJECT_BINARY_DIR}/source" CACHE STRING
@@ -158,14 +172,14 @@ yes | ./tools/bin/sdkmanager --licenses
158172
SOURCE_WRITE
159173
sdk_setup.sh sdk_setup_sh
160174
SOURCE
161-
DOWNLOAD_NAME android-sdk-tools-${sdk_host}-${sdk_tools_version}.zip
162-
URL https://dl.google.com/android/repository/sdk-tools-${sdk_host}-${sdk_tools_version}.zip
175+
DOWNLOAD_NAME android-commandlinetools-${sdk_host}-${sdk_tools_version}_latest.zip
176+
URL https://dl.google.com/android/repository/commandlinetools-${sdk_host}-${sdk_tools_version}_latest.zip
163177
URL_HASH ${sdk_tools_${sdk_host}_${sdk_tools_version}_hash}
164178
DOWNLOAD_NO_EXTRACT 1 # We extract manually from within the source directory.
165179
PATCH_COMMAND
166-
"${CMAKE_COMMAND}" -E make_directory "${ANDROID_SDK_ROOT}"
180+
"${CMAKE_COMMAND}" -E make_directory "${ANDROID_SDK_ROOT}/cmdline-tools"
167181
COMMAND
168-
"${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}"
182+
"${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}/cmdline-tools"
169183
"${CMAKE_COMMAND}" -E tar xzf "<DOWNLOADED_FILE>"
170184
COMMAND
171185
"${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}"
@@ -182,6 +196,8 @@ if(NOT ANDROID_NDK_ROOT)
182196
set(ndk_r19c_linux_hash SHA1=fd94d0be6017c6acbd193eb95e09cf4b6f61b834)
183197
set(ndk_r20_darwin_hash SHA1=96d5f1c50452596912d1982439c514194b5751e6)
184198
set(ndk_r20_linux_hash SHA1=8665fc84a1b1f0d6ab3b5fdd1e30200cc7b9adff)
199+
set(ndk_r21d_darwin_hash SHA1=ef06c9f9d7efd6f243eb3c05ac440562ae29ae12)
200+
set(ndk_r21d_linux_hash SHA1=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d)
185201
set(ANDROID_NDK_INSTALL_ROOT "${PROJECT_BINARY_DIR}/source" CACHE STRING
186202
"The directory where to install the downloaded NDK (i.e. the basedir of ANDROID_NDK_ROOT)"
187203
)

0 commit comments

Comments
 (0)