diff --git a/CMakeLists.txt b/CMakeLists.txt index 04752b8..424b4cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ find_package(Boost REQUIRED COMPONENTS program_options) include_directories(${Boost_INCLUDE_DIRS}) if(PY3) - set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3) + set(Python_ADDITIONAL_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3) find_package(PythonInterp 3 REQUIRED) else() set(Python_ADDITIONAL_VERSIONS 2.7 2.6) @@ -46,7 +46,7 @@ set_target_properties(cpsm_core PROPERTIES COMPILE_FLAGS "-fPIC") add_library(cpsm_py SHARED src/ctrlp_util.cc src/python_extension.cc) target_link_libraries(cpsm_py cpsm_core) set_target_properties(cpsm_py PROPERTIES COMPILE_FLAGS ${PYTHON_COMPILE_FLAGS}) -set_target_properties(cpsm_py PROPERTIES LINK_FLAGS "${PYTHON_LINK_FLAGS} -lpython3.8") +set_target_properties(cpsm_py PROPERTIES LINK_FLAGS ${PYTHON_LINK_FLAGS}) set_target_properties(cpsm_py PROPERTIES PREFIX "") if(APPLE) set_target_properties(cpsm_py PROPERTIES SUFFIX ".so") diff --git a/cmake/FindPythonConfig.cmake b/cmake/FindPythonConfig.cmake index 2efd78f..cf2ff5a 100644 --- a/cmake/FindPythonConfig.cmake +++ b/cmake/FindPythonConfig.cmake @@ -18,7 +18,11 @@ find_package(PythonInterp) if(PYTHONINTERP_FOUND) set(_Python_config "${PYTHON_EXECUTABLE}-config") execute_process(COMMAND ${_Python_config} "--includes" OUTPUT_VARIABLE PYTHON_COMPILE_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${_Python_config} "--ldflags" OUTPUT_VARIABLE PYTHON_LINK_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${_Python_config} "--ldflags" "--embed" OUTPUT_VARIABLE PYTHON_LINK_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE PYTHON_EMBED_FAILED) + if(PYTHON_EMBED_FAILED) + message(STATUS "PythonConfig could not embed Python. (Fine for < Python 3.8)") + execute_process(COMMAND ${_Python_config} "--ldflags" OUTPUT_VARIABLE PYTHON_LINK_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + endif(PYTHON_EMBED_FAILED) set(_Python_config_message "${PYTHON_COMPILE_FLAGS}; ${PYTHON_LINK_FLAGS}") unset(_Python_config) else(PYTHONINTERP_FOUND)