blob: 1dea6d88ef73c1bace80ba1cbcf2f65bdb310f07 [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 Kliuchnikovb32cefe2016-06-17 16:24:51 +020012STRICT_C_OPTIONS = [
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020013 "--pedantic-errors",
14 "-Wall",
15 "-Wconversion",
16 "-Werror",
17 "-Wextra",
18 "-Wlong-long",
19 "-Wmissing-declarations",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020020 "-Wmissing-prototypes",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020021 "-Wno-strict-aliasing",
22 "-Wshadow",
23 "-Wsign-compare",
24]
25
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020026filegroup(
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020027 name = "public_headers",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020028 srcs = glob(["include/brotli/*.h"]),
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020029)
30
31filegroup(
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020032 name = "common_headers",
33 srcs = glob(["common/*.h"]),
34)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020035
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020036filegroup(
37 name = "common_sources",
38 srcs = glob(["common/*.c"]),
39)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020040
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020041filegroup(
42 name = "dec_headers",
43 srcs = glob(["dec/*.h"]),
44)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020045
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020046filegroup(
47 name = "dec_sources",
48 srcs = glob(["dec/*.c"]),
49)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020050
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020051filegroup(
52 name = "enc_headers",
53 srcs = glob(["enc/*.h"]),
54)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020055
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020056filegroup(
57 name = "enc_sources",
58 srcs = glob(["enc/*.c"]),
59)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020060
Piotr Sikora2cc33232016-08-23 15:43:07 -070061cc_library(
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020062 name = "brotli",
63 hdrs = [":public_headers"],
Piotr Sikora2cc33232016-08-23 15:43:07 -070064 copts = STRICT_C_OPTIONS,
65 includes = ["include"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020066)
67
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020068cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +020069 name = "brotlicommon",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020070 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020071 hdrs = [":common_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020072 copts = STRICT_C_OPTIONS,
Piotr Sikora2cc33232016-08-23 15:43:07 -070073 deps = [":brotli"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020074)
75
76cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +020077 name = "brotlidec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020078 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020079 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020080 copts = STRICT_C_OPTIONS,
Frédéric Wanged2748a2016-10-12 18:23:34 +020081 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020082)
83
84cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +020085 name = "brotlienc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020086 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +020087 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020088 copts = STRICT_C_OPTIONS,
Piotr Sikorab4f8c782016-08-29 02:32:12 -070089 linkopts = ["-lm"],
Frédéric Wanged2748a2016-10-12 18:23:34 +020090 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020091)
92
93cc_binary(
94 name = "bro",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020095 srcs = ["tools/bro.c"],
96 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020097 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020098 deps = [
Frédéric Wanged2748a2016-10-12 18:23:34 +020099 ":brotlidec",
100 ":brotlienc",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200101 ],
102)