2
0

BUILD 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # Copyright The OpenTelemetry Authors
  2. # SPDX-License-Identifier: Apache-2.0
  3. load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "int_flag", "string_flag")
  4. package(default_visibility = ["//visibility:public"])
  5. CPP_STDLIBS = [
  6. "none",
  7. "best",
  8. "2014",
  9. "2017",
  10. "2020",
  11. "2023",
  12. ]
  13. string_flag(
  14. name = "with_cxx_stdlib",
  15. build_setting_default = "best",
  16. values = CPP_STDLIBS,
  17. )
  18. cc_library(
  19. name = "api",
  20. hdrs = glob(["include/**/*.h"]),
  21. defines = select({
  22. ":set_cxx_stdlib_none": [],
  23. ### automatic selection
  24. ":set_cxx_stdlib_best": ["OPENTELEMETRY_STL_VERSION=(__cplusplus/100)"],
  25. # See https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus
  26. ":set_cxx_stdlib_best_and_msvc": ["OPENTELEMETRY_STL_VERSION=(_MSVC_LANG/100)"],
  27. ### manual selection
  28. ":set_cxx_stdlib_2014": ["OPENTELEMETRY_STL_VERSION=2014"],
  29. ":set_cxx_stdlib_2017": ["OPENTELEMETRY_STL_VERSION=2017"],
  30. ":set_cxx_stdlib_2020": ["OPENTELEMETRY_STL_VERSION=2020"],
  31. ":set_cxx_stdlib_2023": ["OPENTELEMETRY_STL_VERSION=2023"],
  32. "//conditions:default": [],
  33. }) + select({
  34. ":abi_version_no_1": ["OPENTELEMETRY_ABI_VERSION_NO=1"],
  35. ":abi_version_no_2": ["OPENTELEMETRY_ABI_VERSION_NO=2"],
  36. }),
  37. strip_include_prefix = "include",
  38. tags = ["api"],
  39. deps = [
  40. "@com_google_absl//absl/base",
  41. "@com_google_absl//absl/strings",
  42. "@com_google_absl//absl/types:variant",
  43. ],
  44. )
  45. [config_setting(
  46. name = "set_cxx_stdlib_%s" % v,
  47. flag_values = {":with_cxx_stdlib": v},
  48. ) for v in CPP_STDLIBS]
  49. config_setting(
  50. name = "set_cxx_stdlib_best_and_msvc",
  51. constraint_values = ["@bazel_tools//tools/cpp:msvc"],
  52. flag_values = {":with_cxx_stdlib": "best"},
  53. )
  54. bool_flag(
  55. name = "with_abseil",
  56. build_setting_default = False,
  57. deprecation = "The value of this flag is ignored. Bazel builds always depend on Abseil for its pre-adopted `std::` types. You should remove this flag from your build command.",
  58. )
  59. int_flag(
  60. name = "abi_version_no",
  61. build_setting_default = 1,
  62. )
  63. config_setting(
  64. name = "abi_version_no_1",
  65. flag_values = {":abi_version_no": "1"},
  66. )
  67. config_setting(
  68. name = "abi_version_no_2",
  69. flag_values = {":abi_version_no": "2"},
  70. )