162 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			CMake
		
	
	
		
		
			
		
	
	
			162 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			CMake
		
	
	
| 
								 | 
							
								cmake_minimum_required(VERSION 3.5)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Tests for pybind11_guess_python_module_extension
							 | 
						||
| 
								 | 
							
								# Run using `cmake -P tools/test-pybind11GuessPythonExtSuffix.cmake`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								include("${CMAKE_CURRENT_LIST_DIR}/pybind11GuessPythonExtSuffix.cmake")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								macro(expect_streq actual expected)
							 | 
						||
| 
								 | 
							
								  if(NOT "${actual}" STREQUAL "${expected}")
							 | 
						||
| 
								 | 
							
								    message(SEND_ERROR "Fail\n *** actual:   '${actual}'\n *** expected: '${expected}'")
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								endmacro()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								macro(expect_false actual)
							 | 
						||
| 
								 | 
							
								  if("${actual}")
							 | 
						||
| 
								 | 
							
								    message(SEND_ERROR "Fail\n *** actual:   '${actual}'\n *** expected: false")
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								endmacro()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								macro(expect_true actual)
							 | 
						||
| 
								 | 
							
								  if(NOT "${actual}")
							 | 
						||
| 
								 | 
							
								    message(SEND_ERROR "Fail\n *** actual:   '${actual}'\n *** expected: true")
							 | 
						||
| 
								 | 
							
								  endif()
							 | 
						||
| 
								 | 
							
								endmacro()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Windows
							 | 
						||
| 
								 | 
							
								set(CMAKE_SYSTEM_NAME "Windows")
							 | 
						||
| 
								 | 
							
								set(CMAKE_SHARED_MODULE_SUFFIX ".dll")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cp311-win_arm64")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cp311-win_arm64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cp311d-win_arm64")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cp311d-win_arm64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_true("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "pypy310-pp73-win_amd64")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".pypy310-pp73-win_amd64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "_d.cp311-win_amd64.pyd") # This is a quirk of FindPython3
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cp311-win_amd64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "_d")
							 | 
						||
| 
								 | 
							
								expect_true("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								unset(Python3_SOABI)
							 | 
						||
| 
								 | 
							
								set(ENV{SETUPTOOLS_EXT_SUFFIX} ".cp39-win_arm64.pyd") # Set by cibuildwheel
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cp39-win_arm64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								unset(ENV{SETUPTOOLS_EXT_SUFFIX})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cp311-win_arm64")
							 | 
						||
| 
								 | 
							
								set(ENV{SETUPTOOLS_EXT_SUFFIX} "") # Should not be used
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cp311-win_arm64.pyd")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								unset(ENV{SETUPTOOLS_EXT_SUFFIX})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# macOS
							 | 
						||
| 
								 | 
							
								set(CMAKE_SYSTEM_NAME "Darwin")
							 | 
						||
| 
								 | 
							
								set(CMAKE_SHARED_MODULE_SUFFIX ".so")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cpython-312-darwin")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cpython-312-darwin.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cpython-312d-darwin")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cpython-312d-darwin.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_true("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Linux
							 | 
						||
| 
								 | 
							
								set(CMAKE_SYSTEM_NAME "Linux")
							 | 
						||
| 
								 | 
							
								set(CMAKE_SHARED_MODULE_SUFFIX ".so")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cpython-312-arm-linux-gnueabihf")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cpython-312-arm-linux-gnueabihf.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "cpython-312d-arm-linux-gnueabihf")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".cpython-312d-arm-linux-gnueabihf.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_true("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "pypy310-pp73-x86_64-linux-gnu")
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".pypy310-pp73-x86_64-linux-gnu.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_false("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(Python3_SOABI "pypy310d-pp73-x86_64-linux-gnu")
							 | 
						||
| 
								 | 
							
								# TODO: I'm not sure if this is the right SOABI for PyPy debug builds
							 | 
						||
| 
								 | 
							
								pybind11_guess_python_module_extension("Python3")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_EXTENSION}" ".pypy310d-pp73-x86_64-linux-gnu.so")
							 | 
						||
| 
								 | 
							
								expect_streq("${PYTHON_MODULE_DEBUG_POSTFIX}" "")
							 | 
						||
| 
								 | 
							
								expect_true("${PYTHON_IS_DEBUG}")
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX)
							 | 
						||
| 
								 | 
							
								unset(PYTHON_MODULE_EXT_SUFFIX CACHE)
							 |