Improve handling of gflags library

Set minimun gflags version to 2.1.2

Replaced google:: by gflags:: namespace
This commit is contained in:
Carles Fernandez 2020-08-13 20:54:22 +02:00
parent 9490ec1b44
commit d4ed61df4b
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
11 changed files with 122 additions and 43 deletions

View File

@ -311,6 +311,7 @@ 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_GFLAGS_MIN_VERSION "2.1.2")
set(GNSSSDR_MATIO_MIN_VERSION "1.5.3")
set(GNSSSDR_PROTOBUF_MIN_VERSION "3.0.0")
@ -1200,7 +1201,12 @@ set_package_properties(GFLAGS PROPERTIES
TYPE REQUIRED
)
if(NOT GFLAGS_FOUND)
message(STATUS " gflags library has not been found.")
set(ENABLE_OWN_GLOG ON)
if(GFLAGS_VERSION)
message(STATUS " A version of the gflags library equal or higher than v${GNSSSDR_GFLAGS_MIN_VERSION} has not been found.")
else()
message(STATUS " The gflags library has not been found.")
endif()
message(STATUS " gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded and built automatically")
message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.")
set(GFLAGS_BUILD_COMMAND ${CMAKE_COMMAND}
@ -1224,9 +1230,10 @@ if(NOT GFLAGS_FOUND)
CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
-DBUILD_gflags_LIB=ON
-DBUILD_gflags_nothreads_LIB=OFF
-DBUILD_gflags_nothreads_LIB=ON
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
${GFLAGS_TOOLCHAIN_FILE}
-DGFLAGS_NAMESPACE=google
-DCMAKE_BUILD_TYPE=$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel>$<$<CONFIG:NoOptWithASM>:Debug>$<$<CONFIG:Coverage>:Debug>$<$<CONFIG:O2WithASM>:RelWithDebInfo>$<$<CONFIG:O3WithASM>:RelWithDebInfo>$<$<CONFIG:ASAN>:Debug>
BUILD_COMMAND ${GFLAGS_BUILD_COMMAND}
UPDATE_COMMAND ""
@ -1316,6 +1323,11 @@ if(NOT GFLAGS_FOUND)
set_package_properties(GFLAGS PROPERTIES
PURPOSE "Gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded and built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'."
)
if(CMAKE_VERSION VERSION_LESS 3.2)
set_property(TARGET Gflags::gflags APPEND PROPERTY
INTERFACE_COMPILE_DEFINITIONS GFLAGS_OLD_NAMESPACE=1
)
endif()
endif()

View File

@ -115,10 +115,7 @@ else()
set(GFlags_FOUND false)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GFLAGS DEFAULT_MSG GFlags_LIBS GFlags_INCLUDE_DIRS)
if(GFLAGS_FOUND)
if(GFlags_LIBS AND GFlags_INCLUDE_DIRS)
if(NOT PACKAGE_VERSION)
set(PACKAGE_VERSION "")
endif()
@ -129,6 +126,11 @@ if(GFLAGS_FOUND)
if(EXISTS ${GFlags_LIBS_DIR}/cmake/gflags/gflags-config-version.cmake)
include(${GFlags_LIBS_DIR}/cmake/gflags/gflags-config-version.cmake)
endif()
if(NOT PACKAGE_VERSION)
if(EXISTS ${GFlags_INCLUDE_DIRS}/google/gflags.h)
set(PACKAGE_VERSION "2.0")
endif()
endif()
if(PACKAGE_VERSION)
set(GFLAGS_VERSION ${PACKAGE_VERSION})
set_package_properties(GFLAGS PROPERTIES
@ -150,6 +152,17 @@ set_package_properties(GFLAGS PROPERTIES
URL "https://github.com/gflags/gflags"
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GFLAGS DEFAULT_MSG GFlags_LIBS GFlags_INCLUDE_DIRS)
if(GFLAGS_VERSION)
if(${GFLAGS_VERSION} VERSION_LESS "${GNSSSDR_GFLAGS_MIN_VERSION}")
set(GFLAGS_FOUND FALSE)
unset(GFlags_LIBS CACHE)
unset(GFlags_INCLUDE_DIRS CACHE)
endif()
endif()
if(GFLAGS_FOUND AND NOT TARGET Gflags::gflags)
add_library(Gflags::gflags SHARED IMPORTED)
set_target_properties(Gflags::gflags PROPERTIES

View File

@ -19,6 +19,9 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
- Fixed `-DENABLE_OWN_GLOG=ON` building option when gflags is installed and it
is older than v2.1.2 (_e.g._, in CentOS 7).
- Improved handling of old gflags versions, minimum version set to 2.1.2.
Replaced `google::` by `gflags::` namespace when using functions of the gflags
library.
- Fixed static linking of the matio library when downloaded and built by CMake.
### Improvements in Usability:

View File

@ -67,6 +67,12 @@ namespace fs = std::filesystem;
namespace fs = boost::filesystem;
namespace errorlib = boost::system;
#endif
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
/*
* Concurrent queues that communicates the Telemetry Decoder
@ -86,9 +92,9 @@ int main(int argc, char** argv)
"See COPYING file to see a copy of the General Public License\n \n");
const std::string gnss_sdr_version(GNSS_SDR_VERSION);
google::SetUsageMessage(intro_help);
google::SetVersionString(gnss_sdr_version);
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::SetUsageMessage(intro_help);
gflags::SetVersionString(gnss_sdr_version);
gflags::ParseCommandLineFlags(&argc, &argv, true);
std::cout << "Initializing GNSS-SDR v" << gnss_sdr_version << " ... Please wait.\n";
#if CUDA_GPU_ACCEL
@ -124,7 +130,7 @@ int main(int argc, char** argv)
if (!fs::create_directory(p, ec))
{
std::cerr << "Could not create the " << FLAGS_log_dir << " folder. GNSS-SDR program ended.\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
}
@ -146,7 +152,7 @@ int main(int argc, char** argv)
catch (const boost::thread_resource_error& e)
{
std::cerr << "Failed to create boost thread.\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR program ended.\n";
return 1;
}
@ -161,7 +167,7 @@ int main(int argc, char** argv)
{
std::cerr << "Boost exception: " << boost::diagnostic_information(e) << '\n';
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR program ended.\n";
return 1;
}
@ -176,7 +182,7 @@ int main(int argc, char** argv)
{
std::cerr << "C++ Standard Library exception: " << ex.what() << '\n';
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR program ended.\n";
return 1;
}
@ -191,7 +197,7 @@ int main(int argc, char** argv)
{
std::cerr << "Unexpected catch. This should not happen.\n";
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR program ended.\n";
return 1;
}
@ -204,7 +210,7 @@ int main(int argc, char** argv)
<< elapsed_seconds.count()
<< " [seconds]\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR program ended.\n";
return return_code;
}

View File

@ -27,6 +27,12 @@
#include <gtest/gtest.h>
#include <iostream>
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
Concurrent_Queue<Gps_Acq_Assist> global_gps_acq_assist_queue;
@ -36,7 +42,7 @@ DECLARE_string(log_dir);
int main(int argc, char **argv)
{
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
try
{
testing::InitGoogleTest(&argc, argv);
@ -54,6 +60,6 @@ int main(int argc, char **argv)
{
LOG(WARNING) << "Unexpected catch";
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return res;
}

View File

@ -57,6 +57,13 @@ namespace fs = std::filesystem;
namespace fs = boost::filesystem;
#endif
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
// For GPS NAVIGATION (L1)
Concurrent_Queue<Gps_Acq_Assist> global_gps_acq_assist_queue;
Concurrent_Map<Gps_Acq_Assist> global_gps_acq_assist_map;
@ -988,7 +995,7 @@ int main(int argc, char** argv)
{
} // catch the "testing::internal::<unnamed>::ClassUniqueToAlwaysTrue" from gtest
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
google::InitGoogleLogging(argv[0]);
// Run the Tests
@ -1000,6 +1007,6 @@ int main(int argc, char** argv)
{
LOG(WARNING) << "Unexpected catch";
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return res;
}

View File

@ -42,6 +42,12 @@
#include <sys/types.h>
#include <thread>
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
DEFINE_int32(fs_in, 4000000, "Sampling rate, in Samples/s");
DEFINE_int32(max_measurement_duration, 90, "Maximum time waiting for a position fix, in seconds");
@ -589,7 +595,7 @@ int main(int argc, char **argv)
{
} // catch the "testing::internal::<unnamed>::ClassUniqueToAlwaysTrue" from gtest
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
google::InitGoogleLogging(argv[0]);
// Start queue thread
@ -624,6 +630,6 @@ int main(int argc, char **argv)
receive_msg_thread.join();
msgctl(sysv_msqid, IPC_RMID, nullptr);
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return res;
}

View File

@ -26,6 +26,13 @@
#include <gtest/gtest.h>
#include <iostream>
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
DECLARE_string(log_dir);
#if UNIT_TESTING_MINIMAL
@ -164,7 +171,7 @@ int main(int argc, char **argv)
catch (...)
{
} // catch the "testing::internal::<unnamed>::ClassUniqueToAlwaysTrue" from gtest
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
google::InitGoogleLogging(argv[0]);
try
{
@ -174,6 +181,6 @@ int main(int argc, char **argv)
{
LOG(WARNING) << "Unexpected catch";
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return res;
}

View File

@ -82,6 +82,13 @@ namespace fs = std::filesystem;
namespace fs = boost::filesystem;
#endif
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
DECLARE_string(log_dir);
Concurrent_Map<Gps_Ephemeris> global_gps_ephemeris_map;
@ -274,9 +281,9 @@ int main(int argc, char** argv)
"This program comes with ABSOLUTELY NO WARRANTY;\n" +
"See COPYING file to see a copy of the General Public License\n \n");
google::SetUsageMessage(intro_help);
gflags::SetUsageMessage(intro_help);
google::SetVersionString(FRONT_END_CAL_VERSION);
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
std::cout << "Initializing... Please wait.\n";
@ -514,7 +521,7 @@ int main(int argc, char** argv)
else
{
std::cout << "Unable to get Ephemeris SUPL assistance. TOW is unknown!\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR Front-end calibration program ended.\n";
return 0;
}
@ -522,7 +529,7 @@ int main(int argc, char** argv)
catch (const boost::exception& e)
{
std::cout << "Exception in getting Global ephemeris map\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR Front-end calibration program ended.\n";
return 0;
}
@ -541,7 +548,7 @@ int main(int argc, char** argv)
if (doppler_measurements_map.empty())
{
std::cout << "Sorry, no GPS satellites detected in the front-end capture, please check the antenna setup...\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR Front-end calibration program ended.\n";
return 0;
}
@ -635,6 +642,6 @@ int main(int argc, char** argv)
}
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
std::cout << "GNSS-SDR Front-end calibration program ended.\n";
}

View File

@ -62,6 +62,12 @@
#include <string>
#include <vector>
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
// Create the lists of GNSS satellites
std::set<int> available_gps_prn = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
@ -1660,7 +1666,7 @@ void RINEX_singlediff()
int main(int argc, char** argv)
{
std::cout << "Running RINEX observables difference tool...\n";
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
if (FLAGS_single_diff)
{
if (FLAGS_dupli_sat)
@ -1677,6 +1683,6 @@ int main(int argc, char** argv)
RINEX_doublediff(FLAGS_remove_rx_clock_error);
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 0;
}

View File

@ -38,6 +38,12 @@
#include <cstdlib>
#include <iostream>
#if GFLAGS_OLD_NAMESPACE
namespace gflags
{
using namespace google;
}
#endif
int main(int argc, char** argv)
{
@ -49,9 +55,9 @@ int main(int argc, char** argv)
"Usage: \n" +
" rinex2assist <RINEX Nav file input>");
google::SetUsageMessage(intro_help);
gflags::SetUsageMessage(intro_help);
google::SetVersionString("1.0");
google::ParseCommandLineFlags(&argc, &argv, true);
gflags::ParseCommandLineFlags(&argc, &argv, true);
if ((argc != 2))
{
@ -59,7 +65,7 @@ int main(int argc, char** argv)
std::cerr << " " << argv[0]
<< " <RINEX Nav file input>"
<< '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::string xml_filename;
@ -297,14 +303,14 @@ int main(int argc, char** argv)
{
std::cerr << "Error reading the RINEX file: " << e.what() << '\n';
std::cerr << "No XML file will be created.\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
if (i == 0 and j == 0)
{
std::cerr << "No navigation data found in the RINEX file. No XML file will be created.\n";
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
@ -325,7 +331,7 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
@ -343,7 +349,7 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
@ -363,7 +369,7 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
@ -383,7 +389,7 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
@ -402,7 +408,7 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
@ -420,11 +426,11 @@ int main(int argc, char** argv)
catch (std::exception& e)
{
std::cerr << "Problem creating the XML file " << xml_filename << ": " << e.what() << '\n';
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 1;
}
std::cout << "Generated file: " << xml_filename << '\n';
}
google::ShutDownCommandLineFlags();
gflags::ShutDownCommandLineFlags();
return 0;
}