1set(_trout_VHAL_CXX_FLAGS -Wall -Werror -std=c++17)
2
3include(${trout_SRC_ROOT}/cmake/fmtlib.cmake)
4include(${trout_SRC_ROOT}/cmake/android.cmake)
5include(${trout_SRC_ROOT}/cmake/default_native_vhal.cmake)
6include(${trout_SRC_ROOT}/cmake/grpc.cmake)
7include(${trout_SRC_ROOT}/cmake/jsoncpp.cmake)
8include(${trout_SRC_ROOT}/cmake/protobuf.cmake)
9include(${trout_SRC_ROOT}/cmake/utils/grpc_cpp_generator.cmake)
10
11get_filename_component(trout_VHAL_SRC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/.. ABSOLUTE)
12set(trout_VHAL_PREBUILT_DIR ${trout_VHAL_SRC_ROOT}/agl_build/prebuilt)
13
14if (NOT trout_GENS_DIR)
15  set(trout_GENS_DIR ${PROJECT_BINARY_DIR}/gens)
16endif()
17
18
19trout_generate_grpc_cpp_from_proto(
20    INCLUDES
21    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/proto
22    SRCS
23    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/proto/VehicleHalProto.proto
24    ${trout_VHAL_SRC_ROOT}/proto/VehicleServer.proto)
25
26# ========== Protobuf generated code ==================
27
28add_library(vehicle_hal_protobuf_gen
29    ${trout_GENS_DIR}/VehicleHalProto.pb.cc
30    ${trout_GENS_DIR}/VehicleHalProto.grpc.pb.cc
31    ${trout_GENS_DIR}/VehicleServer.pb.cc
32    ${trout_GENS_DIR}/VehicleServer.grpc.pb.cc
33)
34
35target_link_libraries(vehicle_hal_protobuf_gen
36    ${trout_GRPCXX_LIBRARIES}
37)
38
39target_compile_options(vehicle_hal_protobuf_gen PRIVATE ${_trout_VHAL_CXX_FLAGS} -Wno-array-bounds)
40
41# ========== vehicle_hal_grpc_server ==============
42
43add_executable(vehicle_hal_grpc_server
44    ${trout_VHAL_SRC_ROOT}/VirtualizationGrpcServer.cpp
45    ${trout_VHAL_SRC_ROOT}/GarageModeServerSideHandler.cpp
46    ${trout_VHAL_SRC_ROOT}/GrpcVehicleServer.cpp
47    ${trout_VHAL_SRC_ROOT}/PowerStateListener.cpp
48    ${trout_VHAL_SRC_ROOT}/Utils.cpp
49
50    ${trout_NATIVE_VHAL_ROOT_DIR}/common/src/Obd2SensorStore.cpp
51    ${trout_NATIVE_VHAL_ROOT_DIR}/common/src/VehicleObjectPool.cpp
52    ${trout_NATIVE_VHAL_ROOT_DIR}/common/src/VehicleUtils.cpp
53    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/VehicleHalServer.cpp
54    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/EmulatedUserHal.cpp
55    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/GeneratorHub.cpp
56    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/JsonFakeValueGenerator.cpp
57    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/LinearFakeValueGenerator.cpp
58    ${trout_NATIVE_VHAL_ROOT_DIR}/impl/vhal_v2_0/ProtoMessageConverter.cpp
59)
60
61target_include_directories(vehicle_hal_grpc_server
62    PRIVATE ${trout_ANDROID_INCLUDE_DIRS}
63    PRIVATE ${trout_GENS_DIR}
64    PRIVATE ${trout_JSONCPP_INCLUDE_DIRS}
65    PRIVATE ${trout_NAVTIVE_VHAL_COMMON_INCLUDE_DIRS}
66    PRIVATE ${trout_NAVTIVE_VHAL_IMPL_INCLUDE_DIRS}
67    PRIVATE ${trout_VHAL_PREBUILT_DIR}/include
68)
69
70target_link_libraries(vehicle_hal_grpc_server
71    vehicle_hal_protobuf_gen
72    ${trout_ANDROID_LIBRARIES}
73    ${trout_JSONCPP_LIBRARIES}
74)
75
76target_compile_options(vehicle_hal_grpc_server PRIVATE ${_trout_VHAL_CXX_FLAGS})
77