diff options
author | Brad King <brad.king@kitware.com> | 2021-03-31 13:25:47 +0000 |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2021-03-31 09:26:35 -0400 |
commit | 375e14a4052569aeec149a89223aa2b68d3d3fd0 (patch) | |
tree | 9dae69f2e294f677bfa7955f3b7ef69a34084927 | |
parent | c0092247fe380ec9df065c4fbdafcd610ef09ddc (diff) | |
parent | 61e6fc26bc46b219b36533accb70002d5e2fb05a (diff) | |
download | cmake-375e14a4052569aeec149a89223aa2b68d3d3fd0.tar.gz |
Merge topic 'android-binutils' into release-3.20
61e6fc26bc Android: Fix search for binutils
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5958
-rw-r--r-- | Modules/CMakeFindBinUtils.cmake | 2 | ||||
-rw-r--r-- | Modules/Platform/Android-Initialize.cmake | 50 | ||||
-rw-r--r-- | Modules/Platform/Android.cmake | 50 |
3 files changed, 52 insertions, 50 deletions
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake index ff178f647d..e87a16b769 100644 --- a/Modules/CMakeFindBinUtils.cmake +++ b/Modules/CMakeFindBinUtils.cmake @@ -99,6 +99,8 @@ else() set(_CMAKE_LINKER_NAMES "ld.lld") endif() list(APPEND _CMAKE_AR_NAMES "llvm-ar") + list(APPEND _CMAKE_RANLIB_NAMES "llvm-ranlib") + list(APPEND _CMAKE_STRIP_NAMES "llvm-strip") list(APPEND _CMAKE_NM_NAMES "llvm-nm") list(APPEND _CMAKE_OBJDUMP_NAMES "llvm-objdump") list(APPEND _CMAKE_OBJCOPY_NAMES "llvm-objcopy") diff --git a/Modules/Platform/Android-Initialize.cmake b/Modules/Platform/Android-Initialize.cmake index 6116ae1c80..50f06209f1 100644 --- a/Modules/Platform/Android-Initialize.cmake +++ b/Modules/Platform/Android-Initialize.cmake @@ -25,6 +25,56 @@ endif() set(CMAKE_BUILD_TYPE_INIT "RelWithDebInfo") +if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED) + # Tell CMake not to search host sysroots for headers/libraries. + + # All paths added to CMAKE_SYSTEM_*_PATH below will be rerooted under + # CMAKE_FIND_ROOT_PATH. This is set because: + # 1. Users may structure their libraries in a way similar to NDK. When they do that, + # they can simply append another path to CMAKE_FIND_ROOT_PATH. + # 2. CMAKE_FIND_ROOT_PATH must be non-empty for CMAKE_FIND_ROOT_PATH_MODE_* == ONLY + # to be meaningful. https://github.com/android-ndk/ndk/issues/890 + list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot") + + # Allow users to override these values in case they want more strict behaviors. + # For example, they may want to prevent the NDK's libz from being picked up so + # they can use their own. + # https://github.com/android-ndk/ndk/issues/517 + if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + endif() + + if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + endif() + + if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + endif() + + if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + endif() + + # Don't search paths in PATH environment variable. + if(NOT DEFINED CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH) + set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF) + endif() + + # Allows CMake to find headers in the architecture-specific include directories. + set(CMAKE_LIBRARY_ARCHITECTURE "${CMAKE_ANDROID_ARCH_TRIPLE}") + + # Instructs CMake to search the correct API level for libraries. + # Besides the paths like <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>. + # So we can add the API level specific directory directly. + # https://github.com/android/ndk/issues/929 + list(PREPEND CMAKE_SYSTEM_PREFIX_PATH + "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SYSTEM_VERSION}" + ) + + list(APPEND CMAKE_SYSTEM_PROGRAM_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin") +endif() + # Skip sysroot selection if the NDK has a unified toolchain. if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED) return() diff --git a/Modules/Platform/Android.cmake b/Modules/Platform/Android.cmake index e4b9a0929e..6944e32200 100644 --- a/Modules/Platform/Android.cmake +++ b/Modules/Platform/Android.cmake @@ -35,56 +35,6 @@ if(CMAKE_SYSTEM_VERSION EQUAL 1) return() endif() -if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED) - # Tell CMake not to search host sysroots for headers/libraries. - - # All paths added to CMAKE_SYSTEM_*_PATH below will be rerooted under - # CMAKE_FIND_ROOT_PATH. This is set because: - # 1. Users may structure their libraries in a way similar to NDK. When they do that, - # they can simply append another path to CMAKE_FIND_ROOT_PATH. - # 2. CMAKE_FIND_ROOT_PATH must be non-empty for CMAKE_FIND_ROOT_PATH_MODE_* == ONLY - # to be meaningful. https://github.com/android-ndk/ndk/issues/890 - list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot") - - # Allow users to override these values in case they want more strict behaviors. - # For example, they may want to prevent the NDK's libz from being picked up so - # they can use their own. - # https://github.com/android-ndk/ndk/issues/517 - if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - endif() - - if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - endif() - - if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - endif() - - if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - endif() - - # Don't search paths in PATH environment variable. - if(NOT DEFINED CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH) - set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF) - endif() - - # Allows CMake to find headers in the architecture-specific include directories. - set(CMAKE_LIBRARY_ARCHITECTURE "${CMAKE_ANDROID_ARCH_TRIPLE}") - - # Instructs CMake to search the correct API level for libraries. - # Besides the paths like <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>. - # So we can add the API level specific directory directly. - # https://github.com/android/ndk/issues/929 - list(PREPEND CMAKE_SYSTEM_PREFIX_PATH - "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SYSTEM_VERSION}" - ) - - list(APPEND CMAKE_SYSTEM_PROGRAM_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin") -endif() - # Include the NDK hook. # It can be used by NDK to inject necessary fixes for an earlier cmake. if(CMAKE_ANDROID_NDK) |