From 25b18614059cb7b86befc5ff5a6b43a54bafdbf9 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Wed, 22 Jan 2025 22:14:33 +0100 Subject: [PATCH] Improve report of Homebrew / Macports detection Improve Boost finding if using Macports Update changelog Bump Pugixml local version to 1.15 and Protocol Buffers to 29.3 --- CMakeLists.txt | 27 ++++++++++++++++--- cmake/Modules/DetectMacOSVersion.cmake | 18 +++++++++++++ docs/CHANGELOG.md | 1 + .../osnma/osnma_msg_receiver_test.cc | 2 ++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eac085fc9..ab80858d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -360,8 +360,8 @@ set(GNSSSDR_ARMADILLO_LOCAL_VERSION "14.2.x") set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2") set(GNSSSDR_GLOG_LOCAL_VERSION "0.7.1") set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.28") -set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "29.2") -set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.14") +set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "29.3") +set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.15") set(GNSSSDR_GTEST_LOCAL_VERSION "1.15.2") set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "origin/master") set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.3.0") @@ -752,6 +752,18 @@ endif() if(UNIX AND EXISTS "/usr/lib64") list(APPEND BOOST_LIBRARYDIR "/usr/lib64") # Fedora 64-bit fix endif() +if(NOT BOOST_ROOT) + # Workaround for Macports + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND (${DETECT_MACPORTS} EQUAL 0)) + if(EXISTS "${MACPORTS_PREFIX}/libexec/boost/1.81") + set(BOOST_ROOT "${MACPORTS_PREFIX}/libexec/boost/1.81") + elseif(EXISTS "${MACPORTS_PREFIX}/libexec/boost/1.76") + set(BOOST_ROOT "${MACPORTS_PREFIX}/libexec/boost/1.76") + elseif(EXISTS "${MACPORTS_PREFIX}/libexec/boost/1.71") + set(BOOST_ROOT "${MACPORTS_PREFIX}/libexec/boost/1.71") + endif() + endif() +endif() # Boost_ADDITIONAL_VERSIONS is only used internally by cmake to know the # formation of newer versions. No need to increase, not used anymore since newer # Boost provides its own CMake configuration files. @@ -771,7 +783,10 @@ if(CMAKE_VERSION VERSION_LESS 3.30) find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS} REQUIRED) else() find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS}) - if(NOT Boost_FOUND) + if(Boost_FOUND) + get_filename_component(BOOST_PREFIX ${Boost_INCLUDE_DIRS} DIRECTORY) + message(STATUS "Found Boost v${Boost_VERSION_STRING} at ${BOOST_PREFIX}") + else() message(STATUS "Trying deprecated FindBoost Module ...") if(POLICY CMP0167) cmake_policy(SET CMP0167 OLD) @@ -3696,6 +3711,12 @@ else() endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") message(STATUS "Building on ${MACOS_DISTRIBUTION}") + if(${DETECT_MACPORTS} EQUAL 0) + message(STATUS "Found Macports v${MACPORTS_VERSION} installed at ${MACPORTS_PREFIX}") + endif() + if(${DETECT_HOMEBREW} EQUAL 0) + message(STATUS "Found Homebrew v${HOMEBREW_VERSION} installed at ${HOMEBREW_PREFIX}") + endif() endif() endif() message(STATUS "CMake version: ${CMAKE_VERSION}") diff --git a/cmake/Modules/DetectMacOSVersion.cmake b/cmake/Modules/DetectMacOSVersion.cmake index ac986ba6d..c66491c94 100644 --- a/cmake/Modules/DetectMacOSVersion.cmake +++ b/cmake/Modules/DetectMacOSVersion.cmake @@ -77,3 +77,21 @@ endif() if(NOT MACOS_DISTRIBUTION) set(MACOS_DISTRIBUTION "macOS (Unknown version)") endif() + +# Detect if MacPorts is installed on this system; if so, return base path and version +execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +if(${DETECT_MACPORTS} EQUAL 0) + # "/opt/local/bin/port", so we get the parent directory + get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) + # "/opt/local/bin", so we get the parent directory + get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY) + execute_process(COMMAND port version RESULT_VARIABLE DETECT_MACPORTS_VERSION OUTPUT_VARIABLE MACPORTS_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" MACPORTS_VERSION "${MACPORTS_VERSION}") +endif() + +# Detect if Homebrew is installed on this system; if so, return base path and version +execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_HOMEBREW OUTPUT_VARIABLE HOMEBREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +if(${DETECT_HOMEBREW} EQUAL 0) + execute_process(COMMAND brew --version RESULT_VARIABLE DETECT_HOMEBREW_VERSION OUTPUT_VARIABLE HOMEBREW_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" HOMEBREW_VERSION "${HOMEBREW_VERSION}") +endif() \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 5654ecf6b..6eb22c242 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -57,6 +57,7 @@ All notable changes to GNSS-SDR will be documented in this file. [Osmosdr_Signal_Source](https://gnss-sdr.org/docs/sp-blocks/signal-source/#implementation-osmosdr_signal_source) has gained two new optional configuration parameters: `iq_balance_mode` and `dc_offset_mode`, both of which are set to Automatic by default. +- Implemented missing GPS almanac decoding. ### Improvements in Maintainability: diff --git a/tests/unit-tests/signal-processing-blocks/osnma/osnma_msg_receiver_test.cc b/tests/unit-tests/signal-processing-blocks/osnma/osnma_msg_receiver_test.cc index 7bbdd4e16..3031a399a 100644 --- a/tests/unit-tests/signal-processing-blocks/osnma/osnma_msg_receiver_test.cc +++ b/tests/unit-tests/signal-processing-blocks/osnma/osnma_msg_receiver_test.cc @@ -21,8 +21,10 @@ #include "osnma_helper.h" #include "osnma_msg_receiver.h" #include +#include #include #include +#include #include #include