diff --git a/BUILD b/BUILD new file mode 100644 index 0000000000..338f4b5fea --- /dev/null +++ b/BUILD @@ -0,0 +1 @@ +# Empty Bazel build file diff --git a/WORKSPACE b/WORKSPACE index ce4f59252c..623a1bac85 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,10 +1,26 @@ workspace(name = "io_bazel_rules_closure") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("//closure/private:java_import_external.bzl", "java_import_external") load("//closure:repositories.bzl", "closure_repositories") closure_repositories() +http_archive( + name = "net_zlib", + build_file = "//:third_party/zlib.BUILD", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], +) + +http_archive( + name = "bazel_skylib", + sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d", + strip_prefix = "bazel-skylib-2169ae1c374aab4a09aa90e65efe1a3aad4e279b", + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"], +) + java_import_external( name = "com_google_guava_testlib", jar_sha256 = "1e7e0e728bb8d68a985115d2439ad6a36473c3e49d78a70945919731f9ac7136", @@ -82,3 +98,8 @@ java_import_external( testonly_ = 1, deps = ["@com_google_guava"], ) + +bind( + name = "zlib", + actual = "@net_zlib//:zlib", +) diff --git a/third_party/zlib.BUILD b/third_party/zlib.BUILD new file mode 100644 index 0000000000..f948117417 --- /dev/null +++ b/third_party/zlib.BUILD @@ -0,0 +1,60 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) # BSD/MIT-like license (for zlib) + +_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 = "cp $(SRCS) $(@D)/zlib/include/", + visibility = ["//visibility:private"], +) + +cc_library( + name = "zlib", + 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 = [ + "-Wno-unused-variable", + "-Wno-implicit-function-declaration", + ], + includes = ["zlib/include/"], +)