Keep vanetza-idf in obu-firmware, so a plain clone builds the firmware
obu-firmware builds against the vanetza-idf C-ITS library, which until now came from the colleague's microbu-esp32c5 tree beside the repository and was not tracked here, so a clone of this repository could not build the firmware it ships. The library alone is now part of obu-firmware, as obu-firmware/external/vanetza-idf: their external/vanetza-idf at commit cf4b99f, unchanged (9775 files; see its PROVENANCE.md). CMake takes it from there by default; -DVANETZA_IDF_DIR still points the build elsewhere. The rest of the colleague's tree (their own VAM firmware, PKI tooling, station-link Python tools, the V2X2MAP bridge) stays out of this repository and gitignored; nothing is pushed to their repository. NOTES.md, docs/06, TODO.md and the pcap verifier's usage line point at the new location.
This commit is contained in:
+158
@@ -0,0 +1,158 @@
|
||||
if(ESP_PLATFORM)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ports/esp_idf/CMakeLists.txt")
|
||||
return()
|
||||
endif()
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
cmake_policy(VERSION 3.14...3.31)
|
||||
project(Vanetza VERSION 26.02)
|
||||
set(VANETZA_SOVERSION 0)
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
||||
|
||||
# Look up threading library (usually pthread)
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
||||
find_package(Threads MODULE)
|
||||
|
||||
# Build configuration options
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
|
||||
option(BUILD_TESTS "Build unit tests" OFF)
|
||||
if(BUILD_TESTS)
|
||||
enable_testing()
|
||||
add_subdirectory(gtest)
|
||||
endif()
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib/static)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(UseVanetza)
|
||||
|
||||
# Enable usage of targets' folder property (good for Visual Studio)
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
# Find project dependencies
|
||||
find_package(Boost 1.70 REQUIRED COMPONENTS date_time OPTIONAL_COMPONENTS program_options CONFIG)
|
||||
vanetza_optional_dependency(GeographicLib 1.37 VANETZA_WITH_GEOGRAPHICLIB "Use GeographicLib for precise geodesy")
|
||||
vanetza_optional_dependency(CapnProto 0.8 VANETZA_WITH_RPC "Enable RPC support")
|
||||
vanetza_optional_dependency(CryptoPP 5.6.1 VANETZA_WITH_CRYPTOPP "Enable Crypto++ support")
|
||||
vanetza_optional_dependency(OpenSSL 1.1.1 VANETZA_WITH_OPENSSL "Enable OpenSSL extensions")
|
||||
|
||||
option(VANETZA_WITH_PQC "Enable the experimental hybrid-PQC certificate profile" OFF)
|
||||
if(VANETZA_WITH_PQC)
|
||||
find_package(liboqs 0.14 CONFIG REQUIRED)
|
||||
endif()
|
||||
|
||||
option(VANETZA_EMBED_COUNTRY_DATA "Embed country boundary data into geodesy library" OFF)
|
||||
|
||||
add_subdirectory(vanetza/access)
|
||||
add_subdirectory(vanetza/asn1)
|
||||
add_subdirectory(vanetza/btp)
|
||||
add_subdirectory(vanetza/common)
|
||||
add_subdirectory(vanetza/dcc)
|
||||
add_subdirectory(vanetza/facilities)
|
||||
add_subdirectory(vanetza/geodesy)
|
||||
add_subdirectory(vanetza/geonet)
|
||||
add_subdirectory(vanetza/gnss)
|
||||
add_subdirectory(vanetza/net)
|
||||
add_subdirectory(vanetza/rpc)
|
||||
add_subdirectory(vanetza/security)
|
||||
add_subdirectory(vanetza/units)
|
||||
|
||||
option(BUILD_SOCKTAP "Build socktap application" OFF)
|
||||
if(BUILD_SOCKTAP)
|
||||
add_subdirectory(tools/socktap)
|
||||
endif()
|
||||
|
||||
option(BUILD_CERTIFY "Build certify application" OFF)
|
||||
if(BUILD_CERTIFY)
|
||||
add_subdirectory(tools/certify)
|
||||
if(VANETZA_WITH_PQC)
|
||||
add_subdirectory(tools/certify-pqc)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(BUILD_BENCHMARK "Build benchmark application" OFF)
|
||||
if(BUILD_BENCHMARK)
|
||||
add_subdirectory(tools/benchmark)
|
||||
endif()
|
||||
|
||||
option(BUILD_FUZZ "Build fuzz harness" OFF)
|
||||
if(BUILD_FUZZ)
|
||||
add_subdirectory(tools/fuzz-harness)
|
||||
endif()
|
||||
|
||||
option(BUILD_PKI "Build PKI tools" OFF)
|
||||
if(BUILD_PKI AND VANETZA_WITH_PQC)
|
||||
message(FATAL_ERROR
|
||||
"BUILD_PKI cannot be combined with VANETZA_WITH_PQC: the unchanged PKI "
|
||||
"client uses Vanetza's standard Security ASN.1 profile. Build the PKI "
|
||||
"client separately with VANETZA_WITH_PQC=OFF.")
|
||||
endif()
|
||||
if(BUILD_PKI)
|
||||
add_subdirectory(tools/pki)
|
||||
endif()
|
||||
|
||||
# interface library for convenience
|
||||
get_property(_components GLOBAL PROPERTY VANETZA_COMPONENTS)
|
||||
add_library(vanetza INTERFACE)
|
||||
add_library(Vanetza::vanetza ALIAS vanetza)
|
||||
foreach(_component IN LISTS _components)
|
||||
target_link_libraries(vanetza INTERFACE ${_component})
|
||||
endforeach()
|
||||
|
||||
# installation rules
|
||||
include(CMakePackageConfigHelpers)
|
||||
set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Vanetza")
|
||||
set(CMAKECONFIG_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmake-config")
|
||||
write_basic_package_version_file(${CMAKECONFIG_BUILD_DIR}/VanetzaConfigVersion.cmake
|
||||
COMPATIBILITY ExactVersion)
|
||||
configure_package_config_file(cmake/VanetzaConfig.cmake.in
|
||||
${CMAKECONFIG_BUILD_DIR}/VanetzaConfig.cmake
|
||||
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
||||
PATH_VARS CMAKE_INSTALL_INCLUDEDIR)
|
||||
|
||||
install(TARGETS vanetza EXPORT ${PROJECT_NAME})
|
||||
|
||||
install(FILES
|
||||
${CMAKECONFIG_BUILD_DIR}/VanetzaConfig.cmake
|
||||
${CMAKECONFIG_BUILD_DIR}/VanetzaConfigVersion.cmake
|
||||
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
|
||||
|
||||
install(DIRECTORY ${PROJECT_SOURCE_DIR}/cmake/
|
||||
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
||||
FILES_MATCHING
|
||||
PATTERN "Find*.cmake")
|
||||
|
||||
install(EXPORT ${PROJECT_NAME} NAMESPACE Vanetza:: FILE VanetzaTargets.cmake DESTINATION ${CMAKECONFIG_INSTALL_DIR})
|
||||
|
||||
# install all C++ headers except those found for tests
|
||||
file(GLOB_RECURSE _vanetza_headers
|
||||
RELATIVE ${PROJECT_SOURCE_DIR}
|
||||
CONFIGURE_DEPENDS
|
||||
vanetza/*.hpp)
|
||||
list(FILTER _vanetza_headers EXCLUDE REGEX "/tests/")
|
||||
if(NOT VANETZA_WITH_PQC)
|
||||
list(FILTER _vanetza_headers EXCLUDE REGEX "vanetza/security/pqc/")
|
||||
endif()
|
||||
foreach(_header IN LISTS _vanetza_headers)
|
||||
get_filename_component(_dir ${_header} DIRECTORY)
|
||||
install(FILES ${_header}
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${_dir})
|
||||
endforeach()
|
||||
|
||||
# export build tree (allows import by outside projects)
|
||||
option(VANETZA_EXPORT_PACKAGE "Export Vanetza build directory to CMake package registry" OFF)
|
||||
if(VANETZA_EXPORT_PACKAGE)
|
||||
export(EXPORT ${PROJECT_NAME} NAMESPACE Vanetza:: FILE VanetzaExports.cmake)
|
||||
file(COPY ${CMAKECONFIG_BUILD_DIR}/VanetzaConfigVersion.cmake
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
configure_file(cmake/VanetzaExportsConfig.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/VanetzaConfig.cmake @ONLY)
|
||||
export(PACKAGE ${PROJECT_NAME})
|
||||
endif()
|
||||
|
||||
# mark build directory as cache dir, see https://bford.info/cachedir
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/CACHEDIR.TAG
|
||||
"Signature: 8a477f597d28d172789f06886806bc55")
|
||||
Reference in New Issue
Block a user