68 lines
2 KiB
CMake
68 lines
2 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(microReticulumTbeam LANGUAGES C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# --------------------------------------------------------------------
|
|
# Portability shims
|
|
#
|
|
# microReticulum's CMake currently links against "msgpackc-cxx" and "MsgPack"
|
|
# as if they were system libraries, which breaks on machines that don't have
|
|
# those exact libs installed.
|
|
#
|
|
# Define shim targets so CMake treats them as targets (no "-l...").
|
|
# If/when you want a real msgpack-cxx dependency, replace the shim with
|
|
# FetchContent/find_package and link to that instead.
|
|
# --------------------------------------------------------------------
|
|
if(NOT TARGET msgpackc-cxx)
|
|
add_library(msgpackc-cxx INTERFACE)
|
|
endif()
|
|
|
|
if(NOT TARGET MsgPack)
|
|
add_library(MsgPack INTERFACE)
|
|
endif()
|
|
|
|
|
|
# Pull in the microReticulum submodule build
|
|
add_subdirectory(external/microReticulum)
|
|
|
|
# Provide DebugLog.h for microReticulum's MsgPack dependency
|
|
#set(DEBUGLOG_DIR ${CMAKE_SOURCE_DIR}/external/DebugLog)
|
|
|
|
#if(TARGET ReticulumShared)
|
|
# target_include_directories(ReticulumShared PUBLIC ${DEBUGLOG_DIR})
|
|
#endif()
|
|
|
|
#if(TARGET ReticulumStatic)
|
|
# target_include_directories(ReticulumStatic PUBLIC ${DEBUGLOG_DIR})
|
|
#endif()
|
|
|
|
set(DEBUGLOG_DIR ${CMAKE_SOURCE_DIR}/external/DebugLog)
|
|
set(ARX_TYPETRAITS_DIR ${CMAKE_SOURCE_DIR}/external/ArxTypeTraits)
|
|
set(ARX_CONTAINER_DIR ${CMAKE_SOURCE_DIR}/external/ArxContainer)
|
|
|
|
if(TARGET ReticulumShared)
|
|
target_include_directories(ReticulumShared PUBLIC
|
|
${DEBUGLOG_DIR}
|
|
${ARX_TYPETRAITS_DIR}
|
|
${ARX_CONTAINER_DIR}
|
|
)
|
|
endif()
|
|
|
|
if(TARGET ReticulumStatic)
|
|
target_include_directories(ReticulumStatic PUBLIC
|
|
${DEBUGLOG_DIR}
|
|
${ARX_TYPETRAITS_DIR}
|
|
${ARX_CONTAINER_DIR}
|
|
)
|
|
endif()
|
|
|
|
# We only need the static library for host-side tooling.
|
|
# The shared lib target requires system msgpack libs on some systems.
|
|
if(TARGET ReticulumShared)
|
|
set_target_properties(ReticulumShared PROPERTIES EXCLUDE_FROM_ALL YES)
|
|
endif()
|
|
|
|
# Build our host-side tools
|
|
add_subdirectory(tools)
|