blob: 1c5d924ce5e91fb7ea074cf7e642d9d8603fbe11 [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 IIIbd7903e2018-02-28 14:05:04 -05009 "-Wno-sign-compare",
Colin Crossd0296792016-12-01 16:55:40 -080010 "-Wno-unused-parameter",
11 "-Werror",
12 ],
13 srcs: [
14 "jcapimin.c",
15 "jcapistd.c",
Alex Naidis90043202016-10-18 15:18:47 +020016 "jaricom.c",
17 "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: [
75 "simd/jsimd_arm_neon.S",
76 "simd/jsimd_arm.c",
77 ],
Colin Crossd0296792016-12-01 16:55:40 -080078 },
79 arm64: {
80 // ARM v8 64-bit NEON
81 srcs: [
82 "simd/jsimd_arm64_neon.S",
83 "simd/jsimd_arm64.c",
84 ],
85 },
86 x86: {
87 // x86 MMX and SSE2
88 srcs: [
89 "simd/jsimd_i386.c",
90 "simd/jccolor-mmx.asm",
91 "simd/jccolor-sse2.asm",
92 "simd/jcgray-mmx.asm",
93 "simd/jcgray-sse2.asm",
94 "simd/jchuff-sse2.asm",
95 "simd/jcsample-mmx.asm",
96 "simd/jcsample-sse2.asm",
97 "simd/jdcolor-mmx.asm",
98 "simd/jdcolor-sse2.asm",
99 "simd/jdmerge-mmx.asm",
100 "simd/jdmerge-sse2.asm",
101 "simd/jdsample-mmx.asm",
102 "simd/jdsample-sse2.asm",
103 "simd/jfdctflt-3dn.asm",
104 "simd/jfdctflt-sse.asm",
105 "simd/jfdctfst-mmx.asm",
106 "simd/jfdctfst-sse2.asm",
107 "simd/jfdctint-mmx.asm",
108 "simd/jfdctint-sse2.asm",
109 "simd/jidctflt-3dn.asm",
110 "simd/jidctflt-sse2.asm",
111 "simd/jidctflt-sse.asm",
112 "simd/jidctfst-mmx.asm",
113 "simd/jidctfst-sse2.asm",
114 "simd/jidctint-mmx.asm",
115 "simd/jidctint-sse2.asm",
116 "simd/jidctred-mmx.asm",
117 "simd/jidctred-sse2.asm",
118 "simd/jquant-3dn.asm",
119 "simd/jquantf-sse2.asm",
120 "simd/jquanti-sse2.asm",
121 "simd/jquant-mmx.asm",
122 "simd/jquant-sse.asm",
123 "simd/jsimdcpu.asm",
124 ],
125 asflags: [
126 "-DPIC",
127 "-DELF",
128 ],
129 local_include_dirs: ["simd"],
130 },
131 x86_64: {
132 // x86-64 SSE2
133 srcs: [
134 "simd/jsimd_x86_64.c",
135 "simd/jccolor-sse2-64.asm",
136 "simd/jcgray-sse2-64.asm",
137 "simd/jchuff-sse2-64.asm",
138 "simd/jcsample-sse2-64.asm",
139 "simd/jdcolor-sse2-64.asm",
140 "simd/jdmerge-sse2-64.asm",
141 "simd/jdsample-sse2-64.asm",
142 "simd/jfdctflt-sse-64.asm",
143 "simd/jfdctfst-sse2-64.asm",
144 "simd/jfdctint-sse2-64.asm",
145 "simd/jidctflt-sse2-64.asm",
146 "simd/jidctfst-sse2-64.asm",
147 "simd/jidctint-sse2-64.asm",
148 "simd/jidctred-sse2-64.asm",
149 "simd/jquantf-sse2-64.asm",
150 "simd/jquanti-sse2-64.asm",
151 ],
152 asflags: [
153 "-D__x86_64__",
154 "-DPIC",
155 "-DELF",
156 ],
157 local_include_dirs: ["simd"],
158 },
159 mips: {
160 srcs: ["jsimd_none.c"],
161 },
162 mips64: {
163 srcs: ["jsimd_none.c"],
164 },
165 },
166}
167
168// Also build as a shared library.
169cc_library {
170 name: "libjpeg",
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700171 host_supported: true,
Jayant Chowdharyab70cfc2017-05-16 17:16:30 -0700172 vendor_available: true,
Greg Hartmanaeec0bb2017-10-04 18:31:12 -0700173 target: {
174 // TODO(b/67474260) Turn this back on
175 darwin: {
176 enabled: false,
177 },
178 },
Justin Yunaf8db6c2017-07-24 15:19:44 +0900179 vndk: {
180 enabled: true,
181 },
Colin Crossd0296792016-12-01 16:55:40 -0800182 defaults: ["libjpeg-defaults"],
183 export_include_dirs: ["."],
184}
185
186// Build static library against the NDK
187cc_library_static {
188 name: "libjpeg_static_ndk",
189 defaults: ["libjpeg-defaults"],
190 export_include_dirs: ["."],
191 sdk_version: "17",
192}
193
194// Definition for TJBench
195cc_binary {
196 name: "tjbench",
197
198 whole_static_libs: ["libjpeg"],
199
200 multilib: {
201 lib32: {
202 stem: "tj32",
203 },
204 lib64: {
205 stem: "tj64",
206 },
207 },
208
209 compile_multilib: "both",
210
211 cflags: [
212 "-DBMP_SUPPORTED",
213 "-DPPM_SUPPORTED",
214 "-Wno-unused-parameter",
Colin Cross33d068e2016-12-03 13:51:07 -0800215 "-Werror",
Colin Crossd0296792016-12-01 16:55:40 -0800216 ],
217
218 srcs: [
219 "tjbench.c",
220 "bmp.c",
221 "tjutil.c",
222 "rdbmp.c",
223 "rdppm.c",
224 "wrbmp.c",
225 "wrppm.c",
226 "turbojpeg.c",
227 "transupp.c",
228 "jdatadst-tj.c",
229 "jdatasrc-tj.c",
230 ],
231}