From d22734f6cb0e11dff0d94d212f47867fe06ab0fd Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 17 Mar 2024 23:40:27 +0800 Subject: [PATCH] cmake: add ${CMAKE_SHARED_LINKER_FLAGS} to LDFLAGS when building python extensions if sanitizers are enabled, we have to populate the required link flags to python extensions's building workflow. otherwise ld would fail to link like: ``` /usr/bin/ld: /home/jenkins-build/build/workspace/ceph-pull-requests/build/lib/libceph-common.so.2: undefined reference to `__asan_stack_free_10' ``` Signed-off-by: Kefu Chai --- cmake/modules/Distutils.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake index daaae4ba63fdb..f3d6c41e73174 100644 --- a/cmake/modules/Distutils.cmake +++ b/cmake/modules/Distutils.cmake @@ -73,6 +73,8 @@ function(distutils_add_cython_module target name src) set(PY_CC ${compiler_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1}) set(PY_CXX ${compiler_launcher} ${CMAKE_CXX_COMPILER} ${cxx_compiler_arg1}) set(PY_LDSHARED ${link_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1} "-shared") + string(REPLACE " " ";" PY_LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}") + list(APPEND PY_LDFLAGS -L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) execute_process(COMMAND "${Python3_EXECUTABLE}" -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" @@ -98,7 +100,7 @@ function(distutils_add_cython_module target name src) CXX="${PY_CXX}" LDSHARED="${PY_LDSHARED}" OPT=\"-DNDEBUG -g -fwrapv -O2 -w\" - LDFLAGS=-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + LDFLAGS="${PY_LDFLAGS}" CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR} CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${Python3_EXECUTABLE} ${setup_py} @@ -130,7 +132,7 @@ function(distutils_install_cython_module name) -D'void0=dead_function\(void\)' \ -D'__Pyx_check_single_interpreter\(ARG\)=ARG\#\#0' \ ${CFLAG_DISABLE_VTA}\") - set(ENV{LDFLAGS} \"-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\") + set(ENV{LDFLAGS} \"${PY_LDFLAGS}\") set(ENV{CYTHON_BUILD_DIR} \"${CMAKE_CURRENT_BINARY_DIR}\") set(ENV{CEPH_LIBDIR} \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\") -- 2.39.5