-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
143 lines (115 loc) · 4.42 KB
/
CMakeLists.txt
File metadata and controls
143 lines (115 loc) · 4.42 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
cmake_minimum_required(VERSION 3.14)
project(GraphFlash LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif ()
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif ()
message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
endif ()
if (ENABLE_ASAN)
message(STATUS "Building with AddressSanitizer enabled")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address")
endif ()
find_package(glog REQUIRED)
find_package(gflags REQUIRED)
find_package(GTest REQUIRED)
find_library(HIREDIS_LIB hiredis REQUIRED)
find_library(HIREDIS_SSL_LIB hiredis_ssl REQUIRED)
find_library(REDIS_PLUS_PLUS_LIB redis++ REQUIRED)
find_package(OpenSSL REQUIRED)
find_path(REDIS_PLUS_PLUS_HEADER sw)
find_path(HIREDIS_HEADER hiredis)
find_package(aws-lambda-runtime REQUIRED CONFIG)
find_package(AWSSDK REQUIRED COMPONENTS core s3)
find_package(cpr REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ZSTD REQUIRED libzstd)
if (ZSTD_FOUND)
include_directories(${ZSTD_INCLUDE_DIRS})
link_directories(${ZSTD_LIBRARY_DIRS})
message(STATUS "Zstd found: ${ZSTD_LIBRARIES}")
else ()
message(FATAL_ERROR "Zstd library not found!")
endif ()
add_subdirectory(third-party/abseil-cpp)
add_library(coding STATIC src/coding.cpp)
target_include_directories(coding PUBLIC include/)
add_library(graphflash INTERFACE)
target_include_directories(graphflash INTERFACE
include/
third-party/
third-party/abseil-cpp)
target_link_libraries(graphflash INTERFACE
coding
absl::flat_hash_map
absl::flat_hash_set)
add_library(http_client
src/utils/http_client.cpp)
target_link_libraries(http_client PRIVATE graphflash cpr::cpr OpenSSL::SSL OpenSSL::Crypto)
add_library(redis_s3_client
src/maas_client/redis_s3_client.cpp)
target_link_libraries(redis_s3_client PRIVATE graphflash ${REDIS_PLUS_PLUS_LIB} ${HIREDIS_SSL_LIB} ${HIREDIS_LIB} zstd glog aws-cpp-sdk-core aws-cpp-sdk-s3)
add_executable(coordinator
src/coordinator/main.cpp)
target_link_libraries(coordinator PRIVATE graphflash gflags http_client redis_s3_client AWS::aws-lambda-runtime)
add_executable(worker
src/worker/main.cpp
src/utils/utils.cpp)
target_include_directories(worker PRIVATE ${Boost_INCLUDE_DIRS})
target_link_libraries(worker PRIVATE
graphflash
pthread
gflags
redis_s3_client
cpr::cpr
AWS::aws-lambda-runtime
absl::flat_hash_map
absl::flat_hash_set
)
file(GLOB WORKER_PLUGIN_SOURCES CONFIGURE_DEPENDS src/worker/plugins/*.cpp)
set(WORKER_PLUGIN_TARGETS)
foreach(plugin_src ${WORKER_PLUGIN_SOURCES})
get_filename_component(plugin_name ${plugin_src} NAME_WE)
set(target_name "worker_plugin_${plugin_name}")
message(STATUS "target_name" ${target_name})
add_library(${target_name} SHARED ${plugin_src})
target_link_libraries(${target_name} PRIVATE graphflash glog)
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${plugin_name})
list(APPEND WORKER_PLUGIN_TARGETS ${target_name})
endforeach()
if(WORKER_PLUGIN_TARGETS)
add_custom_target(worker_plugins ALL DEPENDS ${WORKER_PLUGIN_TARGETS})
else()
add_custom_target(worker_plugins ALL)
endif()
add_executable(upload
src/utils/upload.cpp src/utils/utils.cpp
)
target_include_directories(upload PRIVATE
${Boost_INCLUDE_DIRS}
${REDIS_PLUS_PLUS_HEADER})
target_link_libraries(upload PRIVATE
graphflash
glog
redis_s3_client)
add_executable(download src/utils/download.cpp src/utils/utils.cpp)
target_include_directories(download PRIVATE
${Boost_INCLUDE_DIRS}
${REDIS_PLUS_PLUS_HEADER})
target_link_libraries(download PRIVATE graphflash glog redis_s3_client)
add_executable(partition_tiny src/utils/partition_tiny.cpp src/utils/utils.cpp)
target_link_libraries(partition_tiny PRIVATE graphflash glog zstd absl::flat_hash_map)
add_executable(combine src/utils/combine.cpp)
target_link_libraries(combine PRIVATE graphflash gflags)
aws_lambda_package_target(coordinator)
aws_lambda_package_target(worker)