diff --git a/android.toolchain.cmake b/android.toolchain.cmake
index 8473271..d9f15f9 100644
--- a/android.toolchain.cmake
+++ b/android.toolchain.cmake
@@ -12,14 +12,38 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Configurable variables.
+# Modeled after the ndk-build system.
+# For any variables defined in:
+#         https://developer.android.com/ndk/guides/android_mk.html
+#         https://developer.android.com/ndk/guides/application_mk.html
+# if it makes sense for CMake, then replace LOCAL, APP, or NDK with ANDROID, and
+# we have that variable below.
+# The exception is ANDROID_TOOLCHAIN vs NDK_TOOLCHAIN_VERSION.
+# Since we only have one version of each gcc and clang, specifying a version
+# doesn't make much sense.
+#
+# ANDROID_NDK
+# ANDROID_TOOLCHAIN
+# ANDROID_ABI
+# ANDROID_PLATFORM
+# ANDROID_STL
+# ANDROID_PIE
+# ANDROID_CPP_FEATURES
+# ANDROID_ALLOW_UNDEFINED_SYMBOLS
+# ANDROID_ARM_MODE
+# ANDROID_ARM_NEON
+# ANDROID_DISABLE_NO_EXECUTE
+# ANDROID_DISABLE_RELRO
+# ANDROID_DISABLE_FORMAT_STRING_CHECKS
+# ANDROID_CCACHE
+
 cmake_minimum_required(VERSION 3.6.0)
 
-# Subsequent toolchain loading is not really needed.
-if(DEFINED CMAKE_CROSSCOMPILING)
-	return()
-endif()
+set(ANDROID_NDK_REVISION 12)
 
 # Touch toolchain variable to suppress "unused variable" warning.
+# This happens if CMake is invoked with the same command line the second time.
 if(CMAKE_TOOLCHAIN_FILE)
 endif()
 
@@ -129,18 +153,18 @@
 if(NOT ANDROID_ABI)
 	set(ANDROID_ABI armeabi-v7a)
 endif()
-if(ANDROID_PLATFORM MATCHES "^android-(10|11)$")
+if(ANDROID_PLATFORM MATCHES "^android-([0-8]|10|11)$")
 	set(ANDROID_PLATFORM android-9)
 elseif(ANDROID_PLATFORM STREQUAL android-20)
 	set(ANDROID_PLATFORM android-19)
 elseif(NOT ANDROID_PLATFORM)
-	if(ANDROID_ABI MATCHES "64(-v8a)?$")
-		set(ANDROID_PLATFORM android-21)
-	else()
-		set(ANDROID_PLATFORM android-9)
-	endif()
+	set(ANDROID_PLATFORM android-9)
 endif()
 string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
+if(ANDROID_ABI MATCHES "64(-v8a)?$" AND ANDROID_PLATFORM_LEVEL LESS 21)
+	set(ANDROID_PLATFORM android-21)
+	set(ANDROID_PLATFORM_LEVEL 21)
+endif()
 if(NOT ANDROID_STL)
 	set(ANDROID_STL gnustl_static)
 endif()
@@ -155,31 +179,6 @@
 	set(ANDROID_ARM_MODE thumb)
 endif()
 
