]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | include(CMakeParseArguments) |
2 | ||
3 | function(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}\")") | |
32 | endfunction(distutils_install_module) | |
33 | ||
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 | |
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}) | |
56 | endfunction(distutils_add_cython_module) | |
57 | ||
58 | function(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 | ") | |
89 | endfunction(distutils_install_cython_module) |