blob: c0ac6d8bfb3bbe50d8970db68155c2070d15e4c5 [file] [log] [blame]
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +02001# Description:
2# Brotli is a generic-purpose lossless compression algorithm.
3
4package(
5 default_visibility = ["//visibility:public"],
6)
7
8licenses(["notice"]) # MIT
9
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020010STRICT_C_OPTIONS = [
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020011 "--pedantic-errors",
12 "-Wall",
13 "-Wconversion",
14 "-Werror",
15 "-Wextra",
16 "-Wlong-long",
17 "-Wmissing-declarations",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020018 "-Wmissing-prototypes",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020019 "-Wno-strict-aliasing",
20 "-Wshadow",
21 "-Wsign-compare",
22]
23
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020024filegroup(
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020025 name = "public_headers",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020026 srcs = glob(["include/brotli/*.h"]),
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020027)
28
29filegroup(
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020030 name = "common_headers",
31 srcs = glob(["common/*.h"]),
32)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020033
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020034filegroup(
35 name = "common_sources",
36 srcs = glob(["common/*.c"]),
37)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020038
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020039filegroup(
40 name = "dec_headers",
41 srcs = glob(["dec/*.h"]),
42)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020043
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020044filegroup(
45 name = "dec_sources",
46 srcs = glob(["dec/*.c"]),
47)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020048
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020049filegroup(
50 name = "enc_headers",
51 srcs = glob(["enc/*.h"]),
52)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020053
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020054filegroup(
55 name = "enc_sources",
56 srcs = glob(["enc/*.c"]),
57)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020058
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020059cc_inc_library(
60 name = "brotli",
61 hdrs = [":public_headers"],
62 prefix = "include",
63)
64
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020065cc_library(
66 name = "brotli_common",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020067 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020068 hdrs = [":common_headers"],
69 deps = [":brotli"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020070 copts = STRICT_C_OPTIONS,
71)
72
73cc_library(
74 name = "brotli_dec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020075 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020076 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020077 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020078 deps = [":brotli_common"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020079)
80
81cc_library(
82 name = "brotli_enc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020083 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020084 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020085 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020086 deps = [":brotli_common"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020087)
88
89cc_binary(
90 name = "bro",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020091 srcs = ["tools/bro.c"],
92 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020093 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020094 deps = [
95 ":brotli_dec",
96 ":brotli_enc",
97 ],
98)