From 8e8f867bdfe20a6cdc4b18aa775575f5dc6fc8ae Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:40:06 +0200 Subject: [PATCH] Optimize libcxx-version for faster bootstrap startups --- src/tools/libcxx-version/main.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tools/libcxx-version/main.cpp b/src/tools/libcxx-version/main.cpp index 79df7ef457c4f..ccd80bb87fdc0 100644 --- a/src/tools/libcxx-version/main.cpp +++ b/src/tools/libcxx-version/main.cpp @@ -5,22 +5,25 @@ // It's nothing more than specifying the name of the standard library implementation (either libstdc++ or libc++) // and its major version. -#include +#include int main() { #ifdef _GLIBCXX_RELEASE - std::cout << "libstdc++ version: " << _GLIBCXX_RELEASE << std::endl; + #define name "libstdc++" + #define version _GLIBCXX_RELEASE #elif defined(_LIBCPP_VERSION) // _LIBCPP_VERSION follows "XXYYZZ" format (e.g., 170001 for 17.0.1). // ref: https://github.com/llvm/llvm-project/blob/f64732195c1030ee2627ff4e4142038e01df1d26/libcxx/include/__config#L51-L54 // // Since we use the major version from _GLIBCXX_RELEASE, we need to extract only the first 2 characters of _LIBCPP_VERSION // to provide the major version for consistency. - std::cout << "libc++ version: " << std::to_string(_LIBCPP_VERSION).substr(0, 2) << std::endl; + #define name "libc++" + #define version _LIBCPP_VERSION / 10000 #else - std::cerr << "Coudln't recognize the standard library version." << std::endl; - return 1; + #error "Couldn't recognize the standard library version." #endif + printf("%s version: %d\n", name, version); + return 0; }