-# Configurable variables.
-# Modeled after the ndk-build system.
-# For any variables defined in:
-#         https://developer.android.com/ndk/guides/android_mk.html
-#         https://developer.android.com/ndk/guides/application_mk.html
-# if it makes sense for CMake, then replace LOCAL, APP, or NDK with ANDROID, and
-# we have that variable below.
-# The exception is ANDROID_TOOLCHAIN vs NDK_TOOLCHAIN_VERSION.
-# Since we only have one version of each gcc and clang, specifying a version
-# doesn't make much sense.
-set(ANDROID_NDK                          "${ANDROID_NDK}"                          CACHE FILEPATH "Android NDK")
-set(ANDROID_TOOLCHAIN                    "${ANDROID_TOOLCHAIN}"                    CACHE STRING   "Android toolchain")
-set(ANDROID_ABI                          "${ANDROID_ABI}"                          CACHE STRING   "Android ABI")
-set(ANDROID_PLATFORM                     "${ANDROID_PLATFORM}"                     CACHE STRING   "Android platform")
-set(ANDROID_STL                          "${ANDROID_STL}"                          CACHE STRING   "Android STL")
-set(ANDROID_PIE                          "${ANDROID_PIE}"                          CACHE BOOL     "Android PIE")
-set(ANDROID_CPP_FEATURES                 "${ANDROID_CPP_FEATURES}"                 CACHE STRING   "Android C++ features")
-set(ANDROID_ALLOW_UNDEFINED_SYMBOLS      "${ANDROID_ALLOW_UNDEFINED_SYMBOLS}"      CACHE BOOL     "Android allow undefined symbols")
-set(ANDROID_ARM_MODE                     "${ANDROID_ARM_MODE}"                     CACHE STRING   "Android ARM mode")
-set(ANDROID_ARM_NEON                     "${ANDROID_ARM_NEON}"                     CACHE BOOL     "Android ARM NEON")
-set(ANDROID_DISABLE_NO_EXECUTE           "${ANDROID_DISABLE_NO_EXECUTE}"           CACHE BOOL     "Android disable no execute")
-set(ANDROID_DISABLE_RELRO                "${ANDROID_DISABLE_RELRO}"                CACHE BOOL     "Android disable relocation read-only")
-set(ANDROID_DISABLE_FORMAT_STRING_CHECKS "${ANDROID_DISABLE_FORMAT_STRING_CHECKS}" CACHE BOOL     "Android disable format string checks")
-set(ANDROID_CCACHE                       "${ANDROID_CCACHE}"                       CACHE FILEPATH "Android ccache")
-
 # Export configurable variables for the try_compile() command.
 set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
 	ANDROID_NDK
@@ -202,9 +201,9 @@
 set(CMAKE_SYSTEM_NAME Android)
 set(CMAKE_SYSTEM_VERSION ${ANDROID_PLATFORM_LEVEL})
 set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
 
 # ABI.
 set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
@@ -339,9 +338,12 @@
 elseif(NOT IS_DIRECTORY "${ANDROID_NDK}/platforms/${ANDROID_PLATFORM}")
 	message(FATAL_ERROR "Invalid Android platform: ${ANDROID_PLATFORM}.")
 elseif(NOT IS_DIRECTORY "${CMAKE_SYSROOT}")
-	message(FATAL_ERROR "Invalid Android ABI for platform ${ANDROID_PLATFORM}: ${ANDROID_ABI}.")
+	message(FATAL_ERROR "Invalid Android sysroot: ${CMAKE_SYSROOT}.")
 endif()
-set(ANDROID_NDK_REVISION 12)
+# Check if source.properties file exists.
+if(NOT EXISTS "${ANDROID_NDK}/source.properties")
+	message(FATAL_ERROR "Missing file: ${ANDROID_NDK}/source.properties. Please use NDK r12+.")
+endif()
 file(READ "${ANDROID_NDK}/source.properties" ANDROID_NDK_SOURCE_PROPERTIES)
 set(ANDROID_NDK_SOURCE_PROPERTIES_REGEX
 	"^Pkg\\.Desc = Android NDK\nPkg\\.Revision = ([0-9]+\\.[0-9]+\\.[0-9]+(-beta[0-9]+)?)\n$")
@@ -471,9 +473,12 @@
 	list(APPEND ANDROID_CXX_STANDARD_LIBRARIES
 		-latomic)
 endif()
-string(REPLACE ";" " " ANDROID_CXX_STANDARD_LIBRARIES "${ANDROID_CXX_STANDARD_LIBRARIES}")
-set(CMAKE_C_STANDARD_LIBRARIES "-lm")
-set(CMAKE_CXX_STANDARD_LIBRARIES "${ANDROID_CXX_STANDARD_LIBRARIES}")
+set(CMAKE_C_STANDARD_LIBRARIES_INIT "-lm")
+set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
+if(ANDROID_CXX_STANDARD_LIBRARIES)
+	string(REPLACE ";" "\" \"" ANDROID_CXX_STANDARD_LIBRARIES "\"${ANDROID_CXX_STANDARD_LIBRARIES}\"")
+	set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_CXX_STANDARD_LIBRARIES_INIT} ${ANDROID_CXX_STANDARD_LIBRARIES}")
+endif()
 
 # Configuration specific flags.
 if(ANDROID_PIE)
@@ -507,7 +512,7 @@
 	else()
 		message(FATAL_ERROR "Invalid Android ARM mode: ${ANDROID_ARM_MODE}.")
 	endif()
