-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
62 lines (43 loc) · 1.44 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.21)
project(rts_cache C)
set(CC gcc-9.3)
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_VERBOSE_MAKEFILE ON)
# ---- OS DETECTION ---- #
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
# ---- PKG CONFIG ---- #
if(LINUX)
find_package(PkgConfig)
# Create var aliases for libs
pkg_check_modules(libpmem REQUIRED IMPORTED_TARGET libpmem)
pkg_check_modules(libpmem2 REQUIRED IMPORTED_TARGET libpmem2)
pkg_check_modules(libpmemobj REQUIRED IMPORTED_TARGET libpmemobj)
endif()
# ---- SOURCES ---- #
# Include source content
file(GLOB_RECURSE sourceFiles CONFIGURE_DEPENDS "src/*.c")
file(GLOB_RECURSE headerFiles CONFIGURE_DEPENDS "src/*.h")
set(includeDirs "")
foreach(_headerFile ${headerFiles})
get_filename_component(_dir ${_headerFile} PATH)
list(APPEND includeDirs ${_dir})
endforeach()
list(REMOVE_DUPLICATES includeDirs)
# Mark executable
add_executable(rts_cache ${sourceFiles})
target_include_directories(rts_cache PRIVATE ${includeDirs})
# ---- LIBS ---- #
if(LINUX)
# Link libs via aliases
target_link_libraries(rts_cache PUBLIC PkgConfig::libpmem)
target_link_libraries(rts_cache PUBLIC PkgConfig::libpmemobj)
else()
# PMDK headers (for OSX dev, this is compiled on linux)
target_include_directories(rts_cache PRIVATE "./include")
endif()
# OpenCL
find_package(OpenCL REQUIRED)
target_link_libraries(rts_cache PRIVATE OpenCL::OpenCL)