diff --git a/CMake/vtkModuleWrapPython.cmake b/CMake/vtkModuleWrapPython.cmake index fe7401f5154f9f25205874c63665ce44c23c1b6d..56fffbed765e87055c3eae57b539de6e7c8d5410 100644 --- a/CMake/vtkModuleWrapPython.cmake +++ b/CMake/vtkModuleWrapPython.cmake @@ -456,8 +456,13 @@ extern PyObject* PyInit_${_vtk_python_library_name}(); # configuration, whether it is a debug build. If it is, add the postfix # (regardless of VTK's build type). Otherwise, no postfix. if (_vtk_python_USE_DEBUG_SUFFIX) + if (_vtk_python_REPLACE_DEBUG_SUFFIX) + set(_vtk_python_append_flag) + else () + set(_vtk_python_append_flag APPEND_STRING) + endif () set_property(TARGET "${name}" - APPEND_STRING + ${_vtk_python_append_flag} PROPERTY DEBUG_POSTFIX "_d") endif () @@ -554,6 +559,7 @@ vtk_module_wrap_python( [PYTHON_PACKAGE ] [SOABI ] [USE_DEBUG_SUFFIX ] + [REPLACE_DEBUG_SUFFIX ] [INSTALL_EXPORT ] [COMPONENT ]) @@ -608,6 +614,8 @@ vtk_module_wrap_python( * `USE_DEBUG_SUFFIX` (Defaults to `OFF`): If `ON`, Windows modules will have a `_d` suffix appended to the module name. This is intended for use with debug Python builds. + * `REPLACE_DEBUG_SUFFIX` (Defaults to `OFF`): If `ON`, any project-wide debug + suffix will be replaced with the local debug suffix (if enabled). * `INSTALL_EXPORT`: If provided, static installs will add the installed libraries to the provided export set. * `COMPONENT`: Defaults to `python`. All install rules created by this @@ -616,7 +624,7 @@ vtk_module_wrap_python( function (vtk_module_wrap_python) cmake_parse_arguments(PARSE_ARGV 0 _vtk_python "" - "MODULE_DESTINATION;STATIC_MODULE_DESTINATION;LIBRARY_DESTINATION;PYTHON_PACKAGE;BUILD_STATIC;INSTALL_HEADERS;INSTALL_EXPORT;TARGET_SPECIFIC_COMPONENTS;TARGET;COMPONENT;WRAPPED_MODULES;CMAKE_DESTINATION;SOABI;USE_DEBUG_SUFFIX;UTILITY_TARGET;BUILD_PYI_FILES" + "MODULE_DESTINATION;STATIC_MODULE_DESTINATION;LIBRARY_DESTINATION;PYTHON_PACKAGE;BUILD_STATIC;INSTALL_HEADERS;INSTALL_EXPORT;TARGET_SPECIFIC_COMPONENTS;TARGET;COMPONENT;WRAPPED_MODULES;CMAKE_DESTINATION;SOABI;USE_DEBUG_SUFFIX;REPLACE_DEBUG_SUFFIX;UTILITY_TARGET;BUILD_PYI_FILES" "DEPENDS;MODULES") if (_vtk_python_UNPARSED_ARGUMENTS) @@ -660,6 +668,10 @@ function (vtk_module_wrap_python) set(_vtk_python_USE_DEBUG_SUFFIX OFF) endif () + if (NOT DEFINED _vtk_python_REPLACE_DEBUG_SUFFIX) + set(_vtk_python_REPLACE_DEBUG_SUFFIX OFF) + endif () + if (_vtk_python_SOABI) get_property(_vtk_python_is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8d620a0a8a1fc520bac8ca45d77467a53e4ba2f..45a35bd48823f2614b0011e7baf9f4c0cf5f8138 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -492,6 +492,9 @@ if (VTK_WRAP_PYTHON) cmake_dependent_option(VTK_WINDOWS_PYTHON_DEBUGGABLE "Append `_d` to Python module names" OFF "WIN32;VTK_WRAP_PYTHON" OFF) mark_as_advanced(VTK_WINDOWS_PYTHON_DEBUGGABLE) + cmake_dependent_option(VTK_WINDOWS_PYTHON_DEBUGGABLE_REPLACE_SUFFIX "Replace any other debug suffix for Python module names" OFF + "VTK_WINDOWS_PYTHON_DEBUGGABLE" OFF) + mark_as_advanced(VTK_WINDOWS_PYTHON_DEBUGGABLE_REPLACE_SUFFIX) cmake_dependent_option(VTK_BUILD_PYI_FILES "Build `.pyi` files for VTK's Python modules" OFF "VTK_WRAP_PYTHON" OFF) mark_as_advanced(VTK_BUILD_PYI_FILES) @@ -514,6 +517,7 @@ if (VTK_WRAP_PYTHON) BUILD_PYI_FILES "${VTK_BUILD_PYI_FILES}" SOABI "${vtk_soabi}" USE_DEBUG_SUFFIX "${VTK_WINDOWS_PYTHON_DEBUGGABLE}" + REPLACE_DEBUG_SUFFIX "${VTK_WINDOWS_PYTHON_DEBUGGABLE_REPLACE_SUFFIX}" UTILITY_TARGET "VTK::vtkbuild" WRAPPED_MODULES vtk_python_wrapped_modules TARGET_SPECIFIC_COMPONENTS "${VTK_TARGET_SPECIFIC_COMPONENTS}" diff --git a/Documentation/dev/build.md b/Documentation/dev/build.md index bf8b108fa9f37eb5f5af93809135756140784083..2cfb3aee29f574e982b3dc3578e7d5c25331f98e 100644 --- a/Documentation/dev/build.md +++ b/Documentation/dev/build.md @@ -282,6 +282,8 @@ More advanced options: "${MPIEXEC_EXECUTABLE}" "${MPIEXEC_NUMPROC_FLAG}" "1" ${MPIEXEC_PREFLAGS} * `VTK_WINDOWS_PYTHON_DEBUGGABLE` (default `OFF`): Set to `ON` if using a debug build of Python. + * `VTK_WINDOWS_PYTHON_DEBUGGABLE_REPLACE_SUFFIX` (default `OFF`): Set to `ON` + to use just a `_d` suffix for Python modules. * `VTK_BUILD_PYI_FILES` (default `OFF`): Set to `ON` to build `.pyi` type hint files for VTK's Python interfaces. * `VTK_DLL_PATHS` (default `""` or `VTK_DLL_PATHS` from the environment): If