diff --git a/CMakeLists.txt b/CMakeLists.txt
index 492169801..c7d4acac8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,77 +16,116 @@
# along with GNSS-SDR. If not, see .
#
-########################################################################
+################################################################################
# Project setup
-########################################################################
+################################################################################
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
- message(WARNING "In-tree build is bad practice. Try 'cd build && cmake ../' ")
+ message(WARNING "In-tree build is bad practice. Try 'cd build && cmake ..'")
endif()
cmake_minimum_required(VERSION 2.8.12)
project(gnss-sdr CXX C)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
-file(RELATIVE_PATH RELATIVE_CMAKE_CALL ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
-
-if(NOT CMAKE_PREFIX_PATH)
- if(DEFINED ENV{PYBOMBS_PREFIX})
- set(CMAKE_PREFIX_PATH $ENV{PYBOMBS_PREFIX})
- endif()
- if(DEFINED ENV{SNAP})
- set(CMAKE_PREFIX_PATH $ENV{SNAP})
- endif()
-endif()
-
-########################################################################
+################################################################################
# Determine optional blocks/libraries to be built (default: not built)
# Enable them at the command line by doing 'cmake -DENABLE_XXX=ON ..'
-########################################################################
+################################################################################
+include(FeatureSummary)
# Support of optional RF front-ends
option(ENABLE_UHD "Enable the use of UHD (driver for all USRP devices)" ON)
+add_feature_info(ENABLE_UHD ENABLE_UHD "Enables UHD_Signal_Source for using RF front-ends from the USRP family. Requires gr-uhd.")
+
option(ENABLE_OSMOSDR "Enable the use of OsmoSDR and other front-ends (RTL-based dongles, HackRF, bladeRF, etc.) as signal source" OFF)
-option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNURadio driver" OFF)
-option(ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal source (experimental)" OFF)
-option(ENABLE_GN3S "Enable the use of the GN3S dongle as signal source (experimental)" OFF)
-option(ENABLE_PLUTOSDR "Enable the use of ADALM-PLUTO Evaluation Boards (Analog Devices Inc.), requires gr-iio" OFF)
+add_feature_info(ENABLE_OSMOSDR ENABLE_OSMOSDR "Enables Osmosdr_Signal_Source and RtlTcp_Signal_Source for using RF front-ends compatible with the OsmoSDR driver. Requires gr-osmosdr.")
+
option(ENABLE_FMCOMMS2 "Enable the use of FMCOMMS4-EBZ + ZedBoard hardware, requires gr-iio" OFF)
-option(ENABLE_AD9361 "Enable the use of AD9361 directo to FPGA hardware, requires libiio" OFF)
+add_feature_info(ENABLE_FMCOMMS2 ENABLE_FMCOMMS2 "Enables Fmcomms2_Signal_Source for FMCOMMS2/3/4 devices. Requires gr-iio.")
+
+option(ENABLE_PLUTOSDR "Enable the use of ADALM-PLUTO Evaluation Boards (Analog Devices Inc.), requires gr-iio" OFF)
+add_feature_info(ENABLE_PLUTOSDR ENABLE_PLUTOSDR "Enables Plutosdr_Signal_Source for using ADALM-PLUTO boards. Requires gr-iio.")
+
+option(ENABLE_AD9361 "Enable the use of AD9361 direct to FPGA hardware, requires libiio" OFF)
+add_feature_info(ENABLE_AD9361 ENABLE_AD9361 "Enables Ad9361_Fpga_Signal_Source for devices with the AD9361 chipset. Requires libiio.")
+
option(ENABLE_RAW_UDP "Enable the use of high-optimized custom UDP packet sample source, requires libpcap" OFF)
+add_feature_info(ENABLE_RAW_UDP ENABLE_RAW_UDP "Enables Custom_UDP_Signal_Source for custom UDP packet sample source. Requires libpcap.")
+
+option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNU Radio driver" OFF)
+add_feature_info(ENABLE_FLEXIBAND ENABLE_FLEXIBAND "Enables Flexiband_Signal_Source for using Teleorbit's Flexiband RF front-end. Requires gr-teleorbit.")
+
+option(ENABLE_GN3S "Enable the use of the GN3S dongle as signal source (experimental)" OFF)
+add_feature_info(ENABLE_GN3S ENABLE_GN3S "Enables Gn3s_Signal_Source for using the GN3S v2 dongle. Requires gr-gn3s.")
+
+option(ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal source (experimental)" OFF)
+add_feature_info(ENABLE_ARRAY ENABLE_ARRAY "Enables Raw_Array_Signal_Source and Array_Signal_Conditioner for using CTTC's antenna array. Requires gr-dbfcttc.")
# Performance analysis tools
option(ENABLE_GPERFTOOLS "Enable linking to Gperftools libraries (tcmalloc and profiler)" OFF)
+add_feature_info(ENABLE_GPERFTOOLS ENABLE_GPERFTOOLS "Enables performance analysis. Requires Gperftools.")
+
option(ENABLE_GPROF "Enable the use of the GNU profiler tool 'gprof'" OFF)
+add_feature_info(ENABLE_GPROF ENABLE_GPROF "Enables performance analysis with 'gprof'.")
# Code correctness
option(ENABLE_CLANG_TIDY "Enable the use of clang-tidy when compiling" OFF)
+add_feature_info(ENABLE_CLANG_TIDY ENABLE_CLANG_TIDY "Runs clang-tidy along with the compiler. Requires Clang.")
# Acceleration
option(ENABLE_PROFILING "Enable execution of volk_gnsssdr_profile at the end of the building" OFF)
+add_feature_info(ENABLE_PROFILING ENABLE_PROFILING "Runs volk_gnsssdr_profile at the end of the building.")
+
option(ENABLE_OPENCL "Enable building of processing blocks implemented with OpenCL (experimental)" OFF)
+add_feature_info(ENABLE_OPENCL ENABLE_OPENCL "Enables GPS_L1_CA_PCPS_OpenCl_Acquisition (experimental). Requires OpenCL.")
+
option(ENABLE_CUDA "Enable building of processing blocks implemented with CUDA (experimental, requires CUDA SDK)" OFF)
-option(ENABLE_FPGA "Enable building of processing blocks implemented with FPGA (experimental, requires EZDMA driver)" OFF)
+add_feature_info(ENABLE_CUDA ENABLE_CUDA "Enables GPS_L1_CA_DLL_PLL_Tracking_GPU (experimental). Requires CUDA.")
+
+option(ENABLE_FPGA "Enable building of processing blocks implemented with FPGA" OFF)
+add_feature_info(ENABLE_FPGA ENABLE_FPGA "Enables building of processing blocks for FPGA off-loading.")
# Building and packaging options
option(ENABLE_GENERIC_ARCH "Builds a portable binary" OFF)
+
option(ENABLE_PACKAGING "Enable software packaging" OFF)
+add_feature_info(ENABLE_PACKAGING ENABLE_PACKAGING "Enables software packaging.")
+
option(ENABLE_OWN_GLOG "Download glog and link it to gflags" OFF)
+add_feature_info(ENABLE_OWN_GLOG ENABLE_OWN_GLOG "Forces the downloading and building of Google glog.")
+
option(ENABLE_OWN_ARMADILLO "Download and build Armadillo locally" OFF)
+add_feature_info(ENABLE_OWN_ARMADILLO ENABLE_OWN_ARMADILLO "Forces the downloading and building of Armadillo.")
+
option(ENABLE_LOG "Enable logging" ON)
+add_feature_info(ENABLE_LOG ENABLE_LOG "Enables runtime internal logging with Google glog.")
+
if(ENABLE_PACKAGING)
set(ENABLE_GENERIC_ARCH ON)
endif()
# Testing
option(ENABLE_UNIT_TESTING "Build unit tests" ON)
+add_feature_info(ENABLE_UNIT_TESTING ENABLE_UNIT_TESTING "Enables building of Unit Tests.")
+
option(ENABLE_UNIT_TESTING_MINIMAL "Build a minimal set of unit tests" OFF)
+add_feature_info(ENABLE_UNIT_TESTING_MINIMAL ENABLE_UNIT_TESTING_MINIMAL "Enables building a minimal set of Unit Tests.")
+
option(ENABLE_UNIT_TESTING_EXTRA "Download external files and build extra unit tests" OFF)
+add_feature_info(ENABLE_UNIT_TESTING_EXTRA ENABLE_UNIT_TESTING_EXTRA "Enables building of Extra Unit Tests and downloading of external data files.")
+
option(ENABLE_SYSTEM_TESTING "Build system tests" OFF)
+add_feature_info(ENABLE_SYSTEM_TESTING ENABLE_SYSTEM_TESTING "Enables building of System Tests.")
+
option(ENABLE_SYSTEM_TESTING_EXTRA "Download external tools and build extra system tests" OFF)
+add_feature_info(ENABLE_SYSTEM_TESTING_EXTRA ENABLE_SYSTEM_TESTING_EXTRA "Enables building of Extra System Tests and downloading of external tools.")
+
if(ENABLE_SYSTEM_TESTING_EXTRA)
set(ENABLE_SYSTEM_TESTING ON)
endif()
option(ENABLE_OWN_GPSTK "Force to download, build and link GPSTk for system tests, even if it is already installed" OFF)
+add_feature_info(ENABLE_OWN_GPSTK ENABLE_OWN_GPSTK "Forces the downloading and building of GPSTk for system tests.")
+
option(ENABLE_INSTALL_TESTS "Install QA code system-wide" OFF)
if(ENABLE_FPGA)
set(ENABLE_INSTALL_TESTS ON)
@@ -94,25 +133,40 @@ endif()
-###############################
+################################################################################
# GNSS-SDR version information
-###############################
+################################################################################
set(THIS_IS_A_RELEASE OFF) # only related to version name, no further implications.
if(NOT ${THIS_IS_A_RELEASE})
- # Get the current working branch
- execute_process(
- COMMAND git rev-parse --abbrev-ref HEAD
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_BRANCH
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- # Get the latest abbreviated commit hash of the working branch
- execute_process(
- COMMAND git log -1 --format=%h
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE GIT_COMMIT_HASH
- OUTPUT_STRIP_TRAILING_WHITESPACE
+ find_package(Git)
+ set_package_properties(Git PROPERTIES
+ URL "https://git-scm.com"
+ DESCRIPTION "A free and open source distributed version control system"
+ PURPOSE "Manage version control, get MINOR_VERSION name for version number."
+ TYPE REQUIRED
)
+ if(GIT_FOUND)
+ # was this info set in the CMake commandline?
+ if(NOT GIT_BRANCH)
+ # no: try to find it
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_BRANCH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif(NOT GIT_BRANCH)
+ # was this info set in the CMake commandline?
+ if(NOT GIT_COMMIT_HASH)
+ # Get the latest abbreviated commit hash of the working branch
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_COMMIT_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif(NOT GIT_COMMIT_HASH)
+ endif()
endif()
set(VERSION_INFO_MAJOR_VERSION 0)
@@ -127,17 +181,25 @@ set(VERSION ${VERSION_INFO_MAJOR_VERSION}.${VERSION_INFO_API_COMPAT}.${VERSION_I
-########################################################################
+################################################################################
# Environment setup
-########################################################################
+################################################################################
include(ExternalProject)
+
# Detect 64-bits machine
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH_64BITS TRUE)
endif()
-set(OS_IS_MACOSX "")
-set(OS_IS_LINUX "")
+# Set prefix path for PyBOMBS and Snaps, if defined in environment variables
+if(NOT CMAKE_PREFIX_PATH)
+ if(DEFINED ENV{PYBOMBS_PREFIX})
+ set(CMAKE_PREFIX_PATH $ENV{PYBOMBS_PREFIX})
+ endif()
+ if(DEFINED ENV{SNAP})
+ set(CMAKE_PREFIX_PATH $ENV{SNAP})
+ endif()
+endif()
# Detect Linux Distribution
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@@ -321,13 +383,13 @@ endif()
if(NOT CMAKE_MAKE_PROGRAM_PRETTY_NAME)
set(CMAKE_MAKE_PROGRAM_PRETTY_NAME "${CMAKE_MAKE_PROGRAM}")
endif()
+add_feature_info(ENABLE_INSTALL_TESTS ENABLE_INSTALL_TESTS "Install test binaries when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} install'.")
################################################################################
# Minimum required versions
################################################################################
-set(GNSSSDR_CMAKE_MIN_VERSION "2.8.12")
set(GNSSSDR_GCC_MIN_VERSION "4.7.2")
set(GNSSSDR_CLANG_MIN_VERSION "3.4.0")
set(GNSSSDR_APPLECLANG_MIN_VERSION "500")
@@ -359,16 +421,6 @@ endif()
-################################################################################
-# Check CMake version
-################################################################################
-if(CMAKE_VERSION VERSION_LESS ${GNSSSDR_CMAKE_MIN_VERSION})
- message(STATUS "Your CMake version is too old and does not support some features required by GNSS-SDR. CMake version must be at least ${GNSSSDR_CMAKE_MIN_VERSION}.")
- message(FATAL_ERROR "Fatal error: CMake >= ${GNSSSDR_CMAKE_MIN_VERSION} required.")
-endif()
-
-
-
################################################################################
# Check compiler version
################################################################################
@@ -445,7 +497,7 @@ endif()
# Visibility
# See https://gcc.gnu.org/wiki/Visibility
-if(POLICY CMP0053)
+if(POLICY CMP0063)
cmake_policy(SET CMP0063 NEW)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_C_VISIBILITY_PRESET hidden)
@@ -501,6 +553,12 @@ else()
endif()
find_package(Threads REQUIRED)
endif()
+set_package_properties(Threads PROPERTIES
+ URL "https://computing.llnl.gov/tutorials/pthreads/"
+ DESCRIPTION "Implements the POSIX Threads execution model"
+ PURPOSE "Used to implement parallelism."
+ TYPE REQUIRED
+)
@@ -511,26 +569,23 @@ enable_testing()
if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING)
if(EXISTS $ENV{GTEST_DIR})
set(GTEST_DIR $ENV{GTEST_DIR})
- endif()
- if(GTEST_DIR)
message(STATUS "Googletest root folder set at ${GTEST_DIR}")
- find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS ${GTEST_DIR} ${GTEST_DIR}/googletest)
- if(LIBGTEST_DEV_DIR)
- message(STATUS "Googletest has been found.")
- else()
- message(FATAL_ERROR " Googletest source code has not been found at ${GTEST_DIR}.")
- endif()
- find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_DIR}/googletest/include)
- else()
- find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS /usr/src/googletest/googletest /usr/src/gtest /usr/include/gtest /opt/local/src/gtest-1.7.0)
- find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS /usr/include /opt/local/src/gtest-1.7.0/include)
- if(LIBGTEST_DEV_DIR)
- message(STATUS "Googletest package has been found.")
- else()
- message(STATUS " Googletest has not been found.")
- message(STATUS " Googletest v${GNSSSDR_GTEST_LOCAL_VERSION} will be downloaded and built automatically ")
- message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. ")
- endif()
+ endif()
+endif()
+
+find_package(GOOGLETEST)
+set_package_properties(GOOGLETEST PROPERTIES
+ URL "https://github.com/google/googletest"
+ DESCRIPTION "Source code of Google's Testing Framework"
+ PURPOSE "Used for Unit and System Tests."
+ TYPE REQUIRED
+)
+if(NOT GOOGLETEST_FOUND)
+ set_package_properties(GOOGLETEST PROPERTIES
+ PURPOSE "Googletest v${GNSSSDR_GTEST_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
+ if(GTEST_DIR)
+ message(FATAL_ERROR " Googletest source code has not been found at ${GTEST_DIR}.")
endif()
endif()
@@ -554,6 +609,12 @@ set(Boost_ADDITIONAL_VERSIONS
set(Boost_USE_MULTITHREAD ON)
set(Boost_USE_STATIC_LIBS OFF)
find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS atomic chrono date_time filesystem serialization system thread REQUIRED)
+set_package_properties(Boost PROPERTIES
+ URL "https://www.boost.org"
+ DESCRIPTION "Portable C++ source libraries"
+ PURPOSE "Used widely across the source code."
+ TYPE REQUIRED
+)
if(NOT Boost_FOUND)
message(FATAL_ERROR "Fatal error: Boost (version >=${GNSSSDR_BOOST_MIN_VERSION}) required.")
endif()
@@ -625,7 +686,7 @@ if(CMAKE_VERSION VERSION_LESS 3.5)
set_property(TARGET Boost::atomic PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR})
set_property(TARGET Boost::atomic PROPERTY
- INTERFACE_LINK_LIBRARIES ${Boost_ATOMIC_LIBRARIES})
+ INTERFACE_LINK_LIBRARIES ${Boost_ATOMIC_LIBRARIES})
set_property(TARGET Boost::atomic PROPERTY
IMPORTED_LOCATION ${Boost_ATOMIC_LIBRARIES})
endif()
@@ -637,10 +698,32 @@ endif()
# GNU Radio - https://gnuradio.org
################################################################################
set(GR_REQUIRED_COMPONENTS RUNTIME ANALOG BLOCKS FFT FILTER PMT)
+
+find_package(UHD)
+set_package_properties(UHD PROPERTIES
+ URL "https://www.ettus.com/sdr-software/detail/usrp-hardware-driver"
+ DESCRIPTION "USRP Hardware Driver"
+ PURPOSE "Used for communication with front-ends of the USRP family."
+ TYPE OPTIONAL
+)
+if(ENABLE_UHD)
+ if(NOT UHD_FOUND)
+ set(ENABLE_UHD OFF)
+ else()
+ set(GR_REQUIRED_COMPONENTS ${GR_REQUIRED_COMPONENTS} UHD)
+ endif()
+endif()
+
find_package(GNURADIO)
+set_package_properties(GNURADIO PROPERTIES
+ URL "https://www.gnuradio.org/"
+ DESCRIPTION "The free and open software radio ecosystem"
+ PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones."
+ TYPE REQUIRED
+)
if(PC_GNURADIO_RUNTIME_VERSION)
if(PC_GNURADIO_RUNTIME_VERSION VERSION_LESS ${GNSSSDR_GNURADIO_MIN_VERSION})
- set(GNURADIO_RUNTIME_FOUND)
+ unset(GNURADIO_RUNTIME_FOUND)
message(STATUS "The GNU Radio version installed in your system is too old.")
endif()
endif()
@@ -752,12 +835,32 @@ else()
endif()
endif()
+if(ENABLE_UHD AND UHD_FOUND AND GNURADIO_UHD_FOUND)
+ if(NOT TARGET Gnuradio::uhd)
+ add_library(Gnuradio::uhd SHARED IMPORTED)
+ list(GET GNURADIO_UHD_LIBRARIES 0 FIRST_DIR)
+ get_filename_component(GNURADIO_UHD_DIR ${FIRST_DIR} ABSOLUTE)
+ set_target_properties(Gnuradio::uhd PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${GNURADIO_UHD_DIR}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_UHD_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${GNURADIO_UHD_LIBRARIES}"
+ )
+ endif()
+endif()
+
################################################################################
# VOLK - Vector-Optimized Library of Kernels
################################################################################
find_package(VOLK)
+set_package_properties(VOLK PROPERTIES
+ URL "http://libvolk.org"
+ DESCRIPTION "Vector-Optimized Library of Kernels"
+ PURPOSE "Provides an abstraction of optimized math routines targeting several SIMD processors."
+ TYPE REQUIRED
+)
if(NOT VOLK_FOUND)
message(FATAL_ERROR "*** VOLK is required to build gnss-sdr")
endif()
@@ -768,6 +871,12 @@ endif()
# Log4cpp - http://log4cpp.sourceforge.net/
################################################################################
find_package(LOG4CPP)
+set_package_properties(LOG4CPP PROPERTIES
+ URL "http://log4cpp.sourceforge.net/"
+ DESCRIPTION "Library of C++ classes for flexible logging to files"
+ PURPOSE "Required by GNU Radio."
+ TYPE REQUIRED
+)
if(NOT LOG4CPP_FOUND)
message(FATAL_ERROR "*** Log4cpp is required to build gnss-sdr")
endif()
@@ -778,8 +887,13 @@ endif()
# volk_gnsssdr module - GNSS-SDR's own VOLK library
################################################################################
find_package(VOLKGNSSSDR)
+set_package_properties(VOLKGNSSSDR PROPERTIES
+ DESCRIPTION "Vector-Optimized Library of Kernels for GNSS-SDR."
+ PURPOSE "Accelerates math routines targeting several SIMD processors."
+ TYPE REQUIRED
+)
if(NOT VOLKGNSSSDR_FOUND)
- message(STATUS " volk_gnsssdr will be built along with gnss-sdr when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'")
+ message(STATUS " volk_gnsssdr will be built along with gnss-sdr when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
###############################
# Find Python required modules
###############################
@@ -800,11 +914,11 @@ if(NOT VOLKGNSSSDR_FOUND)
message(STATUS "Mako template library not found. See http://www.makotemplates.org/ ")
message(STATUS " You can try to install it by typing:")
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
- message(STATUS " sudo yum install ${PYTHON_NAME}-mako")
+ message(STATUS " sudo yum install ${PYTHON_NAME}-mako")
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
- message(STATUS " sudo zypper install ${PYTHON_NAME}-Mako")
+ message(STATUS " sudo zypper install ${PYTHON_NAME}-Mako")
else()
- message(STATUS " sudo apt-get install ${PYTHON_NAME}-mako")
+ message(STATUS " sudo apt-get install ${PYTHON_NAME}-mako")
endif()
message(FATAL_ERROR "Mako templates required to build VOLK_GNSSSDR")
endif()
@@ -814,15 +928,36 @@ if(NOT VOLKGNSSSDR_FOUND)
message(STATUS "python-six not found. See https://pythonhosted.org/six/ ")
message(STATUS " You can try to install it by typing:")
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
- message(STATUS " sudo yum install ${PYTHON_NAME}-six")
+ message(STATUS " sudo yum install ${PYTHON_NAME}-six")
elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE")
- message(STATUS " sudo zypper install ${PYTHON_NAME}-six")
+ message(STATUS " sudo zypper install ${PYTHON_NAME}-six")
else()
- message(STATUS " sudo apt-get install ${PYTHON_NAME}-six")
+ message(STATUS " sudo apt-get install ${PYTHON_NAME}-six")
endif()
message(FATAL_ERROR "six - python 2 and 3 compatibility library required to build VOLK_GNSSSDR")
endif()
+ set_package_properties(Python3 PROPERTIES
+ URL "https://www.python.org/"
+ DESCRIPTION "An interpreted, high-level, general-purpose programming language"
+ PURPOSE "Required to build volk_gnsssdr."
+ TYPE REQUIRED
+ )
+
+ set_package_properties(Python2 PROPERTIES
+ URL "https://www.python.org/"
+ DESCRIPTION "An interpreted, high-level, general-purpose programming language"
+ PURPOSE "Required to build volk_gnsssdr."
+ TYPE REQUIRED
+ )
+
+ set_package_properties(PythonInterp PROPERTIES
+ URL "https://www.python.org/"
+ DESCRIPTION "An interpreted, high-level, general-purpose programming language"
+ PURPOSE "Required to build volk_gnsssdr."
+ TYPE REQUIRED
+ )
+
set(READ_ENVIRO "")
if(ENABLE_PACKAGING)
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32)
@@ -855,11 +990,13 @@ if(NOT VOLKGNSSSDR_FOUND)
-DCMAKE_INCLUDE_PATH=${Boost_INCLUDE_DIR}
-DENABLE_ORC=OFF
${STRIP_VOLK_GNSSSDR_PROFILE}
- ${USE_THIS_PYTHON})
+ ${USE_THIS_PYTHON}
+ )
if(EXISTS $ENV{OECORE_TARGET_SYSROOT})
set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchains/oe-sdk_cross.cmake
- -DCROSSCOMPILE_MULTILIB=TRUE)
+ -DCROSSCOMPILE_MULTILIB=TRUE
+ )
endif()
if(CMAKE_VERSION VERSION_LESS 3.2)
ExternalProject_Add(volk_gnsssdr_module
@@ -889,6 +1026,12 @@ if(NOT VOLKGNSSSDR_FOUND)
)
endif()
find_package(ORC)
+ set_package_properties(ORC PROPERTIES
+ URL "https://gstreamer.freedesktop.org/modules/orc.html"
+ DESCRIPTION "The Optimized Inner Loops Runtime Compiler"
+ PURPOSE "Used by volk_gnsssdr."
+ TYPE OPTIONAL
+ )
if(NOT ORC_FOUND)
set(ORC_LIBRARIES "")
set(ORC_INCLUDE_DIRS "")
@@ -915,17 +1058,24 @@ if(NOT VOLKGNSSSDR_FOUND)
if(CMAKE_VERSION VERSION_LESS 3.2)
add_custom_command(TARGET volk_gnsssdr_module POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
- ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile)
+ ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile
+ )
else()
add_custom_command(TARGET volk_gnsssdr_module POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile
- BYPRODUCTS ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile)
+ BYPRODUCTS ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile
+ )
endif()
add_custom_command(TARGET volk_gnsssdr_module POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr-config-info
- ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr-config-info)
+ ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr-config-info
+ )
+
+ set_package_properties(VOLKGNSSSDR PROPERTIES
+ PURPOSE "volk_gnsssdr will be built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
endif()
@@ -935,10 +1085,16 @@ endif()
################################################################################
set(LOCAL_GFLAGS false)
find_package(GFLAGS)
+set_package_properties(GFLAGS PROPERTIES
+ URL "https://github.com/gflags/gflags"
+ DESCRIPTION "C++ library that implements commandline flags processing"
+ PURPOSE "Used for commandline flags management."
+ TYPE REQUIRED
+)
if(NOT GFLAGS_FOUND)
message(STATUS " gflags library has not been found.")
message(STATUS " gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded and built automatically ")
- message(STATUS " when doing 'make'. ")
+ message(STATUS " when doing 'make'.")
if(CMAKE_VERSION VERSION_LESS 3.2)
ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}
@@ -991,6 +1147,9 @@ if(NOT GFLAGS_FOUND)
endif()
set(LOCAL_GFLAGS true CACHE STRING "GFlags downloaded and built automatically" FORCE)
+ set_package_properties(GFLAGS PROPERTIES
+ PURPOSE "Gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
endif()
@@ -1004,14 +1163,19 @@ if(NOT ${ENABLE_OWN_GLOG})
set(GLOG_FOUND ON)
endif()
endif()
-set(glog_RELEASE ${GNSSSDR_GLOG_LOCAL_VERSION})
+set_package_properties(GLOG PROPERTIES
+ URL "https://github.com/google/glog"
+ DESCRIPTION "C++ implementation of the Google logging module"
+ PURPOSE "Used for runtime internal logging."
+ TYPE REQUIRED
+)
if(NOT GLOG_FOUND OR ${LOCAL_GFLAGS})
message(STATUS " glog library has not been found")
if(NOT GFLAGS_FOUND)
message(STATUS " or it is likely not linked to gflags.")
endif()
message(STATUS " glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded and built automatically ")
- message(STATUS " when doing 'make'. ")
+ message(STATUS " when doing 'make'.")
if(NOT ${LOCAL_GFLAGS})
add_library(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} UNKNOWN IMPORTED)
set_property(TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}")
@@ -1150,6 +1314,10 @@ ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/c
endif()
set(LOCAL_GLOG true CACHE STRING "Glog downloaded and built automatically" FORCE)
+
+ set_package_properties(GLOG PROPERTIES
+ PURPOSE "Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded and built when doing 'make'."
+ )
endif()
if(NOT ENABLE_LOG)
@@ -1158,10 +1326,10 @@ endif()
-#############################################################################
+################################################################################
# Check that BLAS (Basic Linear Algebra Subprograms) is found in the system
# See http://www.netlib.org/blas/
-#############################################################################
+################################################################################
find_library(BLAS blas)
if(NOT BLAS)
message(" The BLAS library has not been found.")
@@ -1176,10 +1344,10 @@ endif()
-#############################################################################
+################################################################################
# Check that LAPACK (Linear Algebra PACKage) is found in the system
# See http://www.netlib.org/lapack/
-#############################################################################
+################################################################################
find_library(LAPACK lapack)
if(NOT LAPACK)
message(" The LAPACK library has not been found.")
@@ -1200,6 +1368,12 @@ endif()
# Armadillo - http://arma.sourceforge.net/
################################################################################
find_package(Armadillo)
+set_package_properties(Armadillo PROPERTIES
+ URL "http://arma.sourceforge.net/"
+ DESCRIPTION "C++ library for linear algebra and scientific computing"
+ PURPOSE "Used for matrix computations."
+ TYPE REQUIRED
+)
if(ARMADILLO_FOUND)
if(${ARMADILLO_VERSION_STRING} VERSION_LESS ${GNSSSDR_ARMADILLO_MIN_VERSION})
set(ARMADILLO_FOUND false)
@@ -1218,7 +1392,7 @@ endif()
if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
message(STATUS " Armadillo has not been found.")
message(STATUS " Armadillo ${GNSSSDR_ARMADILLO_LOCAL_VERSION} will be downloaded and built automatically")
- message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. ")
+ message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
set(armadillo_BRANCH ${GNSSSDR_ARMADILLO_LOCAL_VERSION})
set(armadillo_RELEASE ${armadillo_BRANCH})
@@ -1227,6 +1401,12 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
#############################################
if(NOT OS_IS_MACOSX)
find_package(GFORTRAN)
+ set_package_properties(GFORTRAN PROPERTIES
+ URL "http://gcc.gnu.org/wiki/GFortran"
+ DESCRIPTION "GNU Fortran project"
+ PURPOSE "Required by Armadillo."
+ TYPE REQUIRED
+ )
if(NOT GFORTRAN)
message(STATUS "The gfortran library has not been found.")
message(STATUS " You can try to install it by typing:")
@@ -1271,9 +1451,8 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
)
endif()
- # Set up variables
+ # Create imported target
ExternalProject_Get_Property(armadillo-${armadillo_RELEASE} binary_dir)
- #set(ARMADILLO_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE}/include)
if(NOT GFORTRAN)
set(GFORTRAN "")
endif()
@@ -1289,6 +1468,9 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE}/include"
INTERFACE_LINK_LIBRARIES "${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
+ set_package_properties(Armadillo PROPERTIES
+ PURPOSE "Armadillo ${GNSSSDR_ARMADILLO_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
endif()
@@ -1297,6 +1479,12 @@ endif()
# GnuTLS - https://www.gnutls.org/
################################################################################
find_package(GnuTLS)
+set_package_properties(GnuTLS PROPERTIES
+ URL "https://www.gnutls.org/"
+ DESCRIPTION "Transport Layer Security Library"
+ PURPOSE "Used for the SUPL protocol implementation."
+ TYPE REQUIRED
+)
find_library(GNUTLS_OPENSSL_LIBRARY NAMES gnutls-openssl libgnutls-openssl.so.27
HINTS /usr/lib
/usr/lib64
@@ -1328,11 +1516,19 @@ find_library(GNUTLS_OPENSSL_LIBRARY NAMES gnutls-openssl libgnutls-openssl.so.27
/usr/lib/x86_64-linux-gnux32
/usr/lib/sh4-linux-gnu
)
-
if(NOT GNUTLS_OPENSSL_LIBRARY)
message(STATUS "Looking for OpenSSL instead...")
find_package(OpenSSL)
+ set_package_properties(OpenSSL PROPERTIES
+ URL "https://www.openssl.org"
+ DESCRIPTION "Cryptography and SSL/TLS Toolkit"
+ PURPOSE "Used for the SUPL protocol implementation."
+ TYPE REQUIRED
+ )
if(OPENSSL_FOUND)
+ set_package_properties(GnuTLS PROPERTIES
+ PURPOSE "Not found, but OpenSSL can replace it."
+ )
set(GNUTLS_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR})
set(GNUTLS_LIBRARIES "")
set(GNUTLS_OPENSSL_LIBRARY ${OPENSSL_SSL_LIBRARY})
@@ -1355,17 +1551,29 @@ endif()
-########################################################################
+################################################################################
# Matio - https://github.com/tbeu/matio
-########################################################################
+################################################################################
find_package(MATIO)
+set_package_properties(MATIO PROPERTIES
+ URL "https://github.com/tbeu/matio"
+ DESCRIPTION "MATLAB MAT File I/O Library"
+ PURPOSE "Used to store processing block's results in MAT files readable from MATLAB/Octave."
+ TYPE REQUIRED
+)
if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERSION})
if(MATIO_FOUND)
message(STATUS " Matio installed version (${MATIO_VERSION_STRING}) is too old (>= ${GNSSSDR_MATIO_MIN_VERSION} is required).")
endif()
message(STATUS " Matio v${GNSSSDR_MATIO_LOCAL_VERSION} will be downloaded and built automatically")
- message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'. ")
+ message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
find_package(ZLIB)
+ set_package_properties(ZLIB PROPERTIES
+ URL "https://www.zlib.net/"
+ DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library"
+ PURPOSE "Required to build Matio."
+ TYPE REQUIRED
+ )
if(ZLIB_FOUND)
get_filename_component(ZLIB_BASE_DIR ${ZLIB_INCLUDE_DIRS} DIRECTORY)
if(OS_IS_LINUX)
@@ -1403,6 +1611,12 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
endif()
endif()
find_package(HDF5)
+ set_package_properties(HDF5 PROPERTIES
+ URL "https://support.hdfgroup.org/HDF5/"
+ DESCRIPTION "A versatile data model, a portable file format and a software library"
+ PURPOSE "Required to build Matio."
+ TYPE REQUIRED
+ )
if(HDF5_FOUND)
list(GET HDF5_LIBRARIES 0 HDF5_FIRST_DIR)
get_filename_component(HDF5_BASE_DIR2 ${HDF5_FIRST_DIR} DIRECTORY)
@@ -1424,7 +1638,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION}
UPDATE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION}/autogen.sh
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION}/configure --with-hdf5=${HDF5_BASE_DIR} --with-zlib=${ZLIB_BASE_DIR} --with-default-file-ver=7.3 --enable-mat73=yes --prefix=
- BUILD_COMMAND $(MAKE)
+ BUILD_COMMAND ${CMAKE_MAKE_PROGRAM}
)
else()
ExternalProject_Add(matio-${GNSSSDR_MATIO_LOCAL_VERSION}
@@ -1445,10 +1659,10 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
add_library(Matio::matio SHARED IMPORTED)
add_dependencies(Matio::matio matio-${GNSSSDR_MATIO_LOCAL_VERSION})
set_target_properties(Matio::matio PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/matio/lib/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_SHARED_LIBRARY_SUFFIX}"
- INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/matio/include"
- INTERFACE_LINK_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/matio/lib/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/matio/lib/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/matio/include"
+ INTERFACE_LINK_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/matio/lib/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_SHARED_LIBRARY_SUFFIX}"
)
endif()
else()
@@ -1467,6 +1681,9 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
else()
message(FATAL_ERROR "*** The zlib library is required to build gnss-sdr")
endif()
+ set_package_properties(MATIO PROPERTIES
+ PURPOSE "Matio v${GNSSSDR_MATIO_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
endif()
@@ -1474,11 +1691,15 @@ endif()
################################################################################
# PugiXML - https://pugixml.org/
################################################################################
-find_package(PUGIXML QUIET)
-if(PUGIXML_FOUND)
- message(STATUS "PugiXML has been found.")
-else()
- message(STATUS " PugiXML v${GNSSSDR_PUGIXML_LOCAL_VERSION} will be downloaded and built automatically when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
+find_package(PUGIXML)
+set_package_properties(PUGIXML PROPERTIES
+ URL "https://pugixml.org/"
+ DESCRIPTION "Light-weight, simple and fast XML parser for C++"
+ PURPOSE "Used to handle Galileo almanac XML files published by the European GNSS Service Centre."
+ TYPE REQUIRED
+)
+if(NOT PUGIXML_FOUND)
+ message(STATUS " PugiXML v${GNSSSDR_PUGIXML_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
set(PUGIXML_COMPILER -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
set(TOOLCHAIN_ARG "")
if(EXISTS $ENV{OECORE_TARGET_SYSROOT})
@@ -1523,14 +1744,31 @@ else()
INTERFACE_LINK_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
endif()
+
+ set_package_properties(PUGIXML PROPERTIES
+ PURPOSE "PugiXML v${GNSSSDR_PUGIXML_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
+ )
endif()
################################################################################
-# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL, used if found)
+# Doxygen - http://www.doxygen.nl (OPTIONAL, used if found)
################################################################################
find_package(Doxygen)
+set_package_properties(Doxygen PROPERTIES
+ URL "http://www.doxygen.nl"
+ DESCRIPTION "Generates documentation from annotated C++ sources"
+ PURPOSE "Used to generate code documentation by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'"
+ TYPE OPTIONAL
+)
+find_package(LATEX)
+set_package_properties(LATEX PROPERTIES
+ URL "https://www.latex-project.org"
+ DESCRIPTION "High-quality typesetting system"
+ PURPOSE "Used to generate a PDF manual by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual'"
+ TYPE OPTIONAL
+)
if(DOXYGEN_FOUND)
message(STATUS "Doxygen found.")
message(STATUS " You can build the documentation with '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'.")
@@ -1538,7 +1776,6 @@ if(DOXYGEN_FOUND)
set(HAVE_DOT ${DOXYGEN_DOT_FOUND})
file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} top_srcdir)
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} top_builddir)
- find_package(LATEX)
if(PDFLATEX_COMPILER)
set(GENERATE_PDF_DOCUMENTATION "YES")
set(GNSSSDR_USE_MATHJAX "NO")
@@ -1553,9 +1790,9 @@ if(DOXYGEN_FOUND)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/docs/doxygen/Doxyfile
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- COMMENT "Generating API documentation with Doxygen." VERBATIM
+ COMMENT "Generating source code documentation with Doxygen." VERBATIM
)
- if(LATEX_COMPILER)
+ if(PDFLATEX_COMPILER)
message(STATUS " '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual' will generate a manual at ${CMAKE_BINARY_DIR}/docs/GNSS-SDR_manual.pdf")
add_custom_target(pdfmanual
COMMAND ${CMAKE_MAKE_PROGRAM}
@@ -1591,9 +1828,16 @@ endif()
-###############################################################################
+################################################################################
# OpenCL (OPTIONAL)
-###############################################################################
+################################################################################
+find_package(OPENCL QUIET)
+set_package_properties(OPENCL PROPERTIES
+ URL "https://www.khronos.org/opencl/"
+ DESCRIPTION "Library for parallel programming"
+ PURPOSE "Used in some processing block implementations."
+ TYPE OPTIONAL
+)
if(ENABLE_OPENCL)
find_package(OPENCL)
if($ENV{DISABLE_OPENCL})
@@ -1620,9 +1864,9 @@ endif()
-###############################################################################
+################################################################################
# CUDA (OPTIONAL)
-###############################################################################
+################################################################################
if($ENV{CUDA_GPU_ACCEL})
message(STATUS "CUDA_GPU_ACCEL environment variable found.")
set(ENABLE_CUDA ON)
@@ -1630,6 +1874,12 @@ endif()
if(ENABLE_CUDA)
find_package(CUDA REQUIRED)
+ set_package_properties(CUDA PROPERTIES
+ URL "https://developer.nvidia.com/cuda-downloads"
+ DESCRIPTION "Library for parallel programming in Nvidia GPUs"
+ PURPOSE "Used in some processing block implementations."
+ TYPE REQUIRED
+ )
message(STATUS "NVIDIA CUDA GPU Acceleration will be enabled.")
message(STATUS " You can disable it with 'cmake -DENABLE_CUDA=OFF ..'")
else()
@@ -1639,13 +1889,19 @@ endif()
-###############################################################################
+################################################################################
# CUSTOM UDP PACKET SOURCE (OPTIONAL)
-###############################################################################
+################################################################################
+find_package(PCAP)
+set_package_properties(PCAP PROPERTIES
+ URL "https://www.tcpdump.org"
+ DESCRIPTION "A portable C/C++ library for network traffic capture"
+ PURPOSE "Used for the custom UDP IP packet source."
+ TYPE OPTIONAL
+)
if(ENABLE_RAW_UDP)
message(STATUS "High-optimized custom UDP IP packet source is enabled.")
message(STATUS " You can disable it with 'cmake -DENABLE_RAW_UDP=OFF ..'")
- find_package(PCAP)
if(NOT PCAP_FOUND)
message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (with ENABLE_RAW_UDP=ON)")
endif()
@@ -1653,9 +1909,9 @@ endif()
-###############################################################################
+################################################################################
# FPGA (OPTIONAL)
-###############################################################################
+################################################################################
if(ENABLE_FPGA)
message(STATUS "FPGA Acceleration will be enabled.")
message(STATUS " You can disable it with 'cmake -DENABLE_FPGA=OFF ..'")
@@ -1670,34 +1926,6 @@ endif()
# Setup of optional drivers
################################################################################
-########################################
-# USRP Hardware Driver (UHD) - OPTIONAL
-########################################
-if(ENABLE_UHD)
- find_package(UHD)
- if(NOT UHD_FOUND)
- set(ENABLE_UHD OFF)
- message(STATUS " The USRP Hardware Driver (UHD) signal source will not be built,")
- message(STATUS " so all USRP-based front-ends will not be usable.")
- message(STATUS " Please check https://files.ettus.com/manual/")
- else()
- set(GR_REQUIRED_COMPONENTS UHD)
- find_package(Gnuradio)
- if(NOT TARGET Gnuradio::uhd)
- add_library(Gnuradio::uhd SHARED IMPORTED)
- list(GET GNURADIO_UHD_LIBRARIES 0 FIRST_DIR)
- get_filename_component(GNURADIO_UHD_DIR ${FIRST_DIR} ABSOLUTE)
- set_target_properties(Gnuradio::uhd PROPERTIES
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${GNURADIO_UHD_DIR}"
- INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_UHD_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "${GNURADIO_UHD_LIBRARIES}"
- )
- endif()
- endif()
-endif()
-
-
##########################################
# gr-osmosdr - OPTIONAL
# https://github.com/osmocom/gr-osmosdr
@@ -1707,8 +1935,14 @@ if($ENV{RTLSDR_DRIVER})
set(ENABLE_OSMOSDR ON)
endif()
+find_package(GROSMOSDR)
+set_package_properties(GROSMOSDR PROPERTIES
+ URL "https://osmocom.org/projects/gr-osmosdr/wiki"
+ DESCRIPTION "osmocom GNU Radio blocks"
+ PURPOSE "Used for communication with OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.)."
+ TYPE OPTIONAL
+)
if(ENABLE_OSMOSDR)
- find_package(GROSMOSDR)
if(GROSMOSDR_FOUND)
message(STATUS "The driver for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.) will be compiled.")
message(STATUS " You can disable it with 'cmake -DENABLE_OSMOSDR=OFF ..'")
@@ -1730,20 +1964,27 @@ endif()
# IIO blocks for GNU Radio
# https://github.com/analogdevicesinc/gr-iio
##############################################
-if(ENABLE_PLUTOSDR OR ENABLE_FMCOMMS2)
- find_package(GRIIO)
- find_package(LIBIIO)
-endif()
+find_package(GRIIO)
+set_package_properties(GRIIO PROPERTIES
+ URL "https://github.com/analogdevicesinc/gr-iio"
+ DESCRIPTION "IIO blocks for GNU Radio"
+ PURPOSE "Used for communication with PlutoSDR and FMCOMMS devices."
+ TYPE OPTIONAL
+)
-###################################################################################
+#####################################################################
# libiio - OPTIONAL
-# A cross platform library for interfacing with local and remote Linux IIO devices
+# A library for interfacing with local and remote Linux IIO devices
# https://github.com/analogdevicesinc/libiio
-###################################################################################
-if(ENABLE_AD9361)
- find_package(LIBIIO)
-endif()
+#####################################################################
+find_package(LIBIIO)
+set_package_properties(LIBIIO PROPERTIES
+ URL "https://github.com/analogdevicesinc/libiio"
+ DESCRIPTION "A library for interfacing with Linux IIO devices"
+ PURPOSE "Used for communication with the AD9361 chipset."
+ TYPE OPTIONAL
+)
##############################################
@@ -1765,17 +2006,22 @@ else()
message(STATUS "The (optional) Teleorbit Flexiband front-end driver adapter is not enabled.")
message(STATUS " Enable it with 'cmake -DENABLE_FLEXIBAND=ON ..' to add support for the Teleorbit Flexiband front-end.")
endif()
+find_package(TELEORBIT)
+set_package_properties(TELEORBIT PROPERTIES
+ DESCRIPTION "The Teleorbit's Flexiband GNU Radio block."
+ PURPOSE "Used for communication with the Flexiband front-end."
+ TYPE OPTIONAL
+)
if(ENABLE_FLEXIBAND)
- find_package(TELEORBIT)
if(NOT TELEORBIT_FOUND)
message(FATAL_ERROR "Teleorbit Flexiband GNU Radio driver required to build gnss-sdr with the optional FLEXIBAND adapter")
endif()
endif()
-##############################################
+######################
# GN3S - OPTIONAL
-##############################################
+######################
if($ENV{GN3S_DRIVER})
message(STATUS "GN3S_DRIVER environment variable found.")
set(ENABLE_GN3S ON)
@@ -1783,10 +2029,16 @@ endif()
if(GN3S_DRIVER)
set(ENABLE_GN3S ON)
endif()
+find_package(GRGN3S QUIET)
+set_package_properties(GRGN3S PROPERTIES
+ URL "https://github.com/gnss-sdr/gr-gn3s"
+ DESCRIPTION "The GN3S v2 front-end GNU Radio block."
+ PURPOSE "Used for communication with the GN3S v2 front-end."
+ TYPE OPTIONAL
+)
if(ENABLE_GN3S)
message(STATUS "The GN3S driver will be compiled.")
message(STATUS " You can disable it with 'cmake -DENABLE_GN3S=OFF ..'")
- find_package(GRGN3S QUIET)
else()
message(STATUS "The (optional and experimental) GN3S driver is not enabled.")
message(STATUS " Enable it with 'cmake -DENABLE_GN3S=ON ..' to add support for the GN3S dongle.")
@@ -1805,10 +2057,16 @@ if(RAW_ARRAY_DRIVER)
set(ENABLE_ARRAY ON)
endif()
+find_package(GRDBFCTTC QUIET)
+set_package_properties(GRDBFCTTC PROPERTIES
+ URL "https://github.com/gnss-sdr/gr-dbfcttcs"
+ DESCRIPTION "CTTC's array prototype GNU Radio block."
+ PURPOSE "Used for communication with CTTC's antenna array."
+ TYPE OPTIONAL
+)
if(ENABLE_ARRAY)
message(STATUS "CTTC's Antenna Array front-end driver will be compiled.")
message(STATUS " You can disable it with 'cmake -DENABLE_ARRAY=OFF ..'")
- find_package(GRDBFCTTC QUIET)
else()
message(STATUS "The (optional) CTTC's Antenna Array front-end driver is not enabled.")
message(STATUS " Enable it with 'cmake -DENABLE_ARRAY=ON ..' to add support for the CTTC experimental array front-end.")
@@ -1819,8 +2077,14 @@ endif()
################################################################################
# GPerftools - https://github.com/gperftools/gperftools - OPTIONAL)
################################################################################
+find_package(GPERFTOOLS)
+set_package_properties(GPERFTOOLS PROPERTIES
+ URL "https://github.com/gperftools/gperftools"
+ DESCRIPTION "Collection of performance analysis tools"
+ PURPOSE "Used for performance analysis."
+ TYPE OPTIONAL
+)
if(ENABLE_GPERFTOOLS)
- find_package(GPERFTOOLS)
if(NOT GPERFTOOLS_FOUND)
message(STATUS "Although ENABLE_GPERFTOOLS has been set to ON, GPerftools has not been found.")
message(STATUS " Binaries will be compiled without 'tcmalloc' and 'profiler' libraries.")
@@ -1829,8 +2093,6 @@ if(ENABLE_GPERFTOOLS)
message(STATUS "GPerftools libraries found.")
message(STATUS " Binaries will be compiled with 'tcmalloc' and 'profiler' libraries.")
endif()
-endif()
-if(ENABLE_GPERFTOOLS)
# Set GPerftools related flags if it is available
# See https://github.com/gperftools/gperftools/blob/master/README
if(GPERFTOOLS_FOUND)
@@ -1845,9 +2107,9 @@ endif()
-########################################################################
+################################################################################
# GNU gprof (OPTIONAL) - https://sourceware.org/binutils/docs/gprof/
-########################################################################
+################################################################################
if(ENABLE_GPROF)
add_compile_options(-pg)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg")
@@ -1855,9 +2117,10 @@ if(ENABLE_GPROF)
endif()
-########################################################################
+
+################################################################################
# Set compiler flags
-########################################################################
+################################################################################
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32)
# Add warning flags
# For "-Wall" see https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
@@ -1902,9 +2165,9 @@ endif()
-########################################################################
+################################################################################
# clang-tidy https://clang.llvm.org/extra/clang-tidy/index.html
-########################################################################
+################################################################################
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(NOT (CMAKE_VERSION VERSION_LESS "3.6"))
find_program(
@@ -1928,9 +2191,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
endif()
-########################################################################
+
+################################################################################
# Create uninstall target
-########################################################################
+################################################################################
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
@@ -1941,7 +2205,38 @@ add_custom_target(uninstall
-########################################################################
-# Add subdirectories (in order of deps)
-########################################################################
+################################################################################
+# Add subdirectories
+################################################################################
add_subdirectory(src)
+
+
+
+################################################################################
+# Print summary
+################################################################################
+message(STATUS "")
+message(STATUS "***************************************")
+message(STATUS "* SUMMARY REPORT *")
+message(STATUS "***************************************")
+message(STATUS "")
+if(CMAKE_VERSION VERSION_LESS 3.4)
+ feature_summary(WHAT ALL)
+ feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log WHAT ALL)
+else()
+ feature_summary(WHAT
+ REQUIRED_PACKAGES_FOUND
+ REQUIRED_PACKAGES_NOT_FOUND
+ OPTIONAL_PACKAGES_FOUND
+ OPTIONAL_PACKAGES_NOT_FOUND
+ ENABLED_FEATURES DISABLED_FEATURES
+ )
+ feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log WHAT
+ REQUIRED_PACKAGES_FOUND
+ REQUIRED_PACKAGES_NOT_FOUND
+ OPTIONAL_PACKAGES_FOUND
+ OPTIONAL_PACKAGES_NOT_FOUND
+ ENABLED_FEATURES DISABLED_FEATURES
+ )
+endif()
+message(STATUS "GNSS-SDR v${VERSION} is ready to be built.")
diff --git a/README.md b/README.md
index f8f48bfd2..020b9907e 100644
--- a/README.md
+++ b/README.md
@@ -542,7 +542,7 @@ In a terminal, type:
~~~~~~
$ sudo port selfupdate
$ sudo port upgrade outdated
-$ sudo port install doxygen +latex
+$ sudo port install doxygen +docs
$ sudo port install gnuradio
$ sudo port install armadillo
$ sudo port install gnutls
diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake
index 7f5deb3ab..f56223662 100644
--- a/cmake/Modules/FindGNURADIO.cmake
+++ b/cmake/Modules/FindGNURADIO.cmake
@@ -43,6 +43,9 @@ macro(LIST_CONTAINS var value)
endforeach()
endmacro()
+# Trick for feature_summary
+set(GNURADIO_FOUND TRUE)
+
function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS})
if(NOT REQUIRED_MODULE)
@@ -140,6 +143,7 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
# generate an error if the module is missing
if(NOT GNURADIO_${EXTVAR}_FOUND)
message(STATUS "Required GNU Radio Component: ${EXTVAR} missing!")
+ set(GNURADIO_FOUND FALSE) # Trick for feature_summary
endif()
mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
@@ -200,3 +204,6 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION)
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
endif()
endif()
+
+# Trick for feature_summary
+set(GNURADIO_FOUND TRUE)
diff --git a/cmake/Modules/FindGOOGLETEST.cmake b/cmake/Modules/FindGOOGLETEST.cmake
new file mode 100644
index 000000000..4544f5127
--- /dev/null
+++ b/cmake/Modules/FindGOOGLETEST.cmake
@@ -0,0 +1,51 @@
+# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
+#
+# This file is part of GNSS-SDR.
+#
+# GNSS-SDR is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GNSS-SDR is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNSS-SDR. If not, see .
+
+
+# - Try to find Googletest source code
+#
+# The following environment variable is optionally searched for:
+# GTEST_DIR: Base directory where Googletest source code is found.
+#
+# The following are set after configuration is done:
+# GOOGLETEST_FOUND
+# LIBGTEST_DEV_DIR
+# GTEST_INCLUDE_DIRS
+
+
+find_path(LIBGTEST_DEV_DIR
+ NAMES src/gtest-all.cc
+ PATHS
+ ${GTEST_DIR}
+ ${GTEST_DIR}/googletest
+ /usr/src/googletest/googletest
+ /usr/src/gtest
+ /usr/include/gtest
+ /opt/local/src/gtest-1.7.0
+)
+
+find_path(GTEST_INCLUDE_DIRS
+ NAMES gtest/gtest.h
+ PATHS
+ ${GTEST_DIR}/googletest/include
+ /usr/include
+ /opt/local/src/gtest-1.7.0/include
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GOOGLETEST DEFAULT_MSG LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS)
+mark_as_advanced(LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS)
diff --git a/cmake/Modules/SetupPython.cmake b/cmake/Modules/SetupPython.cmake
index f3d59c900..5c3a0a75a 100644
--- a/cmake/Modules/SetupPython.cmake
+++ b/cmake/Modules/SetupPython.cmake
@@ -82,7 +82,6 @@ if(CMAKE_VERSION VERSION_LESS 3.12)
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND)
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
endif()
- find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT)
else()
find_package(Python3 COMPONENTS Interpreter)
if(Python3_FOUND)
diff --git a/conf/gnss-sdr_BDS_B1I_byte.conf b/conf/gnss-sdr_BDS_B1I_byte.conf
index f7d846fed..062e0a0e2 100644
--- a/conf/gnss-sdr_BDS_B1I_byte.conf
+++ b/conf/gnss-sdr_BDS_B1I_byte.conf
@@ -16,7 +16,7 @@ ControlThread.wait_for_flowgraph=false
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=File_Signal_Source
-SignalSource.filename=/home/dmiralles/Documents/GNSS-Metadata-Standard/install/BdsB1IStr01.dat
+SignalSource.filename=/home/dmiralles/Documents/gnss-metadata-standard/install/BdsB1IStr01.dat
SignalSource.item_type=byte
SignalSource.sampling_frequency=25000000
SignalSource.samples=0
@@ -89,7 +89,7 @@ Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking
Tracking_B1.item_type=gr_complex
Tracking_B1.pll_bw_hz=25.0;
Tracking_B1.dll_bw_hz=2.50;
-Tracking_B1.dump=false;
+Tracking_B1.dump=true;
Tracking_B1.dump_filename=./epl_tracking_ch_
diff --git a/docs/changelog b/docs/changelog
index b1c6e6397..42942beff 100644
--- a/docs/changelog
+++ b/docs/changelog
@@ -8,19 +8,22 @@
### Improvements in Efficiency
- Improved preamble detection implementation in the decoding of navigation messages (acceleration by x1.6 on average).
-- Applied clang-tidy checks and fixes related to performance.
+- Applied clang-tidy checks and fixes related to performance: performance-faster-string-find, performance-inefficient-algorithm, performance-move-const-arg, performance-type-promotion-in-math-fn, performance-unnecessary-copy-initialization, performance-unnecessary-value-param, readability-string-compare.
### Improvements in Interoperability:
- Added the BeiDou B1I receiver chain.
- Fix bug in GLONASS dual frequency receiver.
+- Added a custom UDP/IP output for PVT data streaming.
+- Improved Monitor block with UDP/IP output for internal receiver's data streaming.
### Improvements in Maintainability:
- Usage of clang-tidy integrated into CMake scripts. New option -DENABLE_CLANG_TIDY=ON executes clang-tidy along with compilation. Requires clang compiler.
-- Applied clang-tidy checks and fixes related to readability.
+- Applied clang-tidy checks and fixes related to readability: readability-container-size-empty, readability-identifier-naming, readability-inconsistent-declaration-parameter-name, readability-named-parameter, readability-non-const-parameter, readability-string-compare.
+- Improved includes selection following suggestions by include-what-you-use (see https://include-what-you-use.org/), allowing faster compiles, fewer recompiles and making refactoring easier.
### Improvements in Portability:
@@ -31,13 +34,14 @@
### Improvements in Reliability
-- Applied clang-tidy checks and fixes related to High Integrity C++.
+- Applied clang-tidy checks and fixes related to High Integrity C++: performance-move-const-arg, modernize-use-auto, modernize-use-equals-default, modernize-use-equals-delete, modernize-use-noexcept, modernize-use-nullptr, cert-dcl21-cpp, misc-new-delete-overloads, cert-dcl58-cpp, cert-err52-cpp, cert-err60-cpp.
### Improvements in Usability
- The receiver now admits FPGA off-loading, allowing for real time operation at high sampling rates and higher number of signals and channels.
- Fixed program termination (avoiding hangs and segfaults in some platforms/configurations).
+- CMake now generates a summary of enabled/disabled features. This info is also stored in a file called features.log in the building directory.
- Improved information provided to the user in case of failure.
diff --git a/src/algorithms/PVT/libs/geojson_printer.cc b/src/algorithms/PVT/libs/geojson_printer.cc
index 504393422..e38984a88 100644
--- a/src/algorithms/PVT/libs/geojson_printer.cc
+++ b/src/algorithms/PVT/libs/geojson_printer.cc
@@ -31,14 +31,19 @@
#include "geojson_printer.h"
+#include "pvt_solution.h"
#include
#include // for create_directories, exists
#include // for path, operator<<
#include // for filesystem
+#include // for error_code
#include
-#include
-#include
-#include
+#include // for remove
+#include // for tm
+#include // for exception
+#include // for operator<<
+#include // for cout, cerr
+#include // for stringstream
GeoJSON_Printer::GeoJSON_Printer(const std::string& base_path)
diff --git a/src/algorithms/PVT/libs/geojson_printer.h b/src/algorithms/PVT/libs/geojson_printer.h
index b9bdcdb28..a74a9599d 100644
--- a/src/algorithms/PVT/libs/geojson_printer.h
+++ b/src/algorithms/PVT/libs/geojson_printer.h
@@ -33,11 +33,12 @@
#ifndef GNSS_SDR_GEOJSON_PRINTER_H_
#define GNSS_SDR_GEOJSON_PRINTER_H_
-#include "pvt_solution.h"
+
#include
#include
#include
+class Pvt_Solution;
/*!
* \brief Prints PVT solutions in GeoJSON format file
diff --git a/src/algorithms/PVT/libs/gpx_printer.cc b/src/algorithms/PVT/libs/gpx_printer.cc
index 42c32ba5c..3066ae824 100644
--- a/src/algorithms/PVT/libs/gpx_printer.cc
+++ b/src/algorithms/PVT/libs/gpx_printer.cc
@@ -31,13 +31,19 @@
#include "gpx_printer.h"
+#include "rtklib_solver.h"
#include
#include // for create_directories, exists
#include // for path, operator<<
#include // for filesystem
+#include // for error_code
#include
-#include
-#include
+#include // for remove
+#include // for tm
+#include // for exception
+#include // for operator<<
+#include // for cout, cerr
+#include // for stringstream
Gpx_Printer::Gpx_Printer(const std::string& base_path)
diff --git a/src/algorithms/PVT/libs/gpx_printer.h b/src/algorithms/PVT/libs/gpx_printer.h
index 740be545c..e78269f8c 100644
--- a/src/algorithms/PVT/libs/gpx_printer.h
+++ b/src/algorithms/PVT/libs/gpx_printer.h
@@ -33,11 +33,12 @@
#ifndef GNSS_SDR_GPX_PRINTER_H_
#define GNSS_SDR_GPX_PRINTER_H_
-#include "rtklib_solver.h"
+
#include
#include
#include
+class Rtklib_Solver;
/*!
* \brief Prints PVT information to GPX format file
diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
index de9d70b4e..e114cc560 100644
--- a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
+++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
@@ -1,5 +1,5 @@
/*!
- * \file galileo_e1_ls_pvt.cc
+ * \file hybrid_ls_pvt.cc
* \brief Implementation of a Least Squares Position, Velocity, and Time
* (PVT) solver, based on K.Borre's Matlab receiver.
* \author Javier Arribas, 2011. jarribas(at)cttc.es
diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.h b/src/algorithms/PVT/libs/hybrid_ls_pvt.h
index 79313c92b..4409d4bba 100644
--- a/src/algorithms/PVT/libs/hybrid_ls_pvt.h
+++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.h
@@ -1,5 +1,5 @@
/*!
- * \file galileo_e1_ls_pvt.h
+ * \file hybrid_ls_pvt.h
* \brief Interface of a Least Squares Position, Velocity, and Time (PVT)
* solver, based on K.Borre's Matlab receiver.
* \author Javier Arribas, 2011. jarribas(at)cttc.es
diff --git a/src/algorithms/PVT/libs/kml_printer.cc b/src/algorithms/PVT/libs/kml_printer.cc
index 6157f5bc9..e1335490c 100644
--- a/src/algorithms/PVT/libs/kml_printer.cc
+++ b/src/algorithms/PVT/libs/kml_printer.cc
@@ -31,13 +31,19 @@
*/
#include "kml_printer.h"
+#include "rtklib_solver.h"
#include
#include // for create_directories, exists
#include // for path, operator<<
#include // for filesystem
+#include // for error_code
#include
-#include
+#include // for remove
+#include // for tm
+#include // for exception
+#include // for cout, cerr
#include
+#include
Kml_Printer::Kml_Printer(const std::string& base_path)
diff --git a/src/algorithms/PVT/libs/kml_printer.h b/src/algorithms/PVT/libs/kml_printer.h
index bc2db1198..6295242f6 100644
--- a/src/algorithms/PVT/libs/kml_printer.h
+++ b/src/algorithms/PVT/libs/kml_printer.h
@@ -33,12 +33,12 @@
#ifndef GNSS_SDR_KML_PRINTER_H_
#define GNSS_SDR_KML_PRINTER_H_
-#include "rtklib_solver.h"
-#include
-#include
-#include
+#include // for ofstream
+#include // for shared_ptr
+class Rtklib_Solver;
+
/*!
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
*
diff --git a/src/algorithms/PVT/libs/nmea_printer.cc b/src/algorithms/PVT/libs/nmea_printer.cc
index f01d12272..9186d48e0 100644
--- a/src/algorithms/PVT/libs/nmea_printer.cc
+++ b/src/algorithms/PVT/libs/nmea_printer.cc
@@ -35,14 +35,16 @@
#include "nmea_printer.h"
#include "rtklib_solution.h"
-#include
+#include "rtklib_solver.h"
#include // for create_directories, exists
#include // for path, operator<<
#include // for filesystem
+#include // for error_code
#include
#include
#include
#include
+#include // for cout, cerr
#include
diff --git a/src/algorithms/PVT/libs/nmea_printer.h b/src/algorithms/PVT/libs/nmea_printer.h
index 6ceab023c..f821ad94b 100644
--- a/src/algorithms/PVT/libs/nmea_printer.h
+++ b/src/algorithms/PVT/libs/nmea_printer.h
@@ -36,11 +36,12 @@
#ifndef GNSS_SDR_NMEA_PRINTER_H_
#define GNSS_SDR_NMEA_PRINTER_H_
-#include "rtklib_solver.h"
-#include
-#include
-#include
+#include // for ptime
+#include // for ofstream
+#include // for shared_ptr
+#include // for string
+class Rtklib_Solver;
/*!
* \brief This class provides a implementation of a subset of the NMEA-0183 standard for interfacing
diff --git a/src/algorithms/PVT/libs/rinex_printer.cc b/src/algorithms/PVT/libs/rinex_printer.cc
index 39e5d6536..b9b2c2223 100644
--- a/src/algorithms/PVT/libs/rinex_printer.cc
+++ b/src/algorithms/PVT/libs/rinex_printer.cc
@@ -29,6 +29,27 @@
*/
#include "rinex_printer.h"
+#include "Beidou_B1I.h"
+#include "GLONASS_L1_L2_CA.h"
+#include "GPS_L1_CA.h"
+#include "Galileo_E1.h"
+#include "beidou_dnav_ephemeris.h"
+#include "beidou_dnav_iono.h"
+#include "beidou_dnav_utc_model.h"
+#include "galileo_ephemeris.h"
+#include "galileo_iono.h"
+#include "galileo_utc_model.h"
+#include "glonass_gnav_almanac.h"
+#include "glonass_gnav_ephemeris.h"
+#include "glonass_gnav_utc_model.h"
+#include "gnss_synchro.h"
+#include "gps_cnav_ephemeris.h"
+#include "gps_cnav_iono.h"
+#include "gps_cnav_utc_model.h"
+#include "gps_ephemeris.h"
+#include "gps_iono.h"
+#include "gps_navigation_message.h"
+#include "gps_utc_model.h"
#include
#include
#include
@@ -38,8 +59,9 @@
#include
#include // for min and max
#include // for floor
-#include // for getenv()
+#include // for memcpy
#include
+#include // for cout
#include
#include
#include
diff --git a/src/algorithms/PVT/libs/rinex_printer.h b/src/algorithms/PVT/libs/rinex_printer.h
index 0e189dc80..79ad18b94 100644
--- a/src/algorithms/PVT/libs/rinex_printer.h
+++ b/src/algorithms/PVT/libs/rinex_printer.h
@@ -51,25 +51,33 @@
#ifndef GNSS_SDR_RINEX_PRINTER_H_
#define GNSS_SDR_RINEX_PRINTER_H_
-#include "Beidou_B1I.h"
-#include "GLONASS_L1_L2_CA.h"
-#include "GPS_L1_CA.h"
-#include "Galileo_E1.h"
-#include "beidou_dnav_navigation_message.h"
-#include "galileo_navigation_message.h"
-#include "glonass_gnav_navigation_message.h"
-#include "gnss_synchro.h"
-#include "gps_cnav_navigation_message.h"
-#include "gps_navigation_message.h"
#include
-#include
-#include
+#include // for int32_t
+#include // for strtol, strtod
+#include // for fstream
#include // for setprecision
-#include