Add Bazel config for zlib support (#5389)
* Add Bazel config for optional zlib support * Add hard dependency on zlib * Remove unused config_setting
This commit is contained in:
parent
81f6aa404c
commit
21c3801369
16
BUILD
16
BUILD
@ -15,6 +15,12 @@ config_setting(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# ZLIB configuration
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ZLIB_DEPS = ["//external:zlib"]
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Protobuf Runtime Library
|
# Protobuf Runtime Library
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -42,6 +48,7 @@ COPTS = select({
|
|||||||
":msvc" : MSVC_COPTS,
|
":msvc" : MSVC_COPTS,
|
||||||
"//conditions:default": [
|
"//conditions:default": [
|
||||||
"-DHAVE_PTHREAD",
|
"-DHAVE_PTHREAD",
|
||||||
|
"-DHAVE_ZLIB",
|
||||||
"-Wall",
|
"-Wall",
|
||||||
"-Woverloaded-virtual",
|
"-Woverloaded-virtual",
|
||||||
"-Wno-sign-compare",
|
"-Wno-sign-compare",
|
||||||
@ -117,6 +124,11 @@ cc_library(
|
|||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
PROTOBUF_DEPS = select({
|
||||||
|
":msvc": [],
|
||||||
|
"//conditions:default": ZLIB_DEPS,
|
||||||
|
})
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "protobuf",
|
name = "protobuf",
|
||||||
srcs = [
|
srcs = [
|
||||||
@ -182,7 +194,7 @@ cc_library(
|
|||||||
includes = ["src/"],
|
includes = ["src/"],
|
||||||
linkopts = LINK_OPTS,
|
linkopts = LINK_OPTS,
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [":protobuf_lite"],
|
deps = [":protobuf_lite"] + PROTOBUF_DEPS,
|
||||||
)
|
)
|
||||||
|
|
||||||
# This provides just the header files for use in projects that need to build
|
# This provides just the header files for use in projects that need to build
|
||||||
@ -590,7 +602,7 @@ cc_test(
|
|||||||
":protobuf",
|
":protobuf",
|
||||||
":protoc_lib",
|
":protoc_lib",
|
||||||
"//external:gtest_main",
|
"//external:gtest_main",
|
||||||
],
|
] + PROTOBUF_DEPS,
|
||||||
)
|
)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
16
WORKSPACE
16
WORKSPACE
@ -1,10 +1,11 @@
|
|||||||
workspace(name = "com_google_protobuf")
|
workspace(name = "com_google_protobuf")
|
||||||
|
|
||||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||||
|
|
||||||
new_local_repository(
|
new_local_repository(
|
||||||
name = "submodule_gmock",
|
name = "submodule_gmock",
|
||||||
|
build_file = "@//:third_party/googletest/BUILD.bazel",
|
||||||
path = "third_party/googletest",
|
path = "third_party/googletest",
|
||||||
build_file = "@//:third_party/googletest/BUILD.bazel"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
http_archive(
|
http_archive(
|
||||||
@ -21,6 +22,14 @@ http_archive(
|
|||||||
urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"],
|
urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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"],
|
||||||
|
)
|
||||||
|
|
||||||
bind(
|
bind(
|
||||||
name = "python_headers",
|
name = "python_headers",
|
||||||
actual = "//util/python:python_headers",
|
actual = "//util/python:python_headers",
|
||||||
@ -60,3 +69,8 @@ bind(
|
|||||||
name = "gson",
|
name = "gson",
|
||||||
actual = "@gson_maven//jar",
|
actual = "@gson_maven//jar",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bind(
|
||||||
|
name = "zlib",
|
||||||
|
actual = "@net_zlib//:zlib",
|
||||||
|
)
|
||||||
|
60
third_party/zlib.BUILD
vendored
Normal file
60
third_party/zlib.BUILD
vendored
Normal file
@ -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/"],
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user