# Protobuf PHP runtime
#
# See also code generation logic under /src/google/protobuf/compiler/php.

load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup", "pkg_files", "strip_prefix")
load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
load("//:protobuf_version.bzl", "PROTOBUF_PHP_VERSION", "PROTOC_VERSION")
load("//build_defs:internal_shell.bzl", "inline_sh_binary")
load("//conformance:defs.bzl", "conformance_test")
load("//upb/cmake:build_defs.bzl", "staleness_test")

filegroup(
    name = "source_files",
    srcs = glob([
        "src/GPBMetadata/Google/Protobuf/**/*.php",
        "src/Google/Protobuf/**/*.php",
    ]) + [
        "composer.json",
        ":php_ext_source_files",
    ],
    visibility = [
        "//conformance:__pkg__",
        "//php:__pkg__",
    ],
)

################################################################################
# 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:utf8_range_srcs",
    ],
    outs = ["protobuf.so"],
    cmd = """
        ./$(execpath :build_extension) $@
        cp php/ext/google/protobuf/modules/protobuf.so $(OUTS)
    """,
    tools = [":build_extension"],
    visibility = ["//visibility:public"],
)

################################################################################
# Tests
################################################################################

conformance_test(
    name = "conformance_test",
    failure_list = "//conformance:failure_list_php.txt",
    maximum_edition = "2023",
    target_compatible_with = select({
        "@platforms//os:osx": ["@platforms//:incompatible"],
        "//conditions:default": [],
    }),
    testee = "//conformance:conformance_php",
    text_format_failure_list = "//conformance:text_format_failure_list_php.txt",
)

conformance_test(
    name = "conformance_test_c",
    failure_list = "//conformance:failure_list_php_c.txt",
    maximum_edition = "2023",
    target_compatible_with = select({
        "@platforms//os:osx": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),
    testee = "//conformance:conformance_php_c",
    text_format_failure_list = "//conformance:text_format_failure_list_php.txt",
)

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.c",
        "ext/google/protobuf/php-upb.h",
    ],
    generated_pattern = "generated-in/%s",
    tags = ["manual"],
)

################################################################################
# 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",
    ]) + [
        "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",
        ":source_files",
    ],
    prefix = "php",
    strip_prefix = strip_prefix.from_pkg(""),
    visibility = ["//pkg:__pkg__"],
)

################################################################################
# PECL .tgz Release
################################################################################

pkg_files(
    name = "php_ext_source_files",
    srcs = glob([
        "ext/google/protobuf/*.h",
        "ext/google/protobuf/*.c",
    ]) + [
        "ext/google/protobuf/config.m4",
        "ext/google/protobuf/config.w32",
        "ext/google/protobuf/wkt.inc",
        "//:LICENSE",
    ],
)

pkg_files(
    name = "utf8_range_files",
    srcs = [
        "//third_party/utf8_range:LICENSE",
        "//third_party/utf8_range:utf8_range_srcs",
    ],
    prefix = "third_party/utf8_range",
)

pkg_filegroup(
    name = "pecl_release_files",
    srcs = [
        ":php_ext_source_files",
        ":utf8_range_files",
    ],
    prefix = "protobuf-%s" % PROTOBUF_PHP_VERSION,
)

# PECL .tgz without package.xml
pkg_tar(
    name = "release_without_package",
    srcs = [
        ":pecl_release_files",
    ],
    out = "release_without_package.tgz",
    extension = "tgz",
)

# Generate PECL package.xml
genrule(
    name = "generate_package_xml",
    srcs = [
        ":release_without_package",
        "ext/google/protobuf/template_package.xml",
    ],
    outs = ["package.xml"],
    cmd = " ".join([
        "$(location ext/google/protobuf/generate_package_xml.sh)",
        "$(location ext/google/protobuf/template_package.xml)",
        PROTOBUF_PHP_VERSION,
        PROTOC_VERSION,
        "$$(tar -tf $(location :release_without_package) | sed -z -e 's;\\n;,;g')",
        "$(location package.xml)",
    ]),
    tools = ["ext/google/protobuf/generate_package_xml.sh"],
)

pkg_tar(
    name = "release",
    srcs = [
        ":generate_package_xml",
        ":pecl_release_files",
    ],
    out = "protobuf-%s.tgz" % PROTOBUF_PHP_VERSION,
    extension = "tgz",
)
