blob: 1355c1ba024d2f685f333cb5bfb07d426946e314 [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 +020012# >>> JNI headers
13
14config_setting(
15 name = "darwin",
16 values = {"cpu": "darwin"},
17 visibility = ["//visibility:public"],
18)
19
20config_setting(
21 name = "darwin_x86_64",
22 values = {"cpu": "darwin_x86_64"},
23 visibility = ["//visibility:public"],
24)
25
26genrule(
27 name = "copy_link_jni_header",
28 srcs = ["@openjdk_linux//:jni_h"],
29 outs = ["jni/jni.h"],
30 cmd = "cp -f $< $@",
31)
32
33genrule(
34 name = "copy_link_jni_md_header",
35 srcs = select({
36 ":darwin": ["@openjdk_macos//:jni_md_h"],
37 ":darwin_x86_64": ["@openjdk_macos//:jni_md_h"],
38 "//conditions:default": ["@openjdk_linux//:jni_md_h"],
39 }),
40 outs = ["jni/jni_md.h"],
41 cmd = "cp -f $< $@",
42)
43
44cc_library(
45 name = "jni_inc",
46 hdrs = [":jni/jni.h", ":jni/jni_md.h"],
47 includes = ["jni"],
48)
49
50# <<< JNI headers
51
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020052STRICT_C_OPTIONS = [
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020053 "--pedantic-errors",
54 "-Wall",
55 "-Wconversion",
56 "-Werror",
57 "-Wextra",
58 "-Wlong-long",
59 "-Wmissing-declarations",
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +020060 "-Wmissing-prototypes",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020061 "-Wno-strict-aliasing",
62 "-Wshadow",
63 "-Wsign-compare",
64]
65
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020066filegroup(
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020067 name = "public_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020068 srcs = glob(["c/include/brotli/*.h"]),
Eugene Kliuchnikov801f5f32016-08-22 13:28:22 +020069)
70
71filegroup(
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020072 name = "common_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020073 srcs = glob(["c/common/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020074)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020075
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020076filegroup(
77 name = "common_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020078 srcs = glob(["c/common/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020079)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020080
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020081filegroup(
82 name = "dec_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020083 srcs = glob(["c/dec/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020084)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020085
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020086filegroup(
87 name = "dec_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020088 srcs = glob(["c/dec/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020089)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020090
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020091filegroup(
92 name = "enc_headers",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020093 srcs = glob(["c/enc/*.h"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020094)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +020095
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020096filegroup(
97 name = "enc_sources",
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +020098 srcs = glob(["c/enc/*.c"]),
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +020099)
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200100
Piotr Sikora2cc33232016-08-23 15:43:07 -0700101cc_library(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200102 name = "brotli_inc",
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200103 hdrs = [":public_headers"],
Piotr Sikora2cc33232016-08-23 15:43:07 -0700104 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov6ece1d82017-04-23 14:07:08 +0200105 includes = ["c/include"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200106)
107
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200108cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200109 name = "brotlicommon",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200110 srcs = [":common_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200111 hdrs = [":common_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200112 copts = STRICT_C_OPTIONS,
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200113 deps = [":brotli_inc"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200114)
115
116cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200117 name = "brotlidec",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200118 srcs = [":dec_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200119 hdrs = [":dec_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200120 copts = STRICT_C_OPTIONS,
Frédéric Wanged2748a2016-10-12 18:23:34 +0200121 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200122)
123
124cc_library(
Frédéric Wanged2748a2016-10-12 18:23:34 +0200125 name = "brotlienc",
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200126 srcs = [":enc_sources"],
Eugene Kliuchnikov81480012016-08-23 14:40:33 +0200127 hdrs = [":enc_headers"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200128 copts = STRICT_C_OPTIONS,
Piotr Sikorab4f8c782016-08-29 02:32:12 -0700129 linkopts = ["-lm"],
Frédéric Wanged2748a2016-10-12 18:23:34 +0200130 deps = [":brotlicommon"],
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200131)
132
133cc_binary(
Eugene Kliuchnikov03739d22017-05-29 17:55:14 +0200134 name = "brotli",
135 srcs = ["c/tools/brotli.c"],
Eugene Kliuchnikovb32cefe2016-06-17 16:24:51 +0200136 copts = STRICT_C_OPTIONS,
Evgenii Kliuchnikov52ff8172016-06-24 15:32:51 +0200137 linkstatic = 1,
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200138 deps = [
Frédéric Wanged2748a2016-10-12 18:23:34 +0200139 ":brotlidec",
140 ":brotlienc",
Eugene Kliuchnikov378485b2016-06-16 10:52:57 +0200141 ],
142)
Eugene Kliuchnikova657d992017-03-22 12:41:19 +0100143
144load("@io_bazel_rules_go//go:def.bzl", "go_prefix")
145
146go_prefix("github.com/google/brotli")