1# Internal Starlark definitions for Protobuf. 2 3load("@bazel_skylib//lib:selects.bzl", "selects") 4load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix") 5load("//bazel:cc_proto_library.bzl", starlark_cc_proto_library = "cc_proto_library") 6load(":cc_proto_blacklist_test.bzl", "cc_proto_blacklist_test") 7load(":compiler_config_setting.bzl", "create_compiler_config_setting") 8 9package( 10 default_visibility = [ 11 # Public, but Protobuf only visibility. 12 "//:__subpackages__", 13 ], 14) 15 16create_compiler_config_setting( 17 name = "config_msvc_cl", 18 value = "msvc-cl", 19) 20 21# Caveat: clang-cl support in protobuf is only best-effort / untested for now. 22create_compiler_config_setting( 23 name = "config_clang_cl", 24 value = "clang-cl", 25) 26 27selects.config_setting_group( 28 name = "config_msvc", 29 match_any = [ 30 ":config_clang_cl", 31 ":config_msvc_cl", 32 ], 33) 34 35config_setting( 36 name = "aarch64", 37 values = {"cpu": "linux-aarch_64"}, 38) 39 40config_setting( 41 name = "x86_64", 42 values = {"cpu": "linux-x86_64"}, 43) 44 45# Android NDK builds can specify different crosstool_top flags to choose which 46# STL they use for C++. We need these multiple variants to catch all of those 47# versions of crosstool_top and reliably detect Android. 48# 49# For more info on the various crosstool_tops used by NDK Bazel builds, see: 50# https://docs.bazel.build/versions/master/android-ndk.html#configuring-the-stl 51 52# When using https://bazel.build/concepts/platforms 53config_setting( 54 name = "config_android", 55 constraint_values = ["@platforms//os:android"], 56) 57 58# When using legacy flags like --android_crosstool_top, --android_cpu, and --fat_apk_cpu 59config_setting( 60 name = "config_android-legacy-default-crosstool", 61 values = { 62 # Default of `--android_crosstool_top` 63 "crosstool_top": "//external:android/crosstool", 64 }, 65) 66 67config_setting( 68 name = "config_android-stlport", 69 values = { 70 "crosstool_top": "@androidndk//:toolchain-stlport", 71 }, 72) 73 74config_setting( 75 name = "config_android-libcpp", 76 values = { 77 "crosstool_top": "@androidndk//:toolchain-libcpp", 78 }, 79) 80 81config_setting( 82 name = "config_android-gnu-libstdcpp", 83 values = { 84 "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp", 85 }, 86) 87 88config_setting( 89 name = "config_android-default", 90 values = { 91 "crosstool_top": "@androidndk//:default_crosstool", 92 }, 93) 94 95config_setting( 96 name = "config_win32", 97 values = { 98 "cpu": "win32", 99 }, 100) 101 102config_setting( 103 name = "config_win64", 104 values = { 105 "cpu": "win64", 106 }, 107) 108 109selects.config_setting_group( 110 name = "config_win", 111 match_any = [ 112 ":config_win32", 113 ":config_win64", 114 ], 115) 116 117config_setting( 118 name = "config_osx_aarch64", 119 values = {"cpu": "osx-aarch_64"}, 120) 121 122config_setting( 123 name = "config_osx_x86_64", 124 values = {"cpu": "osx-x86_64"}, 125) 126 127selects.config_setting_group( 128 name = "config_osx", 129 match_any = [ 130 ":config_osx_aarch64", 131 ":config_osx_x86_64", 132 ], 133) 134 135# Internal testing: 136 137starlark_cc_proto_library( 138 name = "any_cc_proto", 139 visibility = ["//visibility:private"], 140 deps = ["//:any_proto"], 141) 142 143starlark_cc_proto_library( 144 name = "api_cc_proto", 145 visibility = ["//visibility:private"], 146 deps = ["//:api_proto"], 147) 148 149starlark_cc_proto_library( 150 name = "compiler_plugin_cc_proto", 151 visibility = ["//visibility:private"], 152 deps = ["//:compiler_plugin_proto"], 153) 154 155starlark_cc_proto_library( 156 name = "descriptor_cc_proto", 157 visibility = ["//visibility:private"], 158 deps = ["//:descriptor_proto"], 159) 160 161starlark_cc_proto_library( 162 name = "duration_cc_proto", 163 visibility = ["//visibility:private"], 164 deps = ["//:duration_proto"], 165) 166 167starlark_cc_proto_library( 168 name = "empty_cc_proto", 169 visibility = ["//visibility:private"], 170 deps = ["//:empty_proto"], 171) 172 173starlark_cc_proto_library( 174 name = "field_mask_cc_proto", 175 visibility = ["//visibility:private"], 176 deps = ["//:field_mask_proto"], 177) 178 179starlark_cc_proto_library( 180 name = "source_context_cc_proto", 181 visibility = ["//visibility:private"], 182 deps = ["//:source_context_proto"], 183) 184 185starlark_cc_proto_library( 186 name = "struct_cc_proto", 187 visibility = ["//visibility:private"], 188 deps = ["//:struct_proto"], 189) 190 191starlark_cc_proto_library( 192 name = "timestamp_cc_proto", 193 visibility = ["//visibility:private"], 194 deps = ["//:timestamp_proto"], 195) 196 197starlark_cc_proto_library( 198 name = "type_cc_proto", 199 visibility = ["//visibility:private"], 200 deps = ["//:type_proto"], 201) 202 203starlark_cc_proto_library( 204 name = "wrappers_cc_proto", 205 visibility = ["//visibility:private"], 206 deps = ["//:wrappers_proto"], 207) 208 209cc_proto_blacklist_test( 210 name = "cc_proto_blacklist_test", 211 deps = [ 212 ":any_cc_proto", 213 ":api_cc_proto", 214 ":compiler_plugin_cc_proto", 215 ":descriptor_cc_proto", 216 ":duration_cc_proto", 217 ":empty_cc_proto", 218 ":field_mask_cc_proto", 219 ":source_context_cc_proto", 220 ":struct_cc_proto", 221 ":timestamp_cc_proto", 222 ":type_cc_proto", 223 ":wrappers_cc_proto", 224 ], 225) 226 227pkg_files( 228 name = "dist_files", 229 srcs = glob(["*"]), 230 strip_prefix = strip_prefix.from_root(""), 231 visibility = ["//pkg:__pkg__"], 232) 233