mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
1. Set CMAKE_FIND_ROOT_PATH unconditionally. Revise the implementation from commita7f41a7ee4(Android: Fix find_* search order within NDK for unified toolchains, 2020-10-13). In the old implementation, if people set CMAKE_FIND_ROOT_PATH, CMAKE_ANDROID_NDK won't be added to find root. And all paths added to CMAKE_SYSTEM_*_PATH below will be rerooted to the user specified root. 2. Add api level specific library path to CMAKE_SYSTEM_PREFIX_PATH. As the discussion in [1], some people want the paths added by UnixPaths.cmake. They install their libraries according to GNUInstallDirs [2]. As a result, we cannot clear CMAKE_SYSTEM_PREFIX_PATH. It includes /usr so no matter what we specify in CMAKE_SYSTEM_LIBRARY_PATH, /usr/lib/<arch> will be searched first. The author also pointed out a way to solve this issue [3]. In addition to other paths, CMake also searches <root>/<prefix> [4]. So we can add the API specific lib path to the beginning of CMAKE_SYSTEM_PREFIX_PATH, to have it searched first. [1] https://android-review.googlesource.com/c/platform/ndk/+/1486800 [2] https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html [3] https://github.com/android/ndk/issues/1179#issuecomment-613435081 [4]11425041f0/Source/cmSearchPath.cxx (L202)
18 lines
313 B
CMake
18 lines
313 B
CMake
if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
|
return()
|
|
endif()
|
|
|
|
find_library(LIBDL dl)
|
|
if(NOT LIBDL)
|
|
message(FATAL_ERROR "libdl not found.")
|
|
endif()
|
|
|
|
if(LIBDL MATCHES ".a$")
|
|
message(FATAL_ERROR "found libdl.a")
|
|
endif()
|
|
|
|
find_program(CLANG clang)
|
|
if(NOT CLANG)
|
|
message(FATAL_ERROR "clang not found")
|
|
endif()
|