| # Protobuf PHP runtime | 
 | # | 
 | # See also code generation logic under /src/google/protobuf/compiler/php. | 
 |  | 
 | load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") | 
 | load("//build_defs:internal_shell.bzl", "inline_sh_binary") | 
 | load("//conformance:defs.bzl", "conformance_test") | 
 |  | 
 | filegroup( | 
 |     name = "source_files", | 
 |     visibility = [ | 
 |         "//conformance:__pkg__", | 
 |         "//php:__pkg__", | 
 |     ], | 
 |     srcs = glob([ | 
 |         "ext/google/protobuf/*.h", | 
 |         "ext/google/protobuf/*.c", | 
 |         "src/GPBMetadata/Google/Protobuf/**/*.php", | 
 |         "src/Google/Protobuf/**/*.php", | 
 |     ]) + [ | 
 |         "composer.json", | 
 |         "ext/google/protobuf/wkt.inc", | 
 |         "ext/google/protobuf/config.m4", | 
 |         "ext/google/protobuf/package.xml", | 
 |     ], | 
 | ) | 
 |  | 
 | ################################################################################ | 
 | # PHP Extension | 
 | ################################################################################ | 
 |  | 
 | inline_sh_binary( | 
 |     name = "build_extension", | 
 |     cmd = """ | 
 |         mkdir -p php/ext/google/protobuf/third_party/utf8_range | 
 |         cp third_party/utf8_range/* php/ext/google/protobuf/third_party/utf8_range | 
 |  | 
 |         pushd  php/ext/google/protobuf | 
 |         phpize | 
 |         ./configure --with-php-config=$$(which php-config) | 
 |         make | 
 |         popd | 
 |     """, | 
 | ) | 
 |  | 
 | genrule( | 
 |     name = "extension", | 
 |     srcs = [ | 
 |         ":source_files", | 
 |         "//third_party/utf8_range:all_files", | 
 |     ], | 
 |     tools = [":build_extension"], | 
 |     outs = ["protobuf.so"], | 
 |     cmd = """ | 
 |         ./$(execpath :build_extension) $@ | 
 |         cp php/ext/google/protobuf/modules/protobuf.so $(OUTS) | 
 |     """, | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | ################################################################################ | 
 | # Tests | 
 | ################################################################################ | 
 |  | 
 | conformance_test( | 
 |     name = "conformance_test", | 
 |     failure_list = "//conformance:failure_list_php.txt", | 
 |     testee = "//conformance:conformance_php", | 
 |     text_format_failure_list = "//conformance:text_format_failure_list_php.txt", | 
 |     target_compatible_with = select({ | 
 |         "@platforms//os:osx": ["@platforms//:incompatible"], | 
 |         "//conditions:default": [], | 
 |     }), | 
 | ) | 
 |  | 
 | conformance_test( | 
 |     name = "conformance_test_c", | 
 |     failure_list = "//conformance:failure_list_php_c.txt", | 
 |     testee = "//conformance:conformance_php_c", | 
 |     text_format_failure_list = "//conformance:text_format_failure_list_php.txt", | 
 |     target_compatible_with = select({ | 
 |         "@platforms//os:osx": [], | 
 |         "//conditions:default": ["@platforms//:incompatible"], | 
 |     }), | 
 | ) | 
 |  | 
 | ################################################################################ | 
 | # Distribution files | 
 | ################################################################################ | 
 |  | 
 | pkg_files( | 
 |     name = "dist_files", | 
 |     srcs = glob([ | 
 |         "ext/google/protobuf/**/*", | 
 |         "tests/*.php", | 
 |         "tests/*.sh", | 
 |         "tests/generated_previous/**/*.php", | 
 |         "tests/proto/**/*.proto", | 
 |         "tests/proto_previous/*.proto", | 
 |     ]) + [ | 
 |         ":source_files", | 
 |         "BUILD.bazel", | 
 |         "README.md", | 
 |         "REFCOUNTING.md", | 
 |         "composer.json", | 
 |         "generate_descriptor_protos.sh", | 
 |         "generate_test_protos.sh", | 
 |         "release.sh", | 
 |         "src/phpdoc.dist.xml", | 
 |         "tests/valgrind.supp", | 
 |     ], | 
 |     prefix = "php", | 
 |     strip_prefix = strip_prefix.from_pkg(""), | 
 |     visibility = ["//pkg:__pkg__"], | 
 | ) |