From e8276c4fc4934665fff61b45bea63ab55146baff Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 20:40:10 +0100 Subject: [PATCH 1/7] Improve summary report --- CMakeLists.txt | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5092af119..cdbfd8adb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2801,9 +2801,33 @@ message(STATUS "***************************************") message(STATUS "* SUMMARY REPORT *") message(STATUS "***************************************") message(STATUS "") +message(STATUS "CMake version: ${CMAKE_VERSION}") +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCH_}") +endif() +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS "Building on ${MACOS_DISTRIBUTION}") +endif() +message(STATUS "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") +message(STATUS "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}") +message(STATUS "") +file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/features.log) +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/features.log "**********************************\n") +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "* BUILDING CONFIGURATION SUMMARY *\n") +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "**********************************\n\n") +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n") +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCH_}\n") +endif() +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on ${MACOS_DISTRIBUTION}\n") +endif() +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "CMake version: ${CMAKE_VERSION}\n") +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}\n") +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}\n\n") if(CMAKE_VERSION VERSION_LESS 3.4) feature_summary(WHAT ALL) - feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log WHAT ALL) + feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log APPEND WHAT ALL) else() feature_summary(WHAT REQUIRED_PACKAGES_FOUND @@ -2813,7 +2837,7 @@ else() ENABLED_FEATURES DISABLED_FEATURES ) - feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log WHAT + feature_summary(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/features.log APPEND WHAT REQUIRED_PACKAGES_FOUND REQUIRED_PACKAGES_NOT_FOUND OPTIONAL_PACKAGES_FOUND From 3e0752a88b5f288b96cee88748883b4c56a6df2b Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 22:11:04 +0100 Subject: [PATCH 2/7] Improve OS reporting --- CMakeLists.txt | 6 +++--- cmake/Modules/DetectLinuxDistro.cmake | 30 ++++++++++++++++++++------- src/tests/CMakeLists.txt | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cdbfd8adb..4c543a2d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -191,7 +191,7 @@ endif() # Detect Linux Distribution if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") include(DetectLinuxDistro) - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${LINUX_DISTRIBUTION} GNU/Linux Release ${LINUX_VER} ${ARCH_}") + message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") endif() # Detect macOS / Mac OS X Version @@ -2803,7 +2803,7 @@ message(STATUS "***************************************") message(STATUS "") message(STATUS "CMake version: ${CMAKE_VERSION}") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") - message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCH_}") + message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") message(STATUS "Building on ${MACOS_DISTRIBUTION}") @@ -2817,7 +2817,7 @@ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "* BUILDING CONFIGURATION S file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "**********************************\n\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCH_}\n") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n") endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on ${MACOS_DISTRIBUTION}\n") diff --git a/cmake/Modules/DetectLinuxDistro.cmake b/cmake/Modules/DetectLinuxDistro.cmake index 8ba76a997..2aa3dac07 100644 --- a/cmake/Modules/DetectLinuxDistro.cmake +++ b/cmake/Modules/DetectLinuxDistro.cmake @@ -16,9 +16,9 @@ # along with GNSS-SDR. If not, see . if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(ARCH_ "(64 bits)") + set(ARCHITECTURE_STRING "(64 bits)") else() - set(ARCH_ "(32 bits)") + set(ARCHITECTURE_STRING "(32 bits)") endif() if(EXISTS "/etc/lsb-release") @@ -61,7 +61,7 @@ if(NOT LINUX_DISTRIBUTION) COMMAND awk -F= "{ print $2 }" COMMAND tr "\n" " " COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_DISTRIBUTION + OUTPUT_VARIABLE LINUX_DISTRIBUTION_ RESULT_VARIABLE LINUX_ID_RESULT ) execute_process(COMMAND cat /etc/os-release @@ -69,12 +69,19 @@ if(NOT LINUX_DISTRIBUTION) COMMAND awk -F= "{ print $2 }" COMMAND tr "\n" " " COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_VER + OUTPUT_VARIABLE LINUX_VER_ RESULT_VARIABLE LINUX_VER_RESULT ) + if(LINUX_DISTRIBUTION_) + string(REPLACE "\"" "" LINUX_DISTRIBUTION ${LINUX_DISTRIBUTION_}) + endif() + if(LINUX_VER_) + string(REPLACE "\"" "" LINUX_VER ${LINUX_VER_}) + endif() if(${LINUX_DISTRIBUTION} MATCHES "Debian") set(LINUX_DISTRIBUTION "Debian") - file(READ /etc/debian_version LINUX_VER) + file(READ /etc/debian_version LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) endif() endif() endif() @@ -82,14 +89,23 @@ endif() if(NOT LINUX_DISTRIBUTION) if(EXISTS "/etc/redhat-release") set(LINUX_DISTRIBUTION "Red Hat") - file(READ /etc/redhat-release LINUX_VER) + file(READ /etc/redhat-release LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) endif() endif() if(NOT LINUX_DISTRIBUTION) if(EXISTS "/etc/debian_version") set(LINUX_DISTRIBUTION "Debian") - file(READ /etc/debian_version LINUX_VER) + file(READ /etc/debian_version LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/arch-release") + set(LINUX_DISTRIBUTION "Arch Linux") + set(LINUX_VER "") endif() endif() diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index d7d0d170e..c083e634a 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -639,7 +639,7 @@ endfunction() if(ENABLE_SYSTEM_TESTING) set(HOST_SYSTEM "Unknown") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") - set(HOST_SYSTEM "GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCH_}") + set(HOST_SYSTEM "GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") string(REPLACE "\n" "" HOST_SYSTEM "${HOST_SYSTEM}") string(REPLACE "\"" "" HOST_SYSTEM "${HOST_SYSTEM}") endif() From c13c41a1d53f5007a0359fd6b9efcdd560b88dfb Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 22:39:52 +0100 Subject: [PATCH 3/7] Improve report when cross-compiling --- CMakeLists.txt | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c543a2d7..d21442b99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -191,7 +191,11 @@ endif() # Detect Linux Distribution if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") include(DetectLinuxDistro) - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") + if(CMAKE_CROSSCOMPILING) + message(STATUS "Configuring GNSS-SDR v${VERSION} to be cross-compiled on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}") + else() + message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") + endif() endif() # Detect macOS / Mac OS X Version @@ -2802,11 +2806,15 @@ message(STATUS "* SUMMARY REPORT *") message(STATUS "***************************************") message(STATUS "") message(STATUS "CMake version: ${CMAKE_VERSION}") -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") - message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") -endif() -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - message(STATUS "Building on ${MACOS_DISTRIBUTION}") +if(CMAKE_CROSSCOMPILING) + message(STATUS "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}") +else() + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS "Building on ${MACOS_DISTRIBUTION}") + endif() endif() message(STATUS "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") message(STATUS "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}") From 7fe0e400efeae7a899d49ba02ece7ecc17218fc3 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 22:50:56 +0100 Subject: [PATCH 4/7] Improve report when cross-compiling --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d21442b99..854c6331a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2825,7 +2825,11 @@ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "* BUILDING CONFIGURATION S file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "**********************************\n\n") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n") + if(CMAKE_CROSSCOMPILING) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}") + else() + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n") + endif() endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on ${MACOS_DISTRIBUTION}\n") From 417eaf4b26a5885bd0dc320f1b04f87f64bc0b15 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 23:31:50 +0100 Subject: [PATCH 5/7] Remove whitespace --- cmake/Modules/DetectLinuxDistro.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/Modules/DetectLinuxDistro.cmake b/cmake/Modules/DetectLinuxDistro.cmake index 2aa3dac07..9960860e5 100644 --- a/cmake/Modules/DetectLinuxDistro.cmake +++ b/cmake/Modules/DetectLinuxDistro.cmake @@ -73,7 +73,8 @@ if(NOT LINUX_DISTRIBUTION) RESULT_VARIABLE LINUX_VER_RESULT ) if(LINUX_DISTRIBUTION_) - string(REPLACE "\"" "" LINUX_DISTRIBUTION ${LINUX_DISTRIBUTION_}) + string(REPLACE "\"" "" LINUX_DISTRIBUTION__ ${LINUX_DISTRIBUTION_}) + string(STRIP ${LINUX_DISTRIBUTION__} LINUX_DISTRIBUTION) endif() if(LINUX_VER_) string(REPLACE "\"" "" LINUX_VER ${LINUX_VER_}) From ad74472e4d32f32c36fd4dbf057b1ce53baa646f Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 3 Feb 2020 23:55:53 +0100 Subject: [PATCH 6/7] Fixes in summary reportt --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 854c6331a..42d9d13bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2805,7 +2805,6 @@ message(STATUS "***************************************") message(STATUS "* SUMMARY REPORT *") message(STATUS "***************************************") message(STATUS "") -message(STATUS "CMake version: ${CMAKE_VERSION}") if(CMAKE_CROSSCOMPILING) message(STATUS "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}") else() @@ -2816,6 +2815,7 @@ else() message(STATUS "Building on ${MACOS_DISTRIBUTION}") endif() endif() +message(STATUS "CMake version: ${CMAKE_VERSION}") message(STATUS "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") message(STATUS "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}") message(STATUS "") @@ -2826,7 +2826,7 @@ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "************************** file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") if(CMAKE_CROSSCOMPILING) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}") + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR} ${ARCHITECTURE_STRING}\n") else() file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n") endif() From 6905cfcf0a16f4c6ff5a56662659c2bd8074d540 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 4 Feb 2020 08:09:43 +0100 Subject: [PATCH 7/7] Update changelog --- docs/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog b/docs/changelog index 57cbf57a3..99e588ae6 100644 --- a/docs/changelog +++ b/docs/changelog @@ -51,6 +51,7 @@ - Fixed building in some ARM-based devices. Now Clang and ARMClang can be used for native building. - Added toolchain files for building gnss-sdr and the volk_gnsssdr library in several ARM processor architectures, including those in Raspberry Pi 3 and 4. - The software can now be built using Xcode (passing -GXcode to CMake) without previous manual installation of volk_gnsssdr. +- The software can now be built using Xcode (passing -GXcode to CMake) without gflags, glog, matio, PugiXML, Protocol Buffers or googletest previously installed. - Now the volk_gnsssdr library can be built on Microsoft Windows. - Improved CMake script for cross-compilation and for the detection of AVX, AVX2 and NEON (v7 and v8) instructions. @@ -81,6 +82,7 @@ - Added reporting of velocity in the terminal. - Added reporting of user clock drift estimation, in ppm, in the Pvt_Monitor and in internal logging (debug mode). - Updated documentation generated by Doxygen, now the pdfmanual target works when using ninja. +- CMake now generates an improved summary of required/optional dependency packages found and enabled/disabled features, including the building system and GNSS-SDR, CMake and compiler versions. This info is also stored in a file called features.log in the building directory.