diff --git a/thirdparty/pybind11/include/pybind11/detail/common.h b/thirdparty/pybind11/include/pybind11/detail/common.h index 6e8cfd4922..55d4772230 100644 --- a/thirdparty/pybind11/include/pybind11/detail/common.h +++ b/thirdparty/pybind11/include/pybind11/detail/common.h @@ -153,7 +153,6 @@ # define HAVE_SNPRINTF 1 #endif -/// Include Python header, disable linking to pythonX_d.lib on Windows in debug mode #if defined(_MSC_VER) # pragma warning(push) // C4505: 'PySlice_GetIndicesEx': unreferenced local function has been removed (PyPy only) @@ -170,6 +169,7 @@ # define PYBIND11_DEBUG_MARKER # undef _DEBUG # endif +# pragma warning(disable: 4510 4610 4512 4005) #endif // https://en.cppreference.com/w/c/chrono/localtime diff --git a/thirdparty/pybind11/tools/FindPythonLibsNew.cmake b/thirdparty/pybind11/tools/FindPythonLibsNew.cmake index b5f0e93961..32b41f988f 100644 --- a/thirdparty/pybind11/tools/FindPythonLibsNew.cmake +++ b/thirdparty/pybind11/tools/FindPythonLibsNew.cmake @@ -201,6 +201,21 @@ if(CMAKE_HOST_WIN32) if(NOT EXISTS "${PYTHON_LIBRARY}") get_filename_component(_PYTHON_ROOT ${PYTHON_INCLUDE_DIR} DIRECTORY) set(PYTHON_LIBRARY "${_PYTHON_ROOT}/libs/python${PYTHON_LIBRARY_SUFFIX}.lib") + elseif(DEFINED VCPKG_TOOLCHAIN AND NOT EXISTS "${PYTHON_LIBRARY}") + set(PYTHON_LIBRARY "${PYTHON_PREFIX}/../../lib/python${PYTHON_LIBRARY_SUFFIX}.lib") + endif() + + if(DEFINED VCPKG_TOOLCHAIN) + unset(PYTHON_LIBRARY) + find_library( + PYTHON_LIBRARY + NAMES "python${PYTHON_LIBRARY_SUFFIX}" + NO_SYSTEM_ENVIRONMENT_PATH) + + find_library(PYTHON_DEBUG_LIBRARY + NAMES python${PYTHON_LIBRARY_SUFFIX}_d + NO_SYSTEM_ENVIRONMENT_PATH + ) endif() # if we are in MSYS & MINGW, and we didn't find windows python lib, look for system python lib @@ -246,7 +261,7 @@ else() endif() endif() -mark_as_advanced(PYTHON_LIBRARY PYTHON_INCLUDE_DIR) +mark_as_advanced(PYTHON_DEBUG_LIBRARY PYTHON_LIBRARY PYTHON_INCLUDE_DIR) # We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the # cache entries because they are meant to specify the location of a single @@ -259,6 +274,10 @@ if(NOT PYTHON_DEBUG_LIBRARY) endif() set(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}") +set(PYTHON_LIBRARY_DEBUG "${PYTHON_DEBUG_LIBRARY}") +set(PYTHON_LIBRARY_RELEASE, "${PYTHON_LIBRARY}") +select_library_configurations(PYTHON) + find_package_message(PYTHON "Found PythonLibs: ${PYTHON_LIBRARY}" "${PYTHON_EXECUTABLE}${PYTHON_VERSION_STRING}") diff --git a/thirdparty/pybind11/tools/pybind11Tools.cmake b/thirdparty/pybind11/tools/pybind11Tools.cmake index c255e5cfd8..61d52c301b 100644 --- a/thirdparty/pybind11/tools/pybind11Tools.cmake +++ b/thirdparty/pybind11/tools/pybind11Tools.cmake @@ -119,8 +119,11 @@ set_property( TARGET pybind11::module APPEND PROPERTY - INTERFACE_LINK_LIBRARIES pybind11::python_link_helper - "$<$,$>:$>") + INTERFACE_LINK_LIBRARIES pybind11::python_link_helper) + +if(WIN32) + target_link_libraries(pybind11::module INTERFACE ${PYTHON_LIBRARIES}) +endif() if(PYTHON_VERSION VERSION_LESS 3) set_property( @@ -129,10 +132,13 @@ if(PYTHON_VERSION VERSION_LESS 3) PROPERTY INTERFACE_LINK_LIBRARIES pybind11::python2_no_register) endif() +# KiCad Workaround, this ends tying release libraries into debug builds which doesn't end well set_property( TARGET pybind11::embed APPEND - PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11 $) + PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11) + +target_link_libraries(pybind11::embed INTERFACE ${PYTHON_LIBRARIES}) function(pybind11_extension name) # The prefix and extension are provided by FindPythonLibsNew.cmake