diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 1c5641e38b..112af848e1 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -1085,7 +1085,7 @@ function (_PYTHON_VALIDATE_COMPILER) file (WRITE "${working_dir}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]])); sys.stdout.flush()\n") execute_process (COMMAND ${launcher} "${_${_PYTHON_PREFIX}_COMPILER}" ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS} - /target:exe /embed "${working_dir}/version.py" + /target:exe /embed /standalone "${working_dir}/version.py" WORKING_DIRECTORY "${working_dir}" OUTPUT_QUIET ERROR_QUIET @@ -2664,7 +2664,7 @@ if ("Compiler" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS) file (WRITE "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" "import sys; sys.stdout.write('.'.join([str(x) for x in sys.version_info[:3]])); sys.stdout.flush()\n") execute_process (COMMAND ${_${_PYTHON_PREFIX}_COMPILER_LAUNCHER} "${_${_PYTHON_PREFIX}_COMPILER}" ${_${_PYTHON_PREFIX}_IRON_PYTHON_COMPILER_ARCH_FLAGS} - /target:exe /embed "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" + /target:exe /embed /standalone "${_${_PYTHON_PREFIX}_VERSION_DIR}/version.py" WORKING_DIRECTORY "${_${_PYTHON_PREFIX}_VERSION_DIR}" OUTPUT_QUIET ERROR_QUIET) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 6617455643..c8c1810812 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -328,6 +328,36 @@ if(BUILD_TESTING) endif() endif() + if(CMake_TEST_FindPython) + set(CMake_TEST_FindPython2 TRUE) + set(CMake_TEST_FindPython3 TRUE) + endif() + if(CMake_TEST_FindPython_SABIModule) + set(CMake_TEST_FindPython2_SABIModule TRUE) + set(CMake_TEST_FindPython3_SABIModule TRUE) + endif() + if(CMake_TEST_FindPython_NumPy) + set(CMake_TEST_FindPython2_NumPy TRUE) + set(CMake_TEST_FindPython3_NumPy TRUE) + endif() + if(CMake_TEST_FindPython_Conda) + set(CMake_TEST_FindPython3_Conda TRUE) + endif() + if(CMake_TEST_FindPython_IronPython) + set(CMake_TEST_FindPython2_IronPython TRUE) + set(CMake_TEST_FindPython3_IronPython TRUE) + endif() + if(CMake_TEST_FindPython_PyPy) + set(CMake_TEST_FindPython2_PyPy TRUE) + set(CMake_TEST_FindPython3_PyPy TRUE) + endif() + if (CMake_TEST_FindPython2 AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") + set(CMake_TEST_FindPython2_SABIModule TRUE) + endif() + if (CMake_TEST_FindPython3 AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") + set(CMake_TEST_FindPython3_SABIModule TRUE) + endif() + # Use 1500 or CTEST_TEST_TIMEOUT for long test timeout value, # whichever is greater. set(CMAKE_LONG_TEST_TIMEOUT 1500) @@ -1522,44 +1552,6 @@ if(BUILD_TESTING) add_subdirectory(GoogleTest) endif() - if(CMake_TEST_FindPython) - set(CMake_TEST_FindPython2 TRUE) - set(CMake_TEST_FindPython3 TRUE) - endif() - if(CMake_TEST_FindPython_SABIModule) - set(CMake_TEST_FindPython2_SABIModule TRUE) - set(CMake_TEST_FindPython3_SABIModule TRUE) - endif() - if(CMake_TEST_FindPython_NumPy) - set(CMake_TEST_FindPython2_NumPyy TRUE) - set(CMake_TEST_FindPython3_NumPy TRUE) - endif() - if(CMake_TEST_FindPython_Conda) - set(CMake_TEST_FindPython3_Conda TRUE) - endif() - if(CMake_TEST_FindPython_IronPython) - set(CMake_TEST_FindPython2_IronPython TRUE) - set(CMake_TEST_FindPython3_IronPython TRUE) - endif() - if(CMake_TEST_FindPython_PyPy) - set(CMake_TEST_FindPython2_PyPy TRUE) - set(CMake_TEST_FindPython3_PyPy TRUE) - endif() - if(CMake_TEST_FindPython2 OR CMake_TEST_FindPython3 - OR CMake_TEST_FindPython2_SABIModule OR CMake_TEST_FindPython3_SABIModule - OR CMake_TEST_FindPython2_NumPy OR CMake_TEST_FindPython3_NumPy - OR CMake_TEST_FindPython3_Conda - OR CMake_TEST_FindPython2_IronPython OR CMake_TEST_FindPython3_IronPython - OR CMake_TEST_FindPython2_PyPy OR CMake_TEST_FindPython3_PyPy) - if (CMake_TEST_FindPython2 AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") - set(CMake_TEST_FindPython2_SABIModule TRUE) - endif() - if (CMake_TEST_FindPython3 AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") - set(CMake_TEST_FindPython3_SABIModule TRUE) - endif() - add_subdirectory(FindPython) - endif() - if(CMake_TEST_UseSWIG) add_subdirectory(UseSWIG) endif() diff --git a/Tests/FindPython/CMakeLists.txt b/Tests/FindPython/CMakeLists.txt deleted file mode 100644 index f275013f97..0000000000 --- a/Tests/FindPython/CMakeLists.txt +++ /dev/null @@ -1,955 +0,0 @@ -if(CMake_TEST_FindPython2) - add_test(NAME FindPython.Python2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.LOCATION" - ${build_generator_args} - --build-project TestPython2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.VERSION" - ${build_generator_args} - --build-project TestPython2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python2.Development.Module COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2Module" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2Module" - ${build_generator_args} - --build-project TestPython2Module - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python2Fail COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2Fail" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2Fail" - ${build_generator_args} - --build-project TestPython2Fail - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - set_tests_properties(FindPython.Python2Fail PROPERTIES - PASS_REGULAR_EXPRESSION "Could NOT find Python2 \\(missing: foobar\\)") - - add_test(NAME FindPython.Python.V2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.LOCATION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.V2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.VERSION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python2.ExactVersion.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.ExactVersion.LOCATION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_MAJOR_VERSION=2 - -DPython_REQUESTED_VERSION=2.1.2 - -DPython2_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python2.ExactVersion.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.ExactVersion.VERSION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_MAJOR_VERSION=2 - -DPython_REQUESTED_VERSION=2.1.2 - -DPython2_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python.V2.ExactVersion.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.ExactVersion.LOCATION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_REQUESTED_VERSION=2.1.2 - -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.V2.ExactVersion.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.ExactVersion.VERSION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_REQUESTED_VERSION=2.1.2 - -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python2.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python2 -DPython_REQUESTED_VERSION=2 - -DPython2_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.Python2.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python2 -DPython_REQUESTED_VERSION=2 - -DPython2_FIND_STRATEGY=VERSION - ) - add_test(NAME FindPython.Python.V2.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python -DPython_REQUESTED_VERSION=2 - -DPython_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.Python.V2.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python -DPython_REQUESTED_VERSION=2 - -DPython_FIND_STRATEGY=VERSION - ) - - add_test(NAME FindPython.Python2Embedded COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2Embedded" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2Embedded" - ${build_generator_args} - --build-project TestPython2Embedded - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Python2.LOCATION FindPython.Python2.VERSION - FindPython.Python2.Development.Module FindPython.Python2Fail - FindPython.Python.V2.LOCATION FindPython.Python.V2.VERSION - FindPython.Python2.ExactVersion.LOCATION FindPython.Python2.ExactVersion.VERSION - FindPython.Python.V2.ExactVersion.LOCATION FindPython.Python.V2.ExactVersion.VERSION - FindPython.Python2.VersionRange.LOCATION FindPython.Python2.VersionRange.VERSION - FindPython.Python.V2.VersionRange.LOCATION FindPython.Python.V2.VersionRange.VERSION - FindPython.Python2Embedded - APPEND PROPERTY LABELS Python2) -endif() - -if(CMake_TEST_FindPython3) - add_test(NAME FindPython.Python3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.LOCATION" - ${build_generator_args} - --build-project TestPython3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.VERSION" - ${build_generator_args} - --build-project TestPython3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python3.Development.Module COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3Module" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3Module" - ${build_generator_args} - --build-project TestPython3Module - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python3Fail COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3Fail" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3Fail" - ${build_generator_args} - --build-project TestPython3Fail - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - set_tests_properties(FindPython.Python3Fail PROPERTIES - PASS_REGULAR_EXPRESSION "Could NOT find Python3 \\(missing: foobar\\)") - - add_test(NAME FindPython.Python.V3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.LOCATION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.V3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.VERSION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python3.ExactVersion.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.ExactVersion.LOCATION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_MAJOR_VERSION=3 - -DPython_REQUESTED_VERSION=3.1.2 - -DPython3_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python3.ExactVersion.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.ExactVersion.VERSION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_MAJOR_VERSION=3 - -DPython_REQUESTED_VERSION=3.1.2 - -DPython3_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.V3.ExactVersion.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.ExactVersion.LOCATION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_REQUESTED_VERSION=3.1.2 - -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.V3.ExactVersion.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.ExactVersion.VERSION" - ${build_generator_args} - --build-project TestExactVersion - --build-options ${build_options} -DPython_REQUESTED_VERSION=3.1.2 - -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.Python3.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python3 -DPython_REQUESTED_VERSION=3 - -DPython3_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.Python3.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python3 -DPython_REQUESTED_VERSION=3 - -DPython3_FIND_STRATEGY=VERSION - ) - add_test(NAME FindPython.Python.V3.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python -DPython_REQUESTED_VERSION=3 - -DPython_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.Python.V3.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python -DPython_REQUESTED_VERSION=3 - -DPython_FIND_STRATEGY=VERSION - ) - - add_test(NAME FindPython.VirtualEnv COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VirtualEnv" - "${CMake_BINARY_DIR}/Tests/FindPython/VirtualEnv" - ${build_generator_args} - --build-project TestVirtualEnv - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - if(NOT CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "4.8") - add_test(NAME FindPython.Python3Embedded COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3Embedded" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3Embedded" - ${build_generator_args} - --build-project TestPython3Embedded - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - endif() - - add_test(NAME FindPython.RequiredArtifacts COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts" - ${build_generator_args} - --build-project TestRequiredArtifacts - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython3_SABIModule=${CMake_TEST_FindPython3_SABIModule}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.ArtifactsInteractive.ON COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ArtifactsInteractive" - "${CMake_BINARY_DIR}/Tests/FindPython/ArtifactsInteractive.ON" - ${build_generator_args} - --build-project TestArtifactsScope - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}" - "-DPython3_ARTIFACTS_INTERACTIVE=ON" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.ArtifactsInteractive.OFF COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ArtifactsInteractive" - "${CMake_BINARY_DIR}/Tests/FindPython/ArtifactsInteractive.OFF" - ${build_generator_args} - --build-project TestArtifactsScope - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}" - "-DPython3_ARTIFACTS_INTERACTIVE=OFF" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.CustomFailureMessage COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage" - ${build_generator_args} - --build-project TestCustomFailureMessage - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.DifferentComponents COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/DifferentComponents" - "${CMake_BINARY_DIR}/Tests/FindPython/DifferentComponents" - ${build_generator_args} - --build-project DifferentComponents - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Python3.LOCATION FindPython.Python3.VERSION - FindPython.Python3.Development.Module FindPython.Python3Fail - FindPython.Python.V3.LOCATION FindPython.Python.V3.VERSION - FindPython.Python3.ExactVersion.LOCATION FindPython.Python3.ExactVersion.VERSION - FindPython.Python.V3.ExactVersion.LOCATION FindPython.Python.V3.ExactVersion.VERSION - FindPython.Python3.VersionRange.LOCATION FindPython.Python3.VersionRange.VERSION - FindPython.Python.V3.VersionRange.LOCATION FindPython.Python.V3.VersionRange.VERSION - FindPython.VirtualEnv FindPython.RequiredArtifacts - FindPython.ArtifactsInteractive.ON FindPython.ArtifactsInteractive.OFF - FindPython.CustomFailureMessage FindPython.DifferentComponents - APPEND PROPERTY LABELS Python3) - if(TEST FindPython.Python3Embedded) - set_property(TEST FindPython.Python3Embedded APPEND PROPERTY LABELS Python3) - endif() - - if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - add_test(NAME FindPython.UnversionedNames COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/UnversionedNames" - "${CMake_BINARY_DIR}/Tests/FindPython/UnversionedNames" - ${build_generator_args} - --build-project UnversionedNames - --build-options ${build_options} - ) - set_property(TEST FindPython.UnversionedNames APPEND PROPERTY LABELS Python3) - endif() -endif() - -if(CMake_TEST_FindPython2 OR CMake_TEST_FindPython3) - add_test(NAME FindPython.Python.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.LOCATION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Python.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python" - "${CMake_BINARY_DIR}/Tests/FindPython/Python.VERSION" - ${build_generator_args} - --build-project TestPython - --build-options ${build_options} -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - if (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") - add_test(NAME FindPython.Interpreter.SOABI COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/SOABI" - "${CMake_BINARY_DIR}/Tests/FindPython/SOABI.Interpreter" - ${build_generator_args} - --build-project TestSOABI - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython_COMPONENT=Interpreter" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Development.SOABI COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/SOABI" - "${CMake_BINARY_DIR}/Tests/FindPython/SOABI.Development" - ${build_generator_args} - --build-project TestSOABI - --build-options ${build_options} "-Dbuild_generator_args=${build_generator_args}" - "-DCMake_SOURCE_DIR=${CMake_SOURCE_DIR}" - "-DCMake_BINARY_DIR=${CMake_BINARY_DIR}" - "-DCMake_TEST_FindPython_COMPONENT=Development" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Interpreter.SOABI FindPython.Development.SOABI - APPEND PROPERTY LABELS Python2 Python3) - endif() - - add_test(NAME FindPython.MultiplePackages COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/MultiplePackages" - "${CMake_BINARY_DIR}/Tests/FindPython/MultiplePackages" - ${build_generator_args} - --build-project TestMultiplePackages - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Python.LOCATION FindPython.Python.VERSION FindPython.MultiplePackages - APPEND PROPERTY LABELS Python2 Python3) -endif() - -if(CMake_TEST_FindPython2 AND CMake_TEST_FindPython3) - add_test(NAME FindPython.ArtifactsPrefix COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/ArtifactsPrefix" - "${CMake_BINARY_DIR}/Tests/FindPython/ArtifactsPrefix" - ${build_generator_args} - --build-project TestArtifactsPrefix - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.ArtifactsPrefix - APPEND PROPERTY LABELS Python2 Python3) -endif() - -if(CMake_TEST_FindPython2_SABIModule) - add_test(NAME FindPython.Python2.Development.SABIModule COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python2SABIModule" - "${CMake_BINARY_DIR}/Tests/FindPython/Python2SABIModule" - ${build_generator_args} - --build-project TestPython2SABIModule - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - set_tests_properties(FindPython.Python2.Development.SABIModule PROPERTIES - PASS_REGULAR_EXPRESSION "Could NOT find Python2 \\(missing: .*Development\\.SABIModule") - set_property(TEST FindPython.Python2.Development.SABIModule APPEND PROPERTY LABELS Python2) -endif() - -if(CMake_TEST_FindPython3_SABIModule) - # Use exclusively Release configuration because Debug is, on Windows with MSVC, - # unusable with SABI: Python force link with debug version of full versioned library rather than - # the stable ABI one. - add_test(NAME FindPython.Python3.Development.SABIModule COMMAND - ${CMAKE_CTEST_COMMAND} -C Release - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Python3SABIModule" - "${CMake_BINARY_DIR}/Tests/FindPython/Python3SABIModule" - ${build_generator_args} - --build-project TestPython3SABIModule - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C Release - ) - set_property(TEST FindPython.Python3.Development.SABIModule APPEND PROPERTY LABELS Python3) -endif() - -if(CMake_TEST_FindPython2_NumPy OR CMake_TEST_FindPython3_NumPy) - add_test(NAME FindPython.NumPy COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/NumPy" - "${CMake_BINARY_DIR}/Tests/FindPython/NumPy" - ${build_generator_args} - --build-project TestNumPy - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.NumPyOnly COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/NumPyOnly" - "${CMake_BINARY_DIR}/Tests/FindPython/NumPyOnly" - ${build_generator_args} - --build-project TestNumPyOnly - --build-options ${build_options} - ) - - set_property(TEST FindPython.NumPy FindPython.NumPyOnly APPEND PROPERTY LABELS Python2 Python3) -endif() - -if(CMake_TEST_FindPython3_Conda) - add_test(NAME FindPython.VirtualEnvConda COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VirtualEnvConda" - "${CMake_BINARY_DIR}/Tests/FindPython/VirtualEnvConda" - ${build_generator_args} - --build-project TestVirtualEnvConda - --build-options ${build_options} - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - set_property(TEST FindPython.VirtualEnvConda APPEND PROPERTY LABELS Python3) -endif() - -if (CMake_TEST_FindPython2 AND CMake_TEST_FindPython2_IronPython) - add_test(NAME FindPython.Implementation.CPython2 COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" - "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.CPython2" - ${build_generator_args} - --build-project TestImplementationCPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_REQUESTED_IMPLEMENTATIONS=CPython - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Implementation.IronPython2 COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" - "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.IronPython2" - ${build_generator_args} - --build-project TestImplementationIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_REQUESTED_IMPLEMENTATION=IronPython - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Implementation.CPython2 FindPython.Implementation.IronPython2 - APPEND PROPERTY LABELS Python2) -endif() - -if (CMake_TEST_FindPython3 AND CMake_TEST_FindPython3_IronPython) - add_test(NAME FindPython.Implementation.CPython3 COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" - "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.CPython3" - ${build_generator_args} - --build-project TestImplementationCPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_REQUESTED_IMPLEMENTATIONS=CPython - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.Implementation.IronPython3 COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" - "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.IronPython3" - ${build_generator_args} - --build-project TestImplementationIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_REQUESTED_IMPLEMENTATION=IronPython - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.Implementation.CPython3 FindPython.Implementation.IronPython3 - APPEND PROPERTY LABELS Python3) -endif() - -if(CMake_TEST_FindPython2_IronPython) - add_test(NAME FindPython.IronPython2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython2" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython2.LOCATION" - ${build_generator_args} - --build-project TestIronPython2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.IronPython2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython2" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython2.VERSION" - ${build_generator_args} - --build-project TestIronPython2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.IronPython.V2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.V2.LOCATION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.IronPython.V2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.V2.VERSION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.IronPython2.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython2.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python2 -DPython_REQUESTED_VERSION=2 - -DPython2_FIND_IMPLEMENTATIONS=IronPython - -DPython2_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.IronPython2.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython2.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python2 -DPython_REQUESTED_VERSION=2 - -DPython2_FIND_IMPLEMENTATIONS=IronPython - -DPython2_FIND_STRATEGY=VERSION - ) - - set_property(TEST FindPython.IronPython2.LOCATION FindPython.IronPython2.VERSION - FindPython.IronPython.V2.LOCATION FindPython.IronPython.V2.VERSION - FindPython.IronPython2.VersionRange.LOCATION FindPython.IronPython2.VersionRange.VERSION - APPEND PROPERTY LABELS Python2) -endif() - -if(CMake_TEST_FindPython3_IronPython) - add_test(NAME FindPython.IronPython3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython3" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython3.LOCATION" - ${build_generator_args} - --build-project TestIronPython3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.IronPython3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython3" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython3.VERSION" - ${build_generator_args} - --build-project TestIronPython3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.IronPython.V3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.V3.LOCATION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.IronPython.V3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.V3.VERSION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.IronPython3.VersionRange.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython3.VersionRange.LOCATION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python3 -DPython_REQUESTED_VERSION=3 - -DPython3_FIND_IMPLEMENTATIONS=IronPython - -DPython3_FIND_STRATEGY=LOCATION - ) - add_test(NAME FindPython.IronPython3.VersionRange.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/VersionRange" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython3.VersionRange.VERSION" - ${build_generator_args} - --build-project TestVersionRange - --build-options ${build_options} -DPython=Python3 -DPython_REQUESTED_VERSION=3 - -DPython3_FIND_IMPLEMENTATIONS=IronPython - -DPython3_FIND_STRATEGY=VERSION - ) - - set_property(TEST FindPython.IronPython3.LOCATION FindPython.IronPython3.VERSION - FindPython.IronPython.V3.LOCATION FindPython.IronPython.V3.VERSION - FindPython.IronPython3.VersionRange.LOCATION FindPython.IronPython3.VersionRange.VERSION - APPEND PROPERTY LABELS Python3) -endif() - -if(CMake_TEST_FindPython2_IronPython OR CMake_TEST_FindPython3_IronPython) - add_test(NAME FindPython.IronPython.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.LOCATION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.IronPython.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/IronPython" - "${CMake_BINARY_DIR}/Tests/FindPython/IronPython.VERSION" - ${build_generator_args} - --build-project TestIronPython - --build-options ${build_options} -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.IronPython.LOCATION FindPython.IronPython.VERSION - APPEND PROPERTY LABELS Python2 Python3) -endif() - -if(CMake_TEST_FindPython2_PyPy) - add_test(NAME FindPython.PyPy2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy2" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy2.LOCATION" - ${build_generator_args} - --build-project TestPyPy2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.PyPy2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy2" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy2.VERSION" - ${build_generator_args} - --build-project TestPyPy2 - --build-options ${build_options} -DPython2_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.PyPy.V2.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.V2.LOCATION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.PyPy.V2.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.V2.VERSION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_REQUESTED_VERSION=2 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.PyPy2.LOCATION FindPython.PyPy2.VERSION - FindPython.PyPy.V2.LOCATION FindPython.PyPy.V2.VERSION - APPEND PROPERTY LABELS Python2) -endif() - -if(CMake_TEST_FindPython3_PyPy) - add_test(NAME FindPython.PyPy3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy3" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy3.LOCATION" - ${build_generator_args} - --build-project TestPyPy3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.PyPy3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy3" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy3.VERSION" - ${build_generator_args} - --build-project TestPyPy3 - --build-options ${build_options} -DPython3_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - add_test(NAME FindPython.PyPy.V3.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.V3.LOCATION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.PyPy.V3.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.V3.VERSION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_REQUESTED_VERSION=3 -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.PyPy3.LOCATION FindPython.PyPy3.VERSION - FindPython.PyPy.V3.LOCATION FindPython.PyPy.V3.VERSION - APPEND PROPERTY LABELS Python3) -endif() - -if(CMake_TEST_FindPython2_PyPy OR CMake_TEST_FindPython3_PyPy) - add_test(NAME FindPython.PyPy.LOCATION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.LOCATION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_FIND_STRATEGY=LOCATION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.PyPy.VERSION COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/PyPy" - "${CMake_BINARY_DIR}/Tests/FindPython/PyPy.VERSION" - ${build_generator_args} - --build-project TestPyPy - --build-options ${build_options} -DPython_FIND_STRATEGY=VERSION - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - - set_property(TEST FindPython.PyPy.LOCATION FindPython.PyPy.VERSION - APPEND PROPERTY LABELS Python2 Python3) -endif() diff --git a/Tests/FindPython/CustomFailureMessage/CMakeLists.txt b/Tests/FindPython/CustomFailureMessage/CMakeLists.txt deleted file mode 100644 index e9d14f5d53..0000000000 --- a/Tests/FindPython/CustomFailureMessage/CMakeLists.txt +++ /dev/null @@ -1,79 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestCustomFailureMessage LANGUAGES NONE) - -include(CTest) - -add_test(NAME FindPython.CustomFailureMessage.Interpreter COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage/Interpreter" - ${build_generator_args} - --build-project TestCustomFailureMessage.Check - --build-options "-DCHECK_COMPONENTS=Interpreter" - "-DPython3_EXECUTABLE=/not/found/interpreter" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -set_tests_properties(FindPython.CustomFailureMessage.Interpreter PROPERTIES - PASS_REGULAR_EXPRESSION "Reason given by package:.+Interpreter: Cannot run the interpreter") - -add_test(NAME FindPython.CustomFailureMessage.Library COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage/Library" - ${build_generator_args} - --build-project TestCustomFailureMessage.Check - --build-options "-DCHECK_COMPONENTS=Development" - "-DPython3_LIBRARY=/not/found/library" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -set_tests_properties(FindPython.CustomFailureMessage.Library PROPERTIES - PASS_REGULAR_EXPRESSION "Reason given by package:.+Development: Cannot find the library") - -add_test(NAME FindPython.CustomFailureMessage.Include COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage/Include" - ${build_generator_args} - --build-project TestCustomFailureMessage.Check - --build-options "-DCHECK_COMPONENTS=Development" - "-DPython3_INCLUDE_DIR=/not/found/include" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -set_tests_properties(FindPython.CustomFailureMessage.Include PROPERTIES - PASS_REGULAR_EXPRESSION "Reason given by package:.+Development: Cannot find the directory") - -add_test(NAME FindPython.CustomFailureMessage.Multiple COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage/Multiple" - ${build_generator_args} - --build-project TestCustomFailureMessage.Check - --build-options "-DCHECK_COMPONENTS=Interpreter;Development" - "-DPython3_EXECUTABLE=/not/found/interpreter" - "-DPython3_LIBRARY=/not/found/library" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -set_tests_properties(FindPython.CustomFailureMessage.Multiple PROPERTIES - PASS_REGULAR_EXPRESSION "Reason given by package:.+Interpreter: Cannot run the interpreter.+Development: Cannot find the library") - - -if (CMake_TEST_FindPython3_NumPy) - add_test(NAME FindPython.CustomFailureMessage.NumPy COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/CustomFailureMessage/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/CustomFailureMessage/NumPy" - ${build_generator_args} - --build-project TestCustomFailureMessage.Check - --build-options "-DCHECK_COMPONENTS=Interpreter;Development;NumPy" - "-DPython3_NumPy_INCLUDE_DIR=/not/found/numpy/include" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - set_tests_properties(FindPython.CustomFailureMessage.NumPy PROPERTIES - PASS_REGULAR_EXPRESSION "Reason given by package:.+NumPy: Cannot find the directory") -endif() diff --git a/Tests/FindPython/CustomFailureMessage/Check/CMakeLists.txt b/Tests/FindPython/CustomFailureMessage/Check/CMakeLists.txt deleted file mode 100644 index d72d258601..0000000000 --- a/Tests/FindPython/CustomFailureMessage/Check/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestCustomFailureMessage.Check LANGUAGES NONE) - -find_package (Python3 REQUIRED COMPONENTS ${CHECK_COMPONENTS}) diff --git a/Tests/FindPython/ExactVersion/CMakeLists.txt b/Tests/FindPython/ExactVersion/CMakeLists.txt deleted file mode 100644 index e3bb43b8a8..0000000000 --- a/Tests/FindPython/ExactVersion/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestExactVersion LANGUAGES C) - -find_package(Python${Python_MAJOR_VERSION} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development) -if(NOT Python${Python_MAJOR_VERSION}_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") -endif() -if(NOT Python${Python_MAJOR_VERSION}_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Interpreter") -endif() -if(NOT Python${Python_MAJOR_VERSION}_Development_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Development") -endif() - -if(NOT TARGET Python${Python_MAJOR_VERSION}::Interpreter) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Interpreter not found") -endif() - -if(NOT TARGET Python${Python_MAJOR_VERSION}::Python) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Python not found") -endif() -if(NOT TARGET Python${Python_MAJOR_VERSION}::Module) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Module not found") -endif() - - -# reset artifacts and second search with exact version already founded -unset(Python${Python_MAJOR_VERSION}_EXECUTABLE) -unset(_Python${Python_MAJOR_VERSION}_EXECUTABLE CACHE) - -unset(_Python${Python_MAJOR_VERSION}_LIBRARY_RELEASE CACHE) -unset(_Python${Python_MAJOR_VERSION}_INCLUDE_DIR CACHE) - -set(Python_REQUESTED_VERSION ${Python${Python_MAJOR_VERSION}_VERSION}) -find_package(Python${Python_MAJOR_VERSION} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter Development) -if(NOT Python${Python_MAJOR_VERSION}_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") -endif() -if(NOT Python${Python_MAJOR_VERSION}_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Interpreter") -endif() -if(NOT Python${Python_MAJOR_VERSION}_Development_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Development") -endif() - -if(NOT TARGET Python${Python_MAJOR_VERSION}::Interpreter) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Interpreter not found") -endif() - -if(NOT TARGET Python${Python_MAJOR_VERSION}::Python) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Python not found") -endif() -if(NOT TARGET Python${Python_MAJOR_VERSION}::Module) - message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Module not found") -endif() diff --git a/Tests/FindPython/IronPython/CMakeLists.txt b/Tests/FindPython/IronPython/CMakeLists.txt deleted file mode 100644 index 3c28527d97..0000000000 --- a/Tests/FindPython/IronPython/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestIronPython LANGUAGES NONE) - -set (Python_FIND_IMPLEMENTATIONS IronPython) - -find_package(Python ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Compiler) -if (NOT Python_FOUND) - message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") -endif() - -if (NOT Python_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python Interpreter") -endif() -if (NOT Python_INTERPRETER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous interpreter ID (${Python_INTERPRETER_ID})") -endif() - -if (NOT Python_Compiler_FOUND) - message (FATAL_ERROR "Failed to find Python Compiler") -endif() -if (NOT Python_COMPILER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous compiler ID (${Python_COMPILER_ID})") -endif() - -if(NOT TARGET Python::Interpreter) - message(SEND_ERROR "Python::Interpreter not found") -endif() -if(NOT TARGET Python::Compiler) - message(SEND_ERROR "Python::Interpreter not found") -endif() diff --git a/Tests/FindPython/IronPython2/CMakeLists.txt b/Tests/FindPython/IronPython2/CMakeLists.txt deleted file mode 100644 index 0a4dcb459f..0000000000 --- a/Tests/FindPython/IronPython2/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestIronPython2 LANGUAGES NONE) - -set (Python2_FIND_IMPLEMENTATIONS "IronPython") - -find_package(Python2 COMPONENTS Interpreter Compiler) -if (NOT Python2_FOUND) - message (FATAL_ERROR "Failed to find Python 2") -endif() - -if (NOT Python2_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python 2 Interpreter") -endif() -if (NOT Python2_INTERPRETER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous interpreter ID (${Python2_INTERPRETER_ID})") -endif() - -if (NOT Python2_Compiler_FOUND) - message (FATAL_ERROR "Failed to find Python 2 Compiler") -endif() -if (NOT Python2_COMPILER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous compiler ID (${Python2_COMPILER_ID})") -endif() - -if(NOT TARGET Python2::Interpreter) - message(SEND_ERROR "Python2::Interpreter not found") -endif() -if(NOT TARGET Python2::Compiler) - message(SEND_ERROR "Python2::Compiler not found") -endif() diff --git a/Tests/FindPython/IronPython3/CMakeLists.txt b/Tests/FindPython/IronPython3/CMakeLists.txt deleted file mode 100644 index f39b84dca6..0000000000 --- a/Tests/FindPython/IronPython3/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestIronPython3 LANGUAGES NONE) - -set (Python3_FIND_IMPLEMENTATIONS "IronPython") - -find_package(Python3 COMPONENTS Interpreter Compiler) -if (NOT Python3_FOUND) - message (FATAL_ERROR "Failed to find Python 3") -endif() - -if (NOT Python3_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python 3 Interpreter") -endif() -if (NOT Python3_INTERPRETER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous interpreter ID (${Python3_INTERPRETER_ID})") -endif() - -if (NOT Python3_Compiler_FOUND) - message (FATAL_ERROR "Failed to find Python 3 Compiler") -endif() -if (NOT Python3_COMPILER_ID STREQUAL "IronPython") - message (FATAL_ERROR "Erroneous compiler ID (${Python3_COMPILER_ID})") -endif() - -if(NOT TARGET Python3::Interpreter) - message(SEND_ERROR "Python3::Interpreter not found") -endif() -if(NOT TARGET Python3::Compiler) - message(SEND_ERROR "Python3::Compiler not found") -endif() diff --git a/Tests/FindPython/NumPyOnly/CMakeLists.txt b/Tests/FindPython/NumPyOnly/CMakeLists.txt deleted file mode 100644 index db7e68e255..0000000000 --- a/Tests/FindPython/NumPyOnly/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestNumPyOnly LANGUAGES C) - -if(CMake_TEST_FindPython2_NumPy) - - find_package(Python2 REQUIRED COMPONENTS NumPy) - - Python2_add_library (arraytest2 MODULE ../NumPy/arraytest.c) - target_compile_definitions (arraytest2 PRIVATE PYTHON2) - target_link_libraries (arraytest2 PRIVATE Python2::NumPy) - -endif() - - -if(CMake_TEST_FindPython3_NumPy) - -find_package(Python3 REQUIRED COMPONENTS NumPy) - -Python3_add_library (arraytest3 MODULE ../NumPy/arraytest.c) -target_compile_definitions (arraytest3 PRIVATE PYTHON3) -target_link_libraries (arraytest3 PRIVATE Python3::NumPy) - -endif() diff --git a/Tests/FindPython/PyPy/CMakeLists.txt b/Tests/FindPython/PyPy/CMakeLists.txt deleted file mode 100644 index 2e8bc5871f..0000000000 --- a/Tests/FindPython/PyPy/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPyPy LANGUAGES C) - -set (Python_FIND_IMPLEMENTATIONS PyPy) - -find_package(Python ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development) -if (NOT Python_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy ${Python_REQUESTED_VERSION}") -endif() - -if (NOT Python_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy Interpreter") -endif() -if (NOT Python_INTERPRETER_ID STREQUAL "PyPy") - message (FATAL_ERROR "Erroneous interpreter ID (${Python_INTERPRETER_ID})") -endif() - -if (NOT Python_Development.Module_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy ${Python_REQUESTED_VERSION} Development.Module") -endif() -if (NOT Python_Development.Embed_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy ${Python_REQUESTED_VERSION} Development.Embed") -endif() -if (NOT Python_Development_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy ${Python_REQUESTED_VERSION} Development") -endif() - -if(NOT TARGET Python::Interpreter) - message(SEND_ERROR "Python::Interpreter not found") -endif() -if(NOT TARGET Python::Module) - message(SEND_ERROR "Python::Module not found") -endif() -if(NOT TARGET Python::Python) - message(SEND_ERROR "Python::Python not found") -endif() diff --git a/Tests/FindPython/PyPy2/CMakeLists.txt b/Tests/FindPython/PyPy2/CMakeLists.txt deleted file mode 100644 index 2d89531b20..0000000000 --- a/Tests/FindPython/PyPy2/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPyPy2 LANGUAGES C) - -set (Python2_FIND_IMPLEMENTATIONS "PyPy") - -find_package(Python2 COMPONENTS Interpreter Development) -if (NOT Python2_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 2") -endif() - -if (NOT Python2_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 2 Interpreter") -endif() -if (NOT Python2_INTERPRETER_ID STREQUAL "PyPy") - message (FATAL_ERROR "Erroneous interpreter ID (${Python2_INTERPRETER_ID})") -endif() - -if (NOT Python2_Development.Module_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 2 Development.Module") -endif() -if (NOT Python2_Development.Embed_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 2 Development.Embed") -endif() -if (NOT Python2_Development_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 2 Development") -endif() - -if(NOT TARGET Python2::Interpreter) - message(SEND_ERROR "Python2::Interpreter not found") -endif() -if(NOT TARGET Python2::Module) - message(SEND_ERROR "Python2::Module not found") -endif() -if(NOT TARGET Python2::Python) - message(SEND_ERROR "Python2::Python not found") -endif() diff --git a/Tests/FindPython/PyPy3/CMakeLists.txt b/Tests/FindPython/PyPy3/CMakeLists.txt deleted file mode 100644 index 93388a030c..0000000000 --- a/Tests/FindPython/PyPy3/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPyPy3 LANGUAGES C) - -set (Python3_FIND_IMPLEMENTATIONS "PyPy") - -find_package(Python3 COMPONENTS Interpreter Development) -if (NOT Python3_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 3") -endif() - -if (NOT Python3_Interpreter_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 3 Interpreter") -endif() -if (NOT Python3_INTERPRETER_ID STREQUAL "PyPy") - message (FATAL_ERROR "Erroneous interpreter ID (${Python3_INTERPRETER_ID})") -endif() - -if (NOT Python3_Development.Module_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 3 Development.Module") -endif() -if (NOT Python3_Development.Embed_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 3 Development.Embed") -endif() -if (NOT Python3_Development_FOUND) - message (FATAL_ERROR "Failed to find Python PyPy 3 Development") -endif() - -if(NOT TARGET Python3::Interpreter) - message(SEND_ERROR "Python3::Interpreter not found") -endif() -if(NOT TARGET Python3::Module) - message(SEND_ERROR "Python3::Module not found") -endif() -if(NOT TARGET Python3::Python) - message(SEND_ERROR "Python3::Python not found") -endif() diff --git a/Tests/FindPython/Python2Fail/CMakeLists.txt b/Tests/FindPython/Python2Fail/CMakeLists.txt deleted file mode 100644 index 7f7b9067cc..0000000000 --- a/Tests/FindPython/Python2Fail/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython2Fail C) - -include(CTest) - -find_package(Python2 REQUIRED COMPONENTS Interpreter Development foobar) - -Python2_add_library (spam2 MODULE ../spam.c) -target_compile_definitions (spam2 PRIVATE PYTHON2) - -add_test (NAME python2_spam2 - COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" - "${Python2_EXECUTABLE}" -c "import spam2; spam2.system(\"cd\")") diff --git a/Tests/FindPython/Python3Fail/CMakeLists.txt b/Tests/FindPython/Python3Fail/CMakeLists.txt deleted file mode 100644 index 810375bff3..0000000000 --- a/Tests/FindPython/Python3Fail/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython3Fail C) - -include(CTest) - -find_package(Python3 REQUIRED COMPONENTS Interpreter Development foobar) - -Python3_add_library (spam3 MODULE ../spam.c) -target_compile_definitions (spam3 PRIVATE PYTHON3) - -add_test (NAME python3_spam3 - COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" - "${Python3_EXECUTABLE}" -c "import spam3; spam3.system(\"cd\")") diff --git a/Tests/FindPython/RequiredArtifacts/CMakeLists.txt b/Tests/FindPython/RequiredArtifacts/CMakeLists.txt deleted file mode 100644 index 8be39bf18a..0000000000 --- a/Tests/FindPython/RequiredArtifacts/CMakeLists.txt +++ /dev/null @@ -1,196 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestRequiredArtifacts LANGUAGES 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_LIBRARY "${Python2_LIBRARY_RELEASE}") - set(USER_INCLUDE_DIR "${Python2_INCLUDE_DIRS}") -else() - set(USER_LIBRARY "/path/to/invalid${CMAKE_C_LINK_LIBRARY_SUFFIX}") - set(USER_INCLUDE_DIR "/path/to/invalid/dir") -endif() - -# check some combinations for modules search without interpreter -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() - -block(SCOPE_FOR VARIABLES) - find_package(Python3 REQUIRED COMPONENTS Development.Module 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 (NOT Python3_Development.Module_FOUND) - message (FATAL_ERROR "Python 3, COMPONENT 'Development.Module' not found") - endif() - if (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 AND WIN32) - 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() - - -add_test(NAME FindPython.RequiredArtifacts.Interpreter.VALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Interpreter.VALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=TRUE -DCHECK_INTERPRETER=ON - "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -add_test(NAME FindPython.RequiredArtifacts.Interpreter.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Interpreter.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_INTERPRETER=ON - "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}-bad${CMAKE_EXECUTABLE_SUFFIX}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - -add_test(NAME FindPython.RequiredArtifacts.Library.VALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Library.VALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=TRUE -DCHECK_LIBRARY=ON - "-DPython3_LIBRARY=${Python3_LIBRARY_RELEASE}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -add_test(NAME FindPython.RequiredArtifacts.Library.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Library.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_LIBRARY=ON - "-DPython3_LIBRARY=${USER_LIBRARY}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - -add_test(NAME FindPython.RequiredArtifacts.Include.VALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Include.VALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=TRUE -DCHECK_INCLUDE=ON - "-DPython3_INCLUDE_DIR=${Python3_INCLUDE_DIRS}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -add_test(NAME FindPython.RequiredArtifacts.Include.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Include.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_INCLUDE=ON - "-DPython3_INCLUDE_DIR=${USER_INCLUDE_DIR}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - -add_test(NAME FindPython.RequiredArtifacts.Interpreter-Library.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Interpreter-Library.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_INTERPRETER=ON -DCHECK_LIBRARY=ON - "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" - "-DPython3_LIBRARY=${USER_LIBRARY}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - -add_test(NAME FindPython.RequiredArtifacts.Library-Include.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/Library-Include.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_LIBRARY=ON -DCHECK_INCLUDE=ON - "-DPython3_LIBRARY=${Python3_LIBRARY_RELEASE}" - "-DPython3_INCLUDE_DIR=${USER_INCLUDE_DIR}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - -if (CMake_TEST_FindPython3_SABIModule AND WIN32) - add_test(NAME FindPython.RequiredArtifacts.SABILibrary.VALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/SABILibrary.VALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=TRUE -DCHECK_SABI_LIBRARY=ON - "-DPython3_SABI_LIBRARY=${Python3_SABI_LIBRARY_RELEASE}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) - add_test(NAME FindPython.RequiredArtifacts.SABILibrary.INVALID COMMAND - ${CMAKE_CTEST_COMMAND} -C $ - --build-and-test - "${CMake_SOURCE_DIR}/Tests/FindPython/RequiredArtifacts/Check" - "${CMake_BINARY_DIR}/Tests/FindPython/RequiredArtifacts/SABILibrary.INVALID" - ${build_generator_args} - --build-project TestRequiredArtifacts.Check - --build-options -DPYTHON_IS_FOUND=FALSE -DCHECK_SABI_LIBRARY=ON - "-DPython3_SABI_LIBRARY=${USER_LIBRARY}" - --test-command ${CMAKE_CTEST_COMMAND} -V -C $ - ) -endif() diff --git a/Tests/FindPython/VersionRange/CMakeLists.txt b/Tests/FindPython/VersionRange/CMakeLists.txt deleted file mode 100644 index 957941d474..0000000000 --- a/Tests/FindPython/VersionRange/CMakeLists.txt +++ /dev/null @@ -1,64 +0,0 @@ -cmake_minimum_required (VERSION 3.18...3.19) - -project (TestVersionRange LANGUAGES C) - - -find_package (${Python} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter) -if (NOT ${Python}_FOUND) - message (FATAL_ERROR "Failed to find ${Python} ${Python_REQUESTED_VERSION}") -endif() - -if (Python_REQUESTED_VERSION VERSION_LESS 3.0) - set (IN_VERSION_RANGE 2.0...<3.0) - set (OUT_VERSION_RANGE 2.0...<${${Python}_VERSION}) -else() - set (IN_VERSION_RANGE 3.0...<4.0) - set (OUT_VERSION_RANGE 3.0...<${${Python}_VERSION}) -endif() - -function (FIND_PYTHON EXPECTED_VERSION RANGE) - macro (FIND_PYTHON_PACKAGE) - unset (_${Python}_EXECUTABLE CACHE) - unset (_${Python}_LIBRARY_RELEASE CACHE) - unset (_${Python}_INCLUDE_DIR CACHE) - unset (${Python}_FOUND) - - find_package (${Python} ${ARGV}) - endmacro() - - find_python_package(${RANGE} ${ARGN}) - - if (EXPECTED_VERSION STREQUAL "NONE") - while (${Python}_FOUND AND ${Python}_VERSION VERSION_GREATER ${Python_REQUESTED_VERSION}) - # Possible if multiple versions are installed - # Try with a different range - find_python_package(${Python_REQUESTED_VERSION}.0...<${${Python}_VERSION} ${ARGN}) - endwhile() - if (${Python}_FOUND) - message (SEND_ERROR "Unexpectedly found version: ${${Python}_VERSION} for '${Python} ${Python_REQUESTED_VERSION}.0...<${${Python}_VERSION} ${ARGN}'") - endif() - return() - endif() - - if (NOT ${Python}_FOUND) - message (SEND_ERROR "Not found: ${Python} ${RANGE} ${ARGN}") - elseif (NOT ${Python}_VERSION VERSION_EQUAL EXPECTED_VERSION) - message (SEND_ERROR "Wrong version: ${${Python}_VERSION} for '${Python} ${RANGE} ${ARGN}'") - endif() -endfunction() - -find_python (${${Python}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Interpreter) -if (${Python}_FIND_IMPLEMENTATIONS STREQUAL "IronPython") - find_python (${${Python}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Compiler) -else() - find_python (${${Python}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Development) -endif() - -find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Interpreter) -if (${Python}_FIND_IMPLEMENTATIONS STREQUAL "IronPython") - find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Compiler) -else() - find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Development) -endif() - -find_python ("NONE" 5...6 COMPONENTS Interpreter) diff --git a/Tests/FindPython/VirtualEnv/CMakeLists.txt b/Tests/FindPython/VirtualEnv/CMakeLists.txt deleted file mode 100644 index 7837916670..0000000000 --- a/Tests/FindPython/VirtualEnv/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestVirtualEnv LANGUAGES NONE) - -include(CTest) - -find_package(Python3 REQUIRED COMPONENTS Interpreter) -if (NOT Python3_FOUND) - message (FATAL_ERROR "Failed to find Python 3") -endif() - -set (Python3_VIRTUAL_ENV "${CMAKE_CURRENT_BINARY_DIR}/py3venv") -file (REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/py3venv") - -execute_process (COMMAND "${Python3_EXECUTABLE}" -m venv "${Python3_VIRTUAL_ENV}" - RESULT_VARIABLE result - OUTPUT_VARIABLE outputs - ERROR_VARIABLE outputs) -if (result) - message (FATAL_ERROR "Fail to create virtual environment: ${outputs}") -endif() - -add_test(NAME FindPython3.VirtualEnvDefault - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=CONDA_PREFIX - "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvDefault.cmake") - -add_test(NAME FindPython3.VirtualEnvStandard - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=CONDA_PREFIX - "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvStandard.cmake") - -if(CMake_TEST_FindPython2) - add_test(NAME FindPython3.VirtualEnvOnly - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=CONDA_PREFIX - "VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake") - add_test(NAME FindPython3.UnsetVirtualEnvOnly - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=VIRTUAL_ENV - --unset=CONDA_PREFIX - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake") -endif() diff --git a/Tests/FindPython/VirtualEnvConda/CMakeLists.txt b/Tests/FindPython/VirtualEnvConda/CMakeLists.txt deleted file mode 100644 index 6482793ab5..0000000000 --- a/Tests/FindPython/VirtualEnvConda/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestVirtualEnvConda LANGUAGES NONE) - -include(CTest) - -find_program(CONDA_EXECUTABLE conda) -if (CONDA_EXECUTABLE EQUAL NOTFOUND) - message (FATAL_ERROR "Failed to find Conda") -endif() - -set (Python3_VIRTUAL_ENV "${CMAKE_CURRENT_BINARY_DIR}/condaenv") - -execute_process (COMMAND "${CONDA_EXECUTABLE}" create --no-default-packages --prefix "${Python3_VIRTUAL_ENV}" --yes python=3 - RESULT_VARIABLE result - OUTPUT_VARIABLE outputs - ERROR_VARIABLE outputs) -if (result) - message (FATAL_ERROR "Fail to create virtual environment: ${outputs}") -endif() - -add_test(NAME FindPython3.VirtualEnvDefaultConda - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=VIRTUAL_ENV - "CONDA_PREFIX=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvDefault.cmake") - -add_test(NAME FindPython3.VirtualEnvStandardConda - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=VIRTUAL_ENV - "CONDA_PREFIX=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvStandard.cmake") - -if(Cmake_TEST_FindPython2) - add_test(NAME FindPython3.VirtualEnvOnlyConda - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=VIRTUAL_ENV - "CONDA_PREFIX=${Python3_VIRTUAL_ENV}" - "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${Python3_VIRTUAL_ENV}" - -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake") - add_test(NAME FindPython3.UnsetVirtualEnvOnlyConda - COMMAND "${CMAKE_COMMAND}" -E env --unset=PYTHONHOME - --unset=CONDA_PREFIX - --unset=VIRTUAL_ENV - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/VirtualEnvOnly.cmake") -endif() diff --git a/Tests/FindPython/VirtualEnvConda/VirtualEnvDefault.cmake b/Tests/FindPython/VirtualEnvConda/VirtualEnvDefault.cmake deleted file mode 100644 index 8f56d007c7..0000000000 --- a/Tests/FindPython/VirtualEnvConda/VirtualEnvDefault.cmake +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -find_package (Python3 REQUIRED) - -if (NOT Python3_EXECUTABLE MATCHES "^${PYTHON3_VIRTUAL_ENV}/.+") - message (FATAL_ERROR "Fail to use virtual environment") -endif() diff --git a/Tests/FindPython/VirtualEnvConda/VirtualEnvOnly.cmake b/Tests/FindPython/VirtualEnvConda/VirtualEnvOnly.cmake deleted file mode 100644 index 9ae4975d6c..0000000000 --- a/Tests/FindPython/VirtualEnvConda/VirtualEnvOnly.cmake +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -# -# Virtual environment is defined for python3 -# Trying to find a python2 using only virtual environment -# It is expecting to fail if a virtual environment is active and to success otherwise. -# -set (Python2_FIND_VIRTUALENV ONLY) -find_package (Python2 QUIET) - -if (PYTHON3_VIRTUAL_ENV AND Python2_FOUND) - message (FATAL_ERROR "Python2 unexpectedly found.") -endif() - -if (NOT PYTHON3_VIRTUAL_ENV AND NOT Python2_FOUND) - message (FATAL_ERROR "Fail to find Python2.") -endif() diff --git a/Tests/FindPython/VirtualEnvConda/VirtualEnvStandard.cmake b/Tests/FindPython/VirtualEnvConda/VirtualEnvStandard.cmake deleted file mode 100644 index 353a91bb2c..0000000000 --- a/Tests/FindPython/VirtualEnvConda/VirtualEnvStandard.cmake +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -set (Python3_FIND_VIRTUALENV STANDARD) -find_package (Python3 REQUIRED) - -if (Python3_EXECUTABLE MATCHES "^${PYTHON3_VIRTUAL_ENV}/.+") - message (FATAL_ERROR "Python3 virtual env unexpectedly found.") -endif() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 1748b72754..83980de15c 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -421,6 +421,71 @@ if(CMAKE_GENERATOR MATCHES "Make|Ninja") add_RunCMake_test(Instrumentation) endif() add_RunCMake_test(ConfigDir) +if(CMake_TEST_FindPython2) + add_RunCMake_test(FindPython2.CPython TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython2_CPython=TRUE + -DCMake_TEST_FindPython2=TRUE) + set_property(TEST RunCMake.FindPython2.CPython PROPERTY LABELS Python2) +endif() +if(CMake_TEST_FindPython3) + add_RunCMake_test(FindPython3.CPython TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID} + -DCMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION} + -DCMake_TEST_FindPython3_CPython=TRUE + -DCMake_TEST_FindPython3=TRUE) + set_property(TEST RunCMake.FindPython3.CPython PROPERTY LABELS Python3) +endif() +if(CMake_TEST_FindPython2_IronPython) + add_RunCMake_test(FindPython2.IronPython TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython2=${CMake_TEST_FindPython2} + -DCMake_TEST_FindPython2_IronPython=${CMake_TEST_FindPython2_IronPython}) + set_property(TEST RunCMake.FindPython2.IronPython PROPERTY LABELS Python2) +endif() +if(CMake_TEST_FindPython3_IronPython) + add_RunCMake_test(FindPython3.IronPython TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython3=${CMake_TEST_FindPython3} + -DCMake_TEST_FindPython3_IronPython=${CMake_TEST_FindPython3_IronPython}) + set_property(TEST RunCMake.FindPython3.IronPython PROPERTY LABELS Python3) +endif() +if(CMake_TEST_FindPython2_PyPy) + add_RunCMake_test(FindPython2.PyPy TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython2_PyPy=${CMake_TEST_FindPython2_PyPy}) + set_property(TEST RunCMake.FindPython2.PyPy PROPERTY LABELS Python2) +endif() +if(CMake_TEST_FindPython3_PyPy) + add_RunCMake_test(FindPython3.PyPy TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython3_PyPy=${CMake_TEST_FindPython3_PyPy}) + set_property(TEST RunCMake.FindPython3.PyPy PROPERTY LABELS Python3) +endif() +if(CMake_TEST_FindPython2 OR CMake_TEST_FindPython2_SABIModule OR CMake_TEST_FindPython2_NumPy + OR CMake_TEST_FindPython3 OR CMake_TEST_FindPython3_SABIModule OR CMake_TEST_FindPython3_NumPy + OR CMake_TEST_FindPython3_Conda) + add_RunCMake_test(FindPython.Various TEST_DIR FindPython + -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + "-DRunCMake_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + -DCMake_TEST_FindPython_Various=TRUE + -DCMake_TEST_FindPython2=${CMake_TEST_FindPython2} + -DCMake_TEST_FindPython2_SABIModule=${CMake_TEST_FindPython2_SABIModule} + -DCMake_TEST_FindPython2_NumPy=${CMake_TEST_FindPython2_NumPy} + -DCMake_TEST_FindPython3=${CMake_TEST_FindPython3} + + -DCMake_TEST_FindPython3_SABIModule=${CMake_TEST_FindPython3_SABIModule} + -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy} + -DCMake_TEST_FindPython3_Conda=${CMake_TEST_FindPython3_Conda}) + set_property(TEST RunCMake.FindPython.Various PROPERTY LABELS Python2 Python3) +endif() add_RunCMake_test(FindBoost) add_RunCMake_test(FindLua) add_RunCMake_test(FindOpenGL) diff --git a/Tests/FindPython/ArtifactsInteractive/CMakeLists.txt b/Tests/RunCMake/FindPython/ArtifactsInteractive.cmake similarity index 90% rename from Tests/FindPython/ArtifactsInteractive/CMakeLists.txt rename to Tests/RunCMake/FindPython/ArtifactsInteractive.cmake index f92db5fb2e..bba4d71ca8 100644 --- a/Tests/FindPython/ArtifactsInteractive/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/ArtifactsInteractive.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestArtifactsInteractive LANGUAGES C) +enable_language(C) set (components Interpreter Development) if (CMake_TEST_FindPython3_NumPy) diff --git a/Tests/FindPython/ArtifactsPrefix/CMakeLists.txt b/Tests/RunCMake/FindPython/ArtifactsPrefix.cmake similarity index 90% rename from Tests/FindPython/ArtifactsPrefix/CMakeLists.txt rename to Tests/RunCMake/FindPython/ArtifactsPrefix.cmake index d007017667..8a8dde485e 100644 --- a/Tests/FindPython/ArtifactsPrefix/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/ArtifactsPrefix.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.31) - -project(TestArtifactsPrefix C) +enable_language(C) set(Python_ARTIFACTS_PREFIX "_V2") find_package (Python 2 EXACT REQUIRED) diff --git a/Tests/RunCMake/FindPython/CMakeLists.txt b/Tests/RunCMake/FindPython/CMakeLists.txt new file mode 100644 index 0000000000..9693fcc5c4 --- /dev/null +++ b/Tests/RunCMake/FindPython/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.12...4.0) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.Include-stderr.txt b/Tests/RunCMake/FindPython/CustomFailureMessage.Include-stderr.txt new file mode 100644 index 0000000000..879cc7c8f8 --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.Include-stderr.txt @@ -0,0 +1,4 @@ + Could NOT find Python3 \(missing: .*Development.*\).* + + Reason given by package: * + Development: Cannot find the directory "/not/found/include" diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.Interpreter-stderr.txt b/Tests/RunCMake/FindPython/CustomFailureMessage.Interpreter-stderr.txt new file mode 100644 index 0000000000..9450a04f05 --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.Interpreter-stderr.txt @@ -0,0 +1,4 @@ + Could NOT find Python3 \(missing: .*Interpreter.*\).* + + Reason given by package: * + Interpreter: Cannot run the interpreter "/not/found/interpreter" diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.Library-stderr.txt b/Tests/RunCMake/FindPython/CustomFailureMessage.Library-stderr.txt new file mode 100644 index 0000000000..5e806c4ae2 --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.Library-stderr.txt @@ -0,0 +1,4 @@ + Could NOT find Python3 \(missing: .*Development.*\).* + + Reason given by package: * + Development: Cannot find the library "/not/found/library" diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.Multiple-stderr.txt b/Tests/RunCMake/FindPython/CustomFailureMessage.Multiple-stderr.txt new file mode 100644 index 0000000000..26cec307cc --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.Multiple-stderr.txt @@ -0,0 +1,6 @@ + Could NOT find Python3 \(missing: .*Interpreter + Development.*\).* + + Reason given by package: * + Interpreter: Cannot run the interpreter "/not/found/interpreter" + Development: Cannot find the library "/not/found/library" diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.NumPy-stderr.txt b/Tests/RunCMake/FindPython/CustomFailureMessage.NumPy-stderr.txt new file mode 100644 index 0000000000..9d7bccde5a --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.NumPy-stderr.txt @@ -0,0 +1,4 @@ + Could NOT find Python3 \(missing: .*NumPy.*\).* + + Reason given by package: * + NumPy: Cannot find the directory "/not/found/numpy/include" diff --git a/Tests/RunCMake/FindPython/CustomFailureMessage.cmake b/Tests/RunCMake/FindPython/CustomFailureMessage.cmake new file mode 100644 index 0000000000..c604c74fb9 --- /dev/null +++ b/Tests/RunCMake/FindPython/CustomFailureMessage.cmake @@ -0,0 +1,4 @@ + +string(REPLACE ":" ";" CHECK_COMPONENTS "${CHECK_COMPONENTS}") + +find_package (Python3 REQUIRED COMPONENTS ${CHECK_COMPONENTS}) diff --git a/Tests/FindPython/DifferentComponents/CMakeLists.txt b/Tests/RunCMake/FindPython/DifferentComponents.cmake similarity index 51% rename from Tests/FindPython/DifferentComponents/CMakeLists.txt rename to Tests/RunCMake/FindPython/DifferentComponents.cmake index e72b4bf3a8..30cd44eeb5 100644 --- a/Tests/FindPython/DifferentComponents/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/DifferentComponents.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestDifferentComponents LANGUAGES C) +enable_language(C) add_subdirectory(subdir) diff --git a/Tests/RunCMake/FindPython/ExactVersion.cmake b/Tests/RunCMake/FindPython/ExactVersion.cmake new file mode 100644 index 0000000000..6c048bdc89 --- /dev/null +++ b/Tests/RunCMake/FindPython/ExactVersion.cmake @@ -0,0 +1,54 @@ +enable_language(C) + +find_package(${PYTHON} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development) +if(NOT ${PYTHON}_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") +endif() +if(NOT ${PYTHON}_Interpreter_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Interpreter") +endif() +if(NOT ${PYTHON}_Development_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Development") +endif() + +if(NOT TARGET ${PYTHON}::Interpreter) + message(SEND_ERROR "${PYTHON}::Interpreter not found") +endif() + +if(NOT TARGET ${PYTHON}::Python) + message(SEND_ERROR "${PYTHON}::Python not found") +endif() +if(NOT TARGET ${PYTHON}::Module) + message(SEND_ERROR "${PYTHON}::Module not found") +endif() + + +# reset artifacts and second search with exact version already founded +unset(${PYTHON}_EXECUTABLE) +unset(_${PYTHON}_EXECUTABLE CACHE) + +unset(_${PYTHON}_LIBRARY_RELEASE CACHE) +unset(_${PYTHON}_INCLUDE_DIR CACHE) + +set(Python_REQUESTED_VERSION ${${PYTHON}_VERSION}) +find_package(${PYTHON} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter Development) +if(NOT ${PYTHON}_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") +endif() +if(NOT ${PYTHON}_Interpreter_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Interpreter") +endif() +if(NOT ${PYTHON}_Development_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION} Development") +endif() + +if(NOT TARGET ${PYTHON}::Interpreter) + message(SEND_ERROR "${PYTHON}::Interpreter not found") +endif() + +if(NOT TARGET ${PYTHON}::Python) + message(SEND_ERROR "${PYTHON}::Python not found") +endif() +if(NOT TARGET ${PYTHON}::Module) + message(SEND_ERROR "${PYTHON}::Module not found") +endif() diff --git a/Tests/FindPython/FindPythonScript.cmake b/Tests/RunCMake/FindPython/FindPythonScript.cmake similarity index 100% rename from Tests/FindPython/FindPythonScript.cmake rename to Tests/RunCMake/FindPython/FindPythonScript.cmake diff --git a/Tests/FindPython/Implementation/CMakeLists.txt b/Tests/RunCMake/FindPython/Implementation.cmake similarity index 93% rename from Tests/FindPython/Implementation/CMakeLists.txt rename to Tests/RunCMake/FindPython/Implementation.cmake index da33034b2b..134c72c207 100644 --- a/Tests/FindPython/Implementation/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Implementation.cmake @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestImplementation${Python_REQUESTED_IMPLEMENTATION} LANGUAGES NONE) - set (Python${Python_REQUESTED_VERSION}_FIND_IMPLEMENTATIONS ${Python_REQUESTED_IMPLEMENTATION}) diff --git a/Tests/RunCMake/FindPython/IronPython.cmake b/Tests/RunCMake/FindPython/IronPython.cmake new file mode 100644 index 0000000000..d8f490b22a --- /dev/null +++ b/Tests/RunCMake/FindPython/IronPython.cmake @@ -0,0 +1,36 @@ + +set (${PYTHON}_FIND_IMPLEMENTATIONS IronPython) + +if(PYTHON STREQUAL "Python") + set(IronPython_VERSION "IronPython ${Python_REQUESTED_VERSION}") +elseif(PYTHON STREQUAL "Python2") + set(IronPython_VERSION "IronPython2") +else() + set(IronPython_VERSION "IronPython3") +endif() + +find_package(${PYTHON} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Compiler) +if (NOT ${PYTHON}_FOUND) + message (FATAL_ERROR "Failed to find Python ${Python_REQUESTED_VERSION}") +endif() + +if (NOT ${PYTHON}_Interpreter_FOUND) + message (FATAL_ERROR "Failed to find Python Interpreter") +endif() +if (NOT ${PYTHON}_INTERPRETER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous interpreter ID (${${PYTHON}_INTERPRETER_ID})") +endif() + +if (NOT ${PYTHON}_Compiler_FOUND) + message (FATAL_ERROR "Failed to find Python Compiler") +endif() +if (NOT ${PYTHON}_COMPILER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous compiler ID (${${PYTHON}_COMPILER_ID})") +endif() + +if(NOT TARGET ${PYTHON}::Interpreter) + message(SEND_ERROR "${PYTHON}::Interpreter not found") +endif() +if(NOT TARGET ${PYTHON}::Compiler) + message(SEND_ERROR "${PYTHON}::Interpreter not found") +endif() diff --git a/Tests/FindPython/MultiplePackages/CMakeLists.txt b/Tests/RunCMake/FindPython/MultiplePackages.cmake similarity index 87% rename from Tests/FindPython/MultiplePackages/CMakeLists.txt rename to Tests/RunCMake/FindPython/MultiplePackages.cmake index 6536e4630c..e32e9ed8cb 100644 --- a/Tests/FindPython/MultiplePackages/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/MultiplePackages.cmake @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 3.15) +enable_language(C) -project(TestMultiplePackages C) +include(CTest) find_package (Python REQUIRED) @@ -15,11 +15,11 @@ if (CMake_TEST_FindPython2) ) endif() - Python2_add_library (spam2 MODULE ../spam.c) + Python2_add_library (spam2 MODULE spam.c) target_compile_definitions (spam2 PRIVATE PYTHON2) add_test (NAME python2_spam2 - COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" + COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" "${Python2_INTERPRETER}" -c "import spam2; spam2.system(\"cd\")") endif() @@ -35,7 +35,7 @@ if (CMake_TEST_FindPython3) ) endif() - Python3_add_library (spam3 MODULE ../spam.c) + Python3_add_library (spam3 MODULE spam.c) target_compile_definitions (spam3 PRIVATE PYTHON3) add_test (NAME python3_spam3 diff --git a/Tests/FindPython/NumPy/CMakeLists.txt b/Tests/RunCMake/FindPython/NumPy.cmake similarity index 93% rename from Tests/FindPython/NumPy/CMakeLists.txt rename to Tests/RunCMake/FindPython/NumPy.cmake index c5552d85fc..274d38d5e3 100644 --- a/Tests/FindPython/NumPy/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/NumPy.cmake @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 3.15) +enable_language(C) -project(TestNumPy LANGUAGES C) +include(CTest) if(CMake_TEST_FindPython2_NumPy) diff --git a/Tests/RunCMake/FindPython/NumPyOnly.cmake b/Tests/RunCMake/FindPython/NumPyOnly.cmake new file mode 100644 index 0000000000..0f98da7dd9 --- /dev/null +++ b/Tests/RunCMake/FindPython/NumPyOnly.cmake @@ -0,0 +1,31 @@ +enable_language(C) + +include(CTest) + +if(CMake_TEST_FindPython2_NumPy) + + find_package (Python2 REQUIRED COMPONENTS NumPy) + + Python2_add_library (arraytest2 MODULE arraytest.c) + target_compile_definitions (arraytest2 PRIVATE PYTHON2) + target_link_libraries (arraytest2 PRIVATE Python2::NumPy) + + add_test (NAME python2_arraytest + COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" + "${Python2_INTERPRETER}" -c "import numpy; import arraytest2; arraytest2.vecsq(numpy.array([1, 2, 3]));") + +endif() + +if(CMake_TEST_FindPython3_NumPy) + + find_package (Python3 REQUIRED COMPONENTS NumPy) + + Python3_add_library (arraytest3 MODULE arraytest.c) + target_compile_definitions (arraytest3 PRIVATE PYTHON3) + target_link_libraries (arraytest3 PRIVATE Python3::NumPy) + + add_test (NAME python3_arraytest + COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" + "${Python3_INTERPRETER}" -c "import numpy; import arraytest3; arraytest3.vecsq(numpy.array([1, 2, 3]));") + +endif() diff --git a/Tests/RunCMake/FindPython/PyPy.cmake b/Tests/RunCMake/FindPython/PyPy.cmake new file mode 100644 index 0000000000..6bbbe84c95 --- /dev/null +++ b/Tests/RunCMake/FindPython/PyPy.cmake @@ -0,0 +1,43 @@ +enable_language(C) + +set (${PYTHON}_FIND_IMPLEMENTATIONS PyPy) + +if(PYTHON STREQUAL "Python") + set(PyPy_VERSION "PyPy ${Python_REQUESTED_VERSION}") +elseif(PYTHON STREQUAL "Python2") + set(PyPy_VERSION "PyPy2") +else() + set(PyPy_VERSION "PyPy3") +endif() + +find_package(${PYTHON} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development) +if (NOT ${PYTHON}_FOUND) + message (FATAL_ERROR "Failed to find Python ${PyPy_VERSION}") +endif() + +if (NOT ${PYTHON}_Interpreter_FOUND) + message (FATAL_ERROR "Failed to find Python ${PyPy_VERSION} Interpreter") +endif() +if (NOT ${PYTHON}_INTERPRETER_ID STREQUAL "PyPy") + message (FATAL_ERROR "Erroneous interpreter ID (${${PYTHON}_INTERPRETER_ID})") +endif() + +if (NOT ${PYTHON}_Development.Module_FOUND) + message (FATAL_ERROR "Failed to find Python ${PyPy_VERSION} Development.Module") +endif() +if (NOT ${PYTHON}_Development.Embed_FOUND) + message (FATAL_ERROR "Failed to find Python ${PyPy_VERSION} Development.Embed") +endif() +if (NOT ${PYTHON}_Development_FOUND) + message (FATAL_ERROR "Failed to find Python ${PyPy_VERSION} Development") +endif() + +if(NOT TARGET ${PYTHON}::Interpreter) + message(SEND_ERROR "${PYTHON}::Interpreter not found") +endif() +if(NOT TARGET ${PYTHON}::Module) + message(SEND_ERROR "${PYTHON}::Module not found") +endif() +if(NOT TARGET ${PYTHON}::Python) + message(SEND_ERROR "${PYTHON}::Python not found") +endif() diff --git a/Tests/FindPython/Python/CMakeLists.txt b/Tests/RunCMake/FindPython/Python.cmake similarity index 92% rename from Tests/FindPython/Python/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python.cmake index 187a2e2911..217105506b 100644 --- a/Tests/FindPython/Python/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython LANGUAGES C) +enable_language(C) include(CTest) @@ -27,7 +25,7 @@ if(NOT TARGET Python::Module) endif() if (Python_REQUESTED_VERSION) - Python_add_library (spam${Python_REQUESTED_VERSION} MODULE ../spam.c) + Python_add_library (spam${Python_REQUESTED_VERSION} MODULE spam.c) target_compile_definitions (spam${Python_REQUESTED_VERSION} PRIVATE PYTHON${Python_REQUESTED_VERSION}) add_test (NAME python_spam${Python_REQUESTED_VERSION} @@ -36,7 +34,7 @@ if (Python_REQUESTED_VERSION) else() add_test(NAME findpython_script COMMAND "${CMAKE_COMMAND}" -DPYTHON_PACKAGE_NAME=Python - -P "${CMAKE_CURRENT_LIST_DIR}/../FindPythonScript.cmake") + -P "${CMAKE_CURRENT_LIST_DIR}/FindPythonScript.cmake") endif() @@ -71,7 +69,7 @@ if(NOT TARGET Python_TEST::Module) endif() if (Python_REQUESTED_VERSION) - Python_TEST_add_library (TEST_spam${Python_REQUESTED_VERSION} MODULE ../TEST_spam.c) + Python_TEST_add_library (TEST_spam${Python_REQUESTED_VERSION} MODULE TEST_spam.c) target_compile_definitions (TEST_spam${Python_REQUESTED_VERSION} PRIVATE PYTHON${Python_REQUESTED_VERSION}) add_test (NAME python_TEST_spam${Python_REQUESTED_VERSION} diff --git a/Tests/RunCMake/FindPython/Python2-BadComponent-result.txt b/Tests/RunCMake/FindPython/Python2-BadComponent-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/FindPython/Python2-BadComponent-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/FindPython/Python2-BadComponent-stderr.txt b/Tests/RunCMake/FindPython/Python2-BadComponent-stderr.txt new file mode 100644 index 0000000000..991989a91c --- /dev/null +++ b/Tests/RunCMake/FindPython/Python2-BadComponent-stderr.txt @@ -0,0 +1,2 @@ +CMake Error at .+/FindPackageHandleStandardArgs.cmake:[0-9]+ \(message\): + Could NOT find Python2 \(missing: foobar\) \(found version "[0-9.]+"\) diff --git a/Tests/RunCMake/FindPython/Python2-BadComponent.cmake b/Tests/RunCMake/FindPython/Python2-BadComponent.cmake new file mode 100644 index 0000000000..d79f4b1d15 --- /dev/null +++ b/Tests/RunCMake/FindPython/Python2-BadComponent.cmake @@ -0,0 +1,3 @@ +enable_language(C) + +find_package(Python2 REQUIRED COMPONENTS Interpreter Development foobar) diff --git a/Tests/FindPython/Python2/CMakeLists.txt b/Tests/RunCMake/FindPython/Python2.cmake similarity index 92% rename from Tests/FindPython/Python2/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python2.cmake index ffbb140475..43cc9a8d3d 100644 --- a/Tests/FindPython/Python2/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python2.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython2 LANGUAGES C) +enable_language(C) include(CTest) @@ -34,7 +32,7 @@ if(NOT TARGET Python2::Module) message(SEND_ERROR "Python2::Module not found") endif() -Python2_add_library (spam2 MODULE ../spam.c) +Python2_add_library (spam2 MODULE spam.c) target_compile_definitions (spam2 PRIVATE PYTHON2) add_test (NAME python2_spam2 @@ -44,7 +42,7 @@ add_test (NAME python2_spam2 add_test(NAME findpython2_script COMMAND "${CMAKE_COMMAND}" -DPYTHON_PACKAGE_NAME=Python2 -DPython2_FIND_STRATEGY=${Python2_FIND_STRATEGY} - -P "${CMAKE_CURRENT_LIST_DIR}/../FindPythonScript.cmake") + -P "${CMAKE_CURRENT_LIST_DIR}/FindPythonScript.cmake") # @@ -80,7 +78,7 @@ if(NOT TARGET Python2_TEST::Module) message(SEND_ERROR "Python2_TEST::Module not found") endif() -Python2_TEST_add_library (TEST_spam2 MODULE ../TEST_spam.c) +Python2_TEST_add_library (TEST_spam2 MODULE TEST_spam.c) target_compile_definitions (TEST_spam2 PRIVATE PYTHON2) add_test (NAME python2_TEST_spam2 diff --git a/Tests/FindPython/Python2Embedded/CMakeLists.txt b/Tests/RunCMake/FindPython/Python2Embedded.cmake similarity index 88% rename from Tests/FindPython/Python2Embedded/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python2Embedded.cmake index 0a04f709d2..de65202394 100644 --- a/Tests/FindPython/Python2Embedded/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python2Embedded.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython2Embedded LANGUAGES C) +enable_language(C) include(CTest) @@ -26,11 +24,11 @@ if(NOT TARGET Python2::Python) message(SEND_ERROR "Python2::Python not found") endif() -Python2_add_library (display_time2 SHARED ../display_time.c) +Python2_add_library (display_time2 SHARED display_time.c) set_property (TARGET display_time2 PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON) target_compile_definitions (display_time2 PRIVATE PYTHON2) -add_executable (main2 ../main.c) +add_executable (main2 main.c) target_link_libraries (main2 PRIVATE display_time2) if (WIN32 OR CYGWIN OR MSYS OR MINGW) diff --git a/Tests/FindPython/Python2Module/CMakeLists.txt b/Tests/RunCMake/FindPython/Python2Module.cmake similarity index 89% rename from Tests/FindPython/Python2Module/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python2Module.cmake index 6fffad4e2f..8996aa195b 100644 --- a/Tests/FindPython/Python2Module/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python2Module.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython2Module LANGUAGES C) +enable_language(C) include(CTest) @@ -29,7 +27,7 @@ if(NOT TARGET Python2::Module) message(SEND_ERROR "Python2::Module not found") endif() -Python2_add_library (spam2 MODULE ../spam.c) +Python2_add_library (spam2 MODULE spam.c) target_compile_definitions (spam2 PRIVATE PYTHON2) add_test (NAME python2_spam2 diff --git a/Tests/RunCMake/FindPython/Python2SABIModule-result.txt b/Tests/RunCMake/FindPython/Python2SABIModule-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/FindPython/Python2SABIModule-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/FindPython/Python2SABIModule-stderr.txt b/Tests/RunCMake/FindPython/Python2SABIModule-stderr.txt new file mode 100644 index 0000000000..ae72b68639 --- /dev/null +++ b/Tests/RunCMake/FindPython/Python2SABIModule-stderr.txt @@ -0,0 +1,2 @@ + Reason given by package: * + Development: SABIModule requires version 3.2 or upper. diff --git a/Tests/FindPython/Python2SABIModule/CMakeLists.txt b/Tests/RunCMake/FindPython/Python2SABIModule.cmake similarity index 54% rename from Tests/FindPython/Python2SABIModule/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python2SABIModule.cmake index c43dedc4b4..a7e7378cd7 100644 --- a/Tests/FindPython/Python2SABIModule/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python2SABIModule.cmake @@ -1,5 +1,3 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython2SABIModule LANGUAGES C) +enable_language(C) find_package(Python2 REQUIRED COMPONENTS Interpreter Development.Module Development.SABIModule) diff --git a/Tests/RunCMake/FindPython/Python3-BadComponent-result.txt b/Tests/RunCMake/FindPython/Python3-BadComponent-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/FindPython/Python3-BadComponent-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/FindPython/Python3-BadComponent-stderr.txt b/Tests/RunCMake/FindPython/Python3-BadComponent-stderr.txt new file mode 100644 index 0000000000..3b1df74c79 --- /dev/null +++ b/Tests/RunCMake/FindPython/Python3-BadComponent-stderr.txt @@ -0,0 +1,2 @@ +CMake Error at .+/FindPackageHandleStandardArgs.cmake:[0-9]+ \(message\): + Could NOT find Python3 \(missing: foobar\) \(found version "[0-9.]+"\) diff --git a/Tests/RunCMake/FindPython/Python3-BadComponent.cmake b/Tests/RunCMake/FindPython/Python3-BadComponent.cmake new file mode 100644 index 0000000000..e19a5c5764 --- /dev/null +++ b/Tests/RunCMake/FindPython/Python3-BadComponent.cmake @@ -0,0 +1,3 @@ +enable_language(C) + +find_package(Python3 REQUIRED COMPONENTS Interpreter Development foobar) diff --git a/Tests/FindPython/Python3/CMakeLists.txt b/Tests/RunCMake/FindPython/Python3.cmake similarity index 57% rename from Tests/FindPython/Python3/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python3.cmake index bac6ed5c3d..6f0eae020b 100644 --- a/Tests/FindPython/Python3/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python3.cmake @@ -1,6 +1,5 @@ -cmake_minimum_required(VERSION 3.15) -project(TestPython3 LANGUAGES C) +enable_language(C) include(CTest) @@ -34,7 +33,7 @@ if(NOT TARGET Python3::Module) message(SEND_ERROR "Python3::Module not found") endif() -Python3_add_library (spam3 MODULE ../spam.c) +Python3_add_library (spam3 MODULE spam.c) target_compile_definitions (spam3 PRIVATE PYTHON3) add_test (NAME python3_spam3 @@ -44,65 +43,7 @@ add_test (NAME python3_spam3 add_test(NAME findpython3_script COMMAND "${CMAKE_COMMAND}" -DPYTHON_PACKAGE_NAME=Python3 -DPython3_FIND_STRATEGY=${Python3_FIND_STRATEGY} - -P "${CMAKE_CURRENT_LIST_DIR}/../FindPythonScript.cmake") - - -## Try a new search specifying only expected ABI -# retrieve ABI of python interpreter -execute_process (COMMAND "${Python3_EXECUTABLE}" -c - "import sys; sys.stdout.write(sys.abiflags)" - RESULT_VARIABLE result - OUTPUT_VARIABLE abi - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -if (result) - # assume ABI is not supported - set (abi "") -endif() - -# define FIND_ABI variable -if (abi MATCHES "d") - set (Python3_VALID_ABI "ON") -else() - set (Python3_VALID_ABI "OFF") -endif() -if (abi MATCHES "m") - list (APPEND Python3_VALID_ABI "ON") -else() - list (APPEND Python3_VALID_ABI "OFF") -endif() -if (abi MATCHES "u") - list (APPEND Python3_VALID_ABI "ON") -else() - list (APPEND Python3_VALID_ABI "OFF") -endif() -if (abi MATCHES "t") - list (APPEND Python3_VALID_ABI "ON") -else() - list (APPEND Python3_VALID_ABI "OFF") -endif() -# build an invalid pattern for ABI -set (Python3_INVALID_ABI) -foreach (abi IN LISTS Python3_VALID_ABI) - if (abi) - list (APPEND Python3_INVALID_ABI "OFF") - else() - list (APPEND Python3_INVALID_ABI "ON") - endif() -endforeach() - -add_test(NAME python3_find_valid_abi - COMMAND "${CMAKE_COMMAND}" -DPYTHON_PACKAGE_NAME=Python3 - -DPython3_FIND_STRATEGY=${Python3_FIND_STRATEGY} - "-DPython3_FIND_ABI=${Python3_VALID_ABI}" - -P "${CMAKE_CURRENT_LIST_DIR}/../FindPythonScript.cmake") -add_test(NAME python3_find_invalid_abi - COMMAND "${CMAKE_COMMAND}" -DPYTHON_PACKAGE_NAME=Python3 - -DPYTHON_MUST_NOT_BE_FOUND=ON - -DPython3_FIND_STRATEGY=${Python3_FIND_STRATEGY} - "-DPython3_FIND_ABI=${Python3_INVALID_ABI}" - -P "${CMAKE_CURRENT_LIST_DIR}/../FindPythonScript.cmake") - + -P "${CMAKE_CURRENT_LIST_DIR}/FindPythonScript.cmake") # # New search with user's prefix @@ -137,9 +78,9 @@ if(NOT TARGET Python3_TEST::Module) message(SEND_ERROR "Python3_TEST::Module not found") endif() -Python3_TEST_add_library (TEST_spam3 MODULE ../TEST_spam.c) +Python3_TEST_add_library (TEST_spam3 MODULE TEST_spam.c) target_compile_definitions (TEST_spam3 PRIVATE PYTHON3) add_test (NAME python3_TEST_spam3 COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$" - "${Python3_TEST_INTERPRETER}" -c "import TEST_spam3; TEST_spam3.system(\"cd\")") + "${Python3_INTERPRETER}" -c "import TEST_spam3; TEST_spam3.system(\"cd\")") diff --git a/Tests/FindPython/Python3Embedded/CMakeLists.txt b/Tests/RunCMake/FindPython/Python3Embedded.cmake similarity index 88% rename from Tests/FindPython/Python3Embedded/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python3Embedded.cmake index 46f70422dc..9ef4e74f02 100644 --- a/Tests/FindPython/Python3Embedded/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python3Embedded.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython3Embedded LANGUAGES C) +enable_language(C) include(CTest) @@ -26,11 +24,11 @@ if(NOT TARGET Python3::Python) message(SEND_ERROR "Python3::Python not found") endif() -Python3_add_library (display_time3 SHARED ../display_time.c) +Python3_add_library (display_time3 SHARED display_time.c) set_property (TARGET display_time3 PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON) target_compile_definitions (display_time3 PRIVATE PYTHON3) -add_executable (main3 ../main.c) +add_executable (main3 main.c) target_link_libraries (main3 PRIVATE display_time3) if (WIN32 OR CYGWIN OR MSYS OR MINGW) diff --git a/Tests/FindPython/Python3Module/CMakeLists.txt b/Tests/RunCMake/FindPython/Python3Module.cmake similarity index 92% rename from Tests/FindPython/Python3Module/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python3Module.cmake index e47a76ad4b..2fa8bae178 100644 --- a/Tests/FindPython/Python3Module/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python3Module.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython3Module LANGUAGES C) +enable_language(C) include(CTest) @@ -38,7 +36,7 @@ if(NOT TARGET Python3::Module) message(SEND_ERROR "Python3::Module not found") endif() -Python3_add_library (spam3 MODULE ../spam.c) +Python3_add_library (spam3 MODULE spam.c) target_compile_definitions (spam3 PRIVATE PYTHON3) add_test (NAME python3_spam3 diff --git a/Tests/FindPython/Python3SABIModule/CMakeLists.txt b/Tests/RunCMake/FindPython/Python3SABIModule.cmake similarity index 91% rename from Tests/FindPython/Python3SABIModule/CMakeLists.txt rename to Tests/RunCMake/FindPython/Python3SABIModule.cmake index 77d3abcc78..20cea9759f 100644 --- a/Tests/FindPython/Python3SABIModule/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/Python3SABIModule.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestPython3SABIModule LANGUAGES C) +enable_language(C) include(CTest) @@ -39,7 +37,7 @@ if (Python3_VERSION VERSION_GREATER_EQUAL "3.2" AND NOT Python3_SOSABI) message(FATAL_ERROR "Python3_SOSABI unexpectedly not defined") endif() -Python3_add_library (spam3 MODULE USE_SABI 3 WITH_SOABI ../spam.c) +Python3_add_library (spam3 MODULE USE_SABI 3 WITH_SOABI spam.c) target_compile_definitions (spam3 PRIVATE PYTHON3) if (Python3_SOSABI) diff --git a/Tests/RunCMake/FindPython/PythonArtifacts.cmake.in b/Tests/RunCMake/FindPython/PythonArtifacts.cmake.in new file mode 100644 index 0000000000..0c18aa7fce --- /dev/null +++ b/Tests/RunCMake/FindPython/PythonArtifacts.cmake.in @@ -0,0 +1,32 @@ +set(USER_EXECUTABLE "@USER_EXECUTABLE@") +set(USER_LIBRARY "@USER_LIBRARY@") +set(USER_INCLUDE_DIR "@USER_INCLUDE_DIR@") + +if(CHECK_INTERPRETER) + if(INVALID_ARTIFACTS MATCHES "INTERPRETER") + set(Python3_EXECUTABLE "@USER_EXECUTABLE@") + else() + set(Python3_EXECUTABLE "@Python3_EXECUTABLE@") + endif() +endif() +if(CHECK_LIBRARY) + if(INVALID_ARTIFACTS MATCHES "LIBRARY") + set(Python3_LIBRARY "@USER_LIBRARY@") + else() + set(Python3_LIBRARY "@_Python3_LIBRARY_RELEASE@") + endif() +endif() +if(CHECK_INCLUDE) + if(INVALID_ARTIFACTS MATCHES "INCLUDE") + set(Python3_INCLUDE_DIR "@USER_INCLUDE_DIR@") + else() + set(Python3_INCLUDE_DIR "@Python3_INCLUDE_DIRS@") + endif() +endif() +if(CHECK_SABI_LIBRARY) + if(INVALID_ARTIFACTS MATCHES "SABI_LIBRARY") + set(Python3_SABI_LIBRARY "@USER_LIBRARY@") + else() + set(Python3_SABI_LIBRARY "@_Python3_SABI_LIBRARY_RELEASE@") + endif() +endif() diff --git a/Tests/RunCMake/FindPython/RequiredArtifacts.cmake b/Tests/RunCMake/FindPython/RequiredArtifacts.cmake new file mode 100644 index 0000000000..51895eff86 --- /dev/null +++ b/Tests/RunCMake/FindPython/RequiredArtifacts.cmake @@ -0,0 +1,84 @@ +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) diff --git a/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt b/Tests/RunCMake/FindPython/RequiredArtifactsCheck.cmake similarity index 94% rename from Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt rename to Tests/RunCMake/FindPython/RequiredArtifactsCheck.cmake index 25bdcf3cce..b47f43b69a 100644 --- a/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/RequiredArtifactsCheck.cmake @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 3.15) +enable_language(C) -project(TestRequiredArtifacts.Check LANGUAGES C) +include("${PYTHON_ARTIFACTS}") set (components) if (CHECK_INTERPRETER) diff --git a/Tests/RunCMake/FindPython/RunCMakeTest.cmake b/Tests/RunCMake/FindPython/RunCMakeTest.cmake new file mode 100644 index 0000000000..5b77f555c3 --- /dev/null +++ b/Tests/RunCMake/FindPython/RunCMakeTest.cmake @@ -0,0 +1,329 @@ +include(RunCMake) + +if(RunCMake_BUILD_TYPE) + set(Python_BUILD_TYPE "${RunCMake_BUILD_TYPE}") +else() + set(Python_BUILD_TYPE "Release") +endif() + +function(run_python test) + set(one_value_args TYPE ACTION VARIANT STRATEGY) + set(multi_value_args OPTIONS) + cmake_parse_arguments(PARSE_ARGV 1 RP "" "${one_value_args}" "${multi_value_args}") + + if(RP_UNPARSED_ARGUMENTS) + message(FATAL_ERROR "run_python: unparsed arguments: ${RP_UNPARSED_ARGUMENTS}") + endif() + + set(test_name "${test}") + if(RP_VARIANT) + string(APPEND test_name ".${RP_VARIANT}") + set(RunCMake_TEST_VARIANT_DESCRIPTION ".${RP_VARIANT}") + endif() + + set(options ${RP_OPTIONS}) + if(RP_STRATEGY) + string(APPEND test_name ".${RP_STRATEGY}") + string(APPEND RunCMake_TEST_VARIANT_DESCRIPTION ".${RP_STRATEGY}") + if (NOT RP_TYPE) + set(RP_TYPE ${test}) + endif() + list(APPEND options -D${RP_TYPE}_FIND_STRATEGY=${RP_STRATEGY}) + endif() + if(RP_TYPE) + list(APPEND options -DPYTHON=${RP_TYPE}) + endif() + if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG) + list(APPEND options -DCMAKE_BUILD_TYPE=${Python_BUILD_TYPE}) + endif() + + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${test_name}-build") + if(options) + run_cmake_with_options(${test} ${options}) + else() + run_cmake(${test}) + endif() + if(NOT RP_ACTION) + return() + endif() + + set(RunCMake_TEST_NO_CLEAN 1) + unset(RunCMake_TEST_VARIANT_DESCRIPTION) + run_cmake_command(${test_name}-build ${CMAKE_COMMAND} --build . --config ${Python_BUILD_TYPE}) + if(RP_ACTION STREQUAL "BUILD") + return() + endif() + + run_cmake_command(${test_name}-run ${CMAKE_CTEST_COMMAND} -C ${Python_BUILD_TYPE} -V) +endfunction() + + +function(run_python_with_virtualenv test) + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${test}-build") + set(virtual_env "${RunCMake_TEST_BINARY_DIR}/py3venv") + run_cmake_with_options(${test} "-DPYTHON3_VIRTUAL_ENV=${virtual_env}") + set(RunCMake_TEST_NO_CLEAN 1) + set(tests Default Standard) + if(CMake_TEST_FindPython2) + list(APPEND tests Only) + endif() + if(test MATCHES "Conda") + set(RunCMake_TEST_VARIANT_DESCRIPTION ".Conda") + set(init_venv --unset=VIRTUAL_ENV "CONDA_PREFIX=${virtual_env}") + else() + set(RunCMake_TEST_VARIANT_DESCRIPTION ".CPython") + set(init_venv --unset=CONDA_PREFIX "VIRTUAL_ENV=${virtual_env}") + endif() + foreach(test IN LISTS tests) + run_cmake_script(VirtualEnv${test} -E env --unset=PYTHONHOME ${init_venv} + "${CMAKE_COMMAND}" "-DPYTHON3_VIRTUAL_ENV=${virtual_env}") + endforeach() + if(CMake_TEST_FindPython2) + string(APPEND RunCMake_TEST_VARIANT_DESCRIPTION ".Unset") + run_cmake_script(VirtualEnvOnly -E env --unset=PYTHONHOME --unset=VIRTUAL_ENV --unset=CONDA_PREFIX + "${CMAKE_COMMAND}") + endif() +endfunction() + +macro(required_artifacts_check variant) + run_python(RequiredArtifactsCheck VARIANT ${variant} + OPTIONS "-DPYTHON_ARTIFACTS=${RunCMake_BINARY_DIR}/RequiredArtifacts-build/PythonArtifacts.cmake" + ${ARGN}) +endmacro() + +function(required_artifacts) + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/RequiredArtifacts-build") + run_cmake_with_options(RequiredArtifacts "-DCMake_TEST_FindPython2=${CMake_TEST_FindPython2}" + "-DCMake_TEST_FindPython3_SABIModule=${CMake_TEST_FindPython3_SABIModule}") + if(EXISTS "${RunCMake_TEST_BINARY_DIR}/PythonArtifacts.cmake") + required_artifacts_check("Interpreter.VALID" -DPYTHON_IS_FOUND=TRUE + -DCHECK_INTERPRETER=ON) + required_artifacts_check("Interpreter.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=INTERPRETER + -DCHECK_INTERPRETER=ON) + required_artifacts_check("Library.VALID" -DPYTHON_IS_FOUND=TRUE + -DCHECK_LIBRARY=ON) + required_artifacts_check("Library.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=LIBRARY + -DCHECK_LIBRARY=ON) + required_artifacts_check("Include.VALID" -DPYTHON_IS_FOUND=TRUE + -DCHECK_INCLUDE=ON) + required_artifacts_check("Include.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=INCLUDE + -DCHECK_INCLUDE=ON) + required_artifacts_check("Interpreter.VALID,Library.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=LIBRARY + -DCHECK_INTERPRETER=ON -DCHECK_LIBRARY=ON) + required_artifacts_check("Library.VALID,Include.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=INCLUDE + -DCHECK_LIBRARY=ON -DCHECK_INCLUDE=ON) + if (CMake_TEST_FindPython3_SABIModule AND WIN32) + required_artifacts_check("SABILibrary.VALID" -DPYTHON_IS_FOUND=TRUE + -DCHECK_SABI_LIBRARY=ON) + required_artifacts_check("SABILibrary.INVALID" -DPYTHON_IS_FOUND=FALSE -DINVALID_ARTIFACTS=SABI_LIBRARY + -DCHECK_SABI_LIBRARY=ON) + endif() + endif() +endfunction() + +function(custom_failure_message_check name components) + set(RunCMake_TEST_EXPECT_RESULT 1) + file(READ "${RunCMake_SOURCE_DIR}/CustomFailureMessage.${name}-stderr.txt" RunCMake_TEST_EXPECT_stderr) + run_python(CustomFailureMessage VARIANT "${name}" OPTIONS "-DCHECK_COMPONENTS=${components}" ${ARGN}) +endfunction() + + +if(CMake_TEST_FindPython2_CPython) + run_cmake(Python2-BadComponent) + run_python(Python2Module ACTION RUN) + run_python(Python2Embedded ACTION RUN) + run_python(Python2 STRATEGY LOCATION ACTION RUN) + run_python(Python2 STRATEGY VERSION ACTION RUN) + run_python(Python STRATEGY LOCATION VARIANT V2 ACTION RUN OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(Python STRATEGY VERSION VARIANT V2 OPTIONS ACTION RUN OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(ExactVersion TYPE Python2 STRATEGY LOCATION VARIANT Python2 + OPTIONS -DPython_REQUESTED_VERSION=2.1.2) + run_python(ExactVersion TYPE Python2 STRATEGY VERSION VARIANT Python2 + OPTIONS -DPython_REQUESTED_VERSION=2.1.2) + run_python(ExactVersion TYPE Python STRATEGY LOCATION VARIANT Python.V2 + OPTIONS -DPython_REQUESTED_VERSION=2.1.2) + run_python(ExactVersion TYPE Python STRATEGY VERSION VARIANT Python.V2 + OPTIONS -DPython_REQUESTED_VERSION=2.1.2) + run_python(VersionRange TYPE Python2 STRATEGY LOCATION VARIANT Python2 + OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(VersionRange TYPE Python2 STRATEGY VERSION VARIANT Python2 + OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(VersionRange TYPE Python STRATEGY LOCATION VARIANT Python.V2 + OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(VersionRange TYPE Python STRATEGY VERSION VARIANT Python.V2 + OPTIONS -DPython_REQUESTED_VERSION=2) +endif() + +if(CMake_TEST_FindPython3_CPython) + run_cmake(Python3-BadComponent) + run_cmake(DifferentComponents) + run_python(Python3Module ACTION RUN) + if(NOT CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) + run_python(Python3Embedded ACTION RUN) + endif() + if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") + run_cmake(UnversionedNames) + endif() + run_python(Python3 STRATEGY LOCATION ACTION RUN) + run_python(Python3 STRATEGY VERSION ACTION RUN) + run_python(Python STRATEGY LOCATION VARIANT V3 ACTION RUN OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(Python STRATEGY VERSION VARIANT V3 ACTION RUN OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(ExactVersion TYPE Python3 STRATEGY LOCATION VARIANT Python3 + OPTIONS -DPython_REQUESTED_VERSION=3.1.2) + run_python(ExactVersion TYPE Python3 STRATEGY VERSION VARIANT Python3 + OPTIONS -DPython_REQUESTED_VERSION=3.1.2) + run_python(ExactVersion TYPE Python STRATEGY LOCATION VARIANT Python.V3 + OPTIONS -DPython_REQUESTED_VERSION=3.1.2) + run_python(ExactVersion TYPE Python STRATEGY VERSION VARIANT Python.V3 + OPTIONS -DPython_REQUESTED_VERSION=3.1.2) + run_python(VersionRange TYPE Python3 STRATEGY LOCATION VARIANT Python3 + OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(VersionRange TYPE Python3 STRATEGY VERSION VARIANT Python3 + OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(VersionRange TYPE Python STRATEGY LOCATION VARIANT Python.V3 + OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(VersionRange TYPE Python STRATEGY VERSION VARIANT Python.V3 + OPTIONS -DPython_REQUESTED_VERSION=3) + custom_failure_message_check("Interpreter" "Interpreter" -DPython3_EXECUTABLE=/not/found/interpreter) + custom_failure_message_check("Library" "Development" -DPython3_LIBRARY=/not/found/library) + custom_failure_message_check("Include" "Development" -DPython3_INCLUDE_DIR=/not/found/include) + custom_failure_message_check("Multiple" "Interpreter:Development" -DPython3_EXECUTABLE=/not/found/interpreter + -DPython3_LIBRARY=/not/found/library) +endif() + +if(CMake_TEST_FindPython2_CPython OR CMake_TEST_FindPython3_CPython) + run_python(Python STRATEGY LOCATION VARIANT Python ACTION RUN) + run_python(Python STRATEGY VERSION VARIANT Python ACTION RUN) +endif() + +if(CMake_TEST_FindPython2_IronPython) + run_python(IronPython TYPE Python2 STRATEGY LOCATION VARIANT IronPython2) + run_python(IronPython TYPE Python2 STRATEGY VERSION VARIANT IronPython2) + run_python(IronPython TYPE Python STRATEGY LOCATION VARIANT V2 OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(IronPython TYPE Python STRATEGY VERSION VARIANT V2 OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(VersionRange TYPE Python2 STRATEGY LOCATION VARIANT IronPython2 + OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python2 STRATEGY VERSION VARIANT IronPython2 + OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python STRATEGY LOCATION VARIANT IronPython.V2 + OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python STRATEGY VERSION VARIANT IronPython.V2 + OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) +endif() + +if(CMake_TEST_FindPython3_IronPython) + run_python(IronPython TYPE Python3 STRATEGY LOCATION VARIANT IronPython3) + run_python(IronPython TYPE Python3 STRATEGY VERSION VARIANT IronPython3) + run_python(IronPython TYPE Python STRATEGY LOCATION VARIANT V3 OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(IronPython TYPE Python STRATEGY VERSION VARIANT V3 OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(VersionRange TYPE Python3 STRATEGY LOCATION VARIANT IronPython3 + OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python3 STRATEGY VERSION VARIANT IronPython3 + OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python STRATEGY LOCATION VARIANT IronPython.V3 + OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) + run_python(VersionRange TYPE Python STRATEGY VERSION VARIANT IronPython.V3 + OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython2_FIND_IMPLEMENTATIONS=IronPython) +endif() + +if(CMake_TEST_FindPython2_IronPython OR CMake_TEST_FindPython3_IronPython) + run_python(IronPython TYPE Python STRATEGY LOCATION VARIANT IronPython) + run_python(IronPython TYPE Python STRATEGY VERSION VARIANT IronPython) +endif() + +if (CMake_TEST_FindPython2 AND CMake_TEST_FindPython2_IronPython) + run_python(Implementation VARIANT CPython2 OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython_REQUESTED_IMPLEMENTATIONS=CPython) + run_python(Implementation VARIANT IronPython2 OPTIONS -DPython_REQUESTED_VERSION=2 + -DPython_REQUESTED_IMPLEMENTATIONS=IronPython) +endif() + +if (CMake_TEST_FindPython3 AND CMake_TEST_FindPython3_IronPython) + run_python(Implementation VARIANT CPython3 OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython_REQUESTED_IMPLEMENTATIONS=CPython) + run_python(Implementation VARIANT IronPython3 OPTIONS -DPython_REQUESTED_VERSION=3 + -DPython_REQUESTED_IMPLEMENTATIONS=IronPython) +endif() + +if(CMake_TEST_FindPython2_PyPy) + run_python(PyPy TYPE Python2 STRATEGY LOCATION VARIANT PyPy2) + run_python(PyPy TYPE Python2 STRATEGY VERSION VARIANT PyPy2) + run_python(PyPy TYPE Python STRATEGY LOCATION VARIANT V2 OPTIONS -DPython_REQUESTED_VERSION=2) + run_python(PyPy TYPE Python STRATEGY VERSION VARIANT V2 OPTIONS -DPython_REQUESTED_VERSION=2) +endif() + +if(CMake_TEST_FindPython3_PyPy) + run_python(PyPy TYPE Python3 STRATEGY LOCATION VARIANT PyPy3) + run_python(PyPy TYPE Python3 STRATEGY VERSION VARIANT PyPy3) + run_python(PyPy TYPE Python STRATEGY LOCATION VARIANT V3 OPTIONS -DPython_REQUESTED_VERSION=3) + run_python(PyPy TYPE Python STRATEGY VERSION VARIANT V3 OPTIONS -DPython_REQUESTED_VERSION=3) +endif() + +if(CMake_TEST_FindPython2_PyPy OR CMake_TEST_FindPython3_PyPy) + run_python(PyPy TYPE Python STRATEGY LOCATION VARIANT PyPy) + run_python(PyPy TYPE Python STRATEGY VERSION VARIANT PyPy) +endif() + +if(CMake_TEST_FindPython_Various) + if(CMake_TEST_FindPython3) + run_python_with_virtualenv(VirtualEnv) + required_artifacts() + run_python(ArtifactsInteractive VARIANT "ON" + OPTIONS -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy} + -DPython3_ARTIFACTS_INTERACTIVE=ON) + run_python(ArtifactsInteractive VARIANT "OFF" + OPTIONS -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy} + -DPython3_ARTIFACTS_INTERACTIVE=OFF) + endif() + + if(CMake_TEST_FindPython2 OR CMake_TEST_FindPython3) + if (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") + run_python(SOABI VARIANT "Interpreter" ACTION BUILD + OPTIONS -DCMake_TEST_FindPython2=${CMake_TEST_FindPython2} + -DCMake_TEST_FindPython3=${CMake_TEST_FindPython3} + -DCMake_TEST_FindPython_COMPONENT=Interpreter) + run_python(SOABI VARIANT "Development" ACTION BUILD + OPTIONS -DCMake_TEST_FindPython2=${CMake_TEST_FindPython2} + -DCMake_TEST_FindPython3=${CMake_TEST_FindPython3} + -DCMake_TEST_FindPython_COMPONENT=Development) + endif() + run_python(MultiplePackages ACTION RUN + OPTIONS -DCMake_TEST_FindPython2=${CMake_TEST_FindPython2} + -DCMake_TEST_FindPython3=${CMake_TEST_FindPython3}) + endif() + + if(CMake_TEST_FindPython2 AND CMake_TEST_FindPython3) + run_cmake(ArtifactsPrefix) + endif() + + if(CMake_TEST_FindPython2_SABIModule) + run_cmake(Python2SABIModule) + endif() + if(CMake_TEST_FindPython3_SABIModule) + run_python(Python3SABIModule) + endif() + + if(CMake_TEST_FindPython2_NumPy OR CMake_TEST_FindPython3_NumPy) + run_python(NumPy ACTION RUN + OPTIONS -DCMake_TEST_FindPython2_NumPy=${CMake_TEST_FindPython2_NumPy} + -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}) + run_python(NumPyOnly ACTION RUN + OPTIONS -DCMake_TEST_FindPython2_NumPy=${CMake_TEST_FindPython2_NumPy} + -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}) + if(CMake_TEST_FindPython3_NumPy) + custom_failure_message_check("NumPy" "Interpreter:Development:NumPy" -DPython3_NumPy_INCLUDE_DIR=/not/found/numpy/include) + endif() + endif() + + if(CMake_TEST_FindPython3_Conda) + run_python_with_virtualenv(VirtualEnvConda) + endif() +endif() diff --git a/Tests/FindPython/SOABI/CMakeLists.txt b/Tests/RunCMake/FindPython/SOABI.cmake similarity index 86% rename from Tests/FindPython/SOABI/CMakeLists.txt rename to Tests/RunCMake/FindPython/SOABI.cmake index 362df7fee7..2a0bc95ef7 100644 --- a/Tests/FindPython/SOABI/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/SOABI.cmake @@ -1,6 +1,4 @@ -cmake_minimum_required(VERSION 3.15) - -project(TestSOABI LANGUAGES C) +enable_language(C) if(CMake_TEST_FindPython3) find_package(Python3 COMPONENTS ${CMake_TEST_FindPython_COMPONENT}) @@ -13,7 +11,7 @@ if(CMake_TEST_FindPython3) endif() if (Python3_Development_FOUND AND Python3_SOABI) - Python3_add_library (spam3 MODULE WITH_SOABI ../spam.c) + Python3_add_library (spam3 MODULE WITH_SOABI spam.c) target_compile_definitions (spam3 PRIVATE PYTHON3) get_property (suffix TARGET spam3 PROPERTY SUFFIX) @@ -30,7 +28,7 @@ if(CMake_TEST_FindPython2) endif() if (Python2_Development_FOUND AND Python2_SOABI) - Python2_add_library (spam2 MODULE WITH_SOABI ../spam.c) + Python2_add_library (spam2 MODULE WITH_SOABI spam.c) target_compile_definitions (spam2 PRIVATE PYTHON2) get_property (suffix TARGET spam2 PROPERTY SUFFIX) diff --git a/Tests/FindPython/TEST_spam.c b/Tests/RunCMake/FindPython/TEST_spam.c similarity index 87% rename from Tests/FindPython/TEST_spam.c rename to Tests/RunCMake/FindPython/TEST_spam.c index fc483fdf07..f1e6bd1cf4 100644 --- a/Tests/FindPython/TEST_spam.c +++ b/Tests/RunCMake/FindPython/TEST_spam.c @@ -1,4 +1,8 @@ -#define Py_LIMITED_API 3 +#if !defined(_WIN32) +/* Disabled for Windows to avoid to link with the wrong library specified by + * #pragma */ +# define Py_LIMITED_API 3 +#endif #include static PyObject* spam_system(PyObject* self, PyObject* args) diff --git a/Tests/FindPython/UnversionedNames/CMakeLists.txt b/Tests/RunCMake/FindPython/UnversionedNames.cmake similarity index 96% rename from Tests/FindPython/UnversionedNames/CMakeLists.txt rename to Tests/RunCMake/FindPython/UnversionedNames.cmake index 597bd4ecba..0f9123f047 100644 --- a/Tests/FindPython/UnversionedNames/CMakeLists.txt +++ b/Tests/RunCMake/FindPython/UnversionedNames.cmake @@ -1,6 +1,3 @@ -cmake_minimum_required(VERSION 3.19...3.20) - -project(UnversionedNames LANGUAGES NONE) # check if it is possible to find python with a generic name find_program(UNVERSIONED_Python3 NAMES python3) @@ -24,6 +21,8 @@ unset(Python3_EXECUTABLE) # Force now to search first for generic name set(Python3_FIND_UNVERSIONED_NAMES FIRST) +set(Python3_FIND_FRAMEWORK NEVER) + find_package(Python3 REQUIRED COMPONENTS Interpreter) if (NOT Python3_EXECUTABLE STREQUAL UNVERSIONED_Python3) diff --git a/Tests/RunCMake/FindPython/VersionRange.cmake b/Tests/RunCMake/FindPython/VersionRange.cmake new file mode 100644 index 0000000000..34d3392272 --- /dev/null +++ b/Tests/RunCMake/FindPython/VersionRange.cmake @@ -0,0 +1,62 @@ +enable_language(C) + + +find_package (${PYTHON} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter) +if (NOT ${PYTHON}_FOUND) + message (FATAL_ERROR "Failed to find ${PYTHON} ${Python_REQUESTED_VERSION}") +endif() + +if (Python_REQUESTED_VERSION VERSION_LESS 3.0) + set (IN_VERSION_RANGE 2.0...<3.0) + set (OUT_VERSION_RANGE 2.0...<${${PYTHON}_VERSION}) +else() + set (IN_VERSION_RANGE 3.0...<4.0) + set (OUT_VERSION_RANGE 3.0...<${${PYTHON}_VERSION}) +endif() + +function (FIND_PYTHON EXPECTED_VERSION RANGE) + macro (FIND_PYTHON_PACKAGE) + unset (_${PYTHON}_EXECUTABLE CACHE) + unset (_${PYTHON}_LIBRARY_RELEASE CACHE) + unset (_${PYTHON}_INCLUDE_DIR CACHE) + unset (${PYTHON}_FOUND) + + find_package (${PYTHON} ${ARGV}) + endmacro() + + find_python_package(${RANGE} ${ARGN}) + + if (EXPECTED_VERSION STREQUAL "NONE") + while (${PYTHON}_FOUND AND ${PYTHON}_VERSION VERSION_GREATER ${Python_REQUESTED_VERSION}) + # Possible if multiple versions are installed + # Try with a different range + find_python_package(${Python_REQUESTED_VERSION}.0...<${${PYTHON}_VERSION} ${ARGN}) + endwhile() + if (${PYTHON}_FOUND) + message (SEND_ERROR "Unexpectedly found version: ${${PYTHON}_VERSION} for '${PYTHON} ${Python_REQUESTED_VERSION}.0...<${${PYTHON}_VERSION} ${ARGN}'") + endif() + return() + endif() + + if (NOT ${PYTHON}_FOUND) + message (SEND_ERROR "Not found: ${PYTHON} ${RANGE} ${ARGN}") + elseif (NOT ${PYTHON}_VERSION VERSION_EQUAL EXPECTED_VERSION) + message (SEND_ERROR "Wrong version: ${${PYTHON}_VERSION} for '${PYTHON} ${RANGE} ${ARGN}'") + endif() +endfunction() + +find_python (${${PYTHON}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Interpreter) +if (${PYTHON}_FIND_IMPLEMENTATIONS STREQUAL "IronPython") + find_python (${${PYTHON}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Compiler) +else() + find_python (${${PYTHON}_VERSION} ${IN_VERSION_RANGE} COMPONENTS Development) +endif() + +find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Interpreter) +if (${PYTHON}_FIND_IMPLEMENTATIONS STREQUAL "IronPython") + find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Compiler) +else() + find_python ("NONE" ${OUT_VERSION_RANGE} COMPONENTS Development) +endif() + +find_python ("NONE" 5...6 COMPONENTS Interpreter) diff --git a/Tests/RunCMake/FindPython/VirtualEnv.cmake b/Tests/RunCMake/FindPython/VirtualEnv.cmake new file mode 100644 index 0000000000..26f8146bbc --- /dev/null +++ b/Tests/RunCMake/FindPython/VirtualEnv.cmake @@ -0,0 +1,15 @@ + +find_package(Python3 REQUIRED COMPONENTS Interpreter) +if (NOT Python3_FOUND) + message (FATAL_ERROR "Failed to find Python 3") +endif() + +file (REMOVE_RECURSE "${PYTHON3_VIRTUAL_ENV}") + +execute_process (COMMAND "${Python3_EXECUTABLE}" -m venv "${PYTHON3_VIRTUAL_ENV}" + RESULT_VARIABLE result + OUTPUT_VARIABLE outputs + ERROR_VARIABLE outputs) +if (result) + message (FATAL_ERROR "Fail to create virtual environment: ${outputs}") +endif() diff --git a/Tests/RunCMake/FindPython/VirtualEnvConda.cmake b/Tests/RunCMake/FindPython/VirtualEnvConda.cmake new file mode 100644 index 0000000000..63da931a10 --- /dev/null +++ b/Tests/RunCMake/FindPython/VirtualEnvConda.cmake @@ -0,0 +1,17 @@ + +if(DEFINED ENV{CONDA_EXE}) + set(CONDA_EXECUTABLE "$ENV{CONDA_EXE}") +else() + find_program(CONDA_EXECUTABLE conda NO_CACHE) + if (NOT CONDA_EXECUTABLE) + message (FATAL_ERROR "Failed to find Conda") + endif() +endif() + +execute_process (COMMAND "${CONDA_EXECUTABLE}" create --no-default-packages --prefix "${PYTHON3_VIRTUAL_ENV}" --yes python=3 + RESULT_VARIABLE result + OUTPUT_VARIABLE outputs + ERROR_VARIABLE outputs) +if (result) + message (FATAL_ERROR "Fail to create virtual environment: ${outputs}") +endif() diff --git a/Tests/FindPython/VirtualEnv/VirtualEnvDefault.cmake b/Tests/RunCMake/FindPython/VirtualEnvDefault.cmake similarity index 100% rename from Tests/FindPython/VirtualEnv/VirtualEnvDefault.cmake rename to Tests/RunCMake/FindPython/VirtualEnvDefault.cmake diff --git a/Tests/FindPython/VirtualEnv/VirtualEnvOnly.cmake b/Tests/RunCMake/FindPython/VirtualEnvOnly.cmake similarity index 100% rename from Tests/FindPython/VirtualEnv/VirtualEnvOnly.cmake rename to Tests/RunCMake/FindPython/VirtualEnvOnly.cmake diff --git a/Tests/FindPython/VirtualEnv/VirtualEnvStandard.cmake b/Tests/RunCMake/FindPython/VirtualEnvStandard.cmake similarity index 100% rename from Tests/FindPython/VirtualEnv/VirtualEnvStandard.cmake rename to Tests/RunCMake/FindPython/VirtualEnvStandard.cmake diff --git a/Tests/FindPython/NumPy/arraytest.c b/Tests/RunCMake/FindPython/arraytest.c similarity index 94% rename from Tests/FindPython/NumPy/arraytest.c rename to Tests/RunCMake/FindPython/arraytest.c index 51db7bc349..6bead001fe 100644 --- a/Tests/FindPython/NumPy/arraytest.c +++ b/Tests/RunCMake/FindPython/arraytest.c @@ -33,7 +33,7 @@ static PyObject* vecsq(PyObject* self, PyObject* args) } #if defined(PYTHON2) -PyMODINIT_FUNC init_C_arraytest(void) +PyMODINIT_FUNC initarraytest2(void) { (void)Py_InitModule("arraytest2", arraytestMethods); import_array(); @@ -49,7 +49,7 @@ static struct PyModuleDef arraytestmodule = { arraytestMethods }; -PyMODINIT_FUNC PyInit_C_arraytest(void) +PyMODINIT_FUNC PyInit_arraytest3(void) { PyObject* po = PyModule_Create(&arraytestmodule); import_array(); diff --git a/Tests/FindPython/display_time.c b/Tests/RunCMake/FindPython/display_time.c similarity index 100% rename from Tests/FindPython/display_time.c rename to Tests/RunCMake/FindPython/display_time.c diff --git a/Tests/FindPython/display_time.h b/Tests/RunCMake/FindPython/display_time.h similarity index 100% rename from Tests/FindPython/display_time.h rename to Tests/RunCMake/FindPython/display_time.h diff --git a/Tests/FindPython/main.c b/Tests/RunCMake/FindPython/main.c similarity index 100% rename from Tests/FindPython/main.c rename to Tests/RunCMake/FindPython/main.c diff --git a/Tests/FindPython/spam.c b/Tests/RunCMake/FindPython/spam.c similarity index 86% rename from Tests/FindPython/spam.c rename to Tests/RunCMake/FindPython/spam.c index 063bf35db5..29661f83a8 100644 --- a/Tests/FindPython/spam.c +++ b/Tests/RunCMake/FindPython/spam.c @@ -1,4 +1,8 @@ -#define Py_LIMITED_API 3 +#if !defined(_WIN32) +/* Disabled for Windows to avoid to link with the wrong library specified by + * #pragma */ +# define Py_LIMITED_API 3 +#endif #include static PyObject* spam_system(PyObject* self, PyObject* args) diff --git a/Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt b/Tests/RunCMake/FindPython/subdir/CMakeLists.txt similarity index 100% rename from Tests/FindPython/DifferentComponents/subdir/CMakeLists.txt rename to Tests/RunCMake/FindPython/subdir/CMakeLists.txt