enable_language(C) include(CTest) if(CMake_TEST_FindPython2) find_package(Python2 REQUIRED COMPONENTS Interpreter Development) if (NOT Python2_FOUND) message (FATAL_ERROR "Failed to find Python 2") endif() set(USER_EXECUTABLE "${Python2_EXECUTABLE}") set(USER_LIBRARY "${Python2_LIBRARY_RELEASE}") set(USER_INCLUDE_DIR "${Python2_INCLUDE_DIRS}") else() set(USER_EXECUTABLE "/path/to/invalid-exe${CMAKE_EXECUTABLE_SUFFIX}") set(USER_LIBRARY "/path/to/invalid-lib${CMAKE_C_LINK_LIBRARY_SUFFIX}") set(USER_INCLUDE_DIR "/path/to/invalid/dir") endif() # check some combinations for modules search without interpreter if(CMake_TEST_FindPython3_SABIModule) block(SCOPE_FOR VARIABLES) find_package(Python3 REQUIRED COMPONENTS Development.SABIModule) if (NOT Python3_FOUND) message (FATAL_ERROR "Failed to find Python 3") endif() if (Python3_Development_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development' unexpectedly found") endif() if (Python3_Interpreter_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Interpreter' unexpectedly found") endif() if (Python3_Development.Embed_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.Embed' unexpectedly found") endif() if (Python3_Development.Module_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.Module' unexpectedly found") endif() if (NOT Python3_Development.SABIModule_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.SABIModule' not found") endif() unset(_Python3_SABI_LIBRARY_RELEASE CACHE) endblock() endif() block(SCOPE_FOR VARIABLES) set(components Development.Module) if (CMake_TEST_FindPython3_SABIModule) list (APPEND components Development.SABIModule) endif() find_package(Python3 REQUIRED COMPONENTS ${components}) if (NOT Python3_FOUND) message (FATAL_ERROR "Failed to find Python 3") endif() if (Python3_Development_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development' unexpectedly found") endif() if (Python3_Interpreter_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Interpreter' unexpectedly found") endif() if (Python3_Development.Embed_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.Embed' unexpectedly found") endif() if (NOT Python3_Development.Module_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.Module' not found") endif() if (CMake_TEST_FindPython3_SABIModule AND NOT Python3_Development.SABIModule_FOUND) message (FATAL_ERROR "Python 3, COMPONENT 'Development.SABIModule' not found") endif() unset(_Python3_LIBRARY_RELEASE CACHE) unset(_Python3_SABI_LIBRARY_RELEASE CACHE) endblock() set(components Interpreter Development) if (CMake_TEST_FindPython3_SABIModule) list (APPEND components Development.SABIModule) endif() find_package(Python3 REQUIRED COMPONENTS ${components}) if (NOT Python3_FOUND) message (FATAL_ERROR "Failed to find Python 3") endif() configure_file("${CMAKE_SOURCE_DIR}/PythonArtifacts.cmake.in" "${CMAKE_BINARY_DIR}/PythonArtifacts.cmake" @ONLY)