From fdaa47cd238f566ab715257dce39a6237abae27e Mon Sep 17 00:00:00 2001 From: Tom Finegan Date: Fri, 21 Jun 2019 10:50:00 -0700 Subject: [PATCH] draco cmake: Improve Android NDK toolchain support and fix a bug. - Move common NDK settings into cmake/toolchains/android-ndk-common.cmake. - Fix bug in set_variable_if_unset(). Was ignoring variables set via CMake's command line. Fixes #475. --- cmake/toolchains/android-ndk-common.cmake | 11 +++++++++++ cmake/toolchains/arm64-android-ndk-libcpp.cmake | 4 +--- cmake/toolchains/armv7-android-ndk-libcpp.cmake | 4 +--- cmake/toolchains/default-android-ndk-libcpp.cmake | 7 +++++++ cmake/toolchains/x86-android-ndk-libcpp.cmake | 4 +--- cmake/toolchains/x86_64-android-ndk-libcpp.cmake | 4 +--- cmake/util.cmake | 4 ++-- 7 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 cmake/toolchains/android-ndk-common.cmake create mode 100644 cmake/toolchains/default-android-ndk-libcpp.cmake diff --git a/cmake/toolchains/android-ndk-common.cmake b/cmake/toolchains/android-ndk-common.cmake new file mode 100644 index 0000000..58b27a6 --- /dev/null +++ b/cmake/toolchains/android-ndk-common.cmake @@ -0,0 +1,11 @@ +if(DRACO_CMAKE_TOOLCHAINS_ANDROID_NDK_COMMON_CMAKE_) + return() +endif() +set(DRACO_CMAKE_TOOLCHAINS_ANDROID_NDK_COMMON_CMAKE_ 1) + +include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") + +require_variable(CMAKE_ANDROID_NDK) +set(CMAKE_SYSTEM_NAME Android) +set_variable_if_unset(CMAKE_ANDROID_STL_TYPE c++_static) +set_variable_if_unset(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang) diff --git a/cmake/toolchains/arm64-android-ndk-libcpp.cmake b/cmake/toolchains/arm64-android-ndk-libcpp.cmake index 293e029..efc9cd1 100644 --- a/cmake/toolchains/arm64-android-ndk-libcpp.cmake +++ b/cmake/toolchains/arm64-android-ndk-libcpp.cmake @@ -4,9 +4,7 @@ endif() set(DRACO_CMAKE_TOOLCHAINS_ARM64_ANDROID_NDK_LIBCPP_CMAKE_ 1) include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake") -set(CMAKE_SYSTEM_NAME Android) set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) -require_variable(CMAKE_ANDROID_NDK) set_variable_if_unset(CMAKE_SYSTEM_VERSION 21) -set_variable_if_unset(CMAKE_ANDROID_STL_TYPE c++_static) diff --git a/cmake/toolchains/armv7-android-ndk-libcpp.cmake b/cmake/toolchains/armv7-android-ndk-libcpp.cmake index b4b517c..a1b0a6b 100644 --- a/cmake/toolchains/armv7-android-ndk-libcpp.cmake +++ b/cmake/toolchains/armv7-android-ndk-libcpp.cmake @@ -4,9 +4,7 @@ endif() set(DRACO_CMAKE_TOOLCHAINS_ARMV7_ANDROID_NDK_LIBCPP_CMAKE_ 1) include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake") -set(CMAKE_SYSTEM_NAME Android) set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) -require_variable(CMAKE_ANDROID_NDK) set_variable_if_unset(CMAKE_SYSTEM_VERSION 18) -set_variable_if_unset(CMAKE_ANDROID_STL_TYPE c++_static) diff --git a/cmake/toolchains/default-android-ndk-libcpp.cmake b/cmake/toolchains/default-android-ndk-libcpp.cmake new file mode 100644 index 0000000..cd1d7ca --- /dev/null +++ b/cmake/toolchains/default-android-ndk-libcpp.cmake @@ -0,0 +1,7 @@ +if(DRACO_CMAKE_TOOLCHAINS_DEFAULT_ANDROID_NDK_LIBCPP_CMAKE_) + return() +endif() +set(DRACO_CMAKE_TOOLCHAINS_DEFAULT_ANDROID_NDK_LIBCPP_CMAKE_ 1) + +include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake") diff --git a/cmake/toolchains/x86-android-ndk-libcpp.cmake b/cmake/toolchains/x86-android-ndk-libcpp.cmake index ba0778d..38e7d31 100644 --- a/cmake/toolchains/x86-android-ndk-libcpp.cmake +++ b/cmake/toolchains/x86-android-ndk-libcpp.cmake @@ -4,9 +4,7 @@ endif() set(DRACO_CMAKE_TOOLCHAINS_X86_ANDROID_NDK_LIBCPP_CMAKE_ 1) include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake") -set(CMAKE_SYSTEM_NAME Android) set(CMAKE_ANDROID_ARCH_ABI x86) -require_variable(CMAKE_ANDROID_NDK) set_variable_if_unset(CMAKE_SYSTEM_VERSION 18) -set_variable_if_unset(CMAKE_ANDROID_STL_TYPE c++_static) diff --git a/cmake/toolchains/x86_64-android-ndk-libcpp.cmake b/cmake/toolchains/x86_64-android-ndk-libcpp.cmake index 18bba4f..2230e50 100644 --- a/cmake/toolchains/x86_64-android-ndk-libcpp.cmake +++ b/cmake/toolchains/x86_64-android-ndk-libcpp.cmake @@ -4,9 +4,7 @@ endif() set(DRACO_CMAKE_TOOLCHAINS_X86_64_ANDROID_NDK_LIBCPP_CMAKE_ 1) include("${CMAKE_CURRENT_LIST_DIR}/../util.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake") -set(CMAKE_SYSTEM_NAME Android) set(CMAKE_ANDROID_ARCH_ABI x86_64) -require_variable(CMAKE_ANDROID_NDK) set_variable_if_unset(CMAKE_SYSTEM_VERSION 21) -set_variable_if_unset(CMAKE_ANDROID_STL_TYPE c++_static) diff --git a/cmake/util.cmake b/cmake/util.cmake index d5333ef..8c82f46 100644 --- a/cmake/util.cmake +++ b/cmake/util.cmake @@ -63,11 +63,11 @@ macro(require_variable var_name) set_variable_if_unset(${var_name} "") endmacro() -# Sets $var_name to $default_value if not already set in the environment. +# Sets $var_name to $default_value if not already set. macro(set_variable_if_unset var_name default_value) if(NOT "$ENV{${var_name}}" STREQUAL "") set(${var_name} $ENV{${var_name}}) - else() + elseif(NOT ${var_name}) set(${var_name} ${default_value}) endif() endmacro()