diff options
author | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-22 15:01:21 +0200 |
---|---|---|
committer | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-28 13:56:18 +0200 |
commit | d2c47c822b50d3cfd23b208c663fbe4f40fcf2f5 (patch) | |
tree | 0f7183ab2b5a8875bc97b8673a9a726bf1e0358d /Tests/FindPython | |
parent | 265fb71c917e3921012c2950a921cb380f60ae0f (diff) | |
download | cmake-d2c47c822b50d3cfd23b208c663fbe4f40fcf2f5.tar.gz |
FindPython: Add capability to specify Python implementations
Through hint Python_FIND_IMPLEMENTATIONS it is possble to specify, as an
ordered list, which implementations must be searched for.
Currently possible values are:
* CPython
* IronPython
Diffstat (limited to 'Tests/FindPython')
-rw-r--r-- | Tests/FindPython/CMakeLists.txt | 23 | ||||
-rw-r--r-- | Tests/FindPython/Implementation/CMakeLists.txt | 37 | ||||
-rw-r--r-- | Tests/FindPython/IronPython/CMakeLists.txt | 11 | ||||
-rw-r--r-- | Tests/FindPython/IronPython2/CMakeLists.txt | 11 |
4 files changed, 80 insertions, 2 deletions
diff --git a/Tests/FindPython/CMakeLists.txt b/Tests/FindPython/CMakeLists.txt index c72b5e28c8..072a993828 100644 --- a/Tests/FindPython/CMakeLists.txt +++ b/Tests/FindPython/CMakeLists.txt @@ -314,6 +314,29 @@ if(CMake_TEST_FindPython_Conda) ) endif() +if (CMake_TEST_FindPython AND CMake_TEST_FindPython_IronPython) + add_test(NAME FindPython.Implementation.CPython COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" + "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.CPython" + ${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 $<CONFIGURATION> + ) + add_test(NAME FindPython.Implementation.IronPython COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/Implementation" + "${CMake_BINARY_DIR}/Tests/FindPython/Implementation.IronPython" + ${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 $<CONFIGURATION> + ) +endif() + if(CMake_TEST_FindPython_IronPython) add_test(NAME FindPython.IronPython2.LOCATION COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> diff --git a/Tests/FindPython/Implementation/CMakeLists.txt b/Tests/FindPython/Implementation/CMakeLists.txt new file mode 100644 index 0000000000..d64fa1edd4 --- /dev/null +++ b/Tests/FindPython/Implementation/CMakeLists.txt @@ -0,0 +1,37 @@ +cmake_minimum_required(VERSION 3.1) + +project(TestImplementation${Python_REQUESTED_IMPLEMENTATION} C) + + +set (Python${Python_REQUESTED_VERSION}_FIND_IMPLEMENTATIONS ${Python_REQUESTED_IMPLEMENTATION}) + +find_package(Python${Python_REQUESTED_VERSION} COMPONENTS Interpreter) +if (NOT Python${Python_REQUESTED_VERSION}_FOUND OR NOT Python${Python_REQUESTED_VERSION}_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found Python${Python_REQUESTED_VERSION}") +endif() + +if (Python_REQUESTED_IMPLEMENTATION STREQUAL "IronPython" + AND NOT Python${Python_REQUESTED_VERSION}_INTERPRETER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous interpreter ID (${Python${Python_REQUESTED_VERSION}_INTERPRETER_ID})") +endif() +if (Python_REQUESTED_IMPLEMENTATION STREQUAL "CPython" + AND Python${Python_REQUESTED_VERSION}_INTERPRETER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous interpreter ID (${Python${Python_REQUESTED_VERSION}_INTERPRETER_ID})") +endif() + + +set (Python_FIND_IMPLEMENTATIONS ${Python_REQUESTED_IMPLEMENTATION}) + +find_package(Python ${Python_REQUESTED_VERSION} REQUIRED COMPONENTS Interpreter) +if (NOT Python_FOUND OR NOT Python_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION}") +endif() + +if (Python_REQUESTED_IMPLEMENTATION STREQUAL "IronPython" + AND NOT Python_INTERPRETER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous interpreter ID (${Python_INTERPRETER_ID})") +endif() +if (Python_REQUESTED_IMPLEMENTATION STREQUAL "CPython" + AND Python_INTERPRETER_ID STREQUAL "IronPython") + message (FATAL_ERROR "Erroneous interpreter ID (${Python_INTERPRETER_ID})") +endif() diff --git a/Tests/FindPython/IronPython/CMakeLists.txt b/Tests/FindPython/IronPython/CMakeLists.txt index c96a3e031b..3493c29bbc 100644 --- a/Tests/FindPython/IronPython/CMakeLists.txt +++ b/Tests/FindPython/IronPython/CMakeLists.txt @@ -2,11 +2,20 @@ cmake_minimum_required(VERSION 3.1) project(TestIronPython C) -find_package(Python ${Python_REQUESTED_VERSION} REQUIRED COMPONENTS Interpreter Compiler) +set (Python_FIND_IMPLEMENTATIONS IronPython) + +find_package(Python ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Compiler) if (NOT Python_FOUND) message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION}") endif() +if (NOT Python_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found 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 "Fail to found Python Compiler") endif() diff --git a/Tests/FindPython/IronPython2/CMakeLists.txt b/Tests/FindPython/IronPython2/CMakeLists.txt index 43ec309f57..1db798cc22 100644 --- a/Tests/FindPython/IronPython2/CMakeLists.txt +++ b/Tests/FindPython/IronPython2/CMakeLists.txt @@ -2,11 +2,20 @@ cmake_minimum_required(VERSION 3.1) project(TestIronPython2 C) -find_package(Python2 REQUIRED COMPONENTS Interpreter Compiler) +set (Python2_FIND_IMPLEMENTATIONS "IronPython") + +find_package(Python2 COMPONENTS Interpreter Compiler) if (NOT Python2_FOUND) message (FATAL_ERROR "Fail to found Python 2") endif() +if (NOT Python2_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found 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 "Fail to found Python 2 Compiler") endif() |