61 lines
2.4 KiB
CMake
61 lines
2.4 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(cognitive_agent_can_read_trans LANGUAGES CXX)
|
|
|
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
|
|
|
set(CAN_PROTOCOL_SOURCE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../../config/can_protocol/semantic_protocol.json")
|
|
set(CAN_PROTOCOL_GENERATOR
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../generate_can_semantic_protocol.py")
|
|
set(CAN_PROTOCOL_CPP
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/generated/can_semantic_protocol.hpp")
|
|
set(CAN_PROTOCOL_PYTHON
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/../../src/cognitive_agent/generated/can_semantic_protocol.py")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CAN_PROTOCOL_CPP}" "${CAN_PROTOCOL_PYTHON}"
|
|
COMMAND "${Python3_EXECUTABLE}" "${CAN_PROTOCOL_GENERATOR}"
|
|
DEPENDS "${CAN_PROTOCOL_SOURCE}" "${CAN_PROTOCOL_GENERATOR}"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.."
|
|
COMMENT "Generating shared CAN semantic protocol views"
|
|
VERBATIM
|
|
)
|
|
add_custom_target(generate_can_semantic_protocol
|
|
DEPENDS "${CAN_PROTOCOL_CPP}" "${CAN_PROTOCOL_PYTHON}")
|
|
|
|
set(CANFD_ROOT "/home/orin/project511/project-code/canfd" CACHE PATH
|
|
"Directory containing can_read_trans.cpp, zcan.h and libusbcanfd.so")
|
|
|
|
foreach(required_file can_read_trans.cpp zcan.h libusbcanfd.so)
|
|
if(NOT EXISTS "${CANFD_ROOT}/${required_file}")
|
|
message(FATAL_ERROR "Missing ${CANFD_ROOT}/${required_file}")
|
|
endif()
|
|
endforeach()
|
|
|
|
add_executable(can_read_trans main.cpp)
|
|
add_dependencies(can_read_trans generate_can_semantic_protocol)
|
|
target_compile_features(can_read_trans PRIVATE cxx_std_17)
|
|
# The vendor zcan.h intentionally contains an anonymous packed structure.
|
|
# Keep useful warnings without treating that SDK ABI declaration as our error.
|
|
target_compile_options(can_read_trans PRIVATE -Wall -Wextra)
|
|
target_compile_definitions(can_read_trans PRIVATE
|
|
CANFD_LEGACY_SOURCE="${CANFD_ROOT}/can_read_trans.cpp"
|
|
CANFD_PROJECT_DIR="${CANFD_ROOT}"
|
|
)
|
|
target_include_directories(can_read_trans PRIVATE "${CANFD_ROOT}")
|
|
target_link_libraries(can_read_trans PRIVATE
|
|
"${CANFD_ROOT}/libusbcanfd.so"
|
|
pthread
|
|
)
|
|
set_target_properties(can_read_trans PROPERTIES
|
|
BUILD_RPATH "${CANFD_ROOT}"
|
|
INSTALL_RPATH "${CANFD_ROOT}"
|
|
)
|
|
|
|
enable_testing()
|
|
add_test(NAME can_read_trans_self_test COMMAND can_read_trans self-test)
|
|
add_test(NAME can_read_trans_console_help COMMAND can_read_trans console --help)
|
|
set_tests_properties(can_read_trans_console_help PROPERTIES
|
|
PASS_REGULAR_EXPRESSION "console.*--execute"
|
|
)
|