| # This file will be copied into //third_party/externals/libpng via the new_local_repository |
| # rule in WORKSPACE.bazel, so all files should be relative to that path. |
| |
| # We define this here because the emscripten toolchain calls the cpu wasm, whereas the |
| # bazelbuild/platforms call it wasm32. https://github.com/emscripten-core/emsdk/issues/919 |
| config_setting( |
| name = "cpu_wasm", |
| values = { |
| "cpu": "wasm", |
| }, |
| ) |
| |
| LIBPNG_SRCS = [ |
| "png.c", |
| "pngconf.h", |
| "pngdebug.h", |
| "pngerror.c", |
| "pngget.c", |
| "pnginfo.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", |
| "pnglibconf.h", |
| ] + select({ |
| "@platforms//cpu:x86_64": [ |
| "intel/filter_sse2_intrinsics.c", |
| "intel/intel_init.c", |
| ], |
| "@platforms//cpu:arm64": [ |
| "arm/arm_init.c", |
| "arm/filter_neon_intrinsics.c", |
| "arm/palette_neon_intrinsics.c", |
| ], |
| # No SIMD support in wasm for now |
| ":cpu_wasm": [], |
| # The default is to avoid using SIMD |
| "//conditions:default": [], |
| }) |
| |
| PNG_DEFINES = ["PNG_SET_OPTION_SUPPORTED"] + select({ |
| "@platforms//cpu:x86_64": ["PNG_INTEL_SSE"], |
| "//conditions:default": [], |
| }) |
| |
| cc_library( |
| name = "libpng", |
| srcs = LIBPNG_SRCS, |
| hdrs = [ |
| "png.h", |
| ], |
| copts = [ |
| "-Wno-unused-but-set-variable", |
| "-Wno-macro-redefined", |
| ], |
| includes = [ |
| # This allows #include <png.h> to work |
| ".", |
| ], |
| local_defines = PNG_DEFINES, |
| # This is included by pnglibconf.h, but because it is not a .h |
| # file, we must tell Bazel to explicitly bring it in as an "includable". |
| textual_hdrs = ["scripts/pnglibconf.h.prebuilt"], |
| visibility = ["//visibility:public"], |
| deps = ["@zlib_skia//:zlib"], |
| ) |
| |
| # Creates a file called pnglibconf.h that includes the default png settings with one |
| # modification, undefining PNG_READ_OPT_PLTE_SUPPORTED. |
| genrule( |
| name = "create_skia_pnglibconf.h", |
| outs = ["pnglibconf.h"], |
| cmd = "echo '#include \"scripts/pnglibconf.h.prebuilt\"\n#undef PNG_READ_OPT_PLTE_SUPPORTED' > $@", |
| ) |