]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/Buildpmem.cmake
import 15.2.0 Octopus source
[ceph.git] / ceph / cmake / modules / Buildpmem.cmake
1 function(build_pmem)
2 include(ExternalProject)
3 set(PMDK_SRC "${CMAKE_BINARY_DIR}/src/pmdk/src")
4 set(PMDK_INCLUDE "${PMDK_SRC}/include")
5
6 # Use debug PMDK libs in debug lib/rbd builds
7 if(CMAKE_BUILD_TYPE STREQUAL Debug)
8 set(PMDK_LIB_DIR "debug")
9 else()
10 set(PMDK_LIB_DIR "nondebug")
11 endif()
12 set(PMDK_LIB "${PMDK_SRC}/${PMDK_LIB_DIR}")
13
14 ExternalProject_Add(pmdk_ext
15 GIT_REPOSITORY "https://github.com/ceph/pmdk.git"
16 GIT_TAG "1.7"
17 SOURCE_DIR ${CMAKE_BINARY_DIR}/src/pmdk
18 CONFIGURE_COMMAND ""
19 # Explicitly built w/o NDCTL, otherwise if ndtcl is present on the
20 # build system tests statically linking to librbd (which uses
21 # libpmemobj) will not link (because we don't build the ndctl
22 # static library here).
23 BUILD_COMMAND $(MAKE) NDCTL_ENABLE=n
24 BUILD_IN_SOURCE 1
25 BUILD_BYPRODUCTS "${PMDK_LIB}/libpmem.a" "${PMDK_LIB}/libpmemobj.a"
26 INSTALL_COMMAND "true")
27
28 # libpmem
29 add_library(pmem::pmem STATIC IMPORTED)
30 add_dependencies(pmem::pmem pmdk_ext)
31 file(MAKE_DIRECTORY ${PMDK_INCLUDE})
32 set_target_properties(pmem::pmem PROPERTIES
33 INTERFACE_INCLUDE_DIRECTORIES ${PMDK_INCLUDE}
34 IMPORTED_LOCATION "${PMDK_LIB}/libpmem.a"
35 INTERFACE_LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
36
37 # libpmemobj
38 add_library(pmem::pmemobj STATIC IMPORTED)
39 add_dependencies(pmem::pmemobj pmdk_ext)
40 set_target_properties(pmem::pmemobj PROPERTIES
41 INTERFACE_INCLUDE_DIRECTORIES ${PMDK_INCLUDE}
42 IMPORTED_LOCATION "${PMDK_LIB}/libpmemobj.a"
43 INTERFACE_LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
44
45 endfunction()