]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | include(Distutils) |
2 | ||
3 | set(CYTHON_MODULE_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules) | |
4 | ||
9f95a23c TL |
5 | find_package(Cython REQUIRED) |
6 | ||
7 | add_subdirectory(rados) | |
8 | add_custom_target(cython_modules ALL | |
9 | DEPENDS cython_rados) | |
10 | ||
11 | if(WITH_RBD) | |
12 | add_subdirectory(rbd) | |
13 | add_dependencies(cython_modules cython_rbd) | |
11fdf7f2 | 14 | endif() |
9f95a23c TL |
15 | if(WITH_CEPHFS) |
16 | add_subdirectory(cephfs) | |
17 | add_dependencies(cython_modules cython_cephfs) | |
11fdf7f2 | 18 | endif() |
9f95a23c TL |
19 | if(WITH_RADOSGW) |
20 | add_subdirectory(rgw) | |
21 | add_dependencies(cython_modules cython_rgw) | |
7c673cae | 22 | endif() |
7c673cae | 23 | |
9f95a23c TL |
24 | # if CMAKE_INSTALL_PREFIX is an empty string, must replace |
25 | # it with "/" to make PYTHON_INSTALL_TEMPLATE an absolute path to be | |
26 | # consistent with all other installation paths. | |
27 | if(CMAKE_INSTALL_PREFIX) | |
28 | set(PYTHON_INSTALL_TEMPLATE "${CMAKE_INSTALL_PREFIX}") | |
29 | else(CMAKE_INSTALL_PREFIX) | |
30 | set(PYTHON_INSTALL_TEMPLATE "/") | |
31 | endif(CMAKE_INSTALL_PREFIX) | |
7c673cae | 32 | |
9f95a23c TL |
33 | execute_process( |
34 | COMMAND | |
35 | ${Python3_EXECUTABLE} -c "from distutils import sysconfig; print(sysconfig.get_python_lib(prefix='${PYTHON_INSTALL_TEMPLATE}'))" | |
36 | OUTPUT_VARIABLE "PYTHON3_INSTDIR" | |
37 | OUTPUT_STRIP_TRAILING_WHITESPACE) | |
7c673cae | 38 | |
9f95a23c | 39 | install(FILES |
20effc67 TL |
40 | ceph_argparse.py |
41 | ceph_daemon.py | |
9f95a23c | 42 | DESTINATION ${PYTHON3_INSTDIR}) |
7c673cae | 43 | |
7c673cae | 44 | if(WITH_MGR) |
9f95a23c TL |
45 | execute_process( |
46 | COMMAND ${Python3_EXECUTABLE} -c "import ssl; print('.'.join(map(str,ssl.OPENSSL_VERSION_INFO[0:3])))" | |
47 | RESULT_VARIABLE PYSSL_RESULT | |
48 | OUTPUT_VARIABLE PYSSL_VER | |
49 | ERROR_QUIET) | |
50 | if (NOT ${PYSSL_RESULT}) | |
51 | # the ideal way to get the soversion is to parse the suffix of file name of | |
52 | # `/lib/x86_64-linux-gnu/libssl.so.1.0.0`, but since we're lazy, and will just | |
53 | # trust the version number here. | |
54 | macro(get_openssl_soversion version prefix) | |
55 | string(REPLACE "." ";" ssl_version_list ${version}) | |
56 | list(GET ssl_version_list 0 ssl_version_major) | |
57 | list(GET ssl_version_list 1 ssl_version_minor) | |
58 | set(${prefix}_SOVERSION ${ssl_version_major}.${ssl_version_minor}) | |
59 | unset(ssl_version_list) | |
60 | unset(ssl_version_major) | |
61 | unset(ssl_version_minor) | |
62 | endmacro() | |
63 | get_openssl_soversion(${OPENSSL_VERSION} OPENSSL) | |
64 | get_openssl_soversion(${PYSSL_VER} PYSSL) | |
65 | if(NOT (OPENSSL_SOVERSION VERSION_EQUAL PYSSL_SOVERSION)) | |
66 | message(FATAL_ERROR "Python and Ceph link to different OpenSSL versions: ${PYSSL_VER} vs ${OPENSSL_VERSION}") | |
11fdf7f2 | 67 | endif() |
9f95a23c TL |
68 | else() |
69 | message(WARNING "could not determine ssl version of python crypto lib") | |
70 | endif() | |
11fdf7f2 | 71 | add_subdirectory(mgr) |
7c673cae | 72 | endif(WITH_MGR) |