@@ -68,6 +68,58 @@ cc_library(
6868)
6969
7070
71+ # Generate a header with C++ toolchain information
72+ genrule (
73+ name = "toolchain_info_gen" ,
74+ outs = ["toolchain_info.h" ],
75+ cmd = """
76+ set -e
77+ COMPILER="$(CC)"
78+ FULL_VERSION=$$($$COMPILER --version 2>/dev/null | head -n1) || FULL_VERSION="unknown"
79+
80+ COMPILER_ID="unknown"
81+ COMPILER_VERSION="unknown"
82+
83+ if echo "$$FULL_VERSION" | grep -qi "clang"; then
84+ COMPILER_ID="Clang"
85+ COMPILER_VERSION=$$(echo "$$FULL_VERSION" | grep -oP '\\ d+\\ .\\ d+\\ .\\ d+' | head -n1) || COMPILER_VERSION="unknown"
86+ elif echo "$$FULL_VERSION" | grep -qi "gcc\\ |g++\\ |GNU"; then
87+ COMPILER_ID="GNU"
88+ COMPILER_VERSION=$$(echo "$$FULL_VERSION" | grep -oP '\\ d+\\ .\\ d+\\ .\\ d+' | head -n1) || COMPILER_VERSION="unknown"
89+ elif echo "$$FULL_VERSION" | grep -qi "MSVC\\ |Microsoft"; then
90+ COMPILER_ID="MSVC"
91+ COMPILER_VERSION=$$(echo "$$FULL_VERSION" | grep -oP '\\ d+\\ .\\ d+\\ .\\ d+' | head -n1) || COMPILER_VERSION="unknown"
92+ fi
93+
94+ case "$(COMPILATION_MODE)" in
95+ opt) BUILD_TYPE="Release" ;;
96+ dbg) BUILD_TYPE="Debug" ;;
97+ fastbuild) BUILD_TYPE="FastBuild" ;;
98+ *) BUILD_TYPE="$(COMPILATION_MODE)" ;;
99+ esac
100+
101+ cat > $@ << HEADER_EOF
102+ // Auto-generated by Bazel - do not edit
103+ #ifndef CODSPEED_TOOLCHAIN_INFO_H
104+ #define CODSPEED_TOOLCHAIN_INFO_H
105+
106+ #define CODSPEED_CXX_COMPILER_ID "$$COMPILER_ID"
107+ #define CODSPEED_CXX_COMPILER_VERSION "$$COMPILER_VERSION"
108+ #define CODSPEED_CXX_COMPILER_FULL_VERSION "$$FULL_VERSION"
109+ #define CODSPEED_BUILD_TYPE "$$BUILD_TYPE"
110+
111+ #endif // CODSPEED_TOOLCHAIN_INFO_H
112+ HEADER_EOF
113+ """ ,
114+ toolchains = ["@bazel_tools//tools/cpp:current_cc_toolchain" ],
115+ )
116+
117+ cc_library (
118+ name = "toolchain_info" ,
119+ hdrs = [":toolchain_info_gen" ],
120+ includes = ["." ],
121+ )
122+
71123# Define the codspeed library
72124cc_library (
73125 name = "codspeed" ,
@@ -87,7 +139,7 @@ cc_library(
87139 ":walltime_mode" : ["CODSPEED_ENABLED" , "CODSPEED_WALLTIME" , "CODSPEED_MODE_DISPLAY=\\ \" walltime\\ \" " ],
88140 "//conditions:default" : [],
89141 }),
90- deps = [":instrument_hooks" ],
142+ deps = [":instrument_hooks" , ":toolchain_info" ],
91143 visibility = ["//visibility:public" ],
92144)
93145
0 commit comments