From 7209dc4e87c01c9084be72a08193b7ebdd605919 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 4 Apr 2023 08:39:35 +0200 Subject: [PATCH 1/2] Remove unnecessary temporary objects and destructors --- src/core/system_parameters/gnss_satellite.cc | 22 ++++++++++++------- .../gps_l1_ca_pcps_acquisition_test.cc | 6 ----- .../adapter/adapter_test.cc | 4 ---- .../filter/fir_filter_test.cc | 7 +++--- .../filter/notch_filter_lite_test.cc | 12 +++++----- .../filter/notch_filter_test.cc | 12 +++++----- .../filter/pulse_blanking_filter_test.cc | 14 +++++++----- .../cpu_multicorrelator_real_codes_test.cc | 8 +++---- .../tracking/cpu_multicorrelator_test.cc | 8 +++---- .../galileo_e1_dll_pll_veml_tracking_test.cc | 5 +---- 10 files changed, 47 insertions(+), 51 deletions(-) diff --git a/src/core/system_parameters/gnss_satellite.cc b/src/core/system_parameters/gnss_satellite.cc index 7f1b1030c..2a974cc0a 100644 --- a/src/core/system_parameters/gnss_satellite.cc +++ b/src/core/system_parameters/gnss_satellite.cc @@ -30,10 +30,10 @@ Gnss_Satellite::Gnss_Satellite(const std::string& system_, uint32_t PRN_) void Gnss_Satellite::reset() { - system = std::string(""); - block = std::string(""); - PRN = 0; - rf_link = 0; + this->system.clear(); + this->block.clear(); + this->PRN = 0; + this->rf_link = 0; } @@ -103,7 +103,10 @@ Gnss_Satellite::Gnss_Satellite(Gnss_Satellite&& other) noexcept PRN(other.PRN), rf_link(other.rf_link) { - other.reset(); + other.system.clear(); + other.block.clear(); + other.PRN = 0; + other.rf_link = 0; } @@ -116,7 +119,10 @@ Gnss_Satellite& Gnss_Satellite::operator=(Gnss_Satellite&& other) noexcept block = std::move(other.block); PRN = other.PRN; rf_link = other.rf_link; - other.reset(); + other.system.clear(); + other.block.clear(); + other.PRN = 0; + other.rf_link = 0; } return *this; } @@ -621,7 +627,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_ block_ = std::string("FOC-FM19"); // Galileo Full Operational Capability (FOC) satellite FM19 / GSAT0219, launched on Jul. 25, 2018. UNDER COMMISSIONING. break; default: - block_ = std::string("Unknown(Simulated)"); + block_ = std::string("Unknown"); } } if (system_ == "Beidou") @@ -768,7 +774,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_ block_ = std::string("BeiDou-3 GEOG3"); // launched 2020/06/2023 break; default: - block_ = std::string("Unknown(Simulated)"); + block_ = std::string("Unknown"); } } return block_; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc index e9c5d9e45..76056cb3b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc @@ -72,7 +72,6 @@ private: public: int rx_message{0}; - ~GpsL1CaPcpsAcquisitionTest_msg_rx() override; //!< Default destructor }; @@ -115,9 +114,6 @@ GpsL1CaPcpsAcquisitionTest_msg_rx::GpsL1CaPcpsAcquisitionTest_msg_rx() } -GpsL1CaPcpsAcquisitionTest_msg_rx::~GpsL1CaPcpsAcquisitionTest_msg_rx() = default; - - // ########################################################### class GpsL1CaPcpsAcquisitionTest : public ::testing::Test @@ -131,8 +127,6 @@ protected: gnss_synchro = Gnss_Synchro(); } - ~GpsL1CaPcpsAcquisitionTest() override = default; - void init(); void plot_grid() const; diff --git a/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc b/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc index d43d459d6..26ff99a38 100644 --- a/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc @@ -38,7 +38,6 @@ class DataTypeAdapter : public ::testing::Test { public: DataTypeAdapter(); - ~DataTypeAdapter() override; int run_byte_to_short_block() const; int run_ibyte_to_cbyte_block() const; int run_ibyte_to_complex_block() const; @@ -67,9 +66,6 @@ DataTypeAdapter::DataTypeAdapter() } -DataTypeAdapter::~DataTypeAdapter() = default; - - int DataTypeAdapter::run_ishort_to_cshort_block() const { std::shared_ptr config = std::make_shared(); diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc index 8bd2d98c4..a0d064dac 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc @@ -44,23 +44,24 @@ DEFINE_int32(filter_test_nsamples, 1000000, "Number of samples to filter in the class FirFilterTest : public ::testing::Test { protected: - FirFilterTest() : item_size(sizeof(gr_complex)) + FirFilterTest() : item_size(sizeof(gr_complex)), + nsamples(FLAGS_filter_test_nsamples) { queue = std::make_shared>(); config = std::make_shared(); } - ~FirFilterTest() override = default; void init(); void configure_cbyte_cbyte(); void configure_cbyte_gr_complex(); void configure_gr_complex_gr_complex(); void configure_cshort_cshort(); + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr config; size_t item_size; - int nsamples = FLAGS_filter_test_nsamples; + int nsamples; }; diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc index 12d6ddce4..db12b3bfc 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc @@ -43,28 +43,28 @@ DEFINE_int32(notch_filter_lite_test_nsamples, 1000000, "Number of samples to fil class NotchFilterLiteTest : public ::testing::Test { protected: - NotchFilterLiteTest() : item_size(sizeof(gr_complex)), nsamples(FLAGS_notch_filter_lite_test_nsamples) + NotchFilterLiteTest() : item_size(sizeof(gr_complex)), + nsamples(FLAGS_notch_filter_lite_test_nsamples) { queue = std::make_shared>(); config = std::make_shared(); } - ~NotchFilterLiteTest() override = default; - bool stop = false; - std::thread ch_thread; void start_queue(); void wait_message(); void process_message(); void stop_queue(); - pmt::pmt_t message; - void init(); void configure_gr_complex_gr_complex(); + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr config; + pmt::pmt_t message; + std::thread ch_thread; size_t item_size; int nsamples; + bool stop{false}; }; diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc index 4c2a3cb4a..36c7346a2 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc @@ -43,28 +43,28 @@ DEFINE_int32(notch_filter_test_nsamples, 1000000, "Number of samples to filter i class NotchFilterTest : public ::testing::Test { protected: - NotchFilterTest() : item_size(sizeof(gr_complex)), nsamples(FLAGS_notch_filter_test_nsamples) + NotchFilterTest() : item_size(sizeof(gr_complex)), + nsamples(FLAGS_notch_filter_test_nsamples) { queue = std::make_shared>(); config = std::make_shared(); } - ~NotchFilterTest() override = default; - bool stop = false; - std::thread ch_thread; void start_queue(); void wait_message(); void process_message(); void stop_queue(); - pmt::pmt_t message; - void init(); void configure_gr_complex_gr_complex(); + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr config; + std::thread ch_thread; + pmt::pmt_t message; size_t item_size; int nsamples; + bool stop{false}; }; diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc index 2bc731620..63038b5f1 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc @@ -43,26 +43,28 @@ DEFINE_int32(pb_filter_test_nsamples, 1000000, "Number of samples to filter in t class PulseBlankingFilterTest : public ::testing::Test { protected: - PulseBlankingFilterTest() : item_size(sizeof(gr_complex)), nsamples(FLAGS_pb_filter_test_nsamples) + PulseBlankingFilterTest() : item_size(sizeof(gr_complex)), + nsamples(FLAGS_pb_filter_test_nsamples) { queue = std::make_shared>(); config = std::make_shared(); } - ~PulseBlankingFilterTest() override = default; - bool stop = false; - std::thread ch_thread; + void start_queue(); void wait_message(); void process_message(); void stop_queue(); void init(); void configure_gr_complex_gr_complex(); + + std::thread ch_thread; std::shared_ptr> queue; - gr::top_block_sptr top_block; std::shared_ptr config; + gr::top_block_sptr top_block; + pmt::pmt_t message; size_t item_size; int nsamples; - pmt::pmt_t message; + bool stop{false}; }; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc index 57ea5dfbe..34c4894d7 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc @@ -126,14 +126,14 @@ TEST(CpuMulticorrelatorRealCodesTest, MeasureExecutionTime) // create the concurrent correlator threads for (int current_thread = 0; current_thread < current_max_threads; current_thread++) { - thread_pool.emplace_back(std::thread(run_correlator_cpu_real_codes, + thread_pool.emplace_back(run_correlator_cpu_real_codes, correlator_pool[current_thread], d_rem_carrier_phase_rad, d_carrier_phase_step_rad, d_code_phase_step_chips, d_code_phase_rate_step_chips, d_rem_code_phase_chips, - correlation_sizes[correlation_sizes_idx])); + correlation_sizes[correlation_sizes_idx]); } // wait the threads to finish they work and destroy the thread objects for (auto& t : thread_pool) @@ -224,14 +224,14 @@ TEST(CpuMulticorrelatorRealCodesTest, MeasureExecutionTimeAlloc) // create the concurrent correlator threads for (int current_thread = 0; current_thread < current_max_threads; current_thread++) { - thread_pool.emplace_back(std::thread(run_correlator_cpu_real_codes, + thread_pool.emplace_back(run_correlator_cpu_real_codes, correlator_pool[current_thread], d_rem_carrier_phase_rad, d_carrier_phase_step_rad, d_code_phase_step_chips, d_code_phase_rate_step_chips, d_rem_code_phase_chips, - correlation_sizes[correlation_sizes_idx])); + correlation_sizes[correlation_sizes_idx]); } // wait the threads to finish they work and destroy the thread objects for (auto& t : thread_pool) diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc index 773b188b0..339205f43 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc @@ -122,13 +122,13 @@ TEST(CpuMulticorrelatorTest, MeasureExecutionTime) // create the concurrent correlator threads for (int current_thread = 0; current_thread < current_max_threads; current_thread++) { - thread_pool.push_back(std::thread(run_correlator_cpu, + thread_pool.emplace_back(run_correlator_cpu, correlator_pool[current_thread], d_rem_carrier_phase_rad, d_carrier_phase_step_rad, d_code_phase_step_chips, d_rem_code_phase_chips, - correlation_sizes[correlation_sizes_idx])); + correlation_sizes[correlation_sizes_idx]); } // wait the threads to finish they work and destroy the thread objects for (auto& t : thread_pool) @@ -220,13 +220,13 @@ TEST(CpuMulticorrelatorTest, MeasureExecutionTimeAlloc) // create the concurrent correlator threads for (int current_thread = 0; current_thread < current_max_threads; current_thread++) { - thread_pool.push_back(std::thread(run_correlator_cpu, + thread_pool.emplace_back(run_correlator_cpu, correlator_pool[current_thread], d_rem_carrier_phase_rad, d_carrier_phase_step_rad, d_code_phase_step_chips, d_rem_code_phase_chips, - correlation_sizes[correlation_sizes_idx])); + correlation_sizes[correlation_sizes_idx]); } // wait the threads to finish they work and destroy the thread objects for (auto& t : thread_pool) diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc index 734d70af2..0519b3de3 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc @@ -45,11 +45,8 @@ protected: { factory = std::make_shared(); config = std::make_shared(); - gnss_synchro = Gnss_Synchro(); } - ~GalileoE1DllPllVemlTrackingInternalTest() override = default; - void init(); std::shared_ptr> queue; @@ -58,8 +55,8 @@ protected: std::shared_ptr config; Gnss_Synchro gnss_synchro{}; size_t item_size; - bool stop{false}; int message{0}; + bool stop{false}; }; From 2889fdef0a98b1b5ce74ce30a2ffb18b8fe4ea5f Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Tue, 4 Apr 2023 09:10:15 +0200 Subject: [PATCH 2/2] Update local version of Armadillo to 12.x --- CMakeLists.txt | 95 +++++++++++++++++++++++++++----------------------- README.md | 6 ++-- 2 files changed, 55 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97c618979..f3d0339cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # GNSS-SDR is a Global Navigation Satellite System software-defined receiver. # This file is part of GNSS-SDR. # -# SPDX-FileCopyrightText: 2010-2022 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-FileCopyrightText: 2010-2023 C. Fernandez-Prades cfernandez(at)cttc.es # SPDX-License-Identifier: BSD-3-Clause ################################################################################ @@ -315,55 +315,43 @@ endif() ################################################################################ # Minimum required versions ################################################################################ -set(GNSSSDR_GCC_MIN_VERSION "4.7.2") -set(GNSSSDR_CLANG_MIN_VERSION "3.4.0") set(GNSSSDR_APPLECLANG_MIN_VERSION "500") -set(GNSSSDR_GNURADIO_MIN_VERSION "3.7.3") -set(GNSSSDR_BOOST_MIN_VERSION "1.53") -set(GNSSSDR_PYTHON_MIN_VERSION "2.7") -set(GNSSSDR_PYTHON3_MIN_VERSION "3.4") -set(GNSSSDR_MAKO_MIN_VERSION "0.4.2") set(GNSSSDR_ARMADILLO_MIN_VERSION "5.300.0") +set(GNSSSDR_BOOST_MIN_VERSION "1.53") +set(GNSSSDR_CLANG_MIN_VERSION "3.4.0") +set(GNSSSDR_GCC_MIN_VERSION "4.7.2") set(GNSSSDR_GFLAGS_MIN_VERSION "2.1.2") +set(GNSSSDR_GNURADIO_MIN_VERSION "3.7.3") +set(GNSSSDR_MAKO_MIN_VERSION "0.4.2") set(GNSSSDR_MATIO_MIN_VERSION "1.5.3") set(GNSSSDR_PROTOBUF_MIN_VERSION "3.0.0") +set(GNSSSDR_PYTHON_MIN_VERSION "2.7") +set(GNSSSDR_PYTHON3_MIN_VERSION "3.4") ################################################################################ -# Versions to download and build (but not installed) if not found +# Versions to download and build (but not to install system-wide) if not found ################################################################################ +set(GNSSSDR_ARMADILLO_LOCAL_VERSION "12.2.x") set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2") set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0") -set(GNSSSDR_ARMADILLO_LOCAL_VERSION "11.2.x") -if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR - (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR - CMAKE_VERSION VERSION_LESS 3.5) - set(GNSSSDR_GTEST_LOCAL_VERSION "1.10.x") -else() - set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0") -endif() -set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master") -if(CMAKE_VERSION VERSION_GREATER 3.17.0) - set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.0.0") -else() - set(GNSSSDR_GNSSTK_LOCAL_VERSION "13.7.0") -endif() set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.23") -set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.13") set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "22.2") -if(CMAKE_CROSSCOMPILING OR CMAKE_VERSION VERSION_LESS "3.13") - set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12") -endif() +set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.13") +set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0") +set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master") +set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.0.0") set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.7.1") set(GNSSSDR_MATHJAX_EXTERNAL_VERSION "2.7.7") +# Downgrade versions if requirements are not met if(CMAKE_VERSION VERSION_LESS "3.16") set(GNSSSDR_GLOG_LOCAL_VERSION "0.5.0") endif() if(CMAKE_VERSION VERSION_LESS "3.3") - set(GNSSSDR_GLOG_LOCAL_VERSION "0.4.0") # Fix for Debian 8 + set(GNSSSDR_GLOG_LOCAL_VERSION "0.4.0") endif() if(CMAKE_VERSION VERSION_LESS "3.0.2") @@ -371,6 +359,20 @@ if(CMAKE_VERSION VERSION_LESS "3.0.2") set(GNSSSDR_GLOG_LOCAL_VERSION "0.3.4") # Fix for Ubuntu 14.04 endif() +if(CMAKE_CROSSCOMPILING OR CMAKE_VERSION VERSION_LESS "3.13") + set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12") +endif() + +if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR + (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR + CMAKE_VERSION VERSION_LESS 3.5) + set(GNSSSDR_GTEST_LOCAL_VERSION "1.10.x") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.17") + set(GNSSSDR_GNSSTK_LOCAL_VERSION "13.7.0") +endif() + ################################################################################ @@ -1960,17 +1962,13 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO) set(ARMADILLO_BUILD_COMMAND ${CMAKE_COMMAND} "--build" "${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE}" "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + "--target" install ) if(CMAKE_TOOLCHAIN_FILE) set(ARMADILLO_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) else() set(ARMADILLO_TOOLCHAIN_FILE "") endif() - if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND ENABLE_OWN_ARMADILLO) - set(DARWIN_DISABLE_HDF5 -DDETECT_HDF5=false) - else() - set(DARWIN_DISABLE_HDF5 "") - endif() set(ARMADILLO_CXX_VERSION "") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.8.3) set(ARMADILLO_CXX_VERSION -DCMAKE_CXX_FLAGS=-std=c++11) @@ -1980,41 +1978,38 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO) PREFIX ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} GIT_REPOSITORY https://gitlab.com/conradsnicta/armadillo-code.git GIT_TAG ${armadillo_BRANCH} + UPDATE_COMMAND "" SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE} BINARY_DIR ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} -DBUILD_SHARED_LIBS=OFF -DBUILD_SMOKE_TEST=OFF -DALLOW_BLAS_LAPACK_MACOS=ON ${ARMADILLO_CXX_VERSION} - ${DARWIN_DISABLE_HDF5} ${ARMADILLO_TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> BUILD_COMMAND ${ARMADILLO_BUILD_COMMAND} - UPDATE_COMMAND "" INSTALL_COMMAND "" ) else() - if(CMAKE_VERSION VERSION_GREATER 3.12.0) - set(PARALLEL_BUILD "--parallel 2") - endif() ExternalProject_Add(armadillo-${armadillo_RELEASE} PREFIX ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} GIT_REPOSITORY https://gitlab.com/conradsnicta/armadillo-code.git GIT_TAG ${armadillo_BRANCH} + UPDATE_COMMAND "" SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE} BINARY_DIR ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} -DBUILD_SHARED_LIBS=OFF -DBUILD_SMOKE_TEST=OFF -DALLOW_BLAS_LAPACK_MACOS=ON ${ARMADILLO_CXX_VERSION} - ${DARWIN_DISABLE_HDF5} ${ARMADILLO_TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> - BUILD_COMMAND "${ARMADILLO_BUILD_COMMAND} ${PARALLEL_BUILD}" + BUILD_COMMAND ${ARMADILLO_BUILD_COMMAND} BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE}/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} - UPDATE_COMMAND "" INSTALL_COMMAND "" ) endif() @@ -2067,6 +2062,20 @@ if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO) if(ARPACK_LIBRARY) target_link_libraries(Armadillo::armadillo INTERFACE ${ARPACK_LIBRARY}) endif() + find_library(FLEXIBLAS_LIBRARY + NAMES flexiblas + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 + ) + if(FLEXIBLAS_LIBRARY) + target_link_libraries(Armadillo::armadillo INTERFACE ${FLEXIBLAS_LIBRARY}) + endif() + find_library(SUPERLU_LIBRARY + NAMES superlu + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 + ) + if(SUPERLU_LIBRARY) + target_link_libraries(Armadillo::armadillo INTERFACE ${SUPERLU_LIBRARY}) + endif() endif() diff --git a/README.md b/README.md index 19961ccab..315b0cdae 100644 --- a/README.md +++ b/README.md @@ -403,9 +403,9 @@ $ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/Linux $ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL $ sudo zypper install lapack-devel blas-devel # For OpenSUSE $ sudo pacman -S blas lapack # For Arch Linux -$ wget https://sourceforge.net/projects/arma/files/armadillo-11.2.1.tar.xz -$ tar xvfz armadillo-11.2.1.tar.xz -$ cd armadillo-11.2.1 +$ wget https://sourceforge.net/projects/arma/files/armadillo-12.0.1.tar.xz +$ tar xvfz armadillo-12.0.1.tar.xz +$ cd armadillo-12.0.1 $ cmake . $ make $ sudo make install