| # Copyright (c) 2009-2021, Google LLC | |
| # All rights reserved. | |
| # | |
| # Use of this source code is governed by a BSD-style | |
| # license that can be found in the LICENSE file or at | |
| # https://developers.google.com/open-source/licenses/bsd | |
| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") | |
| load("//python:build_targets.bzl", "build_targets") | |
| load("//python:py_extension.bzl", "py_extension") | |
| load("//upb/bazel:copts.bzl", "UPB_DEFAULT_COPTS", "UPB_DEFAULT_FEATURES") | |
| build_targets(name = "python") | |
| licenses(["notice"]) | |
| package( | |
| default_applicable_licenses = ["//:license"], | |
| default_visibility = ["//python/dist:__pkg__"], | |
| ) | |
| LIMITED_API_FLAG_SELECT = { | |
| ":limited_api_3.10": ["-DPy_LIMITED_API=0x030a0000"], | |
| "//conditions:default": [], | |
| } | |
| bool_flag( | |
| name = "limited_api", | |
| build_setting_default = True, | |
| ) | |
| string_flag( | |
| name = "python_version", | |
| build_setting_default = "system", | |
| values = [ | |
| "system", | |
| "39", | |
| "310", | |
| "311", | |
| ], | |
| ) | |
| config_setting( | |
| name = "limited_api_3.10", | |
| flag_values = { | |
| ":limited_api": "True", | |
| ":python_version": "310", | |
| }, | |
| ) | |
| config_setting( | |
| name = "limited_api_3.10_win32", | |
| constraint_values = [ | |
| "@platforms//cpu:x86_32", | |
| "@platforms//os:windows", | |
| ], | |
| flag_values = { | |
| ":limited_api": "True", | |
| ":python_version": "310", | |
| }, | |
| ) | |
| config_setting( | |
| name = "limited_api_3.10_win64", | |
| constraint_values = [ | |
| "@platforms//cpu:x86_64", | |
| "@platforms//os:windows", | |
| ], | |
| flag_values = { | |
| ":limited_api": "True", | |
| ":python_version": "310", | |
| }, | |
| ) | |
| _message_target_compatible_with = { | |
| "@system_python//:none": ["@platforms//:incompatible"], | |
| "@system_python//:unsupported": ["@platforms//:incompatible"], | |
| "//conditions:default": [], | |
| } | |
| filegroup( | |
| name = "message_srcs", | |
| srcs = [ | |
| "buffer_convert.c", | |
| "buffer_convert.h", | |
| "convert.c", | |
| "convert.h", | |
| "descriptor.c", | |
| "descriptor.h", | |
| "descriptor_containers.c", | |
| "descriptor_containers.h", | |
| "descriptor_pool.c", | |
| "descriptor_pool.h", | |
| "extension_dict.c", | |
| "extension_dict.h", | |
| "free_threading/lazy_ptr.c", | |
| "free_threading/lazy_ptr.h", | |
| "free_threading/mutex.h", | |
| "free_threading/weak_map.c", | |
| "free_threading/weak_map.h", | |
| "map.c", | |
| "map.h", | |
| "message.c", | |
| "message.h", | |
| "protobuf.c", | |
| "protobuf.h", | |
| "python_api.h", | |
| "repeated.c", | |
| "repeated.h", | |
| "unknown_fields.c", | |
| "unknown_fields.h", | |
| ], | |
| ) | |
| py_extension( | |
| name = "_message", | |
| srcs = [":message_srcs"], | |
| copts = UPB_DEFAULT_COPTS + select(LIMITED_API_FLAG_SELECT), | |
| features = UPB_DEFAULT_FEATURES, | |
| target_compatible_with = select(_message_target_compatible_with), | |
| deps = [ | |
| ":breaking_changes", | |
| "//src/google/protobuf:descriptor_upb_minitable_proto", | |
| "//src/google/protobuf:descriptor_upb_reflection_proto", | |
| "//third_party/utf8_range", | |
| "//upb/base", | |
| "//upb/hash", | |
| "//upb/mem", | |
| "//upb/message", | |
| "//upb/message:compare", | |
| "//upb/message:copy", | |
| "//upb/message:message_unknowns", | |
| "//upb/mini_table", | |
| "//upb/port", | |
| "//upb/reflection", | |
| "//upb/text", | |
| "//upb/util:def_to_proto", | |
| "//upb/util:required_fields", | |
| "//upb/wire", | |
| "//upb/wire:encode_extension", | |
| "//upb/wire:eps_copy_input_stream", | |
| "//upb/wire:reader", | |
| "@abseil-cpp//absl/base:core_headers", | |
| ], | |
| ) |