blob: a95a9f51ecaa2916623eae222761b3e3cdb80f07 [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
Piotr Sikora2cc33232016-08-23 15:43:07 -070059cc_library(
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020060 name = "brotli",
61 hdrs = [":public_headers"],
Piotr Sikora2cc33232016-08-23 15:43:07 -070062 copts = STRICT_C_OPTIONS,
63 includes = ["include"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020064)
65
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020066cc_library(
67 name = "brotli_common",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020068 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020069 hdrs = [":common_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020070 copts = STRICT_C_OPTIONS,
Piotr Sikora2cc33232016-08-23 15:43:07 -070071 deps = [":brotli"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020072)
73
74cc_library(
75 name = "brotli_dec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020076 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020077 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020078 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020079 deps = [":brotli_common"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020080)
81
82cc_library(
83 name = "brotli_enc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020084 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020085 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020086 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020087 deps = [":brotli_common"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020088)
89
90cc_binary(
91 name = "bro",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020092 srcs = ["tools/bro.c"],
93 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020094 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020095 deps = [
96 ":brotli_dec",
97 ":brotli_enc",
98 ],
99)