diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cc27accc34..0b747318d0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: install dependencies - run: sudo apt-get update && sudo apt-get install ninja-build libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev python3-mako + run: sudo apt-get update && sudo apt-get install ninja-build libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev libboost-serialization-dev liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev python3-mako liborc-0.4-dev - name: configure run: cd build && cmake -GNinja .. - name: build diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c38528a6e..963983134b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ endif() # Build type can still be overridden by setting -DCMAKE_BUILD_TYPE= set(CMAKE_BUILD_TYPE "Release" CACHE STRING "") -cmake_minimum_required(VERSION 2.8.12...3.23) +cmake_minimum_required(VERSION 3.7...3.23) project(gnss-sdr CXX C) set(GNSSSDR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # Allows to be a sub-project @@ -132,9 +132,6 @@ if(ENABLE_FPGA) endif() option(ENABLE_BENCHMARKS "Build code snippets benchmarks" OFF) -if(CMAKE_VERSION VERSION_LESS 3.5.1) - set(ENABLE_BENCHMARKS OFF) -endif() option(ENABLE_EXTERNAL_MATHJAX "Use MathJax from an external CDN in HTML docs" ON) @@ -336,8 +333,7 @@ set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2") set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0") set(GNSSSDR_ARMADILLO_LOCAL_VERSION "11.2.x") if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR - (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR - CMAKE_VERSION VERSION_LESS 3.5) + (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) ) set(GNSSSDR_GTEST_LOCAL_VERSION "1.10.x") else() set(GNSSSDR_GTEST_LOCAL_VERSION "1.12.1") @@ -354,15 +350,6 @@ if(CMAKE_VERSION VERSION_LESS "3.16") set(GNSSSDR_GLOG_LOCAL_VERSION "0.5.0") endif() -if(CMAKE_VERSION VERSION_LESS "3.3") - set(GNSSSDR_GLOG_LOCAL_VERSION "0.4.0") # Fix for Debian 8 -endif() - -if(CMAKE_VERSION VERSION_LESS "3.0.2") - set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.1") # Fix for CentOS 7 - set(GNSSSDR_GLOG_LOCAL_VERSION "0.3.4") # Fix for Ubuntu 14.04 -endif() - ################################################################################ @@ -438,42 +425,9 @@ endif() ################################################################################ # Set minimal C and C++ standards ################################################################################ -if(NOT (CMAKE_VERSION VERSION_LESS "3.1")) - set(CMAKE_C_STANDARD 11) - set(CMAKE_CXX_STANDARD 14) - set(CMAKE_CXX_EXTENSIONS OFF) -else() - add_compile_options("$<$,C>:-std=gnu11>") - set(CMAKE_C_STANDARD 11) # set variable just for reporting - if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1") - add_compile_options("$<$,CXX>:-std=c++11>") - set(CMAKE_CXX_STANDARD 11) # set variable just for reporting - else() - add_compile_options("$<$,CXX>:-std=c++14>") - set(CMAKE_CXX_STANDARD 14) # set variable just for reporting - endif() - endif() - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - if(CLANG_VERSION VERSION_LESS "600") - add_compile_options("$<$,CXX>:-std=c++11>") - set(CMAKE_CXX_STANDARD 11) - else() - add_compile_options("$<$,CXX>:-std=c++14>") - set(CMAKE_CXX_STANDARD 14) - endif() - else() - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0") - add_compile_options("$<$,CXX>:-std=c++11>") - set(CMAKE_CXX_STANDARD 11) - else() - add_compile_options("$<$,CXX>:-std=c++14>") - set(CMAKE_CXX_STANDARD 14) - endif() - endif() - endif() -endif() +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_EXTENSIONS OFF) # Visibility # See https://gcc.gnu.org/wiki/Visibility @@ -521,31 +475,14 @@ find_package(PkgConfig) ################################################################################ # Find the POSIX thread (pthread) libraries ################################################################################ -if(CMAKE_VERSION VERSION_LESS 3.1) - # Workaround for CMake < 3.1 - find_package(Threads REQUIRED) - add_library(Threads::Threads SHARED IMPORTED) - set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}") - set_property(TARGET Threads::Threads PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX") - include(GNUInstallDirs) - # Fix bug in Debian 8.11 - if(${LINUX_DISTRIBUTION} MATCHES "Debian") - if(${LINUX_VER} VERSION_LESS 8.12) - if(ARCH_64BITS) - set(FIX_PTHREADS_LOCATION "x86_64-linux-gnu/") - endif() - endif() - endif() - set_property(TARGET Threads::Threads PROPERTY IMPORTED_LOCATION /usr/${CMAKE_INSTALL_LIBDIR}/${FIX_PTHREADS_LOCATION}${CMAKE_FIND_LIBRARY_PREFIXES}pthread${CMAKE_SHARED_LIBRARY_SUFFIX}) +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +if(CMAKE_CROSSCOMPILING) + set(THREADS_PREFER_PTHREAD_FLAG FALSE) else() - set(CMAKE_THREAD_PREFER_PTHREAD TRUE) - if(CMAKE_CROSSCOMPILING) - set(THREADS_PREFER_PTHREAD_FLAG FALSE) - else() - set(THREADS_PREFER_PTHREAD_FLAG TRUE) - endif() - find_package(Threads REQUIRED) + set(THREADS_PREFER_PTHREAD_FLAG TRUE) endif() +find_package(Threads REQUIRED) + set_package_properties(Threads PROPERTIES URL "https://computing.llnl.gov/tutorials/pthreads/" DESCRIPTION "Implements the POSIX Threads execution model" @@ -584,11 +521,11 @@ endif() ################################################################################ # VOLK - Vector-Optimized Library of Kernels ################################################################################ -find_package(VOLK) +find_package(Volk CONFIG) if(NOT VOLK_FOUND) message(FATAL_ERROR "*** VOLK is required to build gnss-sdr") endif() -set_package_properties(VOLK PROPERTIES +set_package_properties(Volk PROPERTIES PURPOSE "Provides an abstraction of optimized math routines targeting several SIMD processors." TYPE REQUIRED ) @@ -598,6 +535,7 @@ set_package_properties(VOLK PROPERTIES ################################################################################ # GNU Radio - https://www.gnuradio.org ################################################################################ +# move into FindGNURADIO.cmake? list(APPEND GR_REQUIRED_COMPONENTS RUNTIME PMT BLOCKS FFT FILTER ANALOG) find_package(UHD) set_package_properties(UHD PROPERTIES @@ -616,57 +554,18 @@ if(ENABLE_ZMQ) list(APPEND GR_REQUIRED_COMPONENTS ZEROMQ) endif() -find_package(GNURADIO) -set_package_properties(GNURADIO PROPERTIES - PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones." - TYPE REQUIRED +find_package(GNURADIO ${GNSSSDR_GNURADIO_MIN_VERSION} + COMPONENTS ${GR_REQUIRED_COMPONENTS} ) -if(NOT (GNURADIO_VERSION VERSION_LESS "3.8")) +# GNU Radio 3.8 changed include file names +# move into FindGNURADIO.cmake? +if(GNURADIO_VERSION VERSION_GREATER_EQUAL "3.8") set(GNURADIO_IS_38_OR_GREATER ON) endif() -################################################################################ -# Log4cpp - http://log4cpp.sourceforge.net/ -################################################################################ -if(GNURADIO_USES_LOG4CPP) - find_package(LOG4CPP) - set_package_properties(LOG4CPP PROPERTIES - PURPOSE "Required by GNU Radio." - TYPE REQUIRED - ) -endif() - - - -################################################################################ -# spdlog - https://github.com/gabime/spdlog -################################################################################ -if(GNURADIO_USES_SPDLOG) - find_package(SPDLOG REQUIRED) - set_package_properties(SPDLOG PROPERTIES - PURPOSE "Required by GNU Radio." - TYPE REQUIRED - ) -endif() - - - -################################################################################ -# fmt - https://github.com/fmtlib/fmt -################################################################################ -if(GNURADIO_USES_SPDLOG) - find_package(FMT REQUIRED) - set_package_properties(FMT PROPERTIES - PURPOSE "Required by GNU Radio." - TYPE REQUIRED - ) -endif() - - - ################################################################################ # Detect availability of std::filesystem and set C++ standard accordingly ################################################################################ @@ -688,7 +587,13 @@ else() unset(GNSSTK_OLDER_THAN_9 CACHE) unset(GNSSTK_OLDER_THAN_13 CACHE) endif() -if(NOT (GNURADIO_VERSION VERSION_LESS 3.8) AND (LOG4CPP_READY_FOR_CXX17 OR GNURADIO_USES_SPDLOG)) + +# Proper CMake support added in 3.10.x +# should this be hidden in FindGNURADIO.cmake? +if( GNURADIO_VERSION VERSION_GREATER 3.10 ) + include(GrMinReq) + include(GrCompilerSettings) +elseif((GNURADIO_VERSION VERSION_GREATER_EQUAL 3.8) AND LOG4CPP_READY_FOR_CXX17) # Check if we have std::filesystem if(NOT (CMAKE_VERSION VERSION_LESS 3.8)) if(NOT GNSSTK_FOUND OR NOT (GNSSTK_FOUND AND GNSSTK_OLDER_THAN_8)) # Fix for GNSSTk < 8.0.0 @@ -716,8 +621,8 @@ if(NOT (GNURADIO_VERSION VERSION_LESS 3.8) AND (LOG4CPP_READY_FOR_CXX17 OR GNURA # endif() # endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) - endif() - endif() + endif() # GNURADIO > 3.8 + endif() # GNURADIO > 3.10 endif() if((NOT PMT_USES_BOOST_ANY) AND (CMAKE_CXX_STANDARD VERSION_LESS 17)) message(FATAL_ERROR "GNU Radio v${GNURADIO_VERSION} requires C++17. Please update your environment.") diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake index e7a5610181..affe8b92db 100644 --- a/cmake/Modules/FindGNURADIO.cmake +++ b/cmake/Modules/FindGNURADIO.cmake @@ -26,6 +26,7 @@ endif() # Allows us to use all .cmake files in this directory list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}) + # Easily access all libraries and includes of GNU Radio set(GNURADIO_ALL_LIBRARIES "") set(GNURADIO_ALL_INCLUDE_DIRS "") @@ -67,6 +68,52 @@ set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED ${CMAKE_INSTALL_PREFIX} ) +macro(add_property_if src dst prop_name) + get_target_property(_prop ${src} ${prop_name}) + if(_prop) + set_target_properties(${dst} PROPERTIES ${prop_name} "${_prop}") + get_target_property(_check ${dst} ${prop_name}) + if(NOT ("${_check}" STREQUAL "${_prop}")) + message(FATAL_ERROR "failed to set ${prop_name} on ${dst}: ${_check} != ${_prop}") + endif() + endif() +endmacro() + +# Maintainer note: +# Most of this is to support older GNU Radio without CMake support. Better to use CMake than to fight against it. +# GNU Radio exposes its components in lower-case ("runtime" and "pmt" are always provided, and cannot be selected) +# Convert the list of required components to lower case, and see if find_package() can find them. We want to use +# find_package() because it adds the GNU Radio cmake module directory to the path. +# TODO if FPHSA still adds value here + +set(find_GR_REQUIRED_COMPONENTS ${GR_REQUIRED_COMPONENTS}) +list(TRANSFORM find_GR_REQUIRED_COMPONENTS TOLOWER) +list(REMOVE_ITEM find_GR_REQUIRED_COMPONENTS runtime pmt) + +find_package(Gnuradio QUIET NO_MODULE COMPONENTS ${find_GR_REQUIRED_COMPONENTS}) +# Gnuradio_FOUND is set +# Gnuradio_VERSION is set +# GNURADIO_FIND_VERSION is the desired version (${GNSS_GNURADIO_MIN_VERSION}) + +# The GNU Radio module directory was (intentionally) added to the path. However, make sure ours remains first +# Allows us to use all .cmake files in this directory +list(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) +list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}) + +# These are a given, if the package is found, but if I don't set them, GNURADIO_FOUND will be false +set(PC_GNURADIO_RUNTIME_FOUND ${Gnuradio_FOUND}) +set(PC_GNURADIO_PMT_FOUND ${Gnuradio_FOUND}) + +find_package_handle_standard_args(GNURADIO + DEFAULT_MSG +# HANDLE_VERSION_RANGE +# HANDLE_COMPONENTS +) + +# This legacy function exists among other reasons to create the "Gnuradio::" targets uses in GNSS-SDR +# Where possible, it's better to use the "gnuradio::" targets provided by GNU Radio, because all of +# the dependency linkage is built in. When we abandon support for non-CMake GNU Radio, this should be +# removed and our CMakeLists.txt files updated to use the "gnuradio::gnuradio-xxx" targets function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS}) if(NOT REQUIRED_MODULE) @@ -75,6 +122,7 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) endif() message(STATUS "Checking for GNU Radio Module: ${EXTVAR}") + string(TOLOWER ${EXTVAR} gnuradio_component) # check for .pc hints pkg_check_modules(PC_GNURADIO_${EXTVAR} QUIET ${PCNAME}) @@ -161,18 +209,31 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) endif() # Create imported target - string(TOLOWER ${EXTVAR} gnuradio_component) - if(NOT TARGET Gnuradio::${gnuradio_component}) - add_library(Gnuradio::${gnuradio_component} SHARED IMPORTED) - set(GNURADIO_LIBRARY ${GNURADIO_${EXTVAR}_LIBRARIES}) - list(GET GNURADIO_LIBRARY 0 FIRST_DIR) - get_filename_component(GNURADIO_DIR ${FIRST_DIR} ABSOLUTE) - set_target_properties(Gnuradio::${gnuradio_component} PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - IMPORTED_LOCATION "${GNURADIO_DIR}" - INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_${EXTVAR}_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" - ) + set(_target "Gnuradio::${gnuradio_component}") + if(NOT TARGET ${_target}) + set(_component "gnuradio::gnuradio-${gnuradio_component}") + if(TARGET ${_component}) + # maintain legacy targets by creating an alias + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18) + add_library(${_target} ALIAS ${_component}) + else() + # CMake < 3.18 doesn't allow ALIAS targets on non-global symbols + add_library(${_target} INTERFACE IMPORTED) + set_target_properties(${_target} PROPERTIES INTERFACE_LINK_LIBRARIES ${_component}) + endif() + else() + # legacy targets + add_library(Gnuradio::${gnuradio_component} SHARED IMPORTED) + set(GNURADIO_LIBRARY ${GNURADIO_${EXTVAR}_LIBRARIES}) + list(GET GNURADIO_LIBRARY 0 FIRST_DIR) + get_filename_component(GNURADIO_DIR ${FIRST_DIR} ABSOLUTE) + set_target_properties(Gnuradio::${gnuradio_component} PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNURADIO_DIR}" + INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_${EXTVAR}_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" + ) + endif() endif() mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) @@ -272,8 +333,6 @@ else() ) endif() -find_package_handle_standard_args(GNURADIO DEFAULT_MSG GNURADIO_RUNTIME_FOUND) - # Detect if using standard pointers set(GNURADIO_USES_STD_POINTERS FALSE) if(GNURADIO_VERSION VERSION_GREATER 3.8.99) @@ -395,30 +454,18 @@ if(GNURADIO_PMT_INCLUDE_DIRS) endif() endif() -# Check if GNU Radio uses log4cpp or spdlog -if(GNURADIO_RUNTIME_INCLUDE_DIRS) - if(EXISTS "${GNURADIO_RUNTIME_INCLUDE_DIRS}/gnuradio/logger.h") - file(STRINGS ${GNURADIO_RUNTIME_INCLUDE_DIRS}/gnuradio/logger.h _logger_content) - set(_uses_log4cpp FALSE) - set(_uses_spdlog FALSE) - foreach(_loop_var IN LISTS _logger_content) - string(STRIP "${_loop_var}" _file_line) - if("#include " STREQUAL "${_file_line}") - set(_uses_log4cpp TRUE) - endif() - if("#include " STREQUAL "${_file_line}") - set(_uses_spdlog TRUE) - endif() - endforeach() - if(${_uses_log4cpp}) - set(GNURADIO_USES_LOG4CPP TRUE) - endif() - if(${_uses_spdlog}) - set(GNURADIO_USES_SPDLOG TRUE) - endif() - endif() +if(GNURADIO_VERSION VERSION_LESS 3.10) + find_package(LOG4CPP) + set_package_properties(LOG4CPP PROPERTIES + PURPOSE "Required by GNU Radio." + TYPE REQUIRED + ) endif() + set_package_properties(GNURADIO PROPERTIES URL "https://www.gnuradio.org/" + PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones." + TYPE REQUIRED ) + diff --git a/cmake/Modules/FindSPDLOG.cmake b/cmake/Modules/FindSPDLOG.cmake deleted file mode 100644 index ac53fc8705..0000000000 --- a/cmake/Modules/FindSPDLOG.cmake +++ /dev/null @@ -1,84 +0,0 @@ -# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. -# This file is part of GNSS-SDR. -# -# SPDX-FileCopyrightText: 2021 C. Fernandez-Prades cfernandez(at)cttc.es -# SPDX-License-Identifier: BSD-3-Clause - -if(NOT COMMAND feature_summary) - include(FeatureSummary) -endif() - -# Locate header -find_path(SPDLOG_INCLUDE_DIR spdlog/spdlog.h - HINTS ${SPDLOG_ROOT_DIR}/include - PATHS - /usr/include - /usr/local/include - /opt/local/include -) - -# Locate library -find_library(SPDLOG_LIBRARY NAMES spdlog spdlogd - HINTS ${SPDLOG_ROOT_DIR}/lib ${SPDLOG_ROOT_DIR}/lib64 - PATHS - /usr/lib - /usr/lib64 - /usr/lib/x86_64-linux-gnu - /usr/lib/i386-linux-gnu - /usr/lib/arm-linux-gnueabihf - /usr/lib/arm-linux-gnueabi - /usr/lib/aarch64-linux-gnu - /usr/lib/mipsel-linux-gnu - /usr/lib/mips-linux-gnu - /usr/lib/mips64el-linux-gnuabi64 - /usr/lib/powerpc-linux-gnu - /usr/lib/powerpc64-linux-gnu - /usr/lib/powerpc64le-linux-gnu - /usr/lib/powerpc-linux-gnuspe - /usr/lib/hppa-linux-gnu - /usr/lib/s390x-linux-gnu - /usr/lib/i386-gnu - /usr/lib/hppa-linux-gnu - /usr/lib/x86_64-kfreebsd-gnu - /usr/lib/i386-kfreebsd-gnu - /usr/lib/m68k-linux-gnu - /usr/lib/sh4-linux-gnu - /usr/lib/sparc64-linux-gnu - /usr/lib/x86_64-linux-gnux32 - /usr/lib/alpha-linux-gnu - /usr/lib/riscv64-linux-gnu - /usr/local/lib - /usr/local/lib64 - /opt/local/lib -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(SPDLOG DEFAULT_MSG SPDLOG_INCLUDE_DIR SPDLOG_LIBRARY) - -set_package_properties(SPDLOG PROPERTIES - URL "https://github.com/gabime/spdlog" - DESCRIPTION "Very fast, header-only/compiled, C++ logging library" -) - -# Add imported target. -if(SPDLOG_FOUND) - set(SPDLOG_INCLUDE_DIRS "${SPDLOG_INCLUDE_DIR}") - - if(NOT TARGET spdlog::spdlog) - add_library(spdlog::spdlog UNKNOWN IMPORTED) - set_target_properties(spdlog::spdlog PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${SPDLOG_INCLUDE_DIRS}" - ) - set_property(TARGET spdlog::spdlog APPEND PROPERTY - IMPORTED_LOCATION "${SPDLOG_LIBRARY}" - ) - endif() - - if(CMAKE_VERSION VERSION_GREATER 3.11.0) - target_compile_definitions(spdlog::spdlog INTERFACE -DSPDLOG_FMT_EXTERNAL=1) - else() - set_property(TARGET spdlog::spdlog APPEND PROPERTY - INTERFACE_COMPILE_DEFINITIONS SPDLOG_FMT_EXTERNAL=1 - ) - endif() -endif() diff --git a/cmake/Modules/FindVOLK.cmake b/cmake/Modules/FindVOLK.cmake deleted file mode 100644 index f67efdfbbf..0000000000 --- a/cmake/Modules/FindVOLK.cmake +++ /dev/null @@ -1,147 +0,0 @@ -# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. -# This file is part of GNSS-SDR. -# -# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es -# SPDX-License-Identifier: BSD-3-Clause - -# -# Provides the following imported target: -# Volk::volk -# - -######################################################################## -# Find VOLK (Vector-Optimized Library of Kernels) -######################################################################## -if(NOT COMMAND feature_summary) - include(FeatureSummary) -endif() - -if(NOT PKG_CONFIG_FOUND) - include(FindPkgConfig) -endif() - -pkg_check_modules(PC_VOLK volk QUIET) - -if(NOT VOLK_ROOT) - set(VOLK_ROOT_USER_PROVIDED /usr) -else() - set(VOLK_ROOT_USER_PROVIDED ${VOLK_ROOT}) -endif() -if(DEFINED ENV{VOLK_ROOT}) - set(VOLK_ROOT_USER_PROVIDED - ${VOLK_ROOT_USER_PROVIDED} - $ENV{VOLK_ROOT} - ) -endif() -if(DEFINED ENV{VOLK_DIR}) - set(VOLK_ROOT_USER_PROVIDED - ${VOLK_ROOT_USER_PROVIDED} - $ENV{VOLK_DIR} - ) -endif() -set(VOLK_ROOT_USER_PROVIDED - ${VOLK_ROOT_USER_PROVIDED} - ${CMAKE_INSTALL_PREFIX} -) - -find_path(VOLK_INCLUDE_DIRS - NAMES volk/volk.h - HINTS ${PC_VOLK_INCLUDEDIR} - PATHS ${VOLK_ROOT_USER_PROVIDED}/include - /usr/include - /usr/local/include - /opt/local/include -) - -find_library(VOLK_LIBRARIES - NAMES volk - HINTS ${PC_VOLK_LIBDIR} - PATHS ${VOLK_ROOT_USER_PROVIDED}/lib - ${VOLK_ROOT_USER_PROVIDED}/lib64 - /usr/lib - /usr/lib64 - /usr/lib/x86_64-linux-gnu - /usr/lib/i386-linux-gnu - /usr/lib/arm-linux-gnueabihf - /usr/lib/arm-linux-gnueabi - /usr/lib/aarch64-linux-gnu - /usr/lib/mipsel-linux-gnu - /usr/lib/mips-linux-gnu - /usr/lib/mips64el-linux-gnuabi64 - /usr/lib/powerpc-linux-gnu - /usr/lib/powerpc64-linux-gnu - /usr/lib/powerpc64le-linux-gnu - /usr/lib/powerpc-linux-gnuspe - /usr/lib/hppa-linux-gnu - /usr/lib/s390x-linux-gnu - /usr/lib/i386-gnu - /usr/lib/x86_64-kfreebsd-gnu - /usr/lib/i386-kfreebsd-gnu - /usr/lib/m68k-linux-gnu - /usr/lib/sh4-linux-gnu - /usr/lib/sparc64-linux-gnu - /usr/lib/x86_64-linux-gnux32 - /usr/lib/alpha-linux-gnu - /usr/lib/riscv64-linux-gnu - /usr/local/lib - /usr/local/lib64 - /opt/local/lib -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(VOLK DEFAULT_MSG VOLK_LIBRARIES VOLK_INCLUDE_DIRS) - -if(PC_VOLK_VERSION) - set(VOLK_VERSION ${PC_VOLK_VERSION}) -endif() - -if(NOT VOLK_VERSION) - set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) - unset(PACKAGE_VERSION) - list(GET VOLK_LIBRARIES 0 FIRST_DIR) - get_filename_component(VOLK_LIB_DIR ${FIRST_DIR} DIRECTORY) - if(EXISTS ${VOLK_LIB_DIR}/cmake/volk/VolkConfigVersion.cmake) - set(PACKAGE_FIND_VERSION_MAJOR 0) - include(${VOLK_LIB_DIR}/cmake/volk/VolkConfigVersion.cmake) - endif() - if(PACKAGE_VERSION) - set(VOLK_VERSION ${PACKAGE_VERSION}) - endif() - set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) -endif() - -set_package_properties(VOLK PROPERTIES - URL "https://www.libvolk.org" -) - -if(VOLK_FOUND AND VOLK_VERSION) - set_package_properties(VOLK PROPERTIES - DESCRIPTION "Vector-Optimized Library of Kernels (found: v${VOLK_VERSION})" - ) -else() - set_package_properties(VOLK PROPERTIES - DESCRIPTION "Vector-Optimized Library of Kernels" - ) -endif() - -mark_as_advanced(VOLK_LIBRARIES VOLK_INCLUDE_DIRS VOLK_VERSION) - -if(NOT ORC_FOUND) - find_package(ORC QUIET) -endif() -if(ORC_LIBRARIES_STATIC) - set(VOLK_LINK_LIBRARIES ${VOLK_LIBRARIES} ${ORC_LIBRARIES_STATIC}) - set(VOLK_INCLUDE_DIRS ${VOLK_INCLUDE_DIRS} ${ORC_INCLUDE_DIRS}) -else() - set(VOLK_LINK_LIBRARIES ${VOLK_LIBRARIES}) -endif() - -if(VOLK_FOUND AND NOT TARGET Volk::volk) - add_library(Volk::volk SHARED IMPORTED) - set_target_properties(Volk::volk PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - IMPORTED_LOCATION "${VOLK_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${VOLK_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${VOLK_LINK_LIBRARIES}" - ) -endif() diff --git a/src/algorithms/PVT/adapters/CMakeLists.txt b/src/algorithms/PVT/adapters/CMakeLists.txt index 3cf70fe955..6b9ff33e61 100644 --- a/src/algorithms/PVT/adapters/CMakeLists.txt +++ b/src/algorithms/PVT/adapters/CMakeLists.txt @@ -39,14 +39,6 @@ if(USE_OLD_BOOST_MATH_COMMON_FACTOR) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(pvt_adapters - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(ENABLE_CLANG_TIDY) if(CLANG_TIDY_EXE) set_target_properties(pvt_adapters diff --git a/src/algorithms/channel/libs/CMakeLists.txt b/src/algorithms/channel/libs/CMakeLists.txt index 90607d700f..63e0d72d83 100644 --- a/src/algorithms/channel/libs/CMakeLists.txt +++ b/src/algorithms/channel/libs/CMakeLists.txt @@ -54,14 +54,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(channel_libs - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(USE_GENERIC_LAMBDAS) set(has_generic_lambdas HAS_GENERIC_LAMBDA=1) set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0) diff --git a/src/algorithms/conditioner/adapters/CMakeLists.txt b/src/algorithms/conditioner/adapters/CMakeLists.txt index 265965e67e..7c24d008eb 100644 --- a/src/algorithms/conditioner/adapters/CMakeLists.txt +++ b/src/algorithms/conditioner/adapters/CMakeLists.txt @@ -42,14 +42,6 @@ target_link_libraries(conditioner_adapters Glog::glog ) -if(GNURADIO_USES_SPDLOG) - target_link_libraries(conditioner_adapters - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - target_include_directories(conditioner_adapters PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/algorithms/data_type_adapter/gnuradio_blocks/CMakeLists.txt b/src/algorithms/data_type_adapter/gnuradio_blocks/CMakeLists.txt index a0e1f2ddcd..5a05385c26 100644 --- a/src/algorithms/data_type_adapter/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/data_type_adapter/gnuradio_blocks/CMakeLists.txt @@ -55,14 +55,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(data_type_gr_blocks - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - set_property(TARGET data_type_gr_blocks APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $ diff --git a/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt b/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt index c652131ea9..c657272963 100644 --- a/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/input_filter/gnuradio_blocks/CMakeLists.txt @@ -48,21 +48,6 @@ target_link_libraries(input_filter_gr_blocks Volk::volk ) -if(LOG4CPP_FOUND) - target_link_libraries(input_filter_gr_blocks - PRIVATE - Log4cpp::log4cpp - ) -endif() - -if(GNURADIO_USES_SPDLOG) - target_link_libraries(input_filter_gr_blocks - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - target_include_directories(input_filter_gr_blocks PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/algorithms/libs/CMakeLists.txt b/src/algorithms/libs/CMakeLists.txt index e8f0d63665..1e31cf4c3f 100644 --- a/src/algorithms/libs/CMakeLists.txt +++ b/src/algorithms/libs/CMakeLists.txt @@ -119,14 +119,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(algorithms_libs - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(FILESYSTEM_FOUND) target_compile_definitions(algorithms_libs PUBLIC -DHAS_STD_FILESYSTEM=1) if(find_experimental) diff --git a/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt b/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt index 7f6537ccfb..225518612a 100644 --- a/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt @@ -37,14 +37,6 @@ target_link_libraries(obs_gr_blocks Gnuradio::pmt ) -if(GNURADIO_USES_SPDLOG) - target_link_libraries(obs_gr_blocks - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - target_include_directories(obs_gr_blocks PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt index ae521eeb97..9a7ea4e5d3 100644 --- a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt @@ -50,14 +50,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(NOT GNURADIO_USES_LOG4CPP) - target_link_libraries(resampler_gr_blocks - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - target_include_directories(resampler_gr_blocks PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/algorithms/signal_generator/adapters/CMakeLists.txt b/src/algorithms/signal_generator/adapters/CMakeLists.txt index e8486b3260..c430af3c26 100644 --- a/src/algorithms/signal_generator/adapters/CMakeLists.txt +++ b/src/algorithms/signal_generator/adapters/CMakeLists.txt @@ -44,14 +44,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(signal_generator_adapters - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(ENABLE_CLANG_TIDY) if(CLANG_TIDY_EXE) set_target_properties(signal_generator_adapters diff --git a/src/algorithms/signal_source/libs/CMakeLists.txt b/src/algorithms/signal_source/libs/CMakeLists.txt index 34cb13e88f..2823283b73 100644 --- a/src/algorithms/signal_source/libs/CMakeLists.txt +++ b/src/algorithms/signal_source/libs/CMakeLists.txt @@ -80,14 +80,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(signal_source_libs - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(ENABLE_FMCOMMS2 OR ENABLE_AD9361) target_link_libraries(signal_source_libs PUBLIC diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/CMakeLists.txt b/src/algorithms/telemetry_decoder/gnuradio_blocks/CMakeLists.txt index d6bed4f970..c71184aa81 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/CMakeLists.txt @@ -69,14 +69,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(telemetry_decoder_gr_blocks - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - target_include_directories(telemetry_decoder_gr_blocks PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/core/libs/supl/CMakeLists.txt b/src/core/libs/supl/CMakeLists.txt index 36b7261c71..38239f27a4 100644 --- a/src/core/libs/supl/CMakeLists.txt +++ b/src/core/libs/supl/CMakeLists.txt @@ -56,6 +56,14 @@ target_link_libraries(core_libs_supl ${GNUTLS_OPENSSL_LIBRARY} ) +# This is ancient and unmaintained code. As the project migrates to modern compilers, +# non-standards-conforming constructs will be flagged as errors. This should be +# upgraded, but until then, allow non-standards-conforming constructs +set_target_properties(core_libs_supl + PROPERTIES + C_EXTENSIONS on +) + target_include_directories(core_libs_supl PUBLIC ${GNUTLS_INCLUDE_DIR} diff --git a/src/core/monitor/CMakeLists.txt b/src/core/monitor/CMakeLists.txt index 4f6211a40e..cfd2cdab3b 100644 --- a/src/core/monitor/CMakeLists.txt +++ b/src/core/monitor/CMakeLists.txt @@ -73,14 +73,6 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() -if(GNURADIO_USES_SPDLOG) - target_link_libraries(core_monitor - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(USE_BOOST_ASIO_IO_CONTEXT) target_compile_definitions(core_monitor PUBLIC diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/CMakeLists.txt b/src/tests/unit-tests/signal-processing-blocks/libs/CMakeLists.txt index 6740932fb0..53545ef449 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/CMakeLists.txt +++ b/src/tests/unit-tests/signal-processing-blocks/libs/CMakeLists.txt @@ -53,14 +53,6 @@ target_include_directories(signal_processing_testing_lib ${GNSSSDR_SOURCE_DIR}/src/tests/common-files ) -if(GNURADIO_USES_SPDLOG) - target_link_libraries(signal_processing_testing_lib - PUBLIC - fmt::fmt - spdlog::spdlog - ) -endif() - if(USE_GENERIC_LAMBDAS) set(has_generic_lambdas HAS_GENERIC_LAMBDA=1) set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0) diff --git a/src/utils/front-end-cal/main.cc b/src/utils/front-end-cal/main.cc index 42d7a7601b..692062080b 100644 --- a/src/utils/front-end-cal/main.cc +++ b/src/utils/front-end-cal/main.cc @@ -60,6 +60,7 @@ #include #include // for ctime #include +#include #include #include #include