diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3f8c24f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "geographiclib"] + path = geographiclib + url = https://github.com/geographiclib/geographiclib.git diff --git a/CMakeLists.txt b/CMakeLists.txt index dcbc625..0b80ce8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,13 @@ 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(GEOGRAPHICLIB_LIB_TYPE "STATIC" CACHE STRING "" FORCE) +set(BUILD_DOCUMENTATION OFF CACHE BOOL "" FORCE) +set(BUILD_BOTH_LIBRARIES OFF CACHE BOOL "" FORCE) +set(PACKAGE_DEBIAN OFF CACHE BOOL "" FORCE) if(BUILD_FOR_PICO) set(PICO_BOARD pico_w CACHE STRING "Board type") @@ -14,6 +20,9 @@ if(BUILD_FOR_PICO) pico_sdk_init() + add_subdirectory(${GEOGRAPHICLIB_DIR} EXCLUDE_FROM_ALL) + target_compile_options(GeographicLib PUBLIC -fexceptions -frtti) + add_executable(p-rad src/main.cpp src/core/logic.cpp @@ -22,7 +31,7 @@ if(BUILD_FOR_PICO) 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) + 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) @@ -34,6 +43,8 @@ else() 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 src/core/logic.cpp @@ -44,5 +55,5 @@ else() find_package(Threads REQUIRED) find_package(SDL3 REQUIRED CONFIG) find_package(CURL REQUIRED) - target_link_libraries(p-rad Threads::Threads SDL3::SDL3 CURL::libcurl) + target_link_libraries(p-rad Threads::Threads SDL3::SDL3 CURL::libcurl GeographicLib) endif() \ No newline at end of file