blob: 4c9b57ac9844618ba2f8edf6c29f18a11fda9438 [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
Eugene Kliuchnikov9c75a2a2017-10-11 22:26:37 +020024config_setting(
25 name = "windows",
26 values = {"cpu": "x64_windows"},
27 visibility = ["//visibility:public"],
28)
29
30config_setting(
31 name = "windows_msvc",
32 values = {"cpu": "x64_windows_msvc"},
33 visibility = ["//visibility:public"],
34)
35
36config_setting(
37 name = "windows_msys",
38 values = {"cpu": "x64_windows_msys"},
39 visibility = ["//visibility:public"],
40)
41
Eugene Kliuchnikov4b2b2d42019-04-12 13:57:42 +020042load(":compiler_config_setting.bzl", "create_msvc_config")
43
44create_msvc_config()
Eugene Kliuchnikovc6333e12018-03-29 10:37:07 +020045
Eugene Kliuchnikovc6333e12018-03-29 10:37:07 +020046STRICT_C_OPTIONS = select({
47 ":msvc": [],
48 "//conditions:default": [
49 "--pedantic-errors",
50 "-Wall",
51 "-Wconversion",
52 "-Werror",
53 "-Wextra",
54 "-Wlong-long",
55 "-Wmissing-declarations",
56 "-Wmissing-prototypes",
57 "-Wno-strict-aliasing",
58 "-Wshadow",
59 "-Wsign-compare",
60 ],
61})
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020062
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020063filegroup(
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020064 name = "public_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020065 srcs = glob(["c/include/brotli/*.h"]),
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020066)
67
68filegroup(
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020069 name = "common_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020070 srcs = glob(["c/common/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020071)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020072
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020073filegroup(
74 name = "common_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020075 srcs = glob(["c/common/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020076)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020077
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020078filegroup(
79 name = "dec_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020080 srcs = glob(["c/dec/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020081)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020082
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020083filegroup(
84 name = "dec_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020085 srcs = glob(["c/dec/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020086)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020087
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020088filegroup(
89 name = "enc_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020090 srcs = glob(["c/enc/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020091)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020092
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020093filegroup(
94 name = "enc_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020095 srcs = glob(["c/enc/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020096)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020097
Piotr Sikora2cc33232016-08-23 15:43:07 -070098cc_library(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +020099 name = "brotli_inc",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200100 hdrs = [":public_headers"],
Piotr Sikora2cc33232016-08-23 15:43:07 -0700101 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov40f0fdc2019-07-16 17:49:14 +0200102 strip_include_prefix = "c/include",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200103)
104
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200105cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200106 name = "brotlicommon",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200107 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200108 hdrs = [":common_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200109 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200110 deps = [":brotli_inc"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200111)
112
113cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200114 name = "brotlidec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200115 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200116 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200117 copts = STRICT_C_OPTIONS,
Frédéric Wanged2748a2016-10-12 18:23:34 +0200118 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200119)
120
121cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200122 name = "brotlienc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200123 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200124 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200125 copts = STRICT_C_OPTIONS,
Piotr Sikorab4f8c782016-08-29 02:32:12 -0700126 linkopts = ["-lm"],
Frédéric Wanged2748a2016-10-12 18:23:34 +0200127 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200128)
129
130cc_binary(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200131 name = "brotli",
132 srcs = ["c/tools/brotli.c"],
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +0200133 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200134 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200135 deps = [
Frédéric Wanged2748a2016-10-12 18:23:34 +0200136 ":brotlidec",
137 ":brotlienc",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200138 ],
139)
Eugene Kliuchnikova657d992017-03-22 12:41:19 +0100140
Eugene Kliuchnikov19dc9342017-06-01 13:51:18 +0200141filegroup(
142 name = "dictionary",
143 srcs = ["c/common/dictionary.bin"],
144)