blob: 8a5870fa6700e0ddd220af989c3ba614eaf5420d [file] [log] [blame]
# Copied from https://github.com/google-deepmind/lab2d/blob/09474439959534b1de3fce3d4a4ed35d565ea230/bazel/png.BUILD
# with minor modifications available under Apache 2.0 License
# SPDX-License-Identifier: Apache-2.0
# Description:
# libpng is the official PNG reference library.
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_license//rules:license.bzl", "license")
package(
default_applicable_licenses = [":license"],
)
exports_files([
"LICENSE",
])
license(
name = "license",
license_kinds = ["@rules_license//licenses/spdx:libpng-2.0"],
license_text = "LICENSE",
)
genrule(
name = "pnglibconf",
srcs = ["scripts/pnglibconf.h.prebuilt"],
outs = ["pnglibconf.h"],
cmd = "cp $(location scripts/pnglibconf.h.prebuilt) $(location pnglibconf.h)",
)
cc_library(
name = "png",
srcs = [
"png.c",
"pngdebug.h",
"pngerror.c",
"pngget.c",
"pnginfo.h",
"pnglibconf.h",
"pngmem.c",
"pngpread.c",
"pngpriv.h",
"pngread.c",
"pngrio.c",
"pngrtran.c",
"pngrutil.c",
"pngset.c",
"pngstruct.h",
"pngtrans.c",
"pngwio.c",
"pngwrite.c",
"pngwtran.c",
"pngwutil.c",
] + select({
"@platforms//cpu:arm64": [
"arm/arm_init.c",
"arm/filter_neon_intrinsics.c",
"arm/palette_neon_intrinsics.c",
"arm/filter_neon.S",
],
"@platforms//cpu:armv7": [
"arm/arm_init.c",
"arm/filter_neon_intrinsics.c",
"arm/palette_neon_intrinsics.c",
"arm/filter_neon.S",
],
"@platforms//cpu:x86_64": [
"intel/intel_init.c",
"intel/filter_sse2_intrinsics.c",
],
"@platforms//cpu:x86_32": [
"intel/intel_init.c",
"intel/filter_sse2_intrinsics.c",
],
"@platforms//cpu:i386": [
"intel/intel_init.c",
"intel/filter_sse2_intrinsics.c",
],
"//conditions:default": [],
}),
hdrs = [
"png.h",
"pngconf.h",
],
includes = ["."],
linkopts = select({
"@platforms//os:windows": [],
"//conditions:default": ["-lm"],
}),
visibility = ["//visibility:public"],
local_defines = select({
"@platforms//cpu:arm64": [
"PNG_ARM_NEON_OPT=2",
],
"@platforms//cpu:armv7": [
"PNG_ARM_NEON_OPT=2",
],
"@platforms//cpu:x86_64": [
"PNG_INTEL_SSE_OPT=1",
],
"@platforms//cpu:x86_32": [
"PNG_INTEL_SSE_OPT=1",
],
"@platforms//cpu:i386": [
"PNG_INTEL_SSE_OPT=1",
],
"//conditions:default": [],
}),
deps = ["@zlib"],
)
alias(
name = "libpng",
actual = ":png",
visibility = ["//visibility:public"],
)