| load("@rules_cc//cc:defs.bzl", "cc_library") |
| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| bool_flag( |
| name = "with_abseil", |
| build_setting_default = False, |
| ) |
| |
| CPP_STDLIBS = [ |
| "none", |
| "best", |
| "2014", |
| "2017", |
| "2020", |
| "2023", |
| ] |
| |
| string_flag( |
| name = "with_cxx_stdlib", |
| build_setting_default = "best", |
| values = CPP_STDLIBS, |
| ) |
| |
| cc_library( |
| name = "api", |
| hdrs = glob(["include/**/*.h"]), |
| defines = select({ |
| ":with_external_abseil": ["HAVE_ABSEIL"], |
| "//conditions:default": [], |
| }) + select({ |
| ":set_cxx_stdlib_none": [], |
| ### automatic selection |
| ":set_cxx_stdlib_best": ["OPENTELEMETRY_STL_VERSION=(__cplusplus/100)"], |
| # See https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus |
| ":set_cxx_stdlib_best_and_msvc": ["OPENTELEMETRY_STL_VERSION=(_MSVC_LANG/100)"], |
| ### manual selection |
| ":set_cxx_stdlib_2014": ["OPENTELEMETRY_STL_VERSION=2014"], |
| ":set_cxx_stdlib_2017": ["OPENTELEMETRY_STL_VERSION=2017"], |
| ":set_cxx_stdlib_2020": ["OPENTELEMETRY_STL_VERSION=2020"], |
| ":set_cxx_stdlib_2023": ["OPENTELEMETRY_STL_VERSION=2023"], |
| "//conditions:default": [], |
| }), |
| strip_include_prefix = "include", |
| tags = ["api"], |
| deps = select({ |
| ":with_external_abseil": [ |
| "@com_google_absl//absl/base", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/types:variant", |
| ], |
| "//conditions:default": [], |
| }), |
| ) |
| |
| config_setting( |
| name = "with_external_abseil", |
| flag_values = {":with_abseil": "true"}, |
| ) |
| |
| [config_setting( |
| name = "set_cxx_stdlib_%s" % v, |
| flag_values = {":with_cxx_stdlib": v}, |
| ) for v in CPP_STDLIBS] |
| |
| config_setting( |
| name = "set_cxx_stdlib_best_and_msvc", |
| constraint_values = ["@bazel_tools//tools/cpp:msvc"], |
| flag_values = {":with_cxx_stdlib": "best"}, |
| ) |