@@ -36,8 +36,9 @@ endif()
3636set (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)
4344if (NOT  ANDROID_TOOLCHAIN_VERSION IN_LIST  supported_ndks)
@@ -97,12 +98,24 @@ if(CMAKE_BUILD_TYPE MATCHES Rel)
9798	endif ()
9899endif ()
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 ()
100106if (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} " )
102109endif ()
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 ()
103114if (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} " )
105117endif ()
118+ 
106119if (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 ()
114127endif ()
128+ 
115129if (NOT  DEFINED  ANDROID_COMPILE_SDK AND  NOT  "$ENV{ANDROID_COMPILE_SDK} "  STREQUAL  "" )
116130	set (ANDROID_COMPILE_SDK "$ENV{ANDROID_COMPILE_SDK} " )
117131else ()
118- 	set (ANDROID_COMPILE_SDK android-28 )
132+ 	set (ANDROID_COMPILE_SDK android-29 )
119133endif ()
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" )
131143endif ()
132144
133145set (android_toolchain_dependencies )
134146
135147
136148if (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