blob: 8c6afa160b9c3d1630ec8c8724cfa09e707d65d7 [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: [
6 "-O3",
7 "-fstrict-aliasing",
8
Leon Scroggins III3993b372018-07-16 10:43:45 -04009 "-Werror",
Leon Scroggins IIIbd7903e2018-02-28 14:05:04 -050010 "-Wno-sign-compare",
Colin Crossd0296792016-12-01 16:55:40 -080011 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -080012 ],
13 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040014 "jaricom.c",
Colin Crossd0296792016-12-01 16:55:40 -080015 "jcapimin.c",
16 "jcapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020017 "jcarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080018 "jccoefct.c",
19 "jccolor.c",
20 "jcdctmgr.c",
21 "jchuff.c",
22 "jcinit.c",
23 "jcmainct.c",
24 "jcmarker.c",
25 "jcmaster.c",
26 "jcomapi.c",
27 "jcparam.c",
28 "jcphuff.c",
29 "jcprepct.c",
30 "jcsample.c",
31 "jctrans.c",
32 "jdapimin.c",
33 "jdapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020034 "jdarith.c",
Colin Crossd0296792016-12-01 16:55:40 -080035 "jdatadst.c",
36 "jdatasrc.c",
37 "jdcoefct.c",
38 "jdcolor.c",
39 "jddctmgr.c",
40 "jdhuff.c",
41 "jdinput.c",
42 "jdmainct.c",
43 "jdmarker.c",
44 "jdmaster.c",
45 "jdmerge.c",
46 "jdphuff.c",
47 "jdpostct.c",
48 "jdsample.c",
49 "jdtrans.c",
50 "jerror.c",
51 "jfdctflt.c",
52 "jfdctfst.c",
53 "jfdctint.c",
54 "jidctflt.c",
55 "jidctfst.c",
56 "jidctint.c",
57 "jidctred.c",
58 "jmemmgr.c",
59 "jmemnobs.c",
60 "jquant1.c",
61 "jquant2.c",
62 "jutils.c",
63 ],
64
65 arch: {
66 arm: {
67 // By default, the build system generates ARM target binaries in
68 // thumb mode, where each instruction is 16 bits wide. Defining
69 // this variable as arm forces the build system to generate object
70 // files in 32-bit arm mode. This is the same setting previously
71 // used by libjpeg and it provides a small performance benefit.
72 instruction_set: "arm",
73 // ARM v7 NEON
74 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040075 "simd/arm/jsimd.c",
76 "simd/arm/jsimd_neon.S",
Colin Crossd0296792016-12-01 16:55:40 -080077 ],
Colin Crossd0296792016-12-01 16:55:40 -080078 },
79 arm64: {
80 // ARM v8 64-bit NEON
81 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040082 "simd/arm64/jsimd.c",
83 "simd/arm64/jsimd_neon.S",
Colin Crossd0296792016-12-01 16:55:40 -080084 ],
85 },
86 x86: {
87 // x86 MMX and SSE2
88 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -040089 "simd/i386/jccolor-avx2.asm",
90 "simd/i386/jccolor-mmx.asm",
91 "simd/i386/jccolor-sse2.asm",
92 "simd/i386/jcgray-avx2.asm",
93 "simd/i386/jcgray-mmx.asm",
94 "simd/i386/jcgray-sse2.asm",
95 "simd/i386/jchuff-sse2.asm",
96 "simd/i386/jcphuff-sse2.asm",
97 "simd/i386/jcsample-avx2.asm",
98 "simd/i386/jcsample-mmx.asm",
99 "simd/i386/jcsample-sse2.asm",
100 "simd/i386/jdcolor-avx2.asm",
101 "simd/i386/jdcolor-mmx.asm",
102 "simd/i386/jdcolor-sse2.asm",
103 "simd/i386/jdmerge-avx2.asm",
104 "simd/i386/jdmerge-mmx.asm",
105 "simd/i386/jdmerge-sse2.asm",
106 "simd/i386/jdsample-avx2.asm",
107 "simd/i386/jdsample-mmx.asm",
108 "simd/i386/jdsample-sse2.asm",
109 "simd/i386/jfdctflt-3dn.asm",
110 "simd/i386/jfdctflt-sse.asm",
111 "simd/i386/jfdctfst-mmx.asm",
112 "simd/i386/jfdctfst-sse2.asm",
113 "simd/i386/jfdctint-avx2.asm",
114 "simd/i386/jfdctint-mmx.asm",
115 "simd/i386/jfdctint-sse2.asm",
116 "simd/i386/jidctflt-3dn.asm",
117 "simd/i386/jidctflt-sse.asm",
118 "simd/i386/jidctflt-sse2.asm",
119 "simd/i386/jidctfst-mmx.asm",
120 "simd/i386/jidctfst-sse2.asm",
121 "simd/i386/jidctint-avx2.asm",
122 "simd/i386/jidctint-mmx.asm",
123 "simd/i386/jidctint-sse2.asm",
124 "simd/i386/jidctred-mmx.asm",
125 "simd/i386/jidctred-sse2.asm",
126 "simd/i386/jquant-3dn.asm",
127 "simd/i386/jquant-mmx.asm",
128 "simd/i386/jquant-sse.asm",
129 "simd/i386/jquantf-sse2.asm",
130 "simd/i386/jquanti-avx2.asm",
131 "simd/i386/jquanti-sse2.asm",
132 "simd/i386/jsimd.c",
133 "simd/i386/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800134 ],
135 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400136 "-DPIC",
Colin Crossd0296792016-12-01 16:55:40 -0800137 ],
Leon Scroggins III3993b372018-07-16 10:43:45 -0400138 local_include_dirs: [
139 "simd",
140 "simd/nasm",
141 ],
Colin Crossd0296792016-12-01 16:55:40 -0800142 },
143 x86_64: {
144 // x86-64 SSE2
145 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400146 "simd/x86_64/jccolor-avx2.asm",
147 "simd/x86_64/jccolor-sse2.asm",
148 "simd/x86_64/jcgray-avx2.asm",
149 "simd/x86_64/jcgray-sse2.asm",
150 "simd/x86_64/jchuff-sse2.asm",
151 "simd/x86_64/jcphuff-sse2.asm",
152 "simd/x86_64/jcsample-avx2.asm",
153 "simd/x86_64/jcsample-sse2.asm",
154 "simd/x86_64/jdcolor-avx2.asm",
155 "simd/x86_64/jdcolor-sse2.asm",
156 "simd/x86_64/jdmerge-avx2.asm",
157 "simd/x86_64/jdmerge-sse2.asm",
158 "simd/x86_64/jdsample-avx2.asm",
159 "simd/x86_64/jdsample-sse2.asm",
160 "simd/x86_64/jfdctflt-sse.asm",
161 "simd/x86_64/jfdctfst-sse2.asm",
162 "simd/x86_64/jfdctint-avx2.asm",
163 "simd/x86_64/jfdctint-sse2.asm",
164 "simd/x86_64/jidctflt-sse2.asm",
165 "simd/x86_64/jidctfst-sse2.asm",
166 "simd/x86_64/jidctint-avx2.asm",
167 "simd/x86_64/jidctint-sse2.asm",
168 "simd/x86_64/jidctred-sse2.asm",
169 "simd/x86_64/jquantf-sse2.asm",
170 "simd/x86_64/jquanti-avx2.asm",
171 "simd/x86_64/jquanti-sse2.asm",
172 "simd/x86_64/jsimd.c",
173 "simd/x86_64/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800174 ],
175 asflags: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400176 "-DPIC",
177 "-D__x86_64__",
Colin Crossd0296792016-12-01 16:55:40 -0800178 ],
Leon Scroggins III3993b372018-07-16 10:43:45 -0400179 local_include_dirs: [
180 "simd",
181 "simd/nasm",
182 ],
Colin Crossd0296792016-12-01 16:55:40 -0800183 },
Colin Crossd0296792016-12-01 16:55:40 -0800184 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000185
186 target: {
187 linux: {
188 asflags: [
189 "-DELF",
190 ],
191 },
192 darwin: {
193 asflags: [
194 "-DMACHO",
195 ],
196 },
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000197 windows_x86: {
198 asflags: [
199 "-DWIN32",
200 ],
201 },
202 windows_x86_64: {
203 asflags: [
204 "-DWIN64",
205 ],
206 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000207 },
Colin Crossd0296792016-12-01 16:55:40 -0800208}
209
210// Also build as a shared library.
211cc_library {
212 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700213 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700214 vendor_available: true,
Justin Yun8d75bde2020-11-25 21:52:17 +0900215 product_available: true,
Justin Yunaf8db6c2017-07-24 15:19:44 +0900216 vndk: {
217 enabled: true,
218 },
Colin Crossd0296792016-12-01 16:55:40 -0800219 defaults: ["libjpeg-defaults"],
220 export_include_dirs: ["."],
Jerome Gaillard0aa895e2018-11-29 15:32:07 +0000221 target: {
222 windows: {
223 enabled: true,
224 },
225 },
Colin Crossd0296792016-12-01 16:55:40 -0800226}
227
228// Build static library against the NDK
229cc_library_static {
230 name: "libjpeg_static_ndk",
231 defaults: ["libjpeg-defaults"],
232 export_include_dirs: ["."],
233 sdk_version: "17",
234}
235
236// Definition for TJBench
237cc_binary {
238 name: "tjbench",
239
240 whole_static_libs: ["libjpeg"],
241
242 multilib: {
243 lib32: {
244 stem: "tj32",
245 },
246 lib64: {
247 stem: "tj64",
248 },
249 },
250
251 compile_multilib: "both",
252
253 cflags: [
254 "-DBMP_SUPPORTED",
255 "-DPPM_SUPPORTED",
Colin Cross33d068e2016-12-03 13:51:07 -0800256 "-Werror",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400257 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -0800258 ],
259
260 srcs: [
Colin Crossd0296792016-12-01 16:55:40 -0800261 "jdatadst-tj.c",
262 "jdatasrc-tj.c",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400263 "rdbmp.c",
264 "rdppm.c",
265 "tjbench.c",
266 "tjutil.c",
267 "transupp.c",
268 "turbojpeg.c",
269 "wrbmp.c",
270 "wrppm.c",
Colin Crossd0296792016-12-01 16:55:40 -0800271 ],
272}