| # Copied from https://github.com/bazelbuild/bazel-central-registry/tree/main/modules/zlib/1.3.1.bcr.4/patches |
| # Adapted from https://github.com/protocolbuffers/protobuf/blob/master/third_party/zlib.BUILD |
| |
| # Copyright 2008 Google Inc. All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions are |
| # met: |
| # |
| # * Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # * Redistributions in binary form must reproduce the above |
| # copyright notice, this list of conditions and the following disclaimer |
| # in the documentation and/or other materials provided with the |
| # distribution. |
| # * Neither the name of Google Inc. nor the names of its |
| # contributors may be used to endorse or promote products derived from |
| # this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| # |
| # Code generated by the Protocol Buffer compiler is owned by the owner |
| # of the input file used when generating it. This code is not |
| # standalone and requires a support library to be linked with it. This |
| # support library is itself covered by the above license. |
| |
| load("@rules_cc//cc:defs.bzl", "cc_library") |
| load("@rules_license//rules:license.bzl", "license") |
| |
| package( |
| default_applicable_licenses = [":license"], |
| ) |
| |
| license( |
| name = "license", |
| license_kinds = ["@rules_license//licenses/spdx:Zlib"], |
| license_text = "LICENSE", |
| ) |
| |
| exports_files([ |
| "LICENSE", |
| ]) |
| |
| _ZLIB_HEADERS = [ |
| "crc32.h", |
| "deflate.h", |
| "gzguts.h", |
| "inffast.h", |
| "inffixed.h", |
| "inflate.h", |
| "inftrees.h", |
| "trees.h", |
| "zconf.h", |
| "zlib.h", |
| "zutil.h", |
| ] |
| |
| _ZLIB_PREFIXED_HEADERS = ["zlib/include/" + hdr for hdr in _ZLIB_HEADERS] |
| |
| # In order to limit the damage from the `includes` propagation |
| # via `:zlib`, copy the public headers to a subdirectory and |
| # expose those. |
| genrule( |
| name = "copy_public_headers", |
| srcs = _ZLIB_HEADERS, |
| outs = _ZLIB_PREFIXED_HEADERS, |
| cmd_bash = "cp $(SRCS) $(@D)/zlib/include/", |
| cmd_bat = " && ".join( |
| ["@copy /Y \"$(location %s)\" \"$(@D)\\zlib\\include\\\" >NUL" % |
| s for s in _ZLIB_HEADERS], |
| ), |
| ) |
| |
| config_setting( |
| name = "mingw_gcc_compiler", |
| flag_values = { |
| "@bazel_tools//tools/cpp:compiler": "mingw-gcc", |
| }, |
| visibility = [":__subpackages__"], |
| ) |
| |
| cc_library( |
| name = "z", |
| srcs = [ |
| "adler32.c", |
| "compress.c", |
| "crc32.c", |
| "deflate.c", |
| "gzclose.c", |
| "gzlib.c", |
| "gzread.c", |
| "gzwrite.c", |
| "infback.c", |
| "inffast.c", |
| "inflate.c", |
| "inftrees.c", |
| "trees.c", |
| "uncompr.c", |
| "zutil.c", |
| # Include the un-prefixed headers in srcs to work |
| # around the fact that zlib isn't consistent in its |
| # choice of <> or "" delimiter when including itself. |
| ] + _ZLIB_HEADERS, |
| hdrs = _ZLIB_PREFIXED_HEADERS, |
| copts = select({ |
| ":mingw_gcc_compiler": [ |
| "-fpermissive", |
| ], |
| "@platforms//os:windows": [], |
| "//conditions:default": [ |
| "-Wno-deprecated-non-prototype", |
| "-Wno-unused-variable", |
| "-Wno-implicit-function-declaration", |
| ], |
| }), |
| includes = ["zlib/include/"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| alias( |
| name = "zlib", |
| actual = ":z", |
| visibility = ["//visibility:public"], |
| ) |