From d4ed61df4bdaa20efc3f13979916065e003599cc Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 13 Aug 2020 20:54:22 +0200 Subject: [PATCH] Improve handling of gflags library Set minimun gflags version to 2.1.2 Replaced google:: by gflags:: namespace --- CMakeLists.txt | 16 +++++++++++-- cmake/Modules/FindGFLAGS.cmake | 21 +++++++++++++---- docs/changelog.md | 3 +++ src/main/main.cc | 24 ++++++++++++-------- src/tests/single_test_main.cc | 10 +++++++-- src/tests/system-tests/position_test.cc | 11 +++++++-- src/tests/system-tests/ttff.cc | 10 +++++++-- src/tests/test_main.cc | 11 +++++++-- src/utils/front-end-cal/main.cc | 19 +++++++++++----- src/utils/rinex-tools/obsdiff.cc | 10 +++++++-- src/utils/rinex2assist/main.cc | 30 +++++++++++++++---------- 11 files changed, 122 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b74fda239..6b025a662 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$: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() diff --git a/cmake/Modules/FindGFLAGS.cmake b/cmake/Modules/FindGFLAGS.cmake index 1f3789e0c..21c906fbb 100644 --- a/cmake/Modules/FindGFLAGS.cmake +++ b/cmake/Modules/FindGFLAGS.cmake @@ -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 diff --git a/docs/changelog.md b/docs/changelog.md index f2b6b62c0..95aede92a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -19,6 +19,9 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades #include +#if GFLAGS_OLD_NAMESPACE +namespace gflags +{ +using namespace google; +} +#endif Concurrent_Queue 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; } diff --git a/src/tests/system-tests/position_test.cc b/src/tests/system-tests/position_test.cc index ca08ac1b3..94563bdac 100644 --- a/src/tests/system-tests/position_test.cc +++ b/src/tests/system-tests/position_test.cc @@ -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 global_gps_acq_assist_queue; Concurrent_Map global_gps_acq_assist_map; @@ -988,7 +995,7 @@ int main(int argc, char** argv) { } // catch the "testing::internal::::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; } diff --git a/src/tests/system-tests/ttff.cc b/src/tests/system-tests/ttff.cc index d71a47bbc..9d3971deb 100644 --- a/src/tests/system-tests/ttff.cc +++ b/src/tests/system-tests/ttff.cc @@ -42,6 +42,12 @@ #include #include +#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::::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; } diff --git a/src/tests/test_main.cc b/src/tests/test_main.cc index b91cc2266..02ecf73fb 100644 --- a/src/tests/test_main.cc +++ b/src/tests/test_main.cc @@ -26,6 +26,13 @@ #include #include +#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::::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; } diff --git a/src/utils/front-end-cal/main.cc b/src/utils/front-end-cal/main.cc index 27c44dd85..7a7ca8a76 100644 --- a/src/utils/front-end-cal/main.cc +++ b/src/utils/front-end-cal/main.cc @@ -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 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"; } diff --git a/src/utils/rinex-tools/obsdiff.cc b/src/utils/rinex-tools/obsdiff.cc index 320279a24..325c09972 100644 --- a/src/utils/rinex-tools/obsdiff.cc +++ b/src/utils/rinex-tools/obsdiff.cc @@ -62,6 +62,12 @@ #include #include +#if GFLAGS_OLD_NAMESPACE +namespace gflags +{ +using namespace google; +} +#endif // Create the lists of GNSS satellites std::set 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; } diff --git a/src/utils/rinex2assist/main.cc b/src/utils/rinex2assist/main.cc index b5eed9cad..1198f9e39 100644 --- a/src/utils/rinex2assist/main.cc +++ b/src/utils/rinex2assist/main.cc @@ -38,6 +38,12 @@ #include #include +#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 "); - 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] << " " << '\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; }