diff --git a/CMakeLists.txt b/CMakeLists.txt
index c8d68bcf1..f381722ef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -190,148 +190,14 @@ endif()
# Detect Linux Distribution
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
- set(OperatingSystem "Linux")
- set(OS_IS_LINUX TRUE)
- if(ARCH_64BITS)
- set(ARCH_ "(64 bits)")
- else()
- set(ARCH_ "(32 bits)")
- endif()
- if(EXISTS "/etc/lsb-release")
- execute_process(COMMAND cat /etc/lsb-release
- COMMAND grep DISTRIB_ID
- COMMAND awk -F= "{ print $2 }"
- COMMAND tr "\n" " "
- COMMAND sed "s/ //"
- OUTPUT_VARIABLE LINUX_DISTRIBUTION
- RESULT_VARIABLE LINUX_ID_RESULT
- )
- execute_process(COMMAND cat /etc/lsb-release
- COMMAND grep DISTRIB_RELEASE
- COMMAND awk -F= "{ print $2 }"
- COMMAND tr "\n" " "
- COMMAND sed "s/ //"
- OUTPUT_VARIABLE LINUX_VER
- RESULT_VARIABLE LINUX_VER_RESULT
- )
- endif()
- if(NOT LINUX_DISTRIBUTION)
- if(EXISTS "/etc/linuxmint/info")
- set(LINUX_DISTRIBUTION "LinuxMint")
- execute_process(COMMAND cat /etc/linuxmint/info
- COMMAND grep -m1 RELEASE
- COMMAND awk -F= "{ print $2 }"
- COMMAND tr "\n" " "
- COMMAND sed "s/ //"
- OUTPUT_VARIABLE LINUX_VER
- RESULT_VARIABLE LINUX_VER_RESULT
- )
- endif()
- endif()
- if(NOT LINUX_DISTRIBUTION)
- if(EXISTS "/etc/os-release")
- execute_process(COMMAND cat /etc/os-release
- COMMAND grep -m1 NAME
- COMMAND awk -F= "{ print $2 }"
- COMMAND tr "\n" " "
- COMMAND sed "s/ //"
- OUTPUT_VARIABLE LINUX_DISTRIBUTION
- RESULT_VARIABLE LINUX_ID_RESULT
- )
- execute_process(COMMAND cat /etc/os-release
- COMMAND grep VERSION_ID
- COMMAND awk -F= "{ print $2 }"
- COMMAND tr "\n" " "
- COMMAND sed "s/ //"
- OUTPUT_VARIABLE LINUX_VER
- RESULT_VARIABLE LINUX_VER_RESULT
- )
- if(${LINUX_DISTRIBUTION} MATCHES "Debian")
- set(LINUX_DISTRIBUTION "Debian")
- file(READ /etc/debian_version LINUX_VER)
- endif()
- endif()
- endif()
- if(NOT LINUX_DISTRIBUTION)
- if(EXISTS "/etc/redhat-release")
- set(LINUX_DISTRIBUTION "Red Hat")
- file(READ /etc/redhat-release LINUX_VER)
- endif()
- endif()
- if(NOT LINUX_DISTRIBUTION)
- if(EXISTS "/etc/debian_version")
- set(LINUX_DISTRIBUTION "Debian")
- file(READ /etc/debian_version LINUX_VER)
- endif()
- endif()
- if(NOT LINUX_DISTRIBUTION)
- set(LINUX_DISTRIBUTION "Generic")
- set(LINUX_VER "Unknown")
- endif()
+ include(DetectLinuxDistro)
message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${LINUX_DISTRIBUTION} GNU/Linux Release ${LINUX_VER} ${ARCH_}")
endif()
-if(NOT LINUX_DISTRIBUTION)
- set(LINUX_DISTRIBUTION "Unknown")
-endif()
# Detect macOS / Mac OS X Version
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(OperatingSystem "Mac OS X")
- set(OS_IS_MACOSX TRUE)
- execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION)
- string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
- if(${DARWIN_VERSION} MATCHES "19")
- set(MACOS_CATALINA TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS Catalina 10.15")
- endif()
- if(${DARWIN_VERSION} MATCHES "18")
- set(MACOS_MOJAVE TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS Mojave 10.14")
- endif()
- if(${DARWIN_VERSION} MATCHES "17")
- set(MACOS_HIGH_SIERRA TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS High Sierra 10.13")
- endif()
- if(${DARWIN_VERSION} MATCHES "16")
- set(MACOS_SIERRA TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on macOS Sierra 10.12")
- endif()
- if(${DARWIN_VERSION} MATCHES "15")
- set(MACOSX_EL_CAPITAN TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.11 El Capitan")
- endif()
- if(${DARWIN_VERSION} MATCHES "14")
- set(MACOSX_YOSEMITE TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.10 Yosemite")
- endif()
- if(${DARWIN_VERSION} MATCHES "13")
- set(MACOSX_MAVERICKS TRUE)
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
- set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
- set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION="com.apple.compilers.llvm.clang.1_0")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.9 Mavericks")
- endif()
- if(${DARWIN_VERSION} MATCHES "12")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.8 Mountain Lion")
- endif()
- if(${DARWIN_VERSION} MATCHES "11")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.7 Lion")
- endif()
- if(${DARWIN_VERSION} MATCHES "10")
- message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.6 Snow Leopard")
- endif()
+ include(DetectMacOSVersion)
+ message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${MACOS_DISTRIBUTION}")
endif()
# Define extra build types and select Release by default to get optimization flags
@@ -410,7 +276,7 @@ set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master")
set(GNSSSDR_GPSTK_LOCAL_VERSION "2.12")
set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.17")
set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.10")
-set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "3.11.1")
+set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "3.11.2")
if(CMAKE_VERSION VERSION_LESS "3.0.2")
set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.1") # Fix for CentOS 7
@@ -512,7 +378,7 @@ endif()
################################################################################
# Check if the compiler defines the architecture as ARM
################################################################################
-if(NOT OS_IS_MACOSX)
+if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin"))
if(CMAKE_CROSSCOMPILING)
set(IS_ARM TRUE)
if(NOT CMAKE_NO_SYSTEM_FROM_IMPORTED)
@@ -960,17 +826,13 @@ if(NOT VOLKGNSSSDR_FOUND)
if(PYTHON_EXECUTABLE)
set(USE_THIS_PYTHON "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
endif()
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(CMAKE_GENERATOR STREQUAL Xcode)
set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" "-configuration" "${CMAKE_BUILD_TYPE}" "-target")
endif()
endif()
- if(CMAKE_CROSSCOMPILING)
- set(VOLK_GNSSSDR_COMPILER "")
- else()
- set(VOLK_GNSSSDR_COMPILER -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
- endif()
+ set(VOLK_GNSSSDR_COMPILER -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER})
find_package(ORC)
set_package_properties(ORC PROPERTIES
@@ -1239,7 +1101,7 @@ if(NOT GLOG_FOUND OR ${LOCAL_GFLAGS})
else()
set(GFLAGS_LIBRARY_DIR_TO_LINK ${GFlags_LIBRARY_DIRS})
endif()
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(GFLAGS_LIBRARIES_TO_LINK "${GFLAGS_LIBRARIES_TO_LINK} -lc++")
set(GLOG_EXPORT_CXX_LIBRARIES "export CXXFLAGS=\"-stdlib=libc++\"")
endif()
@@ -1272,7 +1134,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/c
set(GLOG_CONFIGURE ${CMAKE_CURRENT_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure_with_gflags)
# Ensure that aclocal and libtool are present
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(EXISTS "/usr/bin/libtoolize")
if(EXISTS "/usr/bin/aclocal" OR
EXISTS "/usr/bin/aclocal-1.16" OR
@@ -1448,7 +1310,7 @@ endif()
# Check that BLAS (Basic Linear Algebra Subprograms) is found in the system
# See http://www.netlib.org/blas/
################################################################################
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Avoid using the implementation that comes with the Accelerate framework
include(AvoidAccelerate)
else()
@@ -1466,7 +1328,7 @@ endif()
if(NOT BLAS_FOUND)
message(" The BLAS library has not been found.")
message(" You can try to install it by typing:")
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(" 'sudo port install lapack' if you are using Macports, or")
message(" 'brew install lapack' if you are using Homebrew.")
else()
@@ -1485,7 +1347,7 @@ endif()
# Check that LAPACK (Linear Algebra PACKage) is found in the system
# See http://www.netlib.org/lapack/
################################################################################
-if(NOT OS_IS_MACOSX)
+if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin"))
find_package(LAPACK)
set_package_properties(LAPACK PROPERTIES
URL "http://www.netlib.org/lapack/"
@@ -1550,7 +1412,7 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO)
#############################################
# Check if GFORTRAN is found in the system
#############################################
- if(NOT OS_IS_MACOSX AND NOT MSVC)
+ if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND NOT MSVC)
find_package(GFORTRAN)
set_package_properties(GFORTRAN PROPERTIES
PURPOSE "Required by Armadillo."
@@ -1708,7 +1570,7 @@ if(NOT GNUTLS_OPENSSL_LIBRARY)
message(STATUS " But it was not built with openssl compatibility.")
endif()
message(STATUS " Looking for OpenSSL instead...")
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) # Trick for Homebrew
endif()
find_package(OpenSSL)
@@ -1728,14 +1590,14 @@ if(NOT GNUTLS_OPENSSL_LIBRARY)
else()
message(" The GnuTLS library with openssl compatibility enabled has not been found.")
message(" You can try to install the required libraries by typing:")
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(" sudo yum install openssl-devel")
else()
message(" sudo apt-get install libgnutls28-dev")
endif()
endif()
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(" 'sudo port install gnutls', if you are using Macports, or")
message(" 'brew install openssl', if you are using Homebrew.")
endif()
@@ -1776,7 +1638,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
endif()
if(ZLIB_FOUND)
get_filename_component(ZLIB_BASE_DIR ${ZLIB_INCLUDE_DIRS} DIRECTORY)
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(NOT EXISTS "/usr/bin/libtoolize")
message(" libtool has not been found.")
message(" You can try to install it by typing:")
@@ -1829,7 +1691,7 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
list(GET HDF5_LIBRARIES 0 HDF5_FIRST_DIR)
get_filename_component(HDF5_BASE_DIR2 ${HDF5_FIRST_DIR} DIRECTORY)
get_filename_component(HDF5_BASE_DIR ${HDF5_BASE_DIR2} DIRECTORY)
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(EXISTS /opt/local/include/hdf5.h)
set(HDF5_BASE_DIR /opt/local)
endif()
@@ -1889,12 +1751,12 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS
else()
message(STATUS " The hdf5 library has not been found in your system.")
message(STATUS " Please try to install it by doing:")
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(STATUS " $ sudo port install hdf5")
message(STATUS " or")
message(STATUS " $ brew install hdf5")
endif()
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
message(STATUS " $ sudo apt-get install libhdf5-dev")
endif()
message(FATAL_ERROR "*** The hdf5 library is required to build gnss-sdr")
@@ -2109,7 +1971,7 @@ if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSI
)
endif()
else()
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(NOT EXISTS "/usr/bin/libtoolize")
message(" libtool has not been found.")
message(" You can try to install it by typing:")
@@ -2295,14 +2157,14 @@ else()
message(STATUS " Doxygen has not been found in your system.")
message(STATUS " You can get nice code documentation by using it!")
message(STATUS " Get it from http://www.doxygen.nl/download.html")
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
message(STATUS " or simply by doing 'sudo yum install doxygen-latex'.")
else()
message(STATUS " or simply by doing 'sudo apt-get install doxygen-latex'.")
endif()
endif()
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(STATUS " or simply by doing 'sudo port install doxygen +latex'.")
endif()
endif()
@@ -2711,7 +2573,7 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(NOT ENABLE_GENERIC_ARCH)
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_compile_options(-march=native)
else()
if(IS_ARM)
diff --git a/README.md b/README.md
index af7edffde..a04b1308b 100644
--- a/README.md
+++ b/README.md
@@ -304,9 +304,9 @@ $ sudo apt-get install autoconf automake libtool curl make g++ unzip
and then:
~~~~~~
-$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.1/protobuf-cpp-3.11.1.tar.gz
-$ tar xvfz protobuf-cpp-3.11.1.tar.gz
-$ cd protobuf-3.11.1
+$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.1/protobuf-cpp-3.11.2.tar.gz
+$ tar xvfz protobuf-cpp-3.11.2.tar.gz
+$ cd protobuf-3.11.2
$ ./autogen.sh
$ ./configure
$ make
diff --git a/cmake/Modules/DetectLinuxDistro.cmake b/cmake/Modules/DetectLinuxDistro.cmake
new file mode 100644
index 000000000..8ba76a997
--- /dev/null
+++ b/cmake/Modules/DetectLinuxDistro.cmake
@@ -0,0 +1,99 @@
+# Copyright (C) 2020 (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 .
+
+if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(ARCH_ "(64 bits)")
+else()
+ set(ARCH_ "(32 bits)")
+endif()
+
+if(EXISTS "/etc/lsb-release")
+ execute_process(COMMAND cat /etc/lsb-release
+ COMMAND grep DISTRIB_ID
+ COMMAND awk -F= "{ print $2 }"
+ COMMAND tr "\n" " "
+ COMMAND sed "s/ //"
+ OUTPUT_VARIABLE LINUX_DISTRIBUTION
+ RESULT_VARIABLE LINUX_ID_RESULT
+ )
+ execute_process(COMMAND cat /etc/lsb-release
+ COMMAND grep DISTRIB_RELEASE
+ COMMAND awk -F= "{ print $2 }"
+ COMMAND tr "\n" " "
+ COMMAND sed "s/ //"
+ OUTPUT_VARIABLE LINUX_VER
+ RESULT_VARIABLE LINUX_VER_RESULT
+ )
+endif()
+
+if(NOT LINUX_DISTRIBUTION)
+ if(EXISTS "/etc/linuxmint/info")
+ set(LINUX_DISTRIBUTION "LinuxMint")
+ execute_process(COMMAND cat /etc/linuxmint/info
+ COMMAND grep -m1 RELEASE
+ COMMAND awk -F= "{ print $2 }"
+ COMMAND tr "\n" " "
+ COMMAND sed "s/ //"
+ OUTPUT_VARIABLE LINUX_VER
+ RESULT_VARIABLE LINUX_VER_RESULT
+ )
+ endif()
+endif()
+
+if(NOT LINUX_DISTRIBUTION)
+ if(EXISTS "/etc/os-release")
+ execute_process(COMMAND cat /etc/os-release
+ COMMAND grep -m1 NAME
+ COMMAND awk -F= "{ print $2 }"
+ COMMAND tr "\n" " "
+ COMMAND sed "s/ //"
+ OUTPUT_VARIABLE LINUX_DISTRIBUTION
+ RESULT_VARIABLE LINUX_ID_RESULT
+ )
+ execute_process(COMMAND cat /etc/os-release
+ COMMAND grep VERSION_ID
+ COMMAND awk -F= "{ print $2 }"
+ COMMAND tr "\n" " "
+ COMMAND sed "s/ //"
+ OUTPUT_VARIABLE LINUX_VER
+ RESULT_VARIABLE LINUX_VER_RESULT
+ )
+ if(${LINUX_DISTRIBUTION} MATCHES "Debian")
+ set(LINUX_DISTRIBUTION "Debian")
+ file(READ /etc/debian_version LINUX_VER)
+ endif()
+ endif()
+endif()
+
+if(NOT LINUX_DISTRIBUTION)
+ if(EXISTS "/etc/redhat-release")
+ set(LINUX_DISTRIBUTION "Red Hat")
+ file(READ /etc/redhat-release LINUX_VER)
+ endif()
+endif()
+
+if(NOT LINUX_DISTRIBUTION)
+ if(EXISTS "/etc/debian_version")
+ set(LINUX_DISTRIBUTION "Debian")
+ file(READ /etc/debian_version LINUX_VER)
+ endif()
+endif()
+
+if(NOT LINUX_DISTRIBUTION)
+ set(LINUX_DISTRIBUTION "Generic")
+ set(LINUX_VER "Unknown")
+endif()
diff --git a/cmake/Modules/DetectMacOSVersion.cmake b/cmake/Modules/DetectMacOSVersion.cmake
new file mode 100644
index 000000000..135dab680
--- /dev/null
+++ b/cmake/Modules/DetectMacOSVersion.cmake
@@ -0,0 +1,78 @@
+# Copyright (C) 2020 (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 .
+
+execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION)
+string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
+
+if(${DARWIN_VERSION} MATCHES "19")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "macOS Catalina 10.15")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "18")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "macOS Mojave 10.14")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "17")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "macOS High Sierra 10.13")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "16")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "macOS Sierra 10.12")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "15")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.11 El Capitan")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "14")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.10 Yosemite")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "13")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION="com.apple.compilers.llvm.clang.1_0")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.9 Mavericks")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "12")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.8 Mountain Lion")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "11")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.7 Lion")
+endif()
+
+if(${DARWIN_VERSION} MATCHES "10")
+ set(MACOS_DISTRIBUTION "Mac OS X 10.6 Snow Leopard")
+endif()
+
+if(NOT MACOS_DISTRIBUTION)
+ set(MACOS_DISTRIBUTION "MacOS (Unknown version)")
+endif()
diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake
index 25d58b451..23ee1f8c8 100644
--- a/cmake/Modules/FindGNURADIO.cmake
+++ b/cmake/Modules/FindGNURADIO.cmake
@@ -254,11 +254,11 @@ if(GNURADIO_VERSION)
if(GNURADIO_VERSION VERSION_LESS ${GNSSSDR_GNURADIO_MIN_VERSION})
unset(GNURADIO_RUNTIME_FOUND)
message(STATUS "The GNU Radio version installed in your system (v${GNURADIO_VERSION}) is too old.")
- if(OS_IS_LINUX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
message("Go to https://github.com/gnuradio/pybombs")
message("and follow the instructions to install GNU Radio in your system.")
endif()
- if(OS_IS_MACOSX)
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message("You can install it easily via Macports:")
message(" sudo port install gnuradio ")
message("Alternatively, you can use homebrew:")
diff --git a/src/algorithms/PVT/libs/CMakeLists.txt b/src/algorithms/PVT/libs/CMakeLists.txt
index a34880648..b42275d91 100644
--- a/src/algorithms/PVT/libs/CMakeLists.txt
+++ b/src/algorithms/PVT/libs/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -109,7 +109,7 @@ if(Boost_VERSION_STRING VERSION_GREATER 1.65.99)
endif()
# Fix for Boost Asio < 1.70
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (Boost_VERSION_STRING VERSION_LESS 1.70.0))
if(${has_string_view})
target_compile_definitions(pvt_libs
diff --git a/src/algorithms/signal_source/gnuradio_blocks/CMakeLists.txt b/src/algorithms/signal_source/gnuradio_blocks/CMakeLists.txt
index 7331f0478..b351098e5 100644
--- a/src/algorithms/signal_source/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/signal_source/gnuradio_blocks/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -82,7 +82,7 @@ if(ENABLE_RAW_UDP AND PCAP_FOUND)
endif()
# Fix for Boost Asio < 1.70
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (Boost_VERSION_STRING VERSION_LESS 1.70.0))
if(${has_string_view})
target_compile_definitions(signal_source_gr_blocks
diff --git a/src/algorithms/tracking/libs/CMakeLists.txt b/src/algorithms/tracking/libs/CMakeLists.txt
index db940802a..b74f9870b 100644
--- a/src/algorithms/tracking/libs/CMakeLists.txt
+++ b/src/algorithms/tracking/libs/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -118,7 +118,7 @@ if(Boost_VERSION_STRING VERSION_GREATER 1.65.99)
endif()
# Fix for Boost Asio < 1.70
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (Boost_VERSION_STRING VERSION_LESS 1.70.0))
if(${has_string_view})
target_compile_definitions(tracking_libs
diff --git a/src/core/monitor/CMakeLists.txt b/src/core/monitor/CMakeLists.txt
index 5d0b710d3..eb2ae9e9a 100644
--- a/src/core/monitor/CMakeLists.txt
+++ b/src/core/monitor/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -69,7 +69,7 @@ endif()
# Fix for Boost Asio < 1.70
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (Boost_VERSION_STRING VERSION_LESS 1.70.0))
if(${has_string_view})
target_compile_definitions(core_monitor
diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt
index 814afed30..36fcda346 100644
--- a/src/core/receiver/CMakeLists.txt
+++ b/src/core/receiver/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -161,7 +161,7 @@ if(ENABLE_ARMA_NO_DEBUG)
endif()
# Fix for Boost Asio < 1.70
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (Boost_VERSION_STRING VERSION_LESS 1.70.0))
if(${has_string_view})
target_compile_definitions(core_receiver
diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
index 044b0be8c..5743beddc 100644
--- a/src/main/CMakeLists.txt
+++ b/src/main/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
+# Copyright (C) 2012-2020 (see AUTHORS file for a list of contributors)
#
# This file is part of GNSS-SDR.
#
@@ -70,7 +70,7 @@ if(ENABLE_GPERFTOOLS)
endif()
endif()
-if(OS_IS_MACOSX)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_link_libraries(gnss-sdr
PUBLIC