Move over to ABSL logging and flags.
Removes gperftools too since that wants gflags.
Here come the fireworks.
Change-Id: I79cb7bcf60f1047fbfa28bfffc21a0fd692e4b1c
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/aos/init.cc b/aos/init.cc
index 579ad33..b51dc1c 100644
--- a/aos/init.cc
+++ b/aos/init.cc
@@ -11,29 +11,61 @@
#include <cstdlib>
#include <cstring>
-#include "gflags/gflags.h"
-#include "glog/logging.h"
+#include "absl/debugging/failure_signal_handler.h"
+#include "absl/debugging/symbolize.h"
+#include "absl/flags/flag.h"
+#include "absl/flags/parse.h"
+#include "absl/log/check.h"
+#include "absl/log/flags.h"
+#include "absl/log/globals.h"
+#include "absl/log/initialize.h"
+#include "absl/log/log.h"
#include "aos/realtime.h"
#include "aos/uuid.h"
-DEFINE_bool(coredump, false, "If true, write core dumps on failure.");
+ABSL_FLAG(bool, coredump, false, "If true, write core dumps on failure.");
+ABSL_FLAG(bool, backtrace, true, "If true, print backtraces out on crashes.");
namespace aos {
namespace {
-bool initialized = false;
+std::atomic<bool> initialized{false};
} // namespace
bool IsInitialized() { return initialized; }
void InitGoogle(int *argc, char ***argv) {
CHECK(!IsInitialized()) << "Only initialize once.";
- FLAGS_logtostderr = true;
- google::InitGoogleLogging((*argv)[0]);
- gflags::ParseCommandLineFlags(argc, argv, true);
- google::InstallFailureSignalHandler();
+ absl::SetStderrThreshold(absl::LogSeverityAtLeast::kInfo);
+ std::vector<char *> positional_arguments =
+ absl::ParseCommandLine(*argc, *argv);
- if (FLAGS_coredump) {
+ {
+ const std::vector<absl::UnrecognizedFlag> unrecognized_flags;
+ absl::ReportUnrecognizedFlags(unrecognized_flags);
+ if (!unrecognized_flags.empty()) {
+ for (const absl::UnrecognizedFlag &flag : unrecognized_flags) {
+ LOG(ERROR) << "Unrecognized flag " << flag.flag_name;
+ }
+ LOG(FATAL) << "Found unrecognized flags, aborting";
+ }
+ }
+
+ CHECK_LE(positional_arguments.size(), static_cast<size_t>(*argc));
+ for (size_t i = 0; i < positional_arguments.size(); ++i) {
+ (*argv)[i] = positional_arguments[i];
+ }
+ *argc = positional_arguments.size();
+
+ absl::InitializeLog();
+
+ if (absl::GetFlag(FLAGS_backtrace)) {
+ absl::InitializeSymbolizer((*argv)[0]);
+ absl::FailureSignalHandlerOptions options;
+ absl::InstallFailureSignalHandler(options);
+ }
+
+ if (absl::GetFlag(FLAGS_coredump)) {
WriteCoreDumps();
}