blob: ef60ee0ff8b9ce606d0e8ee28d47ab535ddaec04 [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: [
Colin Crossd0296792016-12-01 16:55:40 -0800136 "-DELF",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400137 "-DPIC",
Colin Crossd0296792016-12-01 16:55:40 -0800138 ],
Leon Scroggins III3993b372018-07-16 10:43:45 -0400139 local_include_dirs: [
140 "simd",
141 "simd/nasm",
142 ],
Colin Crossd0296792016-12-01 16:55:40 -0800143 },
144 x86_64: {
145 // x86-64 SSE2
146 srcs: [
Leon Scroggins III3993b372018-07-16 10:43:45 -0400147 "simd/x86_64/jccolor-avx2.asm",
148 "simd/x86_64/jccolor-sse2.asm",
149 "simd/x86_64/jcgray-avx2.asm",
150 "simd/x86_64/jcgray-sse2.asm",
151 "simd/x86_64/jchuff-sse2.asm",
152 "simd/x86_64/jcphuff-sse2.asm",
153 "simd/x86_64/jcsample-avx2.asm",
154 "simd/x86_64/jcsample-sse2.asm",
155 "simd/x86_64/jdcolor-avx2.asm",
156 "simd/x86_64/jdcolor-sse2.asm",
157 "simd/x86_64/jdmerge-avx2.asm",
158 "simd/x86_64/jdmerge-sse2.asm",
159 "simd/x86_64/jdsample-avx2.asm",
160 "simd/x86_64/jdsample-sse2.asm",
161 "simd/x86_64/jfdctflt-sse.asm",
162 "simd/x86_64/jfdctfst-sse2.asm",
163 "simd/x86_64/jfdctint-avx2.asm",
164 "simd/x86_64/jfdctint-sse2.asm",
165 "simd/x86_64/jidctflt-sse2.asm",
166 "simd/x86_64/jidctfst-sse2.asm",
167 "simd/x86_64/jidctint-avx2.asm",
168 "simd/x86_64/jidctint-sse2.asm",
169 "simd/x86_64/jidctred-sse2.asm",
170 "simd/x86_64/jquantf-sse2.asm",
171 "simd/x86_64/jquanti-avx2.asm",
172 "simd/x86_64/jquanti-sse2.asm",
173 "simd/x86_64/jsimd.c",
174 "simd/x86_64/jsimdcpu.asm",
Colin Crossd0296792016-12-01 16:55:40 -0800175 ],
176 asflags: [
Colin Crossd0296792016-12-01 16:55:40 -0800177 "-DELF",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400178 "-DPIC",
179 "-D__x86_64__",
Colin Crossd0296792016-12-01 16:55:40 -0800180 ],
Leon Scroggins III3993b372018-07-16 10:43:45 -0400181 local_include_dirs: [
182 "simd",
183 "simd/nasm",
184 ],
Colin Crossd0296792016-12-01 16:55:40 -0800185 },
186 mips: {
187 srcs: ["jsimd_none.c"],
188 },
189 mips64: {
190 srcs: ["jsimd_none.c"],
191 },
192 },
193}
194
195// Also build as a shared library.
196cc_library {
197 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700198 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700199 vendor_available: true,
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700200 target: {
201 // TODO(b/67474260) Turn this back on
202 darwin: {
203 enabled: false,
204 },
205 },
Justin Yunaf8db6c2017-07-24 15:19:44 +0900206 vndk: {
207 enabled: true,
208 },
Colin Crossd0296792016-12-01 16:55:40 -0800209 defaults: ["libjpeg-defaults"],
210 export_include_dirs: ["."],
211}
212
213// Build static library against the NDK
214cc_library_static {
215 name: "libjpeg_static_ndk",
216 defaults: ["libjpeg-defaults"],
217 export_include_dirs: ["."],
218 sdk_version: "17",
219}
220
221// Definition for TJBench
222cc_binary {
223 name: "tjbench",
224
225 whole_static_libs: ["libjpeg"],
226
227 multilib: {
228 lib32: {
229 stem: "tj32",
230 },
231 lib64: {
232 stem: "tj64",
233 },
234 },
235
236 compile_multilib: "both",
237
238 cflags: [
239 "-DBMP_SUPPORTED",
240 "-DPPM_SUPPORTED",
Colin Cross33d068e2016-12-03 13:51:07 -0800241 "-Werror",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400242 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -0800243 ],
244
245 srcs: [
Colin Crossd0296792016-12-01 16:55:40 -0800246 "jdatadst-tj.c",
247 "jdatasrc-tj.c",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400248 "rdbmp.c",
249 "rdppm.c",
250 "tjbench.c",
251 "tjutil.c",
252 "transupp.c",
253 "turbojpeg.c",
254 "wrbmp.c",
255 "wrppm.c",
Colin Crossd0296792016-12-01 16:55:40 -0800256 ],
257}