| # Protobuf PHP runtime |
| # |
| # See also code generation logic under /src/google/protobuf/compiler/php. |
| |
| load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") |
| load("@upb//cmake:build_defs.bzl", "staleness_test") |
| 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 external/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", |
| "@utf8_range//:utf8_range_srcs", |
| ], |
| 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"], |
| }), |
| ) |
| |
| genrule( |
| name = "copy_php_amalgamation_h", |
| srcs = ["@upb//:php-upb.h"], |
| outs = ["generated-in/ext/google/protobuf/php-upb.h"], |
| cmd = "cp $< $@", |
| ) |
| |
| genrule( |
| name = "copy_php_amalgamation_c", |
| srcs = ["@upb//:php-upb.c"], |
| outs = ["generated-in/ext/google/protobuf/php-upb.c"], |
| cmd = "cp $< $@", |
| ) |
| |
| staleness_test( |
| name = "test_amalgamation_staleness", |
| outs = [ |
| "ext/google/protobuf/php-upb.h", |
| "ext/google/protobuf/php-upb.c", |
| ], |
| generated_pattern = "generated-in/%s", |
| ) |
| |
| ################################################################################ |
| # 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__"], |
| ) |