Files
zooqueen 41000bba0c datastore: ArrowFlight defaults OFF (gRPC ripped out, ArrowFlight is gRPC-based)
Configure hit FATAL 'Can't use ArrowFlight without gRPC' because ENABLE_ARROW_FLIGHT defaulted
ON (ENABLE_LIBRARIES) while ENABLE_GRPC=0. ArrowFlight went with gRPC, so default it OFF.
2026-06-21 21:05:37 -07:00

79 lines
3.3 KiB
CMake

set (ENABLE_ARROW_FLIGHT_DEFAULT OFF) # gRPC ripped out; ArrowFlight is gRPC-based
option (ENABLE_ARROW_FLIGHT "Enable ArrowFlight" ${ENABLE_ARROW_FLIGHT_DEFAULT})
if (NOT ENABLE_ARROW_FLIGHT)
message(STATUS "Not using ArrowFlight")
return()
endif()
if(NOT ENABLE_GRPC)
message(${RECONFIGURE_MESSAGE_LEVEL} "Can't use ArrowFlight without gRPC")
return()
endif()
set(GRPC_INCLUDE_DIR ${Datastore_SOURCE_DIR}/contrib/grpc/include)
set(ARROW_FLIGHT_SRC_DIR ${Datastore_SOURCE_DIR}/contrib/arrow/cpp/src/arrow/flight)
set(ARROW_FLIGHT_SQL_SRC_DIR ${Datastore_SOURCE_DIR}/contrib/arrow/cpp/src/arrow/flight/sql)
set(ARROW_FLIGHT_PROTO_DIR ${Datastore_SOURCE_DIR}/contrib/arrow/format)
set(ARROW_FLIGHT_GENERATED_SRC_DIR ${ARROW_GENERATED_SRC_DIR}/arrow/flight)
set(ARROW_FLIGHT_SQL_GENERATED_SRC_DIR ${ARROW_GENERATED_SRC_DIR}/arrow/flight/sql)
set(PROTOBUF_IMPORT_DIRS ${ARROW_FLIGHT_PROTO_DIR} ${Datastore_SOURCE_DIR}/contrib/google-protobuf/src)
PROTOBUF_GENERATE_GRPC_CPP(
flight_sources
flight_headers
APPEND_PATH
PROTOC_OUT_DIR ${ARROW_FLIGHT_GENERATED_SRC_DIR}
${ARROW_FLIGHT_PROTO_DIR}/Flight.proto
)
PROTOBUF_GENERATE_GRPC_CPP(
flight_sql_sources
flight_sql_headers
APPEND_PATH
PROTOC_OUT_DIR ${ARROW_FLIGHT_SQL_GENERATED_SRC_DIR}
${ARROW_FLIGHT_PROTO_DIR}/FlightSql.proto
)
# NOTE: we do not compile the ${ARROW_FLIGHT_GENERATED_SRCS} directly, instead
# compiling then via protocol_internal.cc which contains some gRPC template
# overrides to enable Flight-specific optimizations. See comments in
# protobuf-internal.cc
set(ARROW_FLIGHT_SRCS
${ARROW_FLIGHT_GENERATED_SRC_DIR}/Flight.pb.cc
${ARROW_FLIGHT_SQL_GENERATED_SRC_DIR}/FlightSql.pb.cc
${ARROW_FLIGHT_SRC_DIR}/client.cc
${ARROW_FLIGHT_SRC_DIR}/client_cookie_middleware.cc
${ARROW_FLIGHT_SRC_DIR}/client_tracing_middleware.cc
${ARROW_FLIGHT_SRC_DIR}/cookie_internal.cc
${ARROW_FLIGHT_SRC_DIR}/middleware.cc
${ARROW_FLIGHT_SRC_DIR}/serialization_internal.cc
${ARROW_FLIGHT_SRC_DIR}/server.cc
${ARROW_FLIGHT_SRC_DIR}/server_auth.cc
${ARROW_FLIGHT_SRC_DIR}/server_tracing_middleware.cc
${ARROW_FLIGHT_SRC_DIR}/transport.cc
${ARROW_FLIGHT_SRC_DIR}/transport_server.cc
${ARROW_FLIGHT_SRC_DIR}/transport/grpc/grpc_client.cc
${ARROW_FLIGHT_SRC_DIR}/transport/grpc/grpc_server.cc
${ARROW_FLIGHT_SRC_DIR}/transport/grpc/protocol_grpc_internal.cc
${ARROW_FLIGHT_SRC_DIR}/transport/grpc/serialization_internal.cc
${ARROW_FLIGHT_SRC_DIR}/transport/grpc/util_internal.cc
${ARROW_FLIGHT_SRC_DIR}/types.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/client.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/column_metadata.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/protocol_internal.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/server_session_middleware.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/server.cc
${ARROW_FLIGHT_SQL_SRC_DIR}/sql_info_internal.cc
)
add_library(_arrow_flight ${ARROW_FLIGHT_SRCS})
add_library(ch_contrib::arrow_flight ALIAS _arrow_flight)
add_dependencies(_arrow_flight _protoc grpc_cpp_plugin)
target_link_libraries(_arrow_flight PUBLIC _arrow)
target_link_libraries(_arrow_flight PRIVATE _protobuf grpc++)
target_include_directories(_arrow_flight PUBLIC ${ARROW_GENERATED_SRC_DIR})