blob: 4ce4ad44ef3cb3bd1aa4c57bb020fc77898de7a1 [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
Piotr Sikorad0391c92016-08-23 19:58:51 -070010exports_files(["LICENSE"])
11
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +020012config_setting(
13 name = "darwin",
14 values = {"cpu": "darwin"},
15 visibility = ["//visibility:public"],
16)
17
18config_setting(
19 name = "darwin_x86_64",
20 values = {"cpu": "darwin_x86_64"},
21 visibility = ["//visibility:public"],
22)
23
Tianjie Xua5dcb7c2018-09-25 12:25:15 -070024config_setting(
25 name = "windows",
26 values = {"cpu": "x64_windows"},
27 visibility = ["//visibility:public"],
Eugene Kliuchnikov9c75a2a2017-10-11 22:26:37 +020028)
29
Tianjie Xua5dcb7c2018-09-25 12:25:15 -070030config_setting(
31 name = "windows_msvc",
32 values = {"cpu": "x64_windows_msvc"},
33 visibility = ["//visibility:public"],
Eugene Kliuchnikov9c75a2a2017-10-11 22:26:37 +020034)
35
Tianjie Xua5dcb7c2018-09-25 12:25:15 -070036config_setting(
37 name = "windows_msys",
38 values = {"cpu": "x64_windows_msys"},
39 visibility = ["//visibility:public"],
40)
41
42config_setting(
43 name = "msvc",
44 values = {"compiler": "msvc-cl"},
45 visibility = ["//visibility:public"],
46)
47
48STRICT_C_OPTIONS = select({
49 ":msvc": [],
50 "//conditions:default": [
51 "--pedantic-errors",
52 "-Wall",
53 "-Wconversion",
54 "-Werror",
55 "-Wextra",
56 "-Wlong-long",
57 "-Wmissing-declarations",
58 "-Wmissing-prototypes",
59 "-Wno-strict-aliasing",
60 "-Wshadow",
61 "-Wsign-compare",
Eugene Kliuchnikovc6333e12018-03-29 10:37:07 +020062 ],
Tianjie Xua5dcb7c2018-09-25 12:25:15 -070063})
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020064
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020065filegroup(
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020066 name = "public_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020067 srcs = glob(["c/include/brotli/*.h"]),
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020068)
69
70filegroup(
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020071 name = "common_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020072 srcs = glob(["c/common/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020073)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020074
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020075filegroup(
76 name = "common_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020077 srcs = glob(["c/common/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020078)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020079
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020080filegroup(
81 name = "dec_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020082 srcs = glob(["c/dec/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020083)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020084
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020085filegroup(
86 name = "dec_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020087 srcs = glob(["c/dec/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020088)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020089
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020090filegroup(
91 name = "enc_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020092 srcs = glob(["c/enc/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020093)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020094
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020095filegroup(
96 name = "enc_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020097 srcs = glob(["c/enc/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020098)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020099
Piotr Sikora2cc33232016-08-23 15:43:07 -0700100cc_library(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200101 name = "brotli_inc",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200102 hdrs = [":public_headers"],
Piotr Sikora2cc33232016-08-23 15:43:07 -0700103 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +0200104 includes = ["c/include"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200105)
106
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200107cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200108 name = "brotlicommon",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200109 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200110 hdrs = [":common_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200111 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200112 deps = [":brotli_inc"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200113)
114
115cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200116 name = "brotlidec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200117 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200118 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200119 copts = STRICT_C_OPTIONS,
Frédéric Wanged2748a2016-10-12 18:23:34 +0200120 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200121)
122
123cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200124 name = "brotlienc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200125 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200126 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200127 copts = STRICT_C_OPTIONS,
Piotr Sikorab4f8c782016-08-29 02:32:12 -0700128 linkopts = ["-lm"],
Frédéric Wanged2748a2016-10-12 18:23:34 +0200129 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200130)
131
132cc_binary(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200133 name = "brotli",
134 srcs = ["c/tools/brotli.c"],
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +0200135 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200136 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200137 deps = [
Frédéric Wanged2748a2016-10-12 18:23:34 +0200138 ":brotlidec",
139 ":brotlienc",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200140 ],
141)
Eugene Kliuchnikova657d992017-03-22 12:41:19 +0100142
Eugene Kliuchnikov19dc9342017-06-01 13:51:18 +0200143filegroup(
144 name = "dictionary",
145 srcs = ["c/common/dictionary.bin"],
146)