-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
130 lines (109 loc) · 4.7 KB
/
CMakeLists.txt
File metadata and controls
130 lines (109 loc) · 4.7 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
cmake_minimum_required(VERSION 3.5)
# Set extension name here
set(TARGET_NAME duckherder)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -Wunused-variable -Wunused-function -Wunused-but-set-variable"
)
find_package(Arrow REQUIRED CONFIG)
find_package(ArrowFlight REQUIRED CONFIG)
find_package(Protobuf REQUIRED)
set(EXTENSION_NAME ${TARGET_NAME}_extension)
set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension)
project(${TARGET_NAME})
include_directories(src/include)
include_directories(src/include/client)
include_directories(src/include/server)
include_directories(${ARROW_INCLUDE_DIR})
if(${BUILD_UNITTESTS})
add_subdirectory(test/unittest)
# Integration test
include_directories(duckdb/third_party/catch)
add_executable(test_distributed_flight unit/test_distributed_flight.cpp)
target_link_libraries(
test_distributed_flight ${EXTENSION_NAME} Arrow::arrow_static
ArrowFlight::arrow_flight_static protobuf::libprotobuf gRPC::grpc++)
endif()
# Generate protobuf code.
set(PROTO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/distributed.proto)
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})
# Add directory for generated protobuf headers.
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(UTIL_SOURCES src/utils/catalog_utils.cpp src/utils/time_utils.cpp
src/utils/thread_utils.cpp src/utils/network_utils.cpp)
set(CLIENT_SOURCES
src/client/distributed_alter_table.cpp
src/client/distributed_client.cpp
src/client/distributed_create_index.cpp
src/client/distributed_delete.cpp
src/client/distributed_flight_client.cpp
src/client/distributed_insert.cpp
src/client/distributed_table_scan_function.cpp
src/client/duckherder_catalog.cpp
src/client/duckherder_index_catalog_entry.cpp
src/client/duckherder_pragmas.cpp
src/client/duckherder_storage.cpp
src/client/duckherder_schema_catalog_entry.cpp
src/client/duckherder_table_catalog_entry.cpp
src/client/duckherder_transaction.cpp
src/client/duckherder_transaction_manager.cpp
src/client/entry_lookup_info_hash_utils.cpp
src/client/logical_remote_alter_table.cpp
src/client/logical_remote_create_index.cpp)
set(SERVER_DRIVER_SOURCES
src/server/driver/distributed_executor.cpp
src/server/driver/distributed_flight_server.cpp
src/server/driver/distributed_server_function.cpp
src/server/driver/distributed_server_main.cpp
src/server/driver/duckling_catalog.cpp
src/server/driver/duckling_index_catalog_entry.cpp
src/server/driver/duckling_schema_catalog_entry.cpp
src/server/driver/duckling_storage.cpp
src/server/driver/worker_node_client.cpp
src/server/driver/duckling_table_catalog_entry.cpp
src/server/driver/duckling_transaction.cpp
src/server/driver/duckling_transaction_manager.cpp
src/server/driver/partition_sql_generator.cpp
src/server/driver/plan_serializer.cpp
src/server/driver/query_plan_analyzer.cpp
src/server/driver/query_utils.cpp
src/server/driver/result_merger.cpp
src/server/driver/task_partitioner.cpp
src/server/driver/worker_manager.cpp)
set(SERVER_WORKER_SOURCES src/server/worker/worker_node.cpp)
set(EXTENSION_SOURCES
${PROTO_SRCS} # Generated protobuf sources
${CLIENT_SOURCES}
${SERVER_DRIVER_SOURCES}
${SERVER_WORKER_SOURCES}
${UTIL_SOURCES}
src/arrow_utils.cpp
src/base_query_recorder.cpp
src/duckherder_extension.cpp
src/duckherder_extension_instance_state.cpp
src/query_execution_stats_query_function.cpp
src/query_history_query_function.cpp
src/query_recorder.cpp)
build_static_extension(${TARGET_NAME} ${EXTENSION_SOURCES})
build_loadable_extension(${TARGET_NAME} " " ${EXTENSION_SOURCES})
# Note: gRPC and Protobuf are transitive dependencies of ArrowFlight.
target_link_libraries(
${EXTENSION_NAME} Arrow::arrow_static ArrowFlight::arrow_flight_static
protobuf::libprotobuf gRPC::grpc++)
target_link_libraries(
${LOADABLE_EXTENSION_NAME} Arrow::arrow_static
ArrowFlight::arrow_flight_static protobuf::libprotobuf gRPC::grpc++)
install(
TARGETS ${EXTENSION_NAME}
EXPORT "${DUCKDB_EXPORT_SET}"
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}")
# Add distributed server executable.
add_executable(distributed_server src/server/driver/distributed_server_main.cpp)
target_link_libraries(
distributed_server ${EXTENSION_NAME} Arrow::arrow_static
ArrowFlight::arrow_flight_static protobuf::libprotobuf gRPC::grpc++)
# Add distributed worker executable.
add_executable(distributed_worker src/server/worker/distributed_worker_main.cpp)
target_link_libraries(
distributed_worker ${EXTENSION_NAME} Arrow::arrow_static
ArrowFlight::arrow_flight_static protobuf::libprotobuf gRPC::grpc++)