xref: /aosp_15_r20/external/libjpeg-turbo/BUILD.gn (revision dfc6aa5c1cfd4bc4e2018dc74aa96e29ee49c6da)
1*dfc6aa5cSAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors. All rights reserved.
2*dfc6aa5cSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*dfc6aa5cSAndroid Build Coastguard Worker# found in the LICENSE file.
4*dfc6aa5cSAndroid Build Coastguard Worker
5*dfc6aa5cSAndroid Build Coastguard Worker# Do not use the targets in this file unless you need a certain libjpeg
6*dfc6aa5cSAndroid Build Coastguard Worker# implementation. Use the meta target //third_party:jpeg instead.
7*dfc6aa5cSAndroid Build Coastguard Worker
8*dfc6aa5cSAndroid Build Coastguard Workerimport("//build/config/features.gni")
9*dfc6aa5cSAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni")
10*dfc6aa5cSAndroid Build Coastguard Workerif (current_cpu == "arm" || current_cpu == "arm64") {
11*dfc6aa5cSAndroid Build Coastguard Worker  import("//build/config/arm.gni")
12*dfc6aa5cSAndroid Build Coastguard Worker}
13*dfc6aa5cSAndroid Build Coastguard Worker
14*dfc6aa5cSAndroid Build Coastguard Workerassert(
15*dfc6aa5cSAndroid Build Coastguard Worker    use_blink,
16*dfc6aa5cSAndroid Build Coastguard Worker    "This is not used if blink is not enabled, don't drag it in unintentionally")
17*dfc6aa5cSAndroid Build Coastguard Worker
18*dfc6aa5cSAndroid Build Coastguard Workersource_set("libjpeg_headers") {
19*dfc6aa5cSAndroid Build Coastguard Worker  sources = [
20*dfc6aa5cSAndroid Build Coastguard Worker    "jconfig.h",
21*dfc6aa5cSAndroid Build Coastguard Worker    "jdct.h",
22*dfc6aa5cSAndroid Build Coastguard Worker    "jinclude.h",
23*dfc6aa5cSAndroid Build Coastguard Worker    "jmorecfg.h",
24*dfc6aa5cSAndroid Build Coastguard Worker    "jpeglib.h",
25*dfc6aa5cSAndroid Build Coastguard Worker    "jpeglibmangler.h",
26*dfc6aa5cSAndroid Build Coastguard Worker  ]
27*dfc6aa5cSAndroid Build Coastguard Worker}
28*dfc6aa5cSAndroid Build Coastguard Worker
29*dfc6aa5cSAndroid Build Coastguard Workerif (current_cpu == "x86" || current_cpu == "x64") {
30*dfc6aa5cSAndroid Build Coastguard Worker  import("//third_party/nasm/nasm_assemble.gni")
31*dfc6aa5cSAndroid Build Coastguard Worker
32*dfc6aa5cSAndroid Build Coastguard Worker  nasm_assemble("simd_asm") {
33*dfc6aa5cSAndroid Build Coastguard Worker    defines = []
34*dfc6aa5cSAndroid Build Coastguard Worker    include_dirs = [ "simd/nasm/" ]
35*dfc6aa5cSAndroid Build Coastguard Worker
36*dfc6aa5cSAndroid Build Coastguard Worker    inputs = [
37*dfc6aa5cSAndroid Build Coastguard Worker      "simd/nasm/jdct.inc",
38*dfc6aa5cSAndroid Build Coastguard Worker      "simd/nasm/jsimdcfg.inc",
39*dfc6aa5cSAndroid Build Coastguard Worker      "simd/nasm/jsimdext.inc",
40*dfc6aa5cSAndroid Build Coastguard Worker      "simd/nasm/jcolsamp.inc",
41*dfc6aa5cSAndroid Build Coastguard Worker    ]
42*dfc6aa5cSAndroid Build Coastguard Worker
43*dfc6aa5cSAndroid Build Coastguard Worker    if (current_cpu == "x86") {
44*dfc6aa5cSAndroid Build Coastguard Worker      include_dirs += [ "simd/i386/" ]
45*dfc6aa5cSAndroid Build Coastguard Worker      inputs += [
46*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolext-avx2.asm",
47*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolext-mmx.asm",
48*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolext-sse2.asm",
49*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgryext-avx2.asm",
50*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgryext-mmx.asm",
51*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgryext-sse2.asm",
52*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolext-avx2.asm",
53*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolext-mmx.asm",
54*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolext-sse2.asm",
55*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmrgext-avx2.asm",
56*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmrgext-mmx.asm",
57*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmrgext-sse2.asm",
58*dfc6aa5cSAndroid Build Coastguard Worker      ]
59*dfc6aa5cSAndroid Build Coastguard Worker      sources = [
60*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolor-avx2.asm",
61*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolor-mmx.asm",
62*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jccolor-sse2.asm",
63*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgray-avx2.asm",
64*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgray-mmx.asm",
65*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcgray-sse2.asm",
66*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jchuff-sse2.asm",
67*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcphuff-sse2.asm",
68*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcsample-avx2.asm",
69*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcsample-mmx.asm",
70*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jcsample-sse2.asm",
71*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolor-avx2.asm",
72*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolor-mmx.asm",
73*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdcolor-sse2.asm",
74*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmerge-avx2.asm",
75*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmerge-mmx.asm",
76*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdmerge-sse2.asm",
77*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdsample-avx2.asm",
78*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdsample-mmx.asm",
79*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jdsample-sse2.asm",
80*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctflt-3dn.asm",
81*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctflt-sse.asm",
82*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctfst-mmx.asm",
83*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctfst-sse2.asm",
84*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctint-avx2.asm",
85*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctint-mmx.asm",
86*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jfdctint-sse2.asm",
87*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctflt-3dn.asm",
88*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctflt-sse.asm",
89*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctflt-sse2.asm",
90*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctfst-mmx.asm",
91*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctfst-sse2.asm",
92*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctint-avx2.asm",
93*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctint-mmx.asm",
94*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctint-sse2.asm",
95*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctred-mmx.asm",
96*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jidctred-sse2.asm",
97*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquant-3dn.asm",
98*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquant-mmx.asm",
99*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquant-sse.asm",
100*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquantf-sse2.asm",
101*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquanti-avx2.asm",
102*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jquanti-sse2.asm",
103*dfc6aa5cSAndroid Build Coastguard Worker        "simd/i386/jsimdcpu.asm",
104*dfc6aa5cSAndroid Build Coastguard Worker      ]
105*dfc6aa5cSAndroid Build Coastguard Worker      defines += [
106*dfc6aa5cSAndroid Build Coastguard Worker        "__x86__",
107*dfc6aa5cSAndroid Build Coastguard Worker        "PIC",
108*dfc6aa5cSAndroid Build Coastguard Worker      ]
109*dfc6aa5cSAndroid Build Coastguard Worker    } else if (current_cpu == "x64") {
110*dfc6aa5cSAndroid Build Coastguard Worker      include_dirs += [ "simd/x86_64/" ]
111*dfc6aa5cSAndroid Build Coastguard Worker      inputs += [
112*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jccolext-avx2.asm",
113*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jccolext-sse2.asm",
114*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcgryext-avx2.asm",
115*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcgryext-sse2.asm",
116*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdcolext-avx2.asm",
117*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdcolext-sse2.asm",
118*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdmrgext-avx2.asm",
119*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdmrgext-sse2.asm",
120*dfc6aa5cSAndroid Build Coastguard Worker      ]
121*dfc6aa5cSAndroid Build Coastguard Worker      sources = [
122*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jccolor-avx2.asm",
123*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jccolor-sse2.asm",
124*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcgray-avx2.asm",
125*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcgray-sse2.asm",
126*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jchuff-sse2.asm",
127*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcphuff-sse2.asm",
128*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcsample-avx2.asm",
129*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jcsample-sse2.asm",
130*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdcolor-avx2.asm",
131*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdcolor-sse2.asm",
132*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdmerge-avx2.asm",
133*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdmerge-sse2.asm",
134*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdsample-avx2.asm",
135*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jdsample-sse2.asm",
136*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jfdctflt-sse.asm",
137*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jfdctfst-sse2.asm",
138*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jfdctint-avx2.asm",
139*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jfdctint-sse2.asm",
140*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jidctflt-sse2.asm",
141*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jidctfst-sse2.asm",
142*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jidctint-avx2.asm",
143*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jidctint-sse2.asm",
144*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jidctred-sse2.asm",
145*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jquantf-sse2.asm",
146*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jquanti-avx2.asm",
147*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jquanti-sse2.asm",
148*dfc6aa5cSAndroid Build Coastguard Worker        "simd/x86_64/jsimdcpu.asm",
149*dfc6aa5cSAndroid Build Coastguard Worker      ]
150*dfc6aa5cSAndroid Build Coastguard Worker      defines += [
151*dfc6aa5cSAndroid Build Coastguard Worker        "__x86_64__",
152*dfc6aa5cSAndroid Build Coastguard Worker        "PIC",
153*dfc6aa5cSAndroid Build Coastguard Worker      ]
154*dfc6aa5cSAndroid Build Coastguard Worker    }
155*dfc6aa5cSAndroid Build Coastguard Worker
156*dfc6aa5cSAndroid Build Coastguard Worker    if (is_win) {
157*dfc6aa5cSAndroid Build Coastguard Worker      defines += [ "MSVC" ]
158*dfc6aa5cSAndroid Build Coastguard Worker      if (current_cpu == "x86") {
159*dfc6aa5cSAndroid Build Coastguard Worker        defines += [ "WIN32" ]
160*dfc6aa5cSAndroid Build Coastguard Worker      } else {
161*dfc6aa5cSAndroid Build Coastguard Worker        defines += [ "WIN64" ]
162*dfc6aa5cSAndroid Build Coastguard Worker      }
163*dfc6aa5cSAndroid Build Coastguard Worker    } else if (is_mac || is_ios) {
164*dfc6aa5cSAndroid Build Coastguard Worker      defines += [ "MACHO" ]
165*dfc6aa5cSAndroid Build Coastguard Worker    } else if (is_linux || is_android || is_fuchsia || is_chromeos) {
166*dfc6aa5cSAndroid Build Coastguard Worker      defines += [ "ELF" ]
167*dfc6aa5cSAndroid Build Coastguard Worker    }
168*dfc6aa5cSAndroid Build Coastguard Worker  }
169*dfc6aa5cSAndroid Build Coastguard Worker}
170*dfc6aa5cSAndroid Build Coastguard Worker
171*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("simd") {
172*dfc6aa5cSAndroid Build Coastguard Worker  include_dirs = [ "." ]
173*dfc6aa5cSAndroid Build Coastguard Worker  deps = [ ":libjpeg_headers" ]
174*dfc6aa5cSAndroid Build Coastguard Worker  defines = [ "MANGLE_JPEG_NAMES" ]
175*dfc6aa5cSAndroid Build Coastguard Worker
176*dfc6aa5cSAndroid Build Coastguard Worker  if (current_cpu == "x86") {
177*dfc6aa5cSAndroid Build Coastguard Worker    deps += [ ":simd_asm" ]
178*dfc6aa5cSAndroid Build Coastguard Worker    sources = [ "simd/i386/jsimd.c" ]
179*dfc6aa5cSAndroid Build Coastguard Worker  } else if (current_cpu == "x64") {
180*dfc6aa5cSAndroid Build Coastguard Worker    deps += [ ":simd_asm" ]
181*dfc6aa5cSAndroid Build Coastguard Worker    sources = [ "simd/x86_64/jsimd.c" ]
182*dfc6aa5cSAndroid Build Coastguard Worker  } else if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) {
183*dfc6aa5cSAndroid Build Coastguard Worker    include_dirs += [ "simd/arm/" ]
184*dfc6aa5cSAndroid Build Coastguard Worker
185*dfc6aa5cSAndroid Build Coastguard Worker    sources = [
186*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jccolor-neon.c",
187*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jcgray-neon.c",
188*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jcphuff-neon.c",
189*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jcsample-neon.c",
190*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jdcolor-neon.c",
191*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jdmerge-neon.c",
192*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jdsample-neon.c",
193*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jfdctfst-neon.c",
194*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jfdctint-neon.c",
195*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jidctfst-neon.c",
196*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jidctint-neon.c",
197*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jidctred-neon.c",
198*dfc6aa5cSAndroid Build Coastguard Worker      "simd/arm/jquanti-neon.c",
199*dfc6aa5cSAndroid Build Coastguard Worker    ]
200*dfc6aa5cSAndroid Build Coastguard Worker    if (current_cpu == "arm") {
201*dfc6aa5cSAndroid Build Coastguard Worker      sources += [
202*dfc6aa5cSAndroid Build Coastguard Worker        "simd/arm/aarch32/jchuff-neon.c",
203*dfc6aa5cSAndroid Build Coastguard Worker        "simd/arm/aarch32/jsimd.c",
204*dfc6aa5cSAndroid Build Coastguard Worker      ]
205*dfc6aa5cSAndroid Build Coastguard Worker    } else if (current_cpu == "arm64") {
206*dfc6aa5cSAndroid Build Coastguard Worker      sources += [
207*dfc6aa5cSAndroid Build Coastguard Worker        "simd/arm/aarch64/jchuff-neon.c",
208*dfc6aa5cSAndroid Build Coastguard Worker        "simd/arm/aarch64/jsimd.c",
209*dfc6aa5cSAndroid Build Coastguard Worker      ]
210*dfc6aa5cSAndroid Build Coastguard Worker    }
211*dfc6aa5cSAndroid Build Coastguard Worker
212*dfc6aa5cSAndroid Build Coastguard Worker    defines += [ "NEON_INTRINSICS" ]
213*dfc6aa5cSAndroid Build Coastguard Worker
214*dfc6aa5cSAndroid Build Coastguard Worker    configs -= [ "//build/config/compiler:default_optimization" ]
215*dfc6aa5cSAndroid Build Coastguard Worker    configs += [ "//build/config/compiler:optimize_speed" ]
216*dfc6aa5cSAndroid Build Coastguard Worker  } else {
217*dfc6aa5cSAndroid Build Coastguard Worker    sources = [ "jsimd_none.c" ]
218*dfc6aa5cSAndroid Build Coastguard Worker  }
219*dfc6aa5cSAndroid Build Coastguard Worker
220*dfc6aa5cSAndroid Build Coastguard Worker  if (is_win) {
221*dfc6aa5cSAndroid Build Coastguard Worker    cflags = [ "/wd4245" ]
222*dfc6aa5cSAndroid Build Coastguard Worker  }
223*dfc6aa5cSAndroid Build Coastguard Worker}
224*dfc6aa5cSAndroid Build Coastguard Worker
225*dfc6aa5cSAndroid Build Coastguard Workerconfig("libjpeg_config") {
226*dfc6aa5cSAndroid Build Coastguard Worker  include_dirs = [ "." ]
227*dfc6aa5cSAndroid Build Coastguard Worker  defines = [ "MANGLE_JPEG_NAMES" ]
228*dfc6aa5cSAndroid Build Coastguard Worker}
229*dfc6aa5cSAndroid Build Coastguard Worker
230*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("libjpeg") {
231*dfc6aa5cSAndroid Build Coastguard Worker  sources = [
232*dfc6aa5cSAndroid Build Coastguard Worker    "jcapimin.c",
233*dfc6aa5cSAndroid Build Coastguard Worker    "jcapistd.c",
234*dfc6aa5cSAndroid Build Coastguard Worker    "jccoefct.c",
235*dfc6aa5cSAndroid Build Coastguard Worker    "jccolor.c",
236*dfc6aa5cSAndroid Build Coastguard Worker    "jcdctmgr.c",
237*dfc6aa5cSAndroid Build Coastguard Worker    "jchuff.c",
238*dfc6aa5cSAndroid Build Coastguard Worker    "jcicc.c",
239*dfc6aa5cSAndroid Build Coastguard Worker    "jcinit.c",
240*dfc6aa5cSAndroid Build Coastguard Worker    "jcmainct.c",
241*dfc6aa5cSAndroid Build Coastguard Worker    "jcmarker.c",
242*dfc6aa5cSAndroid Build Coastguard Worker    "jcmaster.c",
243*dfc6aa5cSAndroid Build Coastguard Worker    "jcomapi.c",
244*dfc6aa5cSAndroid Build Coastguard Worker    "jcparam.c",
245*dfc6aa5cSAndroid Build Coastguard Worker    "jcphuff.c",
246*dfc6aa5cSAndroid Build Coastguard Worker    "jcprepct.c",
247*dfc6aa5cSAndroid Build Coastguard Worker    "jcsample.c",
248*dfc6aa5cSAndroid Build Coastguard Worker    "jctrans.c",
249*dfc6aa5cSAndroid Build Coastguard Worker    "jdapimin.c",
250*dfc6aa5cSAndroid Build Coastguard Worker    "jdapistd.c",
251*dfc6aa5cSAndroid Build Coastguard Worker    "jdatadst.c",
252*dfc6aa5cSAndroid Build Coastguard Worker    "jdatasrc.c",
253*dfc6aa5cSAndroid Build Coastguard Worker    "jdcoefct.c",
254*dfc6aa5cSAndroid Build Coastguard Worker    "jdcolor.c",
255*dfc6aa5cSAndroid Build Coastguard Worker    "jddctmgr.c",
256*dfc6aa5cSAndroid Build Coastguard Worker    "jdhuff.c",
257*dfc6aa5cSAndroid Build Coastguard Worker    "jdicc.c",
258*dfc6aa5cSAndroid Build Coastguard Worker    "jdinput.c",
259*dfc6aa5cSAndroid Build Coastguard Worker    "jdmainct.c",
260*dfc6aa5cSAndroid Build Coastguard Worker    "jdmarker.c",
261*dfc6aa5cSAndroid Build Coastguard Worker    "jdmaster.c",
262*dfc6aa5cSAndroid Build Coastguard Worker    "jdmerge.c",
263*dfc6aa5cSAndroid Build Coastguard Worker    "jdphuff.c",
264*dfc6aa5cSAndroid Build Coastguard Worker    "jdpostct.c",
265*dfc6aa5cSAndroid Build Coastguard Worker    "jdsample.c",
266*dfc6aa5cSAndroid Build Coastguard Worker    "jdtrans.c",
267*dfc6aa5cSAndroid Build Coastguard Worker    "jerror.c",
268*dfc6aa5cSAndroid Build Coastguard Worker    "jfdctflt.c",
269*dfc6aa5cSAndroid Build Coastguard Worker    "jfdctfst.c",
270*dfc6aa5cSAndroid Build Coastguard Worker    "jfdctint.c",
271*dfc6aa5cSAndroid Build Coastguard Worker    "jidctflt.c",
272*dfc6aa5cSAndroid Build Coastguard Worker    "jidctfst.c",
273*dfc6aa5cSAndroid Build Coastguard Worker    "jidctint.c",
274*dfc6aa5cSAndroid Build Coastguard Worker    "jidctred.c",
275*dfc6aa5cSAndroid Build Coastguard Worker    "jmemmgr.c",
276*dfc6aa5cSAndroid Build Coastguard Worker    "jmemnobs.c",
277*dfc6aa5cSAndroid Build Coastguard Worker    "jpeg_nbits_table.c",
278*dfc6aa5cSAndroid Build Coastguard Worker    "jquant1.c",
279*dfc6aa5cSAndroid Build Coastguard Worker    "jquant2.c",
280*dfc6aa5cSAndroid Build Coastguard Worker    "jutils.c",
281*dfc6aa5cSAndroid Build Coastguard Worker  ]
282*dfc6aa5cSAndroid Build Coastguard Worker
283*dfc6aa5cSAndroid Build Coastguard Worker  defines = [
284*dfc6aa5cSAndroid Build Coastguard Worker    "WITH_SIMD",
285*dfc6aa5cSAndroid Build Coastguard Worker    "NO_GETENV",
286*dfc6aa5cSAndroid Build Coastguard Worker    "NO_PUTENV",
287*dfc6aa5cSAndroid Build Coastguard Worker  ]
288*dfc6aa5cSAndroid Build Coastguard Worker
289*dfc6aa5cSAndroid Build Coastguard Worker  configs += [ ":libjpeg_config" ]
290*dfc6aa5cSAndroid Build Coastguard Worker
291*dfc6aa5cSAndroid Build Coastguard Worker  public_configs = [ ":libjpeg_config" ]
292*dfc6aa5cSAndroid Build Coastguard Worker  public_deps = [ ":libjpeg_headers" ]
293*dfc6aa5cSAndroid Build Coastguard Worker
294*dfc6aa5cSAndroid Build Coastguard Worker  # MemorySanitizer doesn't support assembly code, so keep it disabled in x86
295*dfc6aa5cSAndroid Build Coastguard Worker  # and x64 MSan builds for now.
296*dfc6aa5cSAndroid Build Coastguard Worker  if (is_msan && (current_cpu == "x86" || current_cpu == "x64")) {
297*dfc6aa5cSAndroid Build Coastguard Worker    sources += [ "jsimd_none.c" ]
298*dfc6aa5cSAndroid Build Coastguard Worker  } else {
299*dfc6aa5cSAndroid Build Coastguard Worker    public_deps += [ ":simd" ]
300*dfc6aa5cSAndroid Build Coastguard Worker
301*dfc6aa5cSAndroid Build Coastguard Worker    if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) {
302*dfc6aa5cSAndroid Build Coastguard Worker      defines += [ "NEON_INTRINSICS" ]
303*dfc6aa5cSAndroid Build Coastguard Worker    }
304*dfc6aa5cSAndroid Build Coastguard Worker  }
305*dfc6aa5cSAndroid Build Coastguard Worker}
306*dfc6aa5cSAndroid Build Coastguard Worker
307*dfc6aa5cSAndroid Build Coastguard Workerstatic_library("turbojpeg") {
308*dfc6aa5cSAndroid Build Coastguard Worker  sources = [
309*dfc6aa5cSAndroid Build Coastguard Worker    "jdatadst-tj.c",
310*dfc6aa5cSAndroid Build Coastguard Worker    "jdatasrc-tj.c",
311*dfc6aa5cSAndroid Build Coastguard Worker    "rdbmp.c",
312*dfc6aa5cSAndroid Build Coastguard Worker    "rdppm.c",
313*dfc6aa5cSAndroid Build Coastguard Worker    "transupp.c",
314*dfc6aa5cSAndroid Build Coastguard Worker    "turbojpeg.c",
315*dfc6aa5cSAndroid Build Coastguard Worker    "wrbmp.c",
316*dfc6aa5cSAndroid Build Coastguard Worker    "wrppm.c",
317*dfc6aa5cSAndroid Build Coastguard Worker  ]
318*dfc6aa5cSAndroid Build Coastguard Worker
319*dfc6aa5cSAndroid Build Coastguard Worker  defines = [
320*dfc6aa5cSAndroid Build Coastguard Worker    "WITH_SIMD",
321*dfc6aa5cSAndroid Build Coastguard Worker    "BMP_SUPPORTED",
322*dfc6aa5cSAndroid Build Coastguard Worker    "PPM_SUPPORTED",
323*dfc6aa5cSAndroid Build Coastguard Worker  ]
324*dfc6aa5cSAndroid Build Coastguard Worker
325*dfc6aa5cSAndroid Build Coastguard Worker  configs += [ ":libjpeg_config" ]
326*dfc6aa5cSAndroid Build Coastguard Worker
327*dfc6aa5cSAndroid Build Coastguard Worker  public_configs = [ ":libjpeg_config" ]
328*dfc6aa5cSAndroid Build Coastguard Worker  public_deps = [ ":libjpeg" ]
329*dfc6aa5cSAndroid Build Coastguard Worker}
330*dfc6aa5cSAndroid Build Coastguard Worker
331*dfc6aa5cSAndroid Build Coastguard Workerif (build_with_chromium) {
332*dfc6aa5cSAndroid Build Coastguard Worker  import("//testing/test.gni")
333*dfc6aa5cSAndroid Build Coastguard Worker
334*dfc6aa5cSAndroid Build Coastguard Worker  test("libjpeg_turbo_unittests") {
335*dfc6aa5cSAndroid Build Coastguard Worker    testonly = true
336*dfc6aa5cSAndroid Build Coastguard Worker
337*dfc6aa5cSAndroid Build Coastguard Worker    sources = [
338*dfc6aa5cSAndroid Build Coastguard Worker      "cdjpeg.c",
339*dfc6aa5cSAndroid Build Coastguard Worker      "cjpeg.c",
340*dfc6aa5cSAndroid Build Coastguard Worker      "djpeg.c",
341*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/cjpeg-gtest-wrapper.cpp",
342*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/djpeg-gtest-wrapper.cpp",
343*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/gtest-utils.cpp",
344*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/jpegtran-gtest-wrapper.cpp",
345*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/tjbench-gtest-wrapper.cpp",
346*dfc6aa5cSAndroid Build Coastguard Worker      "gtest/tjunittest-gtest-wrapper.cpp",
347*dfc6aa5cSAndroid Build Coastguard Worker      "jpegtran.c",
348*dfc6aa5cSAndroid Build Coastguard Worker      "md5/md5.c",
349*dfc6aa5cSAndroid Build Coastguard Worker      "md5/md5hl.c",
350*dfc6aa5cSAndroid Build Coastguard Worker      "rdcolmap.c",
351*dfc6aa5cSAndroid Build Coastguard Worker      "rdgif.c",
352*dfc6aa5cSAndroid Build Coastguard Worker      "rdswitch.c",
353*dfc6aa5cSAndroid Build Coastguard Worker      "tjbench.c",
354*dfc6aa5cSAndroid Build Coastguard Worker      "tjunittest.c",
355*dfc6aa5cSAndroid Build Coastguard Worker      "tjutil.c",
356*dfc6aa5cSAndroid Build Coastguard Worker    ]
357*dfc6aa5cSAndroid Build Coastguard Worker
358*dfc6aa5cSAndroid Build Coastguard Worker    deps = [
359*dfc6aa5cSAndroid Build Coastguard Worker      ":turbojpeg",
360*dfc6aa5cSAndroid Build Coastguard Worker      "//base",
361*dfc6aa5cSAndroid Build Coastguard Worker      "//testing/gtest",
362*dfc6aa5cSAndroid Build Coastguard Worker      "//testing/gtest:gtest_main",
363*dfc6aa5cSAndroid Build Coastguard Worker    ]
364*dfc6aa5cSAndroid Build Coastguard Worker
365*dfc6aa5cSAndroid Build Coastguard Worker    data = [ "testimages/" ]
366*dfc6aa5cSAndroid Build Coastguard Worker
367*dfc6aa5cSAndroid Build Coastguard Worker    defines = [
368*dfc6aa5cSAndroid Build Coastguard Worker      "GTEST",
369*dfc6aa5cSAndroid Build Coastguard Worker      "WITH_SIMD",
370*dfc6aa5cSAndroid Build Coastguard Worker      "BMP_SUPPORTED",
371*dfc6aa5cSAndroid Build Coastguard Worker      "PPM_SUPPORTED",
372*dfc6aa5cSAndroid Build Coastguard Worker    ]
373*dfc6aa5cSAndroid Build Coastguard Worker
374*dfc6aa5cSAndroid Build Coastguard Worker    include_dirs = [
375*dfc6aa5cSAndroid Build Coastguard Worker      "//third_party/googletest/src/googletest/include/gtest",
376*dfc6aa5cSAndroid Build Coastguard Worker      ".",
377*dfc6aa5cSAndroid Build Coastguard Worker    ]
378*dfc6aa5cSAndroid Build Coastguard Worker
379*dfc6aa5cSAndroid Build Coastguard Worker    configs -= [ "//build/config/compiler:chromium_code" ]
380*dfc6aa5cSAndroid Build Coastguard Worker    configs += [ "//build/config/compiler:no_chromium_code" ]
381*dfc6aa5cSAndroid Build Coastguard Worker
382*dfc6aa5cSAndroid Build Coastguard Worker    if (is_win) {
383*dfc6aa5cSAndroid Build Coastguard Worker      cflags = [ "-U_CRT_SECURE_NO_DEPRECATE" ]
384*dfc6aa5cSAndroid Build Coastguard Worker    }
385*dfc6aa5cSAndroid Build Coastguard Worker  }
386*dfc6aa5cSAndroid Build Coastguard Worker}
387