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

load("@rules_pkg//:pkg.bzl", "pkg_tar")
load("@rules_pkg//:mappings.bzl", "pkg_files", "pkg_filegroup", "strip_prefix")
load("//:protobuf_version.bzl", "PROTOBUF_PHP_VERSION")

pkg_files(
    name = "dist_files",
    srcs = glob([
        "ext/google/protobuf/**/*",
        "src/GPBMetadata/Google/Protobuf/**/*.php",
        "src/Google/Protobuf/**/*.php",
        "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",
    ],
    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",
  ]) + [
    "//:LICENSE",
    "ext/google/protobuf/config.m4",
    "ext/google/protobuf/wkt.inc",
  ],
)

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

  ],
  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",
  extension = "tgz",
  srcs = [
    ":pecl_release_files",
  ],
  out = "release_without_package.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,
      "$$(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",
  extension = "tgz",
  srcs = [
    ":pecl_release_files",
    ":generate_package_xml",
  ],
  out = "protobuf-%s.tgz" % PROTOBUF_PHP_VERSION,
)