]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/Buildpmem.cmake
update source to Ceph Pacific 16.2.2
[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 include(FindMake)
15 find_make("MAKE_EXECUTABLE" "make_cmd")
16
17 ExternalProject_Add(pmdk_ext
18 GIT_REPOSITORY "https://github.com/ceph/pmdk.git"
19 GIT_TAG "1.7"
20 GIT_SHALLOW TRUE
21 SOURCE_DIR ${CMAKE_BINARY_DIR}/src/pmdk
22 CONFIGURE_COMMAND ""
23 # Explicitly built w/o NDCTL, otherwise if ndtcl is present on the
24 # build system tests statically linking to librbd (which uses
25 # libpmemobj) will not link (because we don't build the ndctl
26 # static library here).
27 BUILD_COMMAND ${make_cmd} CC=${CMAKE_C_COMPILER} NDCTL_ENABLE=n
28 BUILD_IN_SOURCE 1
29 BUILD_BYPRODUCTS "${PMDK_LIB}/libpmem.a" "${PMDK_LIB}/libpmemobj.a"
30 INSTALL_COMMAND "true")
31
32 # libpmem
33 add_library(pmem::pmem STATIC IMPORTED)
34 add_dependencies(pmem::pmem pmdk_ext)
35 file(MAKE_DIRECTORY ${PMDK_INCLUDE})
36 set_target_properties(pmem::pmem PROPERTIES
37 INTERFACE_INCLUDE_DIRECTORIES ${PMDK_INCLUDE}
38 IMPORTED_LOCATION "${PMDK_LIB}/libpmem.a"
39 INTERFACE_LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
40
41 # libpmemobj
42 add_library(pmem::pmemobj STATIC IMPORTED)
43 add_dependencies(pmem::pmemobj pmdk_ext)
44 set_target_properties(pmem::pmemobj PROPERTIES
45 INTERFACE_INCLUDE_DIRECTORIES ${PMDK_INCLUDE}
46 IMPORTED_LOCATION "${PMDK_LIB}/libpmemobj.a"
47 INTERFACE_LINK_LIBRARIES "pmem::pmem;${CMAKE_THREAD_LIBS_INIT}")
48 endfunction()