-	if(ANDROID_STL STREQUAL armeabi-v7a AND ANDROID_ARM_NEON)
+	if(ANDROID_ABI STREQUAL armeabi-v7a AND ANDROID_ARM_NEON)
 		list(APPEND ANDROID_COMPILER_FLAGS
 			-mfpu=neon)
 	endif()
@@ -523,6 +528,14 @@
 	list(APPEND ANDROID_LINKER_FLAGS
 		-Wl,-z,noexecstack)
 endif()
+if(ANDROID_TOOLCHAIN STREQUAL clang)
+	# CMake automatically forwards all compiler flags to the linker,
+	# and clang doesn't like having -Wa flags being used for linking.
+	# To prevent CMake from doing this would require meddling with
+	# the CMAKE_<LANG>_COMPILE_OBJECT rules, which would get quite messy.
+	list(APPEND ANDROID_LINKER_FLAGS
+		-Qunused-arguments)
+endif()
 if(ANDROID_DISABLE_RELRO)
 	list(APPEND ANDROID_LINKER_FLAGS
 		-Wl,-z,norelro -Wl,-z,lazy)
@@ -539,39 +552,43 @@
 endif()
 
 # Convert these lists into strings.
-string(REPLACE ";" " " ANDROID_COMPILER_FLAGS            "${ANDROID_COMPILER_FLAGS}")
-string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_CXX        "${ANDROID_COMPILER_FLAGS_CXX}")
-string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_DEBUG      "${ANDROID_COMPILER_FLAGS_DEBUG}")
-string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_RELEASE    "${ANDROID_COMPILER_FLAGS_RELEASE}")
-string(REPLACE ";" " " ANDROID_LINKER_FLAGS              "${ANDROID_LINKER_FLAGS}")
-string(REPLACE ";" " " ANDROID_LINKER_FLAGS_EXE          "${ANDROID_LINKER_FLAGS_EXE}")
+string(REPLACE ";" " " ANDROID_COMPILER_FLAGS         "${ANDROID_COMPILER_FLAGS}")
+string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_CXX     "${ANDROID_COMPILER_FLAGS_CXX}")
+string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_DEBUG   "${ANDROID_COMPILER_FLAGS_DEBUG}")
+string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE}")
+string(REPLACE ";" " " ANDROID_LINKER_FLAGS           "${ANDROID_LINKER_FLAGS}")
+string(REPLACE ";" " " ANDROID_LINKER_FLAGS_EXE       "${ANDROID_LINKER_FLAGS_EXE}")
 
 if(ANDROID_CCACHE)
-	set(CMAKE_C_COMPILER        "${ANDROID_CCACHE}"       CACHE FILEPATH "ccache")
-	set(CMAKE_CXX_COMPILER      "${ANDROID_CCACHE}"       CACHE FILEPATH "ccache")
-	set(CMAKE_C_COMPILER_ARG1   "${ANDROID_C_COMPILER}"   CACHE FILEPATH "C compiler")
-	set(CMAKE_CXX_COMPILER_ARG1 "${ANDROID_CXX_COMPILER}" CACHE FILEPATH "C++ compiler")
-else()
-	set(CMAKE_C_COMPILER        "${ANDROID_C_COMPILER}"   CACHE FILEPATH "C compiler")
-	set(CMAKE_CXX_COMPILER      "${ANDROID_CXX_COMPILER}" CACHE FILEPATH "C++ compiler")
+	set(CMAKE_C_COMPILER_LAUNCHER   "${ANDROID_CCACHE}")
+	set(CMAKE_CXX_COMPILER_LAUNCHER "${ANDROID_CCACHE}")
 endif()
-set(CMAKE_AR                  "${ANDROID_TOOLCHAIN_PREFIX}gcc-ar${ANDROID_TOOLCHAIN_SUFFIX}"  CACHE FILEPATH "ar")
-set(CMAKE_ASM_COMPILER        "${ANDROID_TOOLCHAIN_PREFIX}gcc${ANDROID_TOOLCHAIN_SUFFIX}"     CACHE FILEPATH "asm compiler")
-set(CMAKE_LINKER              "${ANDROID_TOOLCHAIN_PREFIX}ld${ANDROID_TOOLCHAIN_SUFFIX}"      CACHE FILEPATH "linker")
-set(CMAKE_NM                  "${ANDROID_TOOLCHAIN_PREFIX}nm${ANDROID_TOOLCHAIN_SUFFIX}"      CACHE FILEPATH "nm")
-set(CMAKE_OBJCOPY             "${ANDROID_TOOLCHAIN_PREFIX}objcopy${ANDROID_TOOLCHAIN_SUFFIX}" CACHE FILEPATH "objcopy")
-set(CMAKE_OBJDUMP             "${ANDROID_TOOLCHAIN_PREFIX}objdump${ANDROID_TOOLCHAIN_SUFFIX}" CACHE FILEPATH "objdump")
-set(CMAKE_RANLIB              "${ANDROID_TOOLCHAIN_PREFIX}ranlib${ANDROID_TOOLCHAIN_SUFFIX}"  CACHE FILEPATH "ranlib")
-set(CMAKE_STRIP               "${ANDROID_TOOLCHAIN_PREFIX}strip${ANDROID_TOOLCHAIN_SUFFIX}"   CACHE FILEPATH "strip")
-set(CMAKE_C_FLAGS             "" CACHE STRING "C flags")
-set(CMAKE_CXX_FLAGS           "" CACHE STRING "C++ flags")
-set(CMAKE_C_FLAGS_DEBUG       "" CACHE STRING "C flags debug")
-set(CMAKE_CXX_FLAGS_DEBUG     "" CACHE STRING "C++ flags debug")
-set(CMAKE_C_FLAGS_RELEASE     "" CACHE STRING "C flags release")
-set(CMAKE_CXX_FLAGS_RELEASE   "" CACHE STRING "C++ flags release")
-set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "module linker flags")
-set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "shared linker flags")
-set(CMAKE_EXE_LINKER_FLAGS    "" CACHE STRING "executable linker flags")
+set(CMAKE_C_COMPILER        "${ANDROID_C_COMPILER}")
+set(CMAKE_CXX_COMPILER      "${ANDROID_CXX_COMPILER}")
+set(_CMAKE_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_PREFIX}")
+
+# Set or retrieve the cached flags.
+# This is necessary in case the user sets/changes flags in subsequent
+# configures. If we included the Android flags in here, they would get
+# overwritten.
+set(CMAKE_C_FLAGS ""
+	CACHE STRING "Flags used by the compiler during all build types.")
+set(CMAKE_CXX_FLAGS ""
+	CACHE STRING "Flags used by the compiler during all build types.")
+set(CMAKE_C_FLAGS_DEBUG ""
+	CACHE STRING "Flags used by the compiler during debug builds.")
+set(CMAKE_CXX_FLAGS_DEBUG ""
+	CACHE STRING "Flags used by the compiler during debug builds.")
+set(CMAKE_C_FLAGS_RELEASE ""
+	CACHE STRING "Flags used by the compiler during release builds.")
+set(CMAKE_CXX_FLAGS_RELEASE ""
+	CACHE STRING "Flags used by the compiler during release builds.")
+set(CMAKE_MODULE_LINKER_FLAGS ""
+	CACHE STRING "Flags used by the linker during the creation of modules.")
+set(CMAKE_SHARED_LINKER_FLAGS ""
+	CACHE STRING "Flags used by the linker during the creation of dll's.")
+set(CMAKE_EXE_LINKER_FLAGS ""
+	CACHE STRING "Flags used by the linker.")
 
 set(CMAKE_C_FLAGS             "${ANDROID_COMPILER_FLAGS} ${CMAKE_C_FLAGS}")
 set(CMAKE_CXX_FLAGS           "${ANDROID_COMPILER_FLAGS} ${ANDROID_COMPILER_FLAGS_CXX} ${CMAKE_CXX_FLAGS}")
diff --git a/bin/cmake b/bin/cmake
index 8578a01..6d78463 100755
--- a/bin/cmake
+++ b/bin/cmake
Binary files differ
diff --git a/bin/cpack b/bin/cpack
index d8e39b7..ae13252 100755
--- a/bin/cpack
+++ b/bin/cpack
Binary files differ
diff --git a/bin/ctest b/bin/ctest
index d4572e8..2aedf1a 100755
--- a/bin/ctest
+++ b/bin/ctest
Binary files differ
diff --git a/source.properties b/source.properties
index 0186318..14ee5d0 100644
--- a/source.properties
+++ b/source.properties
@@ -1,3 +1,3 @@
-Pkg.Revision=3.6.3043163
-Pkg.Desc=CMake 3.6
-Pkg.Path=cmake;3.6
+Pkg.Revision=3.6.4111459
+Pkg.Desc=CMake 3.6.4111459
+Pkg.Path=cmake;3.6.4111459
