File: common.cmake

package info (click to toggle)
rpma 1.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,040 kB
  • sloc: ansic: 27,313; sh: 1,805; perl: 1,148; makefile: 8
file content (66 lines) | stat: -rw-r--r-- 1,972 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2020-2022, Intel Corporation
#

cmake_minimum_required(VERSION 3.3)

function(add_example_with_pmem)
	set(options USE_LIBPROTOBUFC)
	set(oneValueArgs NAME)
	set(multiValueArgs SRCS)
	cmake_parse_arguments(EXAMPLE
		"${options}"
		"${oneValueArgs}"
		"${multiValueArgs}"
		${ARGN})

	set(target ${EXAMPLE_NAME})
	
	if (EXAMPLE_USE_LIBPROTOBUFC AND NOT LIBPROTOBUFC_FOUND)
		message(STATUS "${target} skipped - no libprotobuf-c found")
		return()
	endif()

	prepend(srcs ${CMAKE_CURRENT_SOURCE_DIR} ${srcs})

	set(EXAMPLE_SRCS ${EXAMPLE_SRCS} ../common/common-conn.c ../common/common-hello.c)
	if (LIBPMEM_FOUND OR LIBPMEM2_FOUND)
		set(EXAMPLE_SRCS ${EXAMPLE_SRCS}
			../common/common-map_file_with_signature_check.c)
	endif()

	if (LIBPMEM2_FOUND)
		set(EXAMPLE_SRCS ${EXAMPLE_SRCS} ../common/common-pmem2_map_file.c)
	elseif (LIBPMEM_FOUND)
		set(EXAMPLE_SRCS ${EXAMPLE_SRCS} ../common/common-pmem_map_file.c)
	endif()
	add_executable(${target} ${EXAMPLE_SRCS})
	target_include_directories(${target} PRIVATE ../common
		${LIBRPMA_INCLUDE_DIR} ${LIBIBVERBS_INCLUDE_DIRS})
	target_link_libraries(${target} rpma ${LIBIBVERBS_LIBRARIES} ${LIBRT_LIBRARIES})

	if(LIBPMEM2_FOUND)
		target_include_directories(${target}
			PRIVATE ${LIBPMEM2_INCLUDE_DIRS})
		target_link_libraries(${target} ${LIBPMEM2_LIBRARIES})
		target_compile_definitions(${target}
			PRIVATE USE_LIBPMEM2)
	elseif(LIBPMEM_FOUND)
		target_include_directories(${target}
			PRIVATE ${LIBPMEM_INCLUDE_DIRS})
		target_link_libraries(${target} ${LIBPMEM_LIBRARIES})
		target_compile_definitions(${target}
			PRIVATE USE_LIBPMEM)
	endif()

	if(EXAMPLE_USE_LIBPROTOBUFC)
		target_include_directories(${target}
			PRIVATE ${LIBPROTOBUFC_INCLUDE_DIRS})
		target_link_libraries(${target} ${LIBPROTOBUFC_LIBRARIES})
	endif()

	if(IBV_ADVISE_MR_FLAGS_SUPPORTED)
		target_compile_definitions(${target} PRIVATE IBV_ADVISE_MR_FLAGS_SUPPORTED=1)
	endif()
endfunction()