• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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
9        "-Werror",
10        "-Wno-sign-compare",
11        "-Wno-unused-parameter",
12    ],
13    srcs: [
14        "jaricom.c",
15        "jcapimin.c",
16        "jcapistd.c",
17        "jcarith.c",
18        "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",
34        "jdarith.c",
35        "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/arm/jsimd.c",
76                "simd/arm/jsimd_neon.S",
77            ],
78        },
79        arm64: {
80            // ARM v8 64-bit NEON
81            srcs: [
82                "simd/arm64/jsimd.c",
83                "simd/arm64/jsimd_neon.S",
84            ],
85        },
86        x86: {
87            // x86 MMX and SSE2
88            srcs: [
89                "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",
134            ],
135            asflags: [
136                "-DPIC",
137            ],
138            local_include_dirs: [
139                "simd",
140                "simd/nasm",
141            ],
142        },
143        x86_64: {
144            // x86-64 SSE2
145            srcs: [
146                "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",
174            ],
175            asflags: [
176                "-DPIC",
177                "-D__x86_64__",
178            ],
179            local_include_dirs: [
180                "simd",
181                "simd/nasm",
182            ],
183        },
184        mips: {
185            srcs: ["jsimd_none.c"],
186        },
187        mips64: {
188            srcs: ["jsimd_none.c"],
189        },
190    },
191
192    target: {
193        linux: {
194            asflags: [
195                "-DELF",
196            ],
197        },
198        darwin: {
199            asflags: [
200                "-DMACHO",
201            ],
202        },
203        windows_x86: {
204            asflags: [
205                "-DWIN32",
206            ],
207        },
208        windows_x86_64: {
209            asflags: [
210                "-DWIN64",
211            ],
212        },
213    },
214}
215
216// Also build as a shared library.
217cc_library {
218    name: "libjpeg",
219    host_supported: true,
220    vendor_available: true,
221    vndk: {
222        enabled: true,
223    },
224    defaults: ["libjpeg-defaults"],
225    export_include_dirs: ["."],
226    target: {
227        windows: {
228            enabled: true,
229        },
230    },
231}
232
233// Build static library against the NDK
234cc_library_static {
235    name: "libjpeg_static_ndk",
236    defaults: ["libjpeg-defaults"],
237    export_include_dirs: ["."],
238    sdk_version: "17",
239}
240
241// Definition for TJBench
242cc_binary {
243    name: "tjbench",
244
245    whole_static_libs: ["libjpeg"],
246
247    multilib: {
248        lib32: {
249            stem: "tj32",
250        },
251        lib64: {
252            stem: "tj64",
253        },
254    },
255
256    compile_multilib: "both",
257
258    cflags: [
259        "-DBMP_SUPPORTED",
260        "-DPPM_SUPPORTED",
261        "-Werror",
262        "-Wno-unused-parameter",
263    ],
264
265    srcs: [
266        "jdatadst-tj.c",
267        "jdatasrc-tj.c",
268        "rdbmp.c",
269        "rdppm.c",
270        "tjbench.c",
271        "tjutil.c",
272        "transupp.c",
273        "turbojpeg.c",
274        "wrbmp.c",
275        "wrppm.c",
276    ],
277}
278