• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""absl specific copts.
2
3This file simply selects the correct options from the generated files.  To
4change Abseil copts, edit absl/copts/copts.py
5"""
6
7load(
8    "//absl:copts/GENERATED_copts.bzl",
9    "ABSL_CLANG_CL_FLAGS",
10    "ABSL_CLANG_CL_TEST_FLAGS",
11    "ABSL_GCC_FLAGS",
12    "ABSL_GCC_TEST_FLAGS",
13    "ABSL_LLVM_FLAGS",
14    "ABSL_LLVM_TEST_FLAGS",
15    "ABSL_MSVC_FLAGS",
16    "ABSL_MSVC_LINKOPTS",
17    "ABSL_MSVC_TEST_FLAGS",
18    "ABSL_RANDOM_HWAES_ARM32_FLAGS",
19    "ABSL_RANDOM_HWAES_ARM64_FLAGS",
20    "ABSL_RANDOM_HWAES_MSVC_X64_FLAGS",
21    "ABSL_RANDOM_HWAES_X64_FLAGS",
22)
23
24ABSL_DEFAULT_COPTS = select({
25    "//absl:windows": ABSL_MSVC_FLAGS,
26    "//absl:llvm_compiler": ABSL_LLVM_FLAGS,
27    "//conditions:default": ABSL_GCC_FLAGS,
28})
29
30# in absence of modules (--compiler=gcc or -c opt), cc_tests leak their copts
31# to their (included header) dependencies and fail to build outside absl
32ABSL_TEST_COPTS = ABSL_DEFAULT_COPTS + select({
33    "//absl:windows": ABSL_MSVC_TEST_FLAGS,
34    "//absl:llvm_compiler": ABSL_LLVM_TEST_FLAGS,
35    "//conditions:default": ABSL_GCC_TEST_FLAGS,
36})
37
38ABSL_DEFAULT_LINKOPTS = select({
39    "//absl:windows": ABSL_MSVC_LINKOPTS,
40    "//conditions:default": [],
41})
42
43# ABSL_RANDOM_RANDEN_COPTS blaze copts flags which are required by each
44# environment to build an accelerated RandenHwAes library.
45ABSL_RANDOM_RANDEN_COPTS = select({
46    # APPLE
47    ":cpu_darwin_x86_64": ABSL_RANDOM_HWAES_X64_FLAGS,
48    ":cpu_darwin": ABSL_RANDOM_HWAES_X64_FLAGS,
49    ":cpu_x64_windows_msvc": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS,
50    ":cpu_x64_windows": ABSL_RANDOM_HWAES_MSVC_X64_FLAGS,
51    ":cpu_k8": ABSL_RANDOM_HWAES_X64_FLAGS,
52    ":cpu_ppc": ["-mcrypto"],
53
54    # Supported by default or unsupported.
55    "//conditions:default": [],
56})
57
58# absl_random_randen_copts_init:
59#  Initialize the config targets based on cpu, os, etc. used to select
60#  the required values for ABSL_RANDOM_RANDEN_COPTS
61def absl_random_randen_copts_init():
62    """Initialize the config_settings used by ABSL_RANDOM_RANDEN_COPTS."""
63
64    # CPU configs.
65    # These configs have consistent flags to enable HWAES intsructions.
66    cpu_configs = [
67        "ppc",
68        "k8",
69        "darwin_x86_64",
70        "darwin",
71        "x64_windows_msvc",
72        "x64_windows",
73    ]
74    for cpu in cpu_configs:
75        native.config_setting(
76            name = "cpu_%s" % cpu,
77            values = {"cpu": cpu},
78        )
79