1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00
Files
CMake/Tests/RunCMake/FindPython/Android.cmake
2025-09-13 12:53:18 +01:00

52 lines
1.9 KiB
CMake

enable_language(C)
set(components Development.Embed Development.Module Development.SABIModule)
find_package(Python REQUIRED COMPONENTS ${components})
foreach(component ${components})
set(found_var Python_${component}_FOUND)
if(NOT ${found_var})
message(FATAL_ERROR "${found_var} is not set")
endif()
endforeach()
set(android_root "${CMAKE_SOURCE_DIR}/android_root")
if(NOT Python_INCLUDE_DIRS STREQUAL "${android_root}/include/python3.13")
message(FATAL_ERROR "Python_INCLUDE_DIRS=${Python_INCLUDE_DIRS}")
endif()
if(NOT Python_LIBRARIES STREQUAL "${android_root}/lib/libpython3.13.so")
message(FATAL_ERROR "Python_LIBRARIES=${Python_LIBRARIES}")
endif()
if(NOT Python_SABI_LIBRARIES STREQUAL "${android_root}/lib/libpython3.so")
message(FATAL_ERROR "Python_SABI_LIBRARIES=${Python_SABI_LIBRARIES}")
endif()
foreach(target Python::Python Python::Module Python::SABIModule)
if(NOT TARGET ${target})
message(FATAL_ERROR "Target ${target} does not exist")
endif()
# The Module and SABIModule targets will be SHARED_LIBRARY if Python modules should
# link against libpython (as on Android), and INTERFACE_LIBRARY if they should not (as
# on Linux).
get_target_property(target_type ${target} TYPE)
if(NOT target_type STREQUAL SHARED_LIBRARY)
message(FATAL_ERROR "${target} TYPE=${target_type}")
endif()
get_target_property(target_location ${target} LOCATION)
if(target STREQUAL "Python::SABIModule")
set(expected "${android_root}/lib/libpython3.so")
else()
set(expected "${android_root}/lib/libpython3.13.so")
endif()
if(NOT target_location STREQUAL expected)
message(FATAL_ERROR "${target} LOCATION=${target_location}")
endif()
get_target_property(target_include ${target} INTERFACE_INCLUDE_DIRECTORIES)
if(NOT target_include STREQUAL "${android_root}/include/python3.13")
message(FATAL_ERROR "${target} INTERFACE_INCLUDE_DIRECTORIES=${target_include}")
endif()
endforeach()