blob: 02e2d11a1e660205b22380e8c0f993f2cbaf984c [file] [log] [blame]
Colin Crossd0296792016-12-01 16:55:40 -08001// Set up common variables for usage across the libjpeg-turbo modules
2
Bob Badour51ea7902021-02-12 21:29:35 -08003package {
4 default_applicable_licenses: ["external_libjpeg-turbo_license"],
5}
6
7// Added automatically by a large-scale-change that took the approach of
8// 'apply every license found to every target'. While this makes sure we respect
9// every license restriction, it may not be entirely correct.
10//
11// e.g. GPL in an MIT project might only apply to the contrib/ directory.
12//
13// Please consider splitting the single license below into multiple licenses,
14// taking care not to lose any license_kind information, and overriding the
15// default license using the 'licenses: [...]' property on targets as needed.
16//
17// For unused files, consider creating a 'fileGroup' with "//visibility:private"
18// to attach the license to, and including a comment whether the files may be
19// used in the current project.
20// See: http://go/android-license-faq
21license {
22 name: "external_libjpeg-turbo_license",
23 visibility: [":__subpackages__"],
24 license_kinds: [
25 "SPDX-license-identifier-BSD",
26 "SPDX-license-identifier-Beerware",
27 "SPDX-license-identifier-MIT",
28 "SPDX-license-identifier-Zlib",
29 "legacy_notice",
30 "legacy_unencumbered",
31 ],
32 license_text: [
33 "LICENSE.md",
34 ],
35}
36
Colin Crossd0296792016-12-01 16:55:40 -080037cc_defaults {
38 name: "libjpeg-defaults",
39 cflags: [
Elliott Hughes98e581f2020-12-02 18:09:57 -080040 "-DWITH_SIMD",
41 "-DNO_GETENV",
42
Colin Crossd0296792016-12-01 16:55:40 -080043 "-O3",
44 "-fstrict-aliasing",
45
Leon Scroggins III3993b372018-07-16 10:43:45 -040046 "-Werror",
Leon Scroggins IIIbd7903e2018-02-28 14:05:04 -050047 "-Wno-sign-compare",
Colin Crossd0296792016-12-01 16:55:40 -080048 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -080049 ],
50 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040051 "jaricom.c",
Colin Crossd0296792016-12-01 16:55:40 -080052 "jcapimin.c",
53 "jcapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020054 "jcarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080055 "jccoefct.c",
56 "jccolor.c",
57 "jcdctmgr.c",
58 "jchuff.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080059 "jcicc.c",
Colin Crossd0296792016-12-01 16:55:40 -080060 "jcinit.c",
61 "jcmainct.c",
62 "jcmarker.c",
63 "jcmaster.c",
64 "jcomapi.c",
65 "jcparam.c",
66 "jcphuff.c",
67 "jcprepct.c",
68 "jcsample.c",
69 "jctrans.c",
70 "jdapimin.c",
71 "jdapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020072 "jdarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080073 "jdatadst.c",
74 "jdatasrc.c",
75 "jdcoefct.c",
76 "jdcolor.c",
77 "jddctmgr.c",
78 "jdhuff.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080079 "jdicc.c",
Colin Crossd0296792016-12-01 16:55:40 -080080 "jdinput.c",
81 "jdmainct.c",
82 "jdmarker.c",
83 "jdmaster.c",
84 "jdmerge.c",
85 "jdphuff.c",
86 "jdpostct.c",
87 "jdsample.c",
88 "jdtrans.c",
89 "jerror.c",
90 "jfdctflt.c",
91 "jfdctfst.c",
92 "jfdctint.c",
93 "jidctflt.c",
94 "jidctfst.c",
95 "jidctint.c",
96 "jidctred.c",
97 "jmemmgr.c",
98 "jmemnobs.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080099 "jpeg_nbits_table.c",
Colin Crossd0296792016-12-01 16:55:40 -0800100 "jquant1.c",
101 "jquant2.c",
102 "jutils.c",
103 ],
104
105 arch: {
106 arm: {
107 // By default, the build system generates ARM target binaries in
108 // thumb mode, where each instruction is 16 bits wide. Defining
109 // this variable as arm forces the build system to generate object
110 // files in 32-bit arm mode. This is the same setting previously
111 // used by libjpeg and it provides a small performance benefit.
112 instruction_set: "arm",
113 // ARM v7 NEON
114 srcs: [
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800115 "simd/arm/aarch32/jchuff-neon.c",
116 "simd/arm/aarch32/jsimd.c",
117 "simd/arm/jccolor-neon.c",
118 "simd/arm/jcgray-neon.c",
119 "simd/arm/jcphuff-neon.c",
120 "simd/arm/jcsample-neon.c",
121 "simd/arm/jdcolor-neon.c",
122 "simd/arm/jdmerge-neon.c",
123 "simd/arm/jdsample-neon.c",
124 "simd/arm/jfdctfst-neon.c",
125 "simd/arm/jfdctint-neon.c",
126 "simd/arm/jidctfst-neon.c",
127 "simd/arm/jidctint-neon.c",
128 "simd/arm/jidctred-neon.c",
129 "simd/arm/jquanti-neon.c",
Colin Crossd0296792016-12-01 16:55:40 -0800130 ],
Dan Albert7de6bbd2021-06-01 16:52:55 -0700131 cflags: ["-DNEON_INTRINSICS", "-mfpu=neon"],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800132 local_include_dirs: ["simd/arm"],
Colin Crossd0296792016-12-01 16:55:40 -0800133 },
134 arm64: {
135 // ARM v8 64-bit NEON
136 srcs: [
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800137 "simd/arm/aarch64/jchuff-neon.c",
138 "simd/arm/aarch64/jsimd.c",
139 "simd/arm/jccolor-neon.c",
140 "simd/arm/jcgray-neon.c",
141 "simd/arm/jcphuff-neon.c",
142 "simd/arm/jcsample-neon.c",
143 "simd/arm/jdcolor-neon.c",
144 "simd/arm/jdmerge-neon.c",
145 "simd/arm/jdsample-neon.c",
146 "simd/arm/jfdctfst-neon.c",
147 "simd/arm/jfdctint-neon.c",
148 "simd/arm/jidctfst-neon.c",
149 "simd/arm/jidctint-neon.c",
150 "simd/arm/jidctred-neon.c",
151 "simd/arm/jquanti-neon.c",
Colin Crossd0296792016-12-01 16:55:40 -0800152 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800153 cflags: ["-DNEON_INTRINSICS"],
154 local_include_dirs: ["simd/arm"],
Colin Crossd0296792016-12-01 16:55:40 -0800155 },
156 x86: {
157 // x86 MMX and SSE2
158 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400159 "simd/i386/jccolor-avx2.asm",
160 "simd/i386/jccolor-mmx.asm",
161 "simd/i386/jccolor-sse2.asm",
162 "simd/i386/jcgray-avx2.asm",
163 "simd/i386/jcgray-mmx.asm",
164 "simd/i386/jcgray-sse2.asm",
165 "simd/i386/jchuff-sse2.asm",
166 "simd/i386/jcphuff-sse2.asm",
167 "simd/i386/jcsample-avx2.asm",
168 "simd/i386/jcsample-mmx.asm",
169 "simd/i386/jcsample-sse2.asm",
170 "simd/i386/jdcolor-avx2.asm",
171 "simd/i386/jdcolor-mmx.asm",
172 "simd/i386/jdcolor-sse2.asm",
173 "simd/i386/jdmerge-avx2.asm",
174 "simd/i386/jdmerge-mmx.asm",
175 "simd/i386/jdmerge-sse2.asm",
176 "simd/i386/jdsample-avx2.asm",
177 "simd/i386/jdsample-mmx.asm",
178 "simd/i386/jdsample-sse2.asm",
179 "simd/i386/jfdctflt-3dn.asm",
180 "simd/i386/jfdctflt-sse.asm",
181 "simd/i386/jfdctfst-mmx.asm",
182 "simd/i386/jfdctfst-sse2.asm",
183 "simd/i386/jfdctint-avx2.asm",
184 "simd/i386/jfdctint-mmx.asm",
185 "simd/i386/jfdctint-sse2.asm",
186 "simd/i386/jidctflt-3dn.asm",
187 "simd/i386/jidctflt-sse.asm",
188 "simd/i386/jidctflt-sse2.asm",
189 "simd/i386/jidctfst-mmx.asm",
190 "simd/i386/jidctfst-sse2.asm",
191 "simd/i386/jidctint-avx2.asm",
192 "simd/i386/jidctint-mmx.asm",
193 "simd/i386/jidctint-sse2.asm",
194 "simd/i386/jidctred-mmx.asm",
195 "simd/i386/jidctred-sse2.asm",
196 "simd/i386/jquant-3dn.asm",
197 "simd/i386/jquant-mmx.asm",
198 "simd/i386/jquant-sse.asm",
199 "simd/i386/jquantf-sse2.asm",
200 "simd/i386/jquanti-avx2.asm",
201 "simd/i386/jquanti-sse2.asm",
202 "simd/i386/jsimd.c",
203 "simd/i386/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800204 ],
205 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400206 "-DPIC",
Elliott Hughes98e581f2020-12-02 18:09:57 -0800207 "-D__x86__",
Colin Crossd0296792016-12-01 16:55:40 -0800208 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800209 local_include_dirs: ["simd/nasm"],
Colin Crossd0296792016-12-01 16:55:40 -0800210 },
211 x86_64: {
212 // x86-64 SSE2
213 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400214 "simd/x86_64/jccolor-avx2.asm",
215 "simd/x86_64/jccolor-sse2.asm",
216 "simd/x86_64/jcgray-avx2.asm",
217 "simd/x86_64/jcgray-sse2.asm",
218 "simd/x86_64/jchuff-sse2.asm",
219 "simd/x86_64/jcphuff-sse2.asm",
220 "simd/x86_64/jcsample-avx2.asm",
221 "simd/x86_64/jcsample-sse2.asm",
222 "simd/x86_64/jdcolor-avx2.asm",
223 "simd/x86_64/jdcolor-sse2.asm",
224 "simd/x86_64/jdmerge-avx2.asm",
225 "simd/x86_64/jdmerge-sse2.asm",
226 "simd/x86_64/jdsample-avx2.asm",
227 "simd/x86_64/jdsample-sse2.asm",
228 "simd/x86_64/jfdctflt-sse.asm",
229 "simd/x86_64/jfdctfst-sse2.asm",
230 "simd/x86_64/jfdctint-avx2.asm",
231 "simd/x86_64/jfdctint-sse2.asm",
232 "simd/x86_64/jidctflt-sse2.asm",
233 "simd/x86_64/jidctfst-sse2.asm",
234 "simd/x86_64/jidctint-avx2.asm",
235 "simd/x86_64/jidctint-sse2.asm",
236 "simd/x86_64/jidctred-sse2.asm",
237 "simd/x86_64/jquantf-sse2.asm",
238 "simd/x86_64/jquanti-avx2.asm",
239 "simd/x86_64/jquanti-sse2.asm",
240 "simd/x86_64/jsimd.c",
241 "simd/x86_64/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800242 ],
243 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400244 "-DPIC",
245 "-D__x86_64__",
Colin Crossd0296792016-12-01 16:55:40 -0800246 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800247 local_include_dirs: ["simd/nasm"],
Colin Crossd0296792016-12-01 16:55:40 -0800248 },
Colin Crossd0296792016-12-01 16:55:40 -0800249 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000250
251 target: {
252 linux: {
253 asflags: [
254 "-DELF",
255 ],
256 },
257 darwin: {
258 asflags: [
259 "-DMACHO",
260 ],
261 },
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000262 windows_x86: {
263 asflags: [
264 "-DWIN32",
265 ],
266 },
267 windows_x86_64: {
268 asflags: [
269 "-DWIN64",
270 ],
271 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000272 },
Colin Crossd0296792016-12-01 16:55:40 -0800273}
274
Elliott Hughes98e581f2020-12-02 18:09:57 -0800275// Build as a shared library.
Colin Crossd0296792016-12-01 16:55:40 -0800276cc_library {
277 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700278 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700279 vendor_available: true,
Justin Yun8d75bde2020-11-25 21:52:17 +0900280 product_available: true,
Justin Yunaf8db6c2017-07-24 15:19:44 +0900281 vndk: {
282 enabled: true,
283 },
Colin Crossd0296792016-12-01 16:55:40 -0800284 defaults: ["libjpeg-defaults"],
285 export_include_dirs: ["."],
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000286 target: {
287 windows: {
288 enabled: true,
289 },
290 },
Colin Crossd0296792016-12-01 16:55:40 -0800291}
292
293// Build static library against the NDK
294cc_library_static {
295 name: "libjpeg_static_ndk",
296 defaults: ["libjpeg-defaults"],
297 export_include_dirs: ["."],
298 sdk_version: "17",
299}
300
301// Definition for TJBench
302cc_binary {
303 name: "tjbench",
304
305 whole_static_libs: ["libjpeg"],
306
307 multilib: {
308 lib32: {
309 stem: "tj32",
310 },
311 lib64: {
312 stem: "tj64",
313 },
314 },
315
316 compile_multilib: "both",
317
318 cflags: [
319 "-DBMP_SUPPORTED",
320 "-DPPM_SUPPORTED",
Colin Cross33d068e2016-12-03 13:51:07 -0800321 "-Werror",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400322 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -0800323 ],
324
325 srcs: [
Colin Crossd0296792016-12-01 16:55:40 -0800326 "jdatadst-tj.c",
327 "jdatasrc-tj.c",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400328 "rdbmp.c",
329 "rdppm.c",
330 "tjbench.c",
331 "tjutil.c",
332 "transupp.c",
333 "turbojpeg.c",
334 "wrbmp.c",
335 "wrppm.c",
Colin Crossd0296792016-12-01 16:55:40 -0800336 ],
337}