COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${src})
endif()
endforeach()
- add_custom_target(${name}-clone ALL
- DEPENDS ${py_clone})
- cmake_parse_arguments(DU "" INSTALL_SCRIPT "" ${ARGN})
+ if(NOT TARGET ${name}-clone)
+ add_custom_target(${name}-clone ALL
+ DEPENDS ${py_clone})
+ endif()
+ cmake_parse_arguments(DU "" "INSTALL_SCRIPT" "" ${ARGN})
install(CODE "
set(options --prefix=${CMAKE_INSTALL_PREFIX})
if(DEFINED ENV{DESTDIR})
endif()
endif()
execute_process(
- COMMAND ${PYTHON${PYTHON_VERSION}_EXECUTABLE}
+ COMMAND ${Python3_EXECUTABLE}
setup.py install \${options}
WORKING_DIRECTORY \"${CMAKE_CURRENT_BINARY_DIR}\")")
endfunction(distutils_install_module)
-function(distutils_add_cython_module name src)
+function(distutils_add_cython_module target name src)
get_property(compiler_launcher GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
get_property(link_launcher GLOBAL PROPERTY RULE_LAUNCH_LINK)
# When using ccache, CMAKE_C_COMPILER is ccache executable absolute path
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")
- add_custom_target(${name} ALL
+
+ set(suffix_var "EXT_SUFFIX")
+ execute_process(COMMAND "${Python3_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.3")
+ set(setup_py ${CMAKE_CURRENT_SOURCE_DIR}/setup.py)
+ add_custom_command(
+ OUTPUT ${output_dir}/${name}${ext_suffix}
COMMAND
env
CC="${PY_CC}"
LDFLAGS=-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
- ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
+ ${Python3_EXECUTABLE} ${setup_py}
build --verbose --build-base ${CYTHON_MODULE_DIR}
- --build-platlib ${CYTHON_MODULE_DIR}/lib.${PYTHON${PYTHON_VERSION}_VERSION_MAJOR}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- DEPENDS ${src})
+ --build-platlib ${output_dir}
+ MAIN_DEPENDENCY ${src}
+ DEPENDS ${setup_py}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ add_custom_target(${target} ALL
+ DEPENDS ${output_dir}/${name}${ext_suffix})
endfunction(distutils_add_cython_module)
function(distutils_install_cython_module name)
endif()
execute_process(
COMMAND
- ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
+ ${Python3_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 ${CYTHON_MODULE_DIR}/lib.3
build_ext --cython-c-in-temp --build-temp ${CMAKE_CURRENT_BINARY_DIR} --cython-include-dirs ${PROJECT_SOURCE_DIR}/src/pybind/rados
install \${options} --single-version-externally-managed --record /dev/null
egg_info --egg-base ${CMAKE_CURRENT_BINARY_DIR}