@@ -36,8 +36,9 @@ endif()
36
36
set (supported_ndks
37
37
ndk-r19c
38
38
ndk-r20 # compiler bugs pending, to be fixed in ndk-r21
39
+ ndk-r21d
39
40
)
40
- set (ANDROID_TOOLCHAIN_VERSION "ndk-r19c " CACHE STRING
41
+ set (ANDROID_TOOLCHAIN_VERSION "ndk-r21d " CACHE STRING
41
42
"Version of the Android NDK toolchain to be used"
42
43
)
43
44
if (NOT ANDROID_TOOLCHAIN_VERSION IN_LIST supported_ndks)
@@ -97,12 +98,24 @@ if(CMAKE_BUILD_TYPE MATCHES Rel)
97
98
endif ()
98
99
endif ()
99
100
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 ()
100
106
if (NOT DEFINED ANDROID_SDK_ROOT AND NOT "$ENV{ANDROID_SDK_ROOT} " STREQUAL "" )
107
+ message (STATUS "Using ANDROID_SDK_ROOT=$ENV{ANDROID_SDK_ROOT} " )
101
108
set (ANDROID_SDK_ROOT "$ENV{ANDROID_SDK_ROOT} " )
102
109
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 ()
103
114
if (NOT DEFINED ANDROID_NDK_ROOT AND NOT "$ENV{ANDROID_NDK_ROOT} " STREQUAL "" )
115
+ message (STATUS "Using ANDROID_NDK_ROOT=$ENV{ANDROID_NDK_ROOT} " )
104
116
set (ANDROID_NDK_ROOT "$ENV{ANDROID_NDK_ROOT} " )
105
117
endif ()
118
+
106
119
if (NOT "$ENV{ANDROID_PLATFORM} " STREQUAL "" )
107
120
foreach (abi ${supported_abis} )
108
121
set (system_platform_${abi} "$ENV{ANDROID_PLATFORM} " )
@@ -112,39 +125,41 @@ elseif(DEFINED ANDROID_PLATFORM)
112
125
set (system_platform_${abi} "${ANDROID_PLATFORM} " )
113
126
endforeach ()
114
127
endif ()
128
+
115
129
if (NOT DEFINED ANDROID_COMPILE_SDK AND NOT "$ENV{ANDROID_COMPILE_SDK} " STREQUAL "" )
116
130
set (ANDROID_COMPILE_SDK "$ENV{ANDROID_COMPILE_SDK} " )
117
131
else ()
118
- set (ANDROID_COMPILE_SDK android-28 )
132
+ set (ANDROID_COMPILE_SDK android-29 )
119
133
endif ()
120
134
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 )
126
140
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" )
131
143
endif ()
144
+ string (REPLACE "mac" "darwin" ndk_host "${sdk_host} " )
132
145
133
146
set (android_toolchain_dependencies )
134
147
135
148
136
149
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" )
150
+ # Download command line tools, platform tools , platform, and build tools.
151
+ set (sdk_tools_version "6609375 " )
152
+ set (sdk_tools_mac_ ${sdk_tools_version} _hash SHA256=2c3822db1c916655223e5ee8ce0fbf6b73d0b99012045c9dc8eaa6a5736c0c55 )
153
+ set (sdk_tools_linux_${sdk_tools_version} _hash SHA256=89f308315e041c93a37a79e0627c47f21d5c5edbe5e80ea8dc0aac8a649e0e92 )
154
+ set (build_tools_version "29 .0.2" )
142
155
string (CONCAT sdk_setup_sh [[
143
156
# 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
157
+ set -x
158
+ echo y | ./cmdline-tools/tools/bin/sdkmanager --update
159
+ echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platforms;]] "${ANDROID_COMPILE_SDK} " [["
160
+ echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platform-tools"
161
+ echo y | ./cmdline-tools/tools/bin/sdkmanager --install "build-tools;]] "${build_tools_version} " [["
162
+ yes | ./cmdline-tools/tools/bin/sdkmanager --licenses
148
163
]]
149
164
)
150
165
set (ANDROID_SDK_INSTALL_ROOT "${PROJECT_BINARY_DIR} /source" CACHE STRING
@@ -158,14 +173,14 @@ yes | ./tools/bin/sdkmanager --licenses
158
173
SOURCE_WRITE
159
174
sdk_setup.sh sdk_setup_sh
160
175
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
176
+ DOWNLOAD_NAME android-commandlinetools- ${sdk_host} -${sdk_tools_version} _latest .zip
177
+ URL https://dl.google.com/android/repository/commandlinetools- ${sdk_host} -${sdk_tools_version} _latest .zip
163
178
URL_HASH ${sdk_tools_${sdk_host} _${sdk_tools_version} _hash}
164
179
DOWNLOAD_NO_EXTRACT 1 # We extract manually from within the source directory.
165
180
PATCH_COMMAND
166
- "${CMAKE_COMMAND} " -E make_directory "${ANDROID_SDK_ROOT} "
181
+ "${CMAKE_COMMAND} " -E make_directory "${ANDROID_SDK_ROOT} /cmdline-tools "
167
182
COMMAND
168
- "${CMAKE_COMMAND} " -E chdir "${ANDROID_SDK_ROOT} "
183
+ "${CMAKE_COMMAND} " -E chdir "${ANDROID_SDK_ROOT} /cmdline-tools "
169
184
"${CMAKE_COMMAND} " -E tar xzf "<DOWNLOADED_FILE>"
170
185
COMMAND
171
186
"${CMAKE_COMMAND} " -E chdir "${ANDROID_SDK_ROOT} "
@@ -182,6 +197,8 @@ if(NOT ANDROID_NDK_ROOT)
182
197
set (ndk_r19c_linux_hash SHA1=fd94d0be6017c6acbd193eb95e09cf4b6f61b834)
183
198
set (ndk_r20_darwin_hash SHA1=96d5f1c50452596912d1982439c514194b5751e6)
184
199
set (ndk_r20_linux_hash SHA1=8665fc84a1b1f0d6ab3b5fdd1e30200cc7b9adff)
200
+ set (ndk_r21d_darwin_hash SHA1=ef06c9f9d7efd6f243eb3c05ac440562ae29ae12)
201
+ set (ndk_r21d_linux_hash SHA1=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d)
185
202
set (ANDROID_NDK_INSTALL_ROOT "${PROJECT_BINARY_DIR} /source" CACHE STRING
186
203
"The directory where to install the downloaded NDK (i.e. the basedir of ANDROID_NDK_ROOT)"
187
204
)
@@ -191,8 +208,8 @@ if(NOT ANDROID_NDK_ROOT)
191
208
VERSION ${version}
192
209
193
210
SOURCE
194
- URL https://dl.google.com/android/repository/android-ndk-${version} -${sdk_host } -x86_64.zip
195
- URL_HASH ${ndk_${version} _${sdk_host } _hash}
211
+ URL https://dl.google.com/android/repository/android-ndk-${version} -${ndk_host } -x86_64.zip
212
+ URL_HASH ${ndk_${version} _${ndk_host } _hash}
196
213
DOWNLOAD_NO_EXTRACT 1 # We extract manually from within the source directory.
197
214
PATCH_COMMAND
198
215
"${CMAKE_COMMAND} " -E chdir "${ANDROID_NDK_INSTALL_ROOT} "
@@ -298,7 +315,7 @@ if(NOT ANDROID_NDK_ROOT)
298
315
SOURCE
299
316
android-libcxx-${ANDROID_NDK_VERSION}
300
317
301
- USING ANDROID_NDK_ROOT abi sdk_host system_platform_${abi}
318
+ USING ANDROID_NDK_ROOT abi ndk_host system_platform_${abi}
302
319
BUILD [[
303
320
CONFIGURE_COMMAND ""
304
321
BUILD_COMMAND
@@ -309,7 +326,7 @@ if(NOT ANDROID_NDK_ROOT)
309
326
"APP_PLATFORM=${system_platform_${abi}}"
310
327
"APP_MODULES=c++_shared c++_static"
311
328
"BIONIC_PATH=<SOURCE_DIR>/bionic"
312
- "NDK_UNIFIED_SYSROOT_PATH=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/sysroot"
329
+ "NDK_UNIFIED_SYSROOT_PATH=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/sysroot"
313
330
"NDK_PLATFORMS_ROOT=${ANDROID_NDK_ROOT}/platforms"
314
331
"NDK_TOOLCHAINS_ROOT=<SOURCE_DIR>/toolchains"
315
332
"NDK_PROJECT_PATH=null"
@@ -361,7 +378,7 @@ foreach(abi ${enabled_abis})
361
378
sb_install_dir(install_dir ${system_name} )
362
379
363
380
if (NOT DEFINED ${system_name} _ENV_PATH)
364
- set (${system_name} _ENV_PATH "${ANDROID_NDK_ROOT} /toolchains/llvm/prebuilt/${sdk_host } -x86_64/bin:${toolchain_dir} /bin:$ENV{PATH} " PARENT_SCOPE)
381
+ set (${system_name} _ENV_PATH "${ANDROID_NDK_ROOT} /toolchains/llvm/prebuilt/${ndk_host } -x86_64/bin:${toolchain_dir} /bin:$ENV{PATH} " PARENT_SCOPE)
365
382
endif ()
366
383
367
384
if (NOT DEFINED ${system_name} _INSTALL_PREFIX)
@@ -404,8 +421,8 @@ set(CMAKE_FIND_ROOT_PATH "]] "${${system_name}_FIND_ROOT_PATH}" [[")
404
421
list(APPEND CMAKE_FIND_ROOT_PATH "${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-]] ${system_arch_${abi} } [[")
405
422
set(CMAKE_SYSTEM_LIBRARY_PATH "/usr/lib/${SYSTEM_NAME}")
406
423
407
- set(SUPERBUILD_CC "]] "${ANDROID_NDK_ROOT} " [[/toolchains/llvm/prebuilt/]] "${sdk_host } " [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang")
408
- set(SUPERBUILD_CXX "]] "${ANDROID_NDK_ROOT} " [[/toolchains/llvm/prebuilt/]] "${sdk_host } " [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang++")
424
+ set(SUPERBUILD_CC "]] "${ANDROID_NDK_ROOT} " [[/toolchains/llvm/prebuilt/]] "${ndk_host } " [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang")
425
+ set(SUPERBUILD_CXX "]] "${ANDROID_NDK_ROOT} " [[/toolchains/llvm/prebuilt/]] "${ndk_host } " [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang++")
409
426
# ANDROID_LINKER_FLAGS defines flags for ABI specific linking requirements.
410
427
# Last not least, this includes the unwinding particularities of 32-bit ARM,
411
428
# https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#Unwinding
@@ -451,7 +468,7 @@ set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose output from Makefile b
451
468
USING
452
469
md5
453
470
install_dir
454
- sdk_host
471
+ ndk_host
455
472
system_name
456
473
${system_name} _INSTALL_PREFIX
457
474
ANDROID_NDK_ROOT
@@ -483,67 +500,67 @@ set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose output from Makefile b
483
500
$<$<STREQUAL:@system_name@,armv7a-linux-androideabi>:# Add tools with same prefix as compiler
484
501
COMMAND
485
502
"${CMAKE_COMMAND}" -E copy_if_different
486
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-ar"
503
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-ar"
487
504
"${INSTALL_DIR}/bin/${system_name}-ar"
488
505
COMMAND
489
506
"${CMAKE_COMMAND}" -E copy_if_different
490
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-as"
507
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-as"
491
508
"${INSTALL_DIR}/bin/${system_name}-as"
492
509
COMMAND
493
510
"${CMAKE_COMMAND}" -E copy_if_different
494
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-c++filt"
511
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-c++filt"
495
512
"${INSTALL_DIR}/bin/${system_name}-c++filt"
496
513
COMMAND
497
514
"${CMAKE_COMMAND}" -E copy_if_different
498
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-dwp"
515
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-dwp"
499
516
"${INSTALL_DIR}/bin/${system_name}-dwp"
500
517
COMMAND
501
518
"${CMAKE_COMMAND}" -E copy_if_different
502
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-elfedit"
519
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-elfedit"
503
520
"${INSTALL_DIR}/bin/${system_name}-gprof"
504
521
COMMAND
505
522
"${CMAKE_COMMAND}" -E copy_if_different
506
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-ld"
523
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-ld"
507
524
"${INSTALL_DIR}/bin/${system_name}-ld"
508
525
COMMAND
509
526
"${CMAKE_COMMAND}" -E copy_if_different
510
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-ld.bfd"
527
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-ld.bfd"
511
528
"${INSTALL_DIR}/bin/${system_name}-ld.bfd"
512
529
COMMAND
513
530
"${CMAKE_COMMAND}" -E copy_if_different
514
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-ld.gold"
531
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-ld.gold"
515
532
"${INSTALL_DIR}/bin/${system_name}-ld.gold"
516
533
COMMAND
517
534
"${CMAKE_COMMAND}" -E copy_if_different
518
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-nm"
535
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-nm"
519
536
"${INSTALL_DIR}/bin/${system_name}-nm"
520
537
COMMAND
521
538
"${CMAKE_COMMAND}" -E copy_if_different
522
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-objcopy"
539
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-objcopy"
523
540
"${INSTALL_DIR}/bin/${system_name}-objcopy"
524
541
COMMAND
525
542
"${CMAKE_COMMAND}" -E copy_if_different
526
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-objdump"
543
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-objdump"
527
544
"${INSTALL_DIR}/bin/${system_name}-objdump"
528
545
COMMAND
529
546
"${CMAKE_COMMAND}" -E copy_if_different
530
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-ranlib"
547
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-ranlib"
531
548
"${INSTALL_DIR}/bin/${system_name}-ranlib"
532
549
COMMAND
533
550
"${CMAKE_COMMAND}" -E copy_if_different
534
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-readelf"
551
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-readelf"
535
552
"${INSTALL_DIR}/bin/${system_name}-readelf"
536
553
COMMAND
537
554
"${CMAKE_COMMAND}" -E copy_if_different
538
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-size"
555
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-size"
539
556
"${INSTALL_DIR}/bin/${system_name}-size"
540
557
COMMAND
541
558
"${CMAKE_COMMAND}" -E copy_if_different
542
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-strings"
559
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-strings"
543
560
"${INSTALL_DIR}/bin/${system_name}-strings"
544
561
COMMAND
545
562
"${CMAKE_COMMAND}" -E copy_if_different
546
- "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host }-x86_64/bin/arm-linux-androideabi-strip"
563
+ "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host }-x86_64/bin/arm-linux-androideabi-strip"
547
564
"${INSTALL_DIR}/bin/${system_name}-strip"
548
565
>
549
566
]]
0 commit comments