Newer
Older
Tardis / CMakeLists.txt
# SPDX-License-Identifier: MIT
# Copyright (c) 2024 John Watts and the LuminaSensum contributors

cmake_minimum_required(VERSION 3.25)

# Enable tracing if wanted, on by default
option(ENABLE_TRACING "Enable trace logging for debugging" ON)
if(ENABLE_TRACING)
	add_compile_options(-DMBED_CONF_MBED_TRACE_ENABLE=1)
	add_compile_options(-DMBED_TRACE_MAX_LEVEL=TRACE_LEVEL_DEBUG)
endif()

# Globally enable some compiler sanity
add_compile_options(-fwrapv -fno-strict-aliasing -fsigned-char)

# Initialize Mbed OS build system
set(MBED_TARGET "DISCO_F769NI")
set(MBED_APP_JSON_PATH mbed_app.json)
include(mbed-os/tools/cmake/app.cmake)
add_subdirectory(mbed-os)

# Load TardisLang
set(BUILD_TARDISLANG_APP OFF CACHE INTERNAL "")
add_subdirectory(lang)

# Create SNTP project
project(sntp)
file(GLOB SNTP_FILES "${PROJECT_SOURCE_DIR}/third_party/sntp/*.cpp")
add_library(sntp STATIC ${SNTP_FILES})
target_link_libraries(sntp PRIVATE mbed-netsocket)
target_include_directories(sntp PUBLIC "${PROJECT_SOURCE_DIR}/third_party/sntp/")

# Create Tardis project
project(Tardis)
file(GLOB SRC_FILES "${PROJECT_SOURCE_DIR}/src/*.cpp")
add_executable(Tardis ${SRC_FILES})
target_include_directories(Tardis PRIVATE "${PROJECT_SOURCE_DIR}/include")
target_link_libraries(Tardis PRIVATE mbed-netsocket mbed-os mbed-storage-qspif mbed-usb-msd mbed-storage-littlefs-v2 sntp TardisLang)
target_compile_options(Tardis PRIVATE -Wall -Wextra -Wpedantic -Werror)
mbed_set_post_build(Tardis)

mbed_finalize_build()