blob: 6265b7188240e6440295a47e8b7f9ed8b8a632c0 [file] [log] [blame]
Mike Fleming3933d922018-04-02 10:53:08 -07001# Description:
2# Brotli is a generic-purpose lossless compression algorithm.
3
4package(
5 default_visibility = ["//visibility:public"],
6)
7
8licenses(["notice"]) # MIT
9
10exports_files(["LICENSE"])
11
12# >>> 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
26config_setting(
27 name = "windows",
28 values = {"cpu": "x64_windows"},
29 visibility = ["//visibility:public"],
30)
31
32config_setting(
33 name = "windows_msvc",
34 values = {"cpu": "x64_windows_msvc"},
35 visibility = ["//visibility:public"],
36)
37
38config_setting(
39 name = "windows_msys",
40 values = {"cpu": "x64_windows_msys"},
41 visibility = ["//visibility:public"],
42)
43
44genrule(
45 name = "copy_link_jni_header",
46 srcs = ["@openjdk_linux//:jni_h"],
47 outs = ["jni/jni.h"],
48 cmd = "cp -f $< $@",
49)
50
51genrule(
52 name = "copy_link_jni_md_header",
53 srcs = select({
54 ":darwin": ["@openjdk_macos//:jni_md_h"],
55 ":darwin_x86_64": ["@openjdk_macos//:jni_md_h"],
56 ":windows_msys": ["@openjdk_win//:jni_md_h"],
57 ":windows_msvc": ["@openjdk_win//:jni_md_h"],
58 ":windows": ["@openjdk_win//:jni_md_h"],
59 "//conditions:default": ["@openjdk_linux//:jni_md_h"],
60 }),
61 outs = ["jni/jni_md.h"],
62 cmd = "cp -f $< $@",
63)
64
65cc_library(
66 name = "jni_inc",
67 hdrs = [
68 ":jni/jni.h",
69 ":jni/jni_md.h",
70 ],
71 includes = ["jni"],
72)
73
74# <<< JNI headers
75
76STRICT_C_OPTIONS = [
77 "--pedantic-errors",
78 "-Wall",
79 "-Wconversion",
80 "-Werror",
81 "-Wextra",
82 "-Wlong-long",
83 "-Wmissing-declarations",
84 "-Wmissing-prototypes",
85 "-Wno-strict-aliasing",
86 "-Wshadow",
87 "-Wsign-compare",
88]
89
90filegroup(
91 name = "public_headers",
92 srcs = glob(["c/include/brotli/*.h"]),
93)
94
95filegroup(
96 name = "common_headers",
97 srcs = glob(["c/common/*.h"]),
98)
99
100filegroup(
101 name = "common_sources",
102 srcs = glob(["c/common/*.c"]),
103)
104
105filegroup(
106 name = "dec_headers",
107 srcs = glob(["c/dec/*.h"]),
108)
109
110filegroup(
111 name = "dec_sources",
112 srcs = glob(["c/dec/*.c"]),
113)
114
115filegroup(
116 name = "enc_headers",
117 srcs = glob(["c/enc/*.h"]),
118)
119
120filegroup(
121 name = "enc_sources",
122 srcs = glob(["c/enc/*.c"]),
123)
124
125cc_library(
126 name = "brotli_inc",
127 hdrs = [":public_headers"],
128 copts = STRICT_C_OPTIONS,
129 includes = ["c/include"],
130)
131
132cc_library(
133 name = "brotlicommon",
134 srcs = [":common_sources"],
135 hdrs = [":common_headers"],
136 copts = STRICT_C_OPTIONS,
137 deps = [":brotli_inc"],
138)
139
140cc_library(
141 name = "brotlidec",
142 srcs = [":dec_sources"],
143 hdrs = [":dec_headers"],
144 copts = STRICT_C_OPTIONS,
145 deps = [":brotlicommon"],
146)
147
148cc_library(
149 name = "brotlienc",
150 srcs = [":enc_sources"],
151 hdrs = [":enc_headers"],
152 copts = STRICT_C_OPTIONS,
153 linkopts = ["-lm"],
154 deps = [":brotlicommon"],
155)
156
157cc_binary(
158 name = "brotli",
159 srcs = ["c/tools/brotli.c"],
160 copts = STRICT_C_OPTIONS,
161 linkstatic = 1,
162 deps = [
163 ":brotlidec",
164 ":brotlienc",
165 ],
166)
167
168########################################################
169# WARNING: do not (transitively) depend on this target!
170########################################################
171cc_binary(
172 name = "brotli_jni.dll",
173 srcs = [
174 ":common_headers",
175 ":common_sources",
176 ":dec_headers",
177 ":dec_sources",
178 ":enc_headers",
179 ":enc_sources",
180 "//java/org/brotli/wrapper/common:jni_src",
181 "//java/org/brotli/wrapper/dec:jni_src",
182 "//java/org/brotli/wrapper/enc:jni_src",
183 ],
184 deps = [
185 ":brotli_inc",
186 ":jni_inc",
187 ],
188 linkshared = 1,
189)
190
191########################################################
192# WARNING: do not (transitively) depend on this target!
193########################################################
194cc_binary(
195 name = "brotli_jni_no_dictionary_data.dll",
196 srcs = [
197 ":common_headers",
198 ":common_sources",
199 ":dec_headers",
200 ":dec_sources",
201 ":enc_headers",
202 ":enc_sources",
203 "//java/org/brotli/wrapper/common:jni_src",
204 "//java/org/brotli/wrapper/dec:jni_src",
205 "//java/org/brotli/wrapper/enc:jni_src",
206 ],
207 defines = [
208 "BROTLI_EXTERNAL_DICTIONARY_DATA=",
209 ],
210 deps = [
211 ":brotli_inc",
212 ":jni_inc",
213 ],
214 linkshared = 1,
215)
216
217filegroup(
218 name = "dictionary",
219 srcs = ["c/common/dictionary.bin"],
220)
221
222load("@io_bazel_rules_go//go:def.bzl", "go_prefix")
223
224go_prefix("github.com/google/brotli")