]> git.proxmox.com Git - ceph.git/blame - ceph/cmake/modules/Distutils.cmake
update sources to v12.1.3
[ceph.git] / ceph / cmake / modules / Distutils.cmake
CommitLineData
7c673cae
FG
1include(CMakeParseArguments)
2
3function(distutils_install_module name)
d2e6a577 4 set(py_srcs setup.py README.rst requirements.txt test-requirements.txt bin ${name})
7c673cae 5 foreach(src ${py_srcs})
d2e6a577
FG
6 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${src})
7 list(APPEND py_clone ${CMAKE_CURRENT_BINARY_DIR}/${src})
8 add_custom_command(
9 OUTPUT ${src}
10 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${src}
11 COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${src})
12 endif()
7c673cae
FG
13 endforeach()
14 add_custom_target(${name}-clone ALL
15 DEPENDS ${py_clone})
16 cmake_parse_arguments(DU "" INSTALL_SCRIPT "" ${ARGN})
17 install(CODE "
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)
22 endif()
23 list(APPEND options --root=\$ENV{DESTDIR})
24 if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
25 list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
26 endif()
27 endif()
28 execute_process(
29 COMMAND ${PYTHON${PYTHON_VERSION}_EXECUTABLE}
30 setup.py install \${options}
31 WORKING_DIRECTORY \"${CMAKE_CURRENT_BINARY_DIR}\")")
32endfunction(distutils_install_module)
33
34function(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
41 COMMAND
42 env
43 CC=${PY_CC}
44 CXX=${PY_CXX}
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}
55 DEPENDS ${src})
56endfunction(distutils_add_cython_module)
57
58function(distutils_install_cython_module name)
59 install(CODE "
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)
64 endif()
65 list(APPEND options --root=\$ENV{DESTDIR})
66 else()
67 list(APPEND options --root=/)
68 endif()
69 execute_process(
70 COMMAND env
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}
82 --verbose
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\")
87 endif()
88 ")
89endfunction(distutils_install_cython_module)