cmake_minimum_required(VERSION 3.13) option(BUILD_FOR_PICO "Build for Raspberry Pi Pico" ON) set(GEOGRAPHICLIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/geographiclib) # Configure GeographicLib before adding it, to skip docs/tools/tests set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(BUILD_DOCUMENTATION OFF CACHE BOOL "" FORCE) set(BUILD_BOTH_LIBRARIES OFF CACHE BOOL "" FORCE) set(PACKAGE_DEBIAN OFF CACHE BOOL "" FORCE) # Automatically collect core sources and platform-specific HAL files file(GLOB CORE_SOURCES CONFIGURE_DEPENDS "src/core/*.cpp" "src/core/*.c") file(GLOB HAL_PICO_SOURCES CONFIGURE_DEPENDS "src/hal/*_pico.cpp") file(GLOB HAL_LINUX_SOURCES CONFIGURE_DEPENDS "src/hal/*_linux.cpp") if(BUILD_FOR_PICO) set(PICO_BOARD pico_w CACHE STRING "Board type") include(pico_sdk_import.cmake) project(p-rad C CXX ASM) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) pico_sdk_init() add_subdirectory(${GEOGRAPHICLIB_DIR} EXCLUDE_FROM_ALL) target_compile_options(GeographicLib INTERFACE -fexceptions -frtti) add_executable(p-rad src/main.cpp ${CORE_SOURCES} ${HAL_PICO_SOURCES} ) target_compile_definitions(p-rad PRIVATE PICO_BUILD) target_include_directories(p-rad PRIVATE src) target_link_libraries(p-rad pico_stdlib pico_cyw43_arch_lwip_threadsafe_background hardware_rtc GeographicLib) pico_enable_stdio_usb(p-rad 1) pico_enable_stdio_uart(p-rad 0) pico_add_extra_outputs(p-rad) else() project(p-rad CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory(${GEOGRAPHICLIB_DIR} EXCLUDE_FROM_ALL) add_executable(p-rad src/main.cpp ${CORE_SOURCES} ${HAL_LINUX_SOURCES} ) target_include_directories(p-rad PRIVATE src) find_package(Threads REQUIRED) find_package(SDL3 REQUIRED CONFIG) find_package(CURL REQUIRED) target_link_libraries(p-rad Threads::Threads SDL3::SDL3 CURL::libcurl GeographicLib) endif()