| 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() |