blob: 408ee3cc6c990bec873fb55abc1edfe2501e6d89 [file] [log] [blame]
Colin Crossd0296792016-12-01 16:55:40 -08001// Set up common variables for usage across the libjpeg-turbo modules
2
3cc_defaults {
4 name: "libjpeg-defaults",
5 cflags: [
Elliott Hughes98e581f2020-12-02 18:09:57 -08006 "-DWITH_SIMD",
7 "-DNO_GETENV",
8
Colin Crossd0296792016-12-01 16:55:40 -08009 "-O3",
10 "-fstrict-aliasing",
11
Leon Scroggins III3993b372018-07-16 10:43:45 -040012 "-Werror",
Leon Scroggins IIIbd7903e2018-02-28 14:05:04 -050013 "-Wno-sign-compare",
Colin Crossd0296792016-12-01 16:55:40 -080014 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -080015 ],
16 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040017 "jaricom.c",
Colin Crossd0296792016-12-01 16:55:40 -080018 "jcapimin.c",
19 "jcapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020020 "jcarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080021 "jccoefct.c",
22 "jccolor.c",
23 "jcdctmgr.c",
24 "jchuff.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080025 "jcicc.c",
Colin Crossd0296792016-12-01 16:55:40 -080026 "jcinit.c",
27 "jcmainct.c",
28 "jcmarker.c",
29 "jcmaster.c",
30 "jcomapi.c",
31 "jcparam.c",
32 "jcphuff.c",
33 "jcprepct.c",
34 "jcsample.c",
35 "jctrans.c",
36 "jdapimin.c",
37 "jdapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020038 "jdarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080039 "jdatadst.c",
40 "jdatasrc.c",
41 "jdcoefct.c",
42 "jdcolor.c",
43 "jddctmgr.c",
44 "jdhuff.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080045 "jdicc.c",
Colin Crossd0296792016-12-01 16:55:40 -080046 "jdinput.c",
47 "jdmainct.c",
48 "jdmarker.c",
49 "jdmaster.c",
50 "jdmerge.c",
51 "jdphuff.c",
52 "jdpostct.c",
53 "jdsample.c",
54 "jdtrans.c",
55 "jerror.c",
56 "jfdctflt.c",
57 "jfdctfst.c",
58 "jfdctint.c",
59 "jidctflt.c",
60 "jidctfst.c",
61 "jidctint.c",
62 "jidctred.c",
63 "jmemmgr.c",
64 "jmemnobs.c",
Elliott Hughes98e581f2020-12-02 18:09:57 -080065 "jpeg_nbits_table.c",
Colin Crossd0296792016-12-01 16:55:40 -080066 "jquant1.c",
67 "jquant2.c",
68 "jutils.c",
69 ],
70
71 arch: {
72 arm: {
73 // By default, the build system generates ARM target binaries in
74 // thumb mode, where each instruction is 16 bits wide. Defining
75 // this variable as arm forces the build system to generate object
76 // files in 32-bit arm mode. This is the same setting previously
77 // used by libjpeg and it provides a small performance benefit.
78 instruction_set: "arm",
79 // ARM v7 NEON
80 srcs: [
Elliott Hughes6fe8e422020-12-05 11:38:16 -080081 "simd/arm/aarch32/jchuff-neon.c",
82 "simd/arm/aarch32/jsimd.c",
83 "simd/arm/jccolor-neon.c",
84 "simd/arm/jcgray-neon.c",
85 "simd/arm/jcphuff-neon.c",
86 "simd/arm/jcsample-neon.c",
87 "simd/arm/jdcolor-neon.c",
88 "simd/arm/jdmerge-neon.c",
89 "simd/arm/jdsample-neon.c",
90 "simd/arm/jfdctfst-neon.c",
91 "simd/arm/jfdctint-neon.c",
92 "simd/arm/jidctfst-neon.c",
93 "simd/arm/jidctint-neon.c",
94 "simd/arm/jidctred-neon.c",
95 "simd/arm/jquanti-neon.c",
Colin Crossd0296792016-12-01 16:55:40 -080096 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -080097 cflags: ["-DNEON_INTRINSICS"],
98 local_include_dirs: ["simd/arm"],
Colin Crossd0296792016-12-01 16:55:40 -080099 },
100 arm64: {
101 // ARM v8 64-bit NEON
102 srcs: [
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800103 "simd/arm/aarch64/jchuff-neon.c",
104 "simd/arm/aarch64/jsimd.c",
105 "simd/arm/jccolor-neon.c",
106 "simd/arm/jcgray-neon.c",
107 "simd/arm/jcphuff-neon.c",
108 "simd/arm/jcsample-neon.c",
109 "simd/arm/jdcolor-neon.c",
110 "simd/arm/jdmerge-neon.c",
111 "simd/arm/jdsample-neon.c",
112 "simd/arm/jfdctfst-neon.c",
113 "simd/arm/jfdctint-neon.c",
114 "simd/arm/jidctfst-neon.c",
115 "simd/arm/jidctint-neon.c",
116 "simd/arm/jidctred-neon.c",
117 "simd/arm/jquanti-neon.c",
Colin Crossd0296792016-12-01 16:55:40 -0800118 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800119 cflags: ["-DNEON_INTRINSICS"],
120 local_include_dirs: ["simd/arm"],
Colin Crossd0296792016-12-01 16:55:40 -0800121 },
122 x86: {
123 // x86 MMX and SSE2
124 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400125 "simd/i386/jccolor-avx2.asm",
126 "simd/i386/jccolor-mmx.asm",
127 "simd/i386/jccolor-sse2.asm",
128 "simd/i386/jcgray-avx2.asm",
129 "simd/i386/jcgray-mmx.asm",
130 "simd/i386/jcgray-sse2.asm",
131 "simd/i386/jchuff-sse2.asm",
132 "simd/i386/jcphuff-sse2.asm",
133 "simd/i386/jcsample-avx2.asm",
134 "simd/i386/jcsample-mmx.asm",
135 "simd/i386/jcsample-sse2.asm",
136 "simd/i386/jdcolor-avx2.asm",
137 "simd/i386/jdcolor-mmx.asm",
138 "simd/i386/jdcolor-sse2.asm",
139 "simd/i386/jdmerge-avx2.asm",
140 "simd/i386/jdmerge-mmx.asm",
141 "simd/i386/jdmerge-sse2.asm",
142 "simd/i386/jdsample-avx2.asm",
143 "simd/i386/jdsample-mmx.asm",
144 "simd/i386/jdsample-sse2.asm",
145 "simd/i386/jfdctflt-3dn.asm",
146 "simd/i386/jfdctflt-sse.asm",
147 "simd/i386/jfdctfst-mmx.asm",
148 "simd/i386/jfdctfst-sse2.asm",
149 "simd/i386/jfdctint-avx2.asm",
150 "simd/i386/jfdctint-mmx.asm",
151 "simd/i386/jfdctint-sse2.asm",
152 "simd/i386/jidctflt-3dn.asm",
153 "simd/i386/jidctflt-sse.asm",
154 "simd/i386/jidctflt-sse2.asm",
155 "simd/i386/jidctfst-mmx.asm",
156 "simd/i386/jidctfst-sse2.asm",
157 "simd/i386/jidctint-avx2.asm",
158 "simd/i386/jidctint-mmx.asm",
159 "simd/i386/jidctint-sse2.asm",
160 "simd/i386/jidctred-mmx.asm",
161 "simd/i386/jidctred-sse2.asm",
162 "simd/i386/jquant-3dn.asm",
163 "simd/i386/jquant-mmx.asm",
164 "simd/i386/jquant-sse.asm",
165 "simd/i386/jquantf-sse2.asm",
166 "simd/i386/jquanti-avx2.asm",
167 "simd/i386/jquanti-sse2.asm",
168 "simd/i386/jsimd.c",
169 "simd/i386/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800170 ],
171 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400172 "-DPIC",
Elliott Hughes98e581f2020-12-02 18:09:57 -0800173 "-D__x86__",
Colin Crossd0296792016-12-01 16:55:40 -0800174 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800175 local_include_dirs: ["simd/nasm"],
Colin Crossd0296792016-12-01 16:55:40 -0800176 },
177 x86_64: {
178 // x86-64 SSE2
179 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400180 "simd/x86_64/jccolor-avx2.asm",
181 "simd/x86_64/jccolor-sse2.asm",
182 "simd/x86_64/jcgray-avx2.asm",
183 "simd/x86_64/jcgray-sse2.asm",
184 "simd/x86_64/jchuff-sse2.asm",
185 "simd/x86_64/jcphuff-sse2.asm",
186 "simd/x86_64/jcsample-avx2.asm",
187 "simd/x86_64/jcsample-sse2.asm",
188 "simd/x86_64/jdcolor-avx2.asm",
189 "simd/x86_64/jdcolor-sse2.asm",
190 "simd/x86_64/jdmerge-avx2.asm",
191 "simd/x86_64/jdmerge-sse2.asm",
192 "simd/x86_64/jdsample-avx2.asm",
193 "simd/x86_64/jdsample-sse2.asm",
194 "simd/x86_64/jfdctflt-sse.asm",
195 "simd/x86_64/jfdctfst-sse2.asm",
196 "simd/x86_64/jfdctint-avx2.asm",
197 "simd/x86_64/jfdctint-sse2.asm",
198 "simd/x86_64/jidctflt-sse2.asm",
199 "simd/x86_64/jidctfst-sse2.asm",
200 "simd/x86_64/jidctint-avx2.asm",
201 "simd/x86_64/jidctint-sse2.asm",
202 "simd/x86_64/jidctred-sse2.asm",
203 "simd/x86_64/jquantf-sse2.asm",
204 "simd/x86_64/jquanti-avx2.asm",
205 "simd/x86_64/jquanti-sse2.asm",
206 "simd/x86_64/jsimd.c",
207 "simd/x86_64/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800208 ],
209 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400210 "-DPIC",
211 "-D__x86_64__",
Colin Crossd0296792016-12-01 16:55:40 -0800212 ],
Elliott Hughes6fe8e422020-12-05 11:38:16 -0800213 local_include_dirs: ["simd/nasm"],
Colin Crossd0296792016-12-01 16:55:40 -0800214 },
Colin Crossd0296792016-12-01 16:55:40 -0800215 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000216
217 target: {
218 linux: {
219 asflags: [
220 "-DELF",
221 ],
222 },
223 darwin: {
224 asflags: [
225 "-DMACHO",
226 ],
227 },
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000228 windows_x86: {
229 asflags: [
230 "-DWIN32",
231 ],
232 },
233 windows_x86_64: {
234 asflags: [
235 "-DWIN64",
236 ],
237 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000238 },
Colin Crossd0296792016-12-01 16:55:40 -0800239}
240
Elliott Hughes98e581f2020-12-02 18:09:57 -0800241// Build as a shared library.
Colin Crossd0296792016-12-01 16:55:40 -0800242cc_library {
243 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700244 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700245 vendor_available: true,
Justin Yun8d75bde2020-11-25 21:52:17 +0900246 product_available: true,
Justin Yunaf8db6c2017-07-24 15:19:44 +0900247 vndk: {
248 enabled: true,
249 },
Colin Crossd0296792016-12-01 16:55:40 -0800250 defaults: ["libjpeg-defaults"],
251 export_include_dirs: ["."],
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000252 target: {
253 windows: {
254 enabled: true,
255 },
256 },
Colin Crossd0296792016-12-01 16:55:40 -0800257}
258
259// Build static library against the NDK
260cc_library_static {
261 name: "libjpeg_static_ndk",
262 defaults: ["libjpeg-defaults"],
263 export_include_dirs: ["."],
264 sdk_version: "17",
265}
266
267// Definition for TJBench
268cc_binary {
269 name: "tjbench",
270
271 whole_static_libs: ["libjpeg"],
272
273 multilib: {
274 lib32: {
275 stem: "tj32",
276 },
277 lib64: {
278 stem: "tj64",
279 },
280 },
281
282 compile_multilib: "both",
283
284 cflags: [
285 "-DBMP_SUPPORTED",
286 "-DPPM_SUPPORTED",
Colin Cross33d068e2016-12-03 13:51:07 -0800287 "-Werror",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400288 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -0800289 ],
290
291 srcs: [
Colin Crossd0296792016-12-01 16:55:40 -0800292 "jdatadst-tj.c",
293 "jdatasrc-tj.c",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400294 "rdbmp.c",
295 "rdppm.c",
296 "tjbench.c",
297 "tjutil.c",
298 "transupp.c",
299 "turbojpeg.c",
300 "wrbmp.c",
301 "wrppm.c",
Colin Crossd0296792016-12-01 16:55:40 -0800302 ],
303}