1 include(CMakeParseArguments)
3 function(distutils_install_module name)
4 set(py_srcs setup.py README.rst requirements.txt test-requirements.txt bin ${name})
5 foreach(src ${py_srcs})
6 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${src})
7 list(APPEND py_clone ${CMAKE_CURRENT_BINARY_DIR}/${src})
10 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${src}
11 COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${src})
14 add_custom_target(${name}-clone ALL
16 cmake_parse_arguments(DU "" INSTALL_SCRIPT "" ${ARGN})
18 set(options --prefix=${CMAKE_INSTALL_PREFIX})
19 if(DEFINED ENV{DESTDIR})
20 if(EXISTS /etc/debian_version)
21 list(APPEND options --install-layout=deb)
23 list(APPEND options --root=\$ENV{DESTDIR})
24 if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
25 list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
29 COMMAND ${PYTHON${PYTHON_VERSION}_EXECUTABLE}
30 setup.py install \${options}
31 WORKING_DIRECTORY \"${CMAKE_CURRENT_BINARY_DIR}\")")
32 endfunction(distutils_install_module)
34 function(distutils_add_cython_module name src)
35 get_property(compiler_launcher GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
36 get_property(link_launcher GLOBAL PROPERTY RULE_LAUNCH_LINK)
37 set(PY_CC \"${compiler_launcher} ${CMAKE_C_COMPILER}\")
38 set(PY_CXX \"${compiler_launcher} ${CMAKE_CXX_COMPILER}\")
39 set(PY_LDSHARED \"${link_launcher} ${CMAKE_C_COMPILER} -shared\")
40 add_custom_target(${name} ALL
45 LDSHARED=${PY_LDSHARED}
46 OPT=\"-DNDEBUG -g -fwrapv -O2 -w\"
47 LDFLAGS=-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
48 CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
49 CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
50 CFLAGS=\"-iquote${CMAKE_SOURCE_DIR}/src/include -w\"
51 ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
52 build --verbose --build-base ${CYTHON_MODULE_DIR}
53 --build-platlib ${CYTHON_MODULE_DIR}/lib.${PYTHON${PYTHON_VERSION}_VERSION_MAJOR}
54 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
56 endfunction(distutils_add_cython_module)
58 function(distutils_install_cython_module name)
60 set(options --prefix=${CMAKE_INSTALL_PREFIX})
61 if(DEFINED ENV{DESTDIR})
62 if(EXISTS /etc/debian_version)
63 list(APPEND options --install-layout=deb)
65 list(APPEND options --root=\$ENV{DESTDIR})
67 list(APPEND options --root=/)
71 CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
72 CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
73 CC=${CMAKE_C_COMPILER}
74 CPPFLAGS=\"-iquote${CMAKE_SOURCE_DIR}/src/include\"
75 LDFLAGS=\"-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\"
76 ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
77 build --verbose --build-base ${CYTHON_MODULE_DIR}
78 --build-platlib ${CYTHON_MODULE_DIR}/lib.${PYTHON${PYTHON_VERSION}_VERSION_MAJOR}
79 build_ext --cython-c-in-temp --build-temp ${CMAKE_CURRENT_BINARY_DIR} --cython-include-dirs ${PROJECT_SOURCE_DIR}/src/pybind/rados
80 install \${options} --single-version-externally-managed --record /dev/null
81 egg_info --egg-base ${CMAKE_CURRENT_BINARY_DIR}
83 WORKING_DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}\"
84 RESULT_VARIABLE install_res)
85 if(NOT \"\${install_res}\" STREQUAL 0)
86 message(FATAL_ERROR \"Failed to build and install ${name} python module\")
89 endfunction(distutils_install_cython_module)