xref: /aosp_15_r20/external/skia/third_party/zlib/BUILD.gn (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2016 Google Inc.
2*c8dee2aaSAndroid Build Coastguard Worker#
3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard Workerimport("../third_party.gni")
7*c8dee2aaSAndroid Build Coastguard Workerimport("zlib.gni")
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Workerif (skia_use_system_zlib) {
10*c8dee2aaSAndroid Build Coastguard Worker  system("zlib") {
11*c8dee2aaSAndroid Build Coastguard Worker    libs = [ "z" ]
12*c8dee2aaSAndroid Build Coastguard Worker  }
13*c8dee2aaSAndroid Build Coastguard Worker} else {
14*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_internal_config") {
15*c8dee2aaSAndroid Build Coastguard Worker    defines = [ "ZLIB_IMPLEMENTATION" ]
16*c8dee2aaSAndroid Build Coastguard Worker  }
17*c8dee2aaSAndroid Build Coastguard Worker  source_set("zlib_common_headers") {
18*c8dee2aaSAndroid Build Coastguard Worker    visibility = [ ":*" ]
19*c8dee2aaSAndroid Build Coastguard Worker    sources = [
20*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/chromeconf.h",
21*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/deflate.h",
22*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inffast.h",
23*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inffixed.h",
24*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inflate.h",
25*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inftrees.h",
26*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zconf.h",
27*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zlib.h",
28*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zutil.h",
29*c8dee2aaSAndroid Build Coastguard Worker    ]
30*c8dee2aaSAndroid Build Coastguard Worker  }
31*c8dee2aaSAndroid Build Coastguard Worker
32*c8dee2aaSAndroid Build Coastguard Worker  use_arm_neon_optimizations =
33*c8dee2aaSAndroid Build Coastguard Worker      (current_cpu == "arm" || current_cpu == "arm64") && (is_clang || !is_win)
34*c8dee2aaSAndroid Build Coastguard Worker  use_x86_x64_optimizations =
35*c8dee2aaSAndroid Build Coastguard Worker      (current_cpu == "x86" || current_cpu == "x64") && !is_ios
36*c8dee2aaSAndroid Build Coastguard Worker
37*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_adler32_simd_config") {
38*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
39*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "ADLER32_SIMD_SSSE3" ]
40*c8dee2aaSAndroid Build Coastguard Worker      if (is_win) {
41*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "X86_WINDOWS" ]
42*c8dee2aaSAndroid Build Coastguard Worker      } else {
43*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "X86_NOT_WINDOWS" ]
44*c8dee2aaSAndroid Build Coastguard Worker      }
45*c8dee2aaSAndroid Build Coastguard Worker    }
46*c8dee2aaSAndroid Build Coastguard Worker
47*c8dee2aaSAndroid Build Coastguard Worker    if (use_arm_neon_optimizations) {
48*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "ADLER32_SIMD_NEON" ]
49*c8dee2aaSAndroid Build Coastguard Worker    }
50*c8dee2aaSAndroid Build Coastguard Worker  }
51*c8dee2aaSAndroid Build Coastguard Worker
52*c8dee2aaSAndroid Build Coastguard Worker  source_set("zlib_adler32_simd") {
53*c8dee2aaSAndroid Build Coastguard Worker    visibility = [ ":*" ]
54*c8dee2aaSAndroid Build Coastguard Worker
55*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
56*c8dee2aaSAndroid Build Coastguard Worker      sources = [
57*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/adler32_simd.c",
58*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/adler32_simd.h",
59*c8dee2aaSAndroid Build Coastguard Worker      ]
60*c8dee2aaSAndroid Build Coastguard Worker
61*c8dee2aaSAndroid Build Coastguard Worker      if (!is_win || is_clang) {
62*c8dee2aaSAndroid Build Coastguard Worker        cflags = [ "-mssse3" ]
63*c8dee2aaSAndroid Build Coastguard Worker      }
64*c8dee2aaSAndroid Build Coastguard Worker    }
65*c8dee2aaSAndroid Build Coastguard Worker
66*c8dee2aaSAndroid Build Coastguard Worker    if (use_arm_neon_optimizations) {
67*c8dee2aaSAndroid Build Coastguard Worker      sources = [
68*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/adler32_simd.c",
69*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/adler32_simd.h",
70*c8dee2aaSAndroid Build Coastguard Worker      ]
71*c8dee2aaSAndroid Build Coastguard Worker    }
72*c8dee2aaSAndroid Build Coastguard Worker
73*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":zlib_internal_config" ]
74*c8dee2aaSAndroid Build Coastguard Worker
75*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":zlib_adler32_simd_config" ]
76*c8dee2aaSAndroid Build Coastguard Worker
77*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":zlib_common_headers" ]
78*c8dee2aaSAndroid Build Coastguard Worker  }
79*c8dee2aaSAndroid Build Coastguard Worker
80*c8dee2aaSAndroid Build Coastguard Worker  if (use_arm_neon_optimizations) {
81*c8dee2aaSAndroid Build Coastguard Worker    config("zlib_arm_crc32_config") {
82*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "CRC32_ARMV8_CRC32" ]
83*c8dee2aaSAndroid Build Coastguard Worker      if (is_android) {
84*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_ANDROID" ]
85*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_linux || is_chromeos) {
86*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_LINUX" ]
87*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_mac) {
88*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_MACOS" ]
89*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_ios) {
90*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_IOS" ]
91*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_fuchsia) {
92*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_FUCHSIA" ]
93*c8dee2aaSAndroid Build Coastguard Worker      } else if (is_win) {
94*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "ARMV8_OS_WINDOWS" ]
95*c8dee2aaSAndroid Build Coastguard Worker      } else {
96*c8dee2aaSAndroid Build Coastguard Worker        assert(false, "Unsupported ARM OS")
97*c8dee2aaSAndroid Build Coastguard Worker      }
98*c8dee2aaSAndroid Build Coastguard Worker    }
99*c8dee2aaSAndroid Build Coastguard Worker
100*c8dee2aaSAndroid Build Coastguard Worker    source_set("zlib_arm_crc32") {
101*c8dee2aaSAndroid Build Coastguard Worker      visibility = [ ":*" ]
102*c8dee2aaSAndroid Build Coastguard Worker
103*c8dee2aaSAndroid Build Coastguard Worker      include_dirs = [
104*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/",
105*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/",
106*c8dee2aaSAndroid Build Coastguard Worker      ]
107*c8dee2aaSAndroid Build Coastguard Worker
108*c8dee2aaSAndroid Build Coastguard Worker      if (!is_win && !is_clang) {
109*c8dee2aaSAndroid Build Coastguard Worker        cflags_c = [ "-march=armv8-a+aes+crc" ]
110*c8dee2aaSAndroid Build Coastguard Worker      }
111*c8dee2aaSAndroid Build Coastguard Worker
112*c8dee2aaSAndroid Build Coastguard Worker      sources = [
113*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/crc32_simd.c",
114*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/crc32_simd.h",
115*c8dee2aaSAndroid Build Coastguard Worker      ]
116*c8dee2aaSAndroid Build Coastguard Worker
117*c8dee2aaSAndroid Build Coastguard Worker      configs += [ ":zlib_internal_config" ]
118*c8dee2aaSAndroid Build Coastguard Worker
119*c8dee2aaSAndroid Build Coastguard Worker      public_configs = [ ":zlib_arm_crc32_config" ]
120*c8dee2aaSAndroid Build Coastguard Worker
121*c8dee2aaSAndroid Build Coastguard Worker      public_deps = [ ":zlib_common_headers" ]
122*c8dee2aaSAndroid Build Coastguard Worker    }
123*c8dee2aaSAndroid Build Coastguard Worker  }
124*c8dee2aaSAndroid Build Coastguard Worker
125*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_inflate_chunk_simd_config") {
126*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
127*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "INFLATE_CHUNK_SIMD_SSE2" ]
128*c8dee2aaSAndroid Build Coastguard Worker
129*c8dee2aaSAndroid Build Coastguard Worker      if (current_cpu == "x64") {
130*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "INFLATE_CHUNK_READ_64LE" ]
131*c8dee2aaSAndroid Build Coastguard Worker      }
132*c8dee2aaSAndroid Build Coastguard Worker    }
133*c8dee2aaSAndroid Build Coastguard Worker
134*c8dee2aaSAndroid Build Coastguard Worker    if (use_arm_neon_optimizations) {
135*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "INFLATE_CHUNK_SIMD_NEON" ]
136*c8dee2aaSAndroid Build Coastguard Worker
137*c8dee2aaSAndroid Build Coastguard Worker      if (current_cpu == "arm64") {
138*c8dee2aaSAndroid Build Coastguard Worker        defines += [ "INFLATE_CHUNK_READ_64LE" ]
139*c8dee2aaSAndroid Build Coastguard Worker      }
140*c8dee2aaSAndroid Build Coastguard Worker    }
141*c8dee2aaSAndroid Build Coastguard Worker  }
142*c8dee2aaSAndroid Build Coastguard Worker
143*c8dee2aaSAndroid Build Coastguard Worker  source_set("zlib_inflate_chunk_simd") {
144*c8dee2aaSAndroid Build Coastguard Worker    visibility = [ ":*" ]
145*c8dee2aaSAndroid Build Coastguard Worker
146*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations || use_arm_neon_optimizations) {
147*c8dee2aaSAndroid Build Coastguard Worker      include_dirs = [
148*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/",
149*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/",
150*c8dee2aaSAndroid Build Coastguard Worker      ]
151*c8dee2aaSAndroid Build Coastguard Worker      sources = [
152*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/chunkcopy.h",
153*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/inffast_chunk.c",
154*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/inffast_chunk.h",
155*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/contrib/optimizations/inflate.c",
156*c8dee2aaSAndroid Build Coastguard Worker      ]
157*c8dee2aaSAndroid Build Coastguard Worker    }
158*c8dee2aaSAndroid Build Coastguard Worker
159*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":zlib_internal_config" ]
160*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":zlib_warnings" ]
161*c8dee2aaSAndroid Build Coastguard Worker
162*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":zlib_inflate_chunk_simd_config" ]
163*c8dee2aaSAndroid Build Coastguard Worker
164*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":zlib_common_headers" ]
165*c8dee2aaSAndroid Build Coastguard Worker  }
166*c8dee2aaSAndroid Build Coastguard Worker
167*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_crc32_simd_config") {
168*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
169*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "CRC32_SIMD_SSE42_PCLMUL" ]
170*c8dee2aaSAndroid Build Coastguard Worker    }
171*c8dee2aaSAndroid Build Coastguard Worker  }
172*c8dee2aaSAndroid Build Coastguard Worker
173*c8dee2aaSAndroid Build Coastguard Worker  source_set("zlib_crc32_simd") {
174*c8dee2aaSAndroid Build Coastguard Worker    visibility = [ ":*" ]
175*c8dee2aaSAndroid Build Coastguard Worker
176*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
177*c8dee2aaSAndroid Build Coastguard Worker      sources = [
178*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/crc32_simd.c",
179*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/crc32_simd.h",
180*c8dee2aaSAndroid Build Coastguard Worker        "../externals/zlib/crc_folding.c",
181*c8dee2aaSAndroid Build Coastguard Worker      ]
182*c8dee2aaSAndroid Build Coastguard Worker
183*c8dee2aaSAndroid Build Coastguard Worker      if (!is_win || is_clang) {
184*c8dee2aaSAndroid Build Coastguard Worker        cflags = [
185*c8dee2aaSAndroid Build Coastguard Worker          "-msse4.2",
186*c8dee2aaSAndroid Build Coastguard Worker          "-mpclmul",
187*c8dee2aaSAndroid Build Coastguard Worker        ]
188*c8dee2aaSAndroid Build Coastguard Worker      }
189*c8dee2aaSAndroid Build Coastguard Worker    }
190*c8dee2aaSAndroid Build Coastguard Worker
191*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":zlib_internal_config" ]
192*c8dee2aaSAndroid Build Coastguard Worker
193*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":zlib_crc32_simd_config" ]
194*c8dee2aaSAndroid Build Coastguard Worker
195*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":zlib_common_headers" ]
196*c8dee2aaSAndroid Build Coastguard Worker  }
197*c8dee2aaSAndroid Build Coastguard Worker
198*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_slide_hash_simd_config") {
199*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
200*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "DEFLATE_SLIDE_HASH_SSE2" ]
201*c8dee2aaSAndroid Build Coastguard Worker    }
202*c8dee2aaSAndroid Build Coastguard Worker
203*c8dee2aaSAndroid Build Coastguard Worker    if (use_arm_neon_optimizations) {
204*c8dee2aaSAndroid Build Coastguard Worker      defines = [ "DEFLATE_SLIDE_HASH_NEON" ]
205*c8dee2aaSAndroid Build Coastguard Worker    }
206*c8dee2aaSAndroid Build Coastguard Worker  }
207*c8dee2aaSAndroid Build Coastguard Worker
208*c8dee2aaSAndroid Build Coastguard Worker  source_set("zlib_slide_hash_simd") {
209*c8dee2aaSAndroid Build Coastguard Worker    visibility = [ ":*" ]
210*c8dee2aaSAndroid Build Coastguard Worker
211*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations) {
212*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "../externals/zlib/slide_hash_simd.h" ]
213*c8dee2aaSAndroid Build Coastguard Worker    }
214*c8dee2aaSAndroid Build Coastguard Worker
215*c8dee2aaSAndroid Build Coastguard Worker    if (use_arm_neon_optimizations) {
216*c8dee2aaSAndroid Build Coastguard Worker      sources = [ "../externals/zlib/slide_hash_simd.h" ]
217*c8dee2aaSAndroid Build Coastguard Worker    }
218*c8dee2aaSAndroid Build Coastguard Worker
219*c8dee2aaSAndroid Build Coastguard Worker    configs += [ ":zlib_internal_config" ]
220*c8dee2aaSAndroid Build Coastguard Worker
221*c8dee2aaSAndroid Build Coastguard Worker    public_configs = [ ":zlib_slide_hash_simd_config" ]
222*c8dee2aaSAndroid Build Coastguard Worker
223*c8dee2aaSAndroid Build Coastguard Worker    public_deps = [ ":zlib_common_headers" ]
224*c8dee2aaSAndroid Build Coastguard Worker  }
225*c8dee2aaSAndroid Build Coastguard Worker
226*c8dee2aaSAndroid Build Coastguard Worker  config("zlib_warnings") {
227*c8dee2aaSAndroid Build Coastguard Worker    if (is_clang) {
228*c8dee2aaSAndroid Build Coastguard Worker      cflags = [
229*c8dee2aaSAndroid Build Coastguard Worker        "-Wno-incompatible-pointer-types",
230*c8dee2aaSAndroid Build Coastguard Worker        "-Wunused-variable",
231*c8dee2aaSAndroid Build Coastguard Worker      ]
232*c8dee2aaSAndroid Build Coastguard Worker    }
233*c8dee2aaSAndroid Build Coastguard Worker  }
234*c8dee2aaSAndroid Build Coastguard Worker
235*c8dee2aaSAndroid Build Coastguard Worker  third_party("zlib") {
236*c8dee2aaSAndroid Build Coastguard Worker    public_include_dirs = [ "../externals/zlib" ]
237*c8dee2aaSAndroid Build Coastguard Worker    defines = []
238*c8dee2aaSAndroid Build Coastguard Worker    deps = []
239*c8dee2aaSAndroid Build Coastguard Worker    configs = []
240*c8dee2aaSAndroid Build Coastguard Worker
241*c8dee2aaSAndroid Build Coastguard Worker    sources = [
242*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/adler32.c",
243*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/chromeconf.h",
244*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/compress.c",
245*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/contrib/optimizations/insert_string.h",
246*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/cpu_features.c",
247*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/cpu_features.h",
248*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/crc32.c",
249*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/crc32.h",
250*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/deflate.c",
251*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/deflate.h",
252*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/gzclose.c",
253*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/gzguts.h",
254*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/gzlib.c",
255*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/gzread.c",
256*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/gzwrite.c",
257*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/infback.c",
258*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inffast.c",
259*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inffast.h",
260*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inffixed.h",
261*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inflate.h",
262*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inftrees.c",
263*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/inftrees.h",
264*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/trees.c",
265*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/trees.h",
266*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/uncompr.c",
267*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zconf.h",
268*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zlib.h",
269*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zutil.c",
270*c8dee2aaSAndroid Build Coastguard Worker      "../externals/zlib/zutil.h",
271*c8dee2aaSAndroid Build Coastguard Worker    ]
272*c8dee2aaSAndroid Build Coastguard Worker
273*c8dee2aaSAndroid Build Coastguard Worker    if (is_android) {
274*c8dee2aaSAndroid Build Coastguard Worker      deps += [ "//third_party/cpu-features" ]
275*c8dee2aaSAndroid Build Coastguard Worker    }
276*c8dee2aaSAndroid Build Coastguard Worker
277*c8dee2aaSAndroid Build Coastguard Worker    if (!use_x86_x64_optimizations && !use_arm_neon_optimizations) {
278*c8dee2aaSAndroid Build Coastguard Worker      defines += [ "CPU_NO_SIMD" ]
279*c8dee2aaSAndroid Build Coastguard Worker    }
280*c8dee2aaSAndroid Build Coastguard Worker
281*c8dee2aaSAndroid Build Coastguard Worker    if (use_x86_x64_optimizations || use_arm_neon_optimizations) {
282*c8dee2aaSAndroid Build Coastguard Worker      deps += [
283*c8dee2aaSAndroid Build Coastguard Worker        ":zlib_adler32_simd",
284*c8dee2aaSAndroid Build Coastguard Worker        ":zlib_inflate_chunk_simd",
285*c8dee2aaSAndroid Build Coastguard Worker        ":zlib_slide_hash_simd",
286*c8dee2aaSAndroid Build Coastguard Worker      ]
287*c8dee2aaSAndroid Build Coastguard Worker
288*c8dee2aaSAndroid Build Coastguard Worker      if (use_x86_x64_optimizations) {
289*c8dee2aaSAndroid Build Coastguard Worker        deps += [ ":zlib_crc32_simd" ]
290*c8dee2aaSAndroid Build Coastguard Worker      } else if (use_arm_neon_optimizations) {
291*c8dee2aaSAndroid Build Coastguard Worker        deps += [ ":zlib_arm_crc32" ]
292*c8dee2aaSAndroid Build Coastguard Worker      }
293*c8dee2aaSAndroid Build Coastguard Worker    } else {
294*c8dee2aaSAndroid Build Coastguard Worker      sources += [ "../externals/zlib/inflate.c" ]
295*c8dee2aaSAndroid Build Coastguard Worker    }
296*c8dee2aaSAndroid Build Coastguard Worker
297*c8dee2aaSAndroid Build Coastguard Worker    configs += [
298*c8dee2aaSAndroid Build Coastguard Worker      ":zlib_internal_config",
299*c8dee2aaSAndroid Build Coastguard Worker      ":zlib_warnings",
300*c8dee2aaSAndroid Build Coastguard Worker    ]
301*c8dee2aaSAndroid Build Coastguard Worker
302*c8dee2aaSAndroid Build Coastguard Worker    allow_circular_includes_from = deps
303*c8dee2aaSAndroid Build Coastguard Worker  }
304*c8dee2aaSAndroid Build Coastguard Worker}
305*c8dee2aaSAndroid Build Coastguard Worker
306*c8dee2aaSAndroid Build Coastguard Workerconfig("zlib_config") {
307*c8dee2aaSAndroid Build Coastguard Worker}
308*c8dee2aaSAndroid Build Coastguard Worker
309*c8dee2aaSAndroid Build Coastguard Workerthird_party("compression_utils_portable") {
310*c8dee2aaSAndroid Build Coastguard Worker  visibility = [ "//third_party/externals/angle2:*" ]
311*c8dee2aaSAndroid Build Coastguard Worker  public_include_dirs = [ "../externals/zlib/google" ]
312*c8dee2aaSAndroid Build Coastguard Worker  sources = [
313*c8dee2aaSAndroid Build Coastguard Worker    "../externals/zlib/google/compression_utils_portable.cc",
314*c8dee2aaSAndroid Build Coastguard Worker    "../externals/zlib/google/compression_utils_portable.h",
315*c8dee2aaSAndroid Build Coastguard Worker  ]
316*c8dee2aaSAndroid Build Coastguard Worker  public_deps = [ ":zlib" ]  # either system or from source
317*c8dee2aaSAndroid Build Coastguard Worker}
318