From 83ffb1e2ca72f7ec9aafceda8226e3f129fc66cc Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 8 Jul 2019 19:27:37 +0800 Subject: [PATCH] cmake/modules/Distutils.cmake: add byproduct so add_custom_target() has better idea what is generated. if any target will use it, it can be used as a dependency. Signed-off-by: Kefu Chai --- cmake/modules/Distutils.cmake | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake index a5d1f4660de..9a32f16ccaf 100644 --- a/cmake/modules/Distutils.cmake +++ b/cmake/modules/Distutils.cmake @@ -56,6 +56,22 @@ function(distutils_add_cython_module target name src) set(PY_CC ${compiler_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1} ${cflags}) set(PY_CXX ${compiler_launcher} ${CMAKE_CXX_COMPILER} ${cxx_compiler_arg1}) set(PY_LDSHARED ${link_launcher} ${CMAKE_C_COMPILER} ${c_compiler_arg1} "-shared") + + if(${PYTHON${PYTHON_VERSION}_VERSION_MAJOR} STREQUAL "2") + set(suffix_var "SO") + else() + set(suffix_var "EXT_SUFFIX") + endif() + execute_process(COMMAND "${PYTHON${PYTHON_VERSION}_EXECUTABLE}" -c + "from distutils import sysconfig; print(sysconfig.get_config_var('${suffix_var}'))" + RESULT_VARIABLE result + OUTPUT_VARIABLE ext_suffix + ERROR_VARIABLE error + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT result EQUAL 0) + message(FATAL_ERROR "Unable to tell python extension's suffix: ${error}") + endif() + set(output_dir "${CYTHON_MODULE_DIR}/lib.${PYTHON${PYTHON_VERSION}_VERSION_MAJOR}") add_custom_target(${target} ALL COMMAND env @@ -68,8 +84,9 @@ function(distutils_add_cython_module target name src) CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --verbose --build-base ${CYTHON_MODULE_DIR} - --build-platlib ${CYTHON_MODULE_DIR}/lib.${PYTHON${PYTHON_VERSION}_VERSION_MAJOR} + --build-platlib ${output_dir} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + BUILD_BYPRODUCTS ${output_dir}/${ext_suffix} DEPENDS ${src}) endfunction(distutils_add_cython_module) -- 2.39.5