blob: f69f64edd47977dbbdceaf07307093e8f543af44 [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 },
184 mips: {
185 srcs: ["jsimd_none.c"],
186 },
187 mips64: {
188 srcs: ["jsimd_none.c"],
189 },
190 },
Jerome Gaillardd2a27d52018-10-31 19:37:18 +0000191
192 target: {
193 linux: {
194 asflags: [
195 "-DELF",
196 ],
197 },
198 darwin: {
199 asflags: [
200 "-DMACHO",
201 ],
202 },
203 },
Ivan Lozanofaaabc92018-11-27 12:59:52 -0800204 xom: false,
Colin Crossd0296792016-12-01 16:55:40 -0800205}
206
207// Also build as a shared library.
208cc_library {
209 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700210 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700211 vendor_available: true,
Justin Yunaf8db6c2017-07-24 15:19:44 +0900212 vndk: {
213 enabled: true,
214 },
Colin Crossd0296792016-12-01 16:55:40 -0800215 defaults: ["libjpeg-defaults"],
216 export_include_dirs: ["."],
217}
218
219// Build static library against the NDK
220cc_library_static {
221 name: "libjpeg_static_ndk",
222 defaults: ["libjpeg-defaults"],
223 export_include_dirs: ["."],
224 sdk_version: "17",
225}
226
227// Definition for TJBench
228cc_binary {
229 name: "tjbench",
230
231 whole_static_libs: ["libjpeg"],
232
233 multilib: {
234 lib32: {
235 stem: "tj32",
236 },
237 lib64: {
238 stem: "tj64",
239 },
240 },
241
242 compile_multilib: "both",
243
244 cflags: [
245 "-DBMP_SUPPORTED",
246 "-DPPM_SUPPORTED",
Colin Cross33d068e2016-12-03 13:51:07 -0800247 "-Werror",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400248 "-Wno-unused-parameter",
Colin Crossd0296792016-12-01 16:55:40 -0800249 ],
250
251 srcs: [
Colin Crossd0296792016-12-01 16:55:40 -0800252 "jdatadst-tj.c",
253 "jdatasrc-tj.c",
Leon Scroggins III3993b372018-07-16 10:43:45 -0400254 "rdbmp.c",
255 "rdppm.c",
256 "tjbench.c",
257 "tjutil.c",
258 "transupp.c",
259 "turbojpeg.c",
260 "wrbmp.c",
261 "wrppm.c",
Colin Crossd0296792016-12-01 16:55:40 -0800262 ],
263}