1*86ee64e7SAndroid Build Coastguard Worker# Copyright 2013 The Chromium Authors 2*86ee64e7SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*86ee64e7SAndroid Build Coastguard Worker# found in the LICENSE file. 4*86ee64e7SAndroid Build Coastguard Worker 5*86ee64e7SAndroid Build Coastguard Workerimport("//build/config/compiler/compiler.gni") 6*86ee64e7SAndroid Build Coastguard Workerimport("//build/config/dcheck_always_on.gni") 7*86ee64e7SAndroid Build Coastguard Worker 8*86ee64e7SAndroid Build Coastguard Workerdeclare_args() { 9*86ee64e7SAndroid Build Coastguard Worker # Expose zlib's symbols, used by Node.js to provide zlib APIs for its native 10*86ee64e7SAndroid Build Coastguard Worker # modules. 11*86ee64e7SAndroid Build Coastguard Worker zlib_symbols_visible = false 12*86ee64e7SAndroid Build Coastguard Worker} 13*86ee64e7SAndroid Build Coastguard Worker 14*86ee64e7SAndroid Build Coastguard Workerif (build_with_chromium) { 15*86ee64e7SAndroid Build Coastguard Worker import("//testing/test.gni") 16*86ee64e7SAndroid Build Coastguard Worker} 17*86ee64e7SAndroid Build Coastguard Worker 18*86ee64e7SAndroid Build Coastguard Workerif (current_cpu == "arm" || current_cpu == "arm64") { 19*86ee64e7SAndroid Build Coastguard Worker import("//build/config/arm.gni") 20*86ee64e7SAndroid Build Coastguard Worker} 21*86ee64e7SAndroid Build Coastguard Worker 22*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_config") { 23*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 24*86ee64e7SAndroid Build Coastguard Worker 25*86ee64e7SAndroid Build Coastguard Worker if (zlib_symbols_visible) { 26*86ee64e7SAndroid Build Coastguard Worker defines = [ "ZLIB_DLL" ] 27*86ee64e7SAndroid Build Coastguard Worker } 28*86ee64e7SAndroid Build Coastguard Worker} 29*86ee64e7SAndroid Build Coastguard Worker 30*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_internal_config") { 31*86ee64e7SAndroid Build Coastguard Worker defines = [ "ZLIB_IMPLEMENTATION" ] 32*86ee64e7SAndroid Build Coastguard Worker 33*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 34*86ee64e7SAndroid Build Coastguard Worker # Build code using -O3, see: crbug.com/1084371. 35*86ee64e7SAndroid Build Coastguard Worker configs = [ "//build/config/compiler:optimize_speed" ] 36*86ee64e7SAndroid Build Coastguard Worker } 37*86ee64e7SAndroid Build Coastguard Worker if (is_debug || dcheck_always_on || use_fuzzing_engine) { 38*86ee64e7SAndroid Build Coastguard Worker # Enable zlib's asserts in debug and fuzzer builds. 39*86ee64e7SAndroid Build Coastguard Worker defines += [ "ZLIB_DEBUG" ] 40*86ee64e7SAndroid Build Coastguard Worker } 41*86ee64e7SAndroid Build Coastguard Worker 42*86ee64e7SAndroid Build Coastguard Worker if (is_win && !is_clang) { 43*86ee64e7SAndroid Build Coastguard Worker # V8 supports building with msvc, these silence some warnings that 44*86ee64e7SAndroid Build Coastguard Worker # causes compilation to fail (https://crbug.com/1255096). 45*86ee64e7SAndroid Build Coastguard Worker cflags = [ 46*86ee64e7SAndroid Build Coastguard Worker "/wd4244", 47*86ee64e7SAndroid Build Coastguard Worker "/wd4100", 48*86ee64e7SAndroid Build Coastguard Worker "/wd4702", 49*86ee64e7SAndroid Build Coastguard Worker "/wd4127", 50*86ee64e7SAndroid Build Coastguard Worker ] 51*86ee64e7SAndroid Build Coastguard Worker } 52*86ee64e7SAndroid Build Coastguard Worker} 53*86ee64e7SAndroid Build Coastguard Worker 54*86ee64e7SAndroid Build Coastguard Workersource_set("zlib_common_headers") { 55*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 56*86ee64e7SAndroid Build Coastguard Worker 57*86ee64e7SAndroid Build Coastguard Worker sources = [ 58*86ee64e7SAndroid Build Coastguard Worker "chromeconf.h", 59*86ee64e7SAndroid Build Coastguard Worker "deflate.h", 60*86ee64e7SAndroid Build Coastguard Worker "inffast.h", 61*86ee64e7SAndroid Build Coastguard Worker "inffixed.h", 62*86ee64e7SAndroid Build Coastguard Worker "inflate.h", 63*86ee64e7SAndroid Build Coastguard Worker "inftrees.h", 64*86ee64e7SAndroid Build Coastguard Worker "zconf.h", 65*86ee64e7SAndroid Build Coastguard Worker "zlib.h", 66*86ee64e7SAndroid Build Coastguard Worker "zutil.h", 67*86ee64e7SAndroid Build Coastguard Worker ] 68*86ee64e7SAndroid Build Coastguard Worker} 69*86ee64e7SAndroid Build Coastguard Worker 70*86ee64e7SAndroid Build Coastguard Workeruse_arm_neon_optimizations = false 71*86ee64e7SAndroid Build Coastguard Workerif ((current_cpu == "arm" || current_cpu == "arm64") && 72*86ee64e7SAndroid Build Coastguard Worker !(is_win && !is_clang)) { 73*86ee64e7SAndroid Build Coastguard Worker # TODO([email protected]): Optimizations temporarily disabled for 74*86ee64e7SAndroid Build Coastguard Worker # Windows on Arm MSVC builds, see http://crbug.com/v8/10012. 75*86ee64e7SAndroid Build Coastguard Worker if (arm_use_neon) { 76*86ee64e7SAndroid Build Coastguard Worker use_arm_neon_optimizations = true 77*86ee64e7SAndroid Build Coastguard Worker } 78*86ee64e7SAndroid Build Coastguard Worker} 79*86ee64e7SAndroid Build Coastguard Worker 80*86ee64e7SAndroid Build Coastguard Workeruse_x86_x64_optimizations = 81*86ee64e7SAndroid Build Coastguard Worker (current_cpu == "x86" || current_cpu == "x64") && !is_ios 82*86ee64e7SAndroid Build Coastguard Worker 83*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_adler32_simd_config") { 84*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 85*86ee64e7SAndroid Build Coastguard Worker defines = [ "ADLER32_SIMD_SSSE3" ] 86*86ee64e7SAndroid Build Coastguard Worker if (is_win) { 87*86ee64e7SAndroid Build Coastguard Worker defines += [ "X86_WINDOWS" ] 88*86ee64e7SAndroid Build Coastguard Worker } else { 89*86ee64e7SAndroid Build Coastguard Worker defines += [ "X86_NOT_WINDOWS" ] 90*86ee64e7SAndroid Build Coastguard Worker } 91*86ee64e7SAndroid Build Coastguard Worker } 92*86ee64e7SAndroid Build Coastguard Worker 93*86ee64e7SAndroid Build Coastguard Worker if (use_arm_neon_optimizations) { 94*86ee64e7SAndroid Build Coastguard Worker defines = [ "ADLER32_SIMD_NEON" ] 95*86ee64e7SAndroid Build Coastguard Worker } 96*86ee64e7SAndroid Build Coastguard Worker} 97*86ee64e7SAndroid Build Coastguard Worker 98*86ee64e7SAndroid Build Coastguard Workersource_set("zlib_adler32_simd") { 99*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 100*86ee64e7SAndroid Build Coastguard Worker 101*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 102*86ee64e7SAndroid Build Coastguard Worker sources = [ 103*86ee64e7SAndroid Build Coastguard Worker "adler32_simd.c", 104*86ee64e7SAndroid Build Coastguard Worker "adler32_simd.h", 105*86ee64e7SAndroid Build Coastguard Worker ] 106*86ee64e7SAndroid Build Coastguard Worker 107*86ee64e7SAndroid Build Coastguard Worker if (!is_win || is_clang) { 108*86ee64e7SAndroid Build Coastguard Worker cflags = [ "-mssse3" ] 109*86ee64e7SAndroid Build Coastguard Worker } 110*86ee64e7SAndroid Build Coastguard Worker } 111*86ee64e7SAndroid Build Coastguard Worker 112*86ee64e7SAndroid Build Coastguard Worker if (use_arm_neon_optimizations) { 113*86ee64e7SAndroid Build Coastguard Worker sources = [ 114*86ee64e7SAndroid Build Coastguard Worker "adler32_simd.c", 115*86ee64e7SAndroid Build Coastguard Worker "adler32_simd.h", 116*86ee64e7SAndroid Build Coastguard Worker ] 117*86ee64e7SAndroid Build Coastguard Worker } 118*86ee64e7SAndroid Build Coastguard Worker 119*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_internal_config" ] 120*86ee64e7SAndroid Build Coastguard Worker 121*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_adler32_simd_config" ] 122*86ee64e7SAndroid Build Coastguard Worker 123*86ee64e7SAndroid Build Coastguard Worker public_deps = [ ":zlib_common_headers" ] 124*86ee64e7SAndroid Build Coastguard Worker} 125*86ee64e7SAndroid Build Coastguard Worker 126*86ee64e7SAndroid Build Coastguard Workerif (use_arm_neon_optimizations) { 127*86ee64e7SAndroid Build Coastguard Worker config("zlib_arm_crc32_config") { 128*86ee64e7SAndroid Build Coastguard Worker defines = [ "CRC32_ARMV8_CRC32" ] 129*86ee64e7SAndroid Build Coastguard Worker if (is_android) { 130*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_ANDROID" ] 131*86ee64e7SAndroid Build Coastguard Worker } else if (is_linux || is_chromeos) { 132*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_LINUX" ] 133*86ee64e7SAndroid Build Coastguard Worker } else if (is_mac) { 134*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_MACOS" ] 135*86ee64e7SAndroid Build Coastguard Worker } else if (is_ios) { 136*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_IOS" ] 137*86ee64e7SAndroid Build Coastguard Worker } else if (is_fuchsia) { 138*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_FUCHSIA" ] 139*86ee64e7SAndroid Build Coastguard Worker } else if (is_win) { 140*86ee64e7SAndroid Build Coastguard Worker defines += [ "ARMV8_OS_WINDOWS" ] 141*86ee64e7SAndroid Build Coastguard Worker } else { 142*86ee64e7SAndroid Build Coastguard Worker assert(false, "Unsupported ARM OS") 143*86ee64e7SAndroid Build Coastguard Worker } 144*86ee64e7SAndroid Build Coastguard Worker } 145*86ee64e7SAndroid Build Coastguard Worker 146*86ee64e7SAndroid Build Coastguard Worker source_set("zlib_arm_crc32") { 147*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 148*86ee64e7SAndroid Build Coastguard Worker 149*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 150*86ee64e7SAndroid Build Coastguard Worker 151*86ee64e7SAndroid Build Coastguard Worker if (!is_win && !is_clang) { 152*86ee64e7SAndroid Build Coastguard Worker assert(!use_thin_lto, 153*86ee64e7SAndroid Build Coastguard Worker "ThinLTO fails mixing different module-level targets") 154*86ee64e7SAndroid Build Coastguard Worker cflags_c = [ "-march=armv8-a+aes+crc" ] 155*86ee64e7SAndroid Build Coastguard Worker } 156*86ee64e7SAndroid Build Coastguard Worker 157*86ee64e7SAndroid Build Coastguard Worker sources = [ 158*86ee64e7SAndroid Build Coastguard Worker "crc32_simd.c", 159*86ee64e7SAndroid Build Coastguard Worker "crc32_simd.h", 160*86ee64e7SAndroid Build Coastguard Worker ] 161*86ee64e7SAndroid Build Coastguard Worker 162*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_internal_config" ] 163*86ee64e7SAndroid Build Coastguard Worker 164*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_arm_crc32_config" ] 165*86ee64e7SAndroid Build Coastguard Worker 166*86ee64e7SAndroid Build Coastguard Worker public_deps = [ ":zlib_common_headers" ] 167*86ee64e7SAndroid Build Coastguard Worker } 168*86ee64e7SAndroid Build Coastguard Worker} 169*86ee64e7SAndroid Build Coastguard Worker 170*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_inflate_chunk_simd_config") { 171*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 172*86ee64e7SAndroid Build Coastguard Worker defines = [ "INFLATE_CHUNK_SIMD_SSE2" ] 173*86ee64e7SAndroid Build Coastguard Worker 174*86ee64e7SAndroid Build Coastguard Worker if (current_cpu == "x64") { 175*86ee64e7SAndroid Build Coastguard Worker defines += [ "INFLATE_CHUNK_READ_64LE" ] 176*86ee64e7SAndroid Build Coastguard Worker } 177*86ee64e7SAndroid Build Coastguard Worker } 178*86ee64e7SAndroid Build Coastguard Worker 179*86ee64e7SAndroid Build Coastguard Worker if (use_arm_neon_optimizations) { 180*86ee64e7SAndroid Build Coastguard Worker defines = [ "INFLATE_CHUNK_SIMD_NEON" ] 181*86ee64e7SAndroid Build Coastguard Worker 182*86ee64e7SAndroid Build Coastguard Worker if (current_cpu == "arm64") { 183*86ee64e7SAndroid Build Coastguard Worker defines += [ "INFLATE_CHUNK_READ_64LE" ] 184*86ee64e7SAndroid Build Coastguard Worker } 185*86ee64e7SAndroid Build Coastguard Worker } 186*86ee64e7SAndroid Build Coastguard Worker} 187*86ee64e7SAndroid Build Coastguard Worker 188*86ee64e7SAndroid Build Coastguard Workersource_set("zlib_inflate_chunk_simd") { 189*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 190*86ee64e7SAndroid Build Coastguard Worker 191*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations || use_arm_neon_optimizations) { 192*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 193*86ee64e7SAndroid Build Coastguard Worker 194*86ee64e7SAndroid Build Coastguard Worker sources = [ 195*86ee64e7SAndroid Build Coastguard Worker "contrib/optimizations/chunkcopy.h", 196*86ee64e7SAndroid Build Coastguard Worker "contrib/optimizations/inffast_chunk.c", 197*86ee64e7SAndroid Build Coastguard Worker "contrib/optimizations/inffast_chunk.h", 198*86ee64e7SAndroid Build Coastguard Worker "contrib/optimizations/inflate.c", 199*86ee64e7SAndroid Build Coastguard Worker ] 200*86ee64e7SAndroid Build Coastguard Worker } 201*86ee64e7SAndroid Build Coastguard Worker 202*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_internal_config" ] 203*86ee64e7SAndroid Build Coastguard Worker 204*86ee64e7SAndroid Build Coastguard Worker # Needed for MSVC, which is still supported by V8 and PDFium. zlib uses K&R C 205*86ee64e7SAndroid Build Coastguard Worker # style function declarations, which triggers warning C4131. 206*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 207*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 208*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_warnings" ] 209*86ee64e7SAndroid Build Coastguard Worker 210*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_inflate_chunk_simd_config" ] 211*86ee64e7SAndroid Build Coastguard Worker 212*86ee64e7SAndroid Build Coastguard Worker public_deps = [ ":zlib_common_headers" ] 213*86ee64e7SAndroid Build Coastguard Worker} 214*86ee64e7SAndroid Build Coastguard Worker 215*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_crc32_simd_config") { 216*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 217*86ee64e7SAndroid Build Coastguard Worker defines = [ "CRC32_SIMD_SSE42_PCLMUL" ] 218*86ee64e7SAndroid Build Coastguard Worker } 219*86ee64e7SAndroid Build Coastguard Worker} 220*86ee64e7SAndroid Build Coastguard Worker 221*86ee64e7SAndroid Build Coastguard Workersource_set("zlib_crc32_simd") { 222*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 223*86ee64e7SAndroid Build Coastguard Worker 224*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 225*86ee64e7SAndroid Build Coastguard Worker sources = [ 226*86ee64e7SAndroid Build Coastguard Worker "crc32_simd.c", 227*86ee64e7SAndroid Build Coastguard Worker "crc32_simd.h", 228*86ee64e7SAndroid Build Coastguard Worker "crc_folding.c", 229*86ee64e7SAndroid Build Coastguard Worker ] 230*86ee64e7SAndroid Build Coastguard Worker 231*86ee64e7SAndroid Build Coastguard Worker if (!is_win || is_clang) { 232*86ee64e7SAndroid Build Coastguard Worker cflags = [ 233*86ee64e7SAndroid Build Coastguard Worker "-msse4.2", 234*86ee64e7SAndroid Build Coastguard Worker "-mpclmul", 235*86ee64e7SAndroid Build Coastguard Worker ] 236*86ee64e7SAndroid Build Coastguard Worker } 237*86ee64e7SAndroid Build Coastguard Worker } 238*86ee64e7SAndroid Build Coastguard Worker 239*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_internal_config" ] 240*86ee64e7SAndroid Build Coastguard Worker 241*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_crc32_simd_config" ] 242*86ee64e7SAndroid Build Coastguard Worker 243*86ee64e7SAndroid Build Coastguard Worker public_deps = [ ":zlib_common_headers" ] 244*86ee64e7SAndroid Build Coastguard Worker} 245*86ee64e7SAndroid Build Coastguard Worker 246*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_slide_hash_simd_config") { 247*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 248*86ee64e7SAndroid Build Coastguard Worker defines = [ "DEFLATE_SLIDE_HASH_SSE2" ] 249*86ee64e7SAndroid Build Coastguard Worker } 250*86ee64e7SAndroid Build Coastguard Worker 251*86ee64e7SAndroid Build Coastguard Worker if (use_arm_neon_optimizations) { 252*86ee64e7SAndroid Build Coastguard Worker defines = [ "DEFLATE_SLIDE_HASH_NEON" ] 253*86ee64e7SAndroid Build Coastguard Worker } 254*86ee64e7SAndroid Build Coastguard Worker} 255*86ee64e7SAndroid Build Coastguard Worker 256*86ee64e7SAndroid Build Coastguard Workersource_set("zlib_slide_hash_simd") { 257*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 258*86ee64e7SAndroid Build Coastguard Worker 259*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 260*86ee64e7SAndroid Build Coastguard Worker sources = [ "slide_hash_simd.h" ] 261*86ee64e7SAndroid Build Coastguard Worker } 262*86ee64e7SAndroid Build Coastguard Worker 263*86ee64e7SAndroid Build Coastguard Worker if (use_arm_neon_optimizations) { 264*86ee64e7SAndroid Build Coastguard Worker sources = [ "slide_hash_simd.h" ] 265*86ee64e7SAndroid Build Coastguard Worker } 266*86ee64e7SAndroid Build Coastguard Worker 267*86ee64e7SAndroid Build Coastguard Worker configs += [ ":zlib_internal_config" ] 268*86ee64e7SAndroid Build Coastguard Worker 269*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_slide_hash_simd_config" ] 270*86ee64e7SAndroid Build Coastguard Worker 271*86ee64e7SAndroid Build Coastguard Worker public_deps = [ ":zlib_common_headers" ] 272*86ee64e7SAndroid Build Coastguard Worker} 273*86ee64e7SAndroid Build Coastguard Worker 274*86ee64e7SAndroid Build Coastguard Workerconfig("zlib_warnings") { 275*86ee64e7SAndroid Build Coastguard Worker if (is_clang) { 276*86ee64e7SAndroid Build Coastguard Worker cflags = [ 277*86ee64e7SAndroid Build Coastguard Worker "-Wno-incompatible-pointer-types", 278*86ee64e7SAndroid Build Coastguard Worker "-Wunused-variable", 279*86ee64e7SAndroid Build Coastguard Worker ] 280*86ee64e7SAndroid Build Coastguard Worker } 281*86ee64e7SAndroid Build Coastguard Worker} 282*86ee64e7SAndroid Build Coastguard Worker 283*86ee64e7SAndroid Build Coastguard Workercomponent("zlib") { 284*86ee64e7SAndroid Build Coastguard Worker if (!is_win) { 285*86ee64e7SAndroid Build Coastguard Worker # Don't stomp on "libzlib" on other platforms. 286*86ee64e7SAndroid Build Coastguard Worker output_name = "chrome_zlib" 287*86ee64e7SAndroid Build Coastguard Worker } 288*86ee64e7SAndroid Build Coastguard Worker 289*86ee64e7SAndroid Build Coastguard Worker sources = [ 290*86ee64e7SAndroid Build Coastguard Worker "adler32.c", 291*86ee64e7SAndroid Build Coastguard Worker "chromeconf.h", 292*86ee64e7SAndroid Build Coastguard Worker "compress.c", 293*86ee64e7SAndroid Build Coastguard Worker "contrib/optimizations/insert_string.h", 294*86ee64e7SAndroid Build Coastguard Worker "cpu_features.c", 295*86ee64e7SAndroid Build Coastguard Worker "cpu_features.h", 296*86ee64e7SAndroid Build Coastguard Worker "crc32.c", 297*86ee64e7SAndroid Build Coastguard Worker "crc32.h", 298*86ee64e7SAndroid Build Coastguard Worker "deflate.c", 299*86ee64e7SAndroid Build Coastguard Worker "deflate.h", 300*86ee64e7SAndroid Build Coastguard Worker "gzclose.c", 301*86ee64e7SAndroid Build Coastguard Worker "gzguts.h", 302*86ee64e7SAndroid Build Coastguard Worker "gzlib.c", 303*86ee64e7SAndroid Build Coastguard Worker "gzread.c", 304*86ee64e7SAndroid Build Coastguard Worker "gzwrite.c", 305*86ee64e7SAndroid Build Coastguard Worker "infback.c", 306*86ee64e7SAndroid Build Coastguard Worker "inffast.c", 307*86ee64e7SAndroid Build Coastguard Worker "inffast.h", 308*86ee64e7SAndroid Build Coastguard Worker "inffixed.h", 309*86ee64e7SAndroid Build Coastguard Worker "inflate.h", 310*86ee64e7SAndroid Build Coastguard Worker "inftrees.c", 311*86ee64e7SAndroid Build Coastguard Worker "inftrees.h", 312*86ee64e7SAndroid Build Coastguard Worker "trees.c", 313*86ee64e7SAndroid Build Coastguard Worker "trees.h", 314*86ee64e7SAndroid Build Coastguard Worker "uncompr.c", 315*86ee64e7SAndroid Build Coastguard Worker "zconf.h", 316*86ee64e7SAndroid Build Coastguard Worker "zlib.h", 317*86ee64e7SAndroid Build Coastguard Worker "zutil.c", 318*86ee64e7SAndroid Build Coastguard Worker "zutil.h", 319*86ee64e7SAndroid Build Coastguard Worker ] 320*86ee64e7SAndroid Build Coastguard Worker 321*86ee64e7SAndroid Build Coastguard Worker defines = [] 322*86ee64e7SAndroid Build Coastguard Worker deps = [] 323*86ee64e7SAndroid Build Coastguard Worker 324*86ee64e7SAndroid Build Coastguard Worker if (!use_x86_x64_optimizations && !use_arm_neon_optimizations) { 325*86ee64e7SAndroid Build Coastguard Worker # Apparently android_cronet bot builds with NEON disabled and 326*86ee64e7SAndroid Build Coastguard Worker # we also should disable optimizations for iOS@x86 (a.k.a. simulator). 327*86ee64e7SAndroid Build Coastguard Worker defines += [ "CPU_NO_SIMD" ] 328*86ee64e7SAndroid Build Coastguard Worker } 329*86ee64e7SAndroid Build Coastguard Worker 330*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations || use_arm_neon_optimizations) { 331*86ee64e7SAndroid Build Coastguard Worker deps += [ 332*86ee64e7SAndroid Build Coastguard Worker ":zlib_adler32_simd", 333*86ee64e7SAndroid Build Coastguard Worker ":zlib_inflate_chunk_simd", 334*86ee64e7SAndroid Build Coastguard Worker ":zlib_slide_hash_simd", 335*86ee64e7SAndroid Build Coastguard Worker ] 336*86ee64e7SAndroid Build Coastguard Worker 337*86ee64e7SAndroid Build Coastguard Worker if (use_x86_x64_optimizations) { 338*86ee64e7SAndroid Build Coastguard Worker deps += [ ":zlib_crc32_simd" ] 339*86ee64e7SAndroid Build Coastguard Worker } else if (use_arm_neon_optimizations) { 340*86ee64e7SAndroid Build Coastguard Worker deps += [ ":zlib_arm_crc32" ] 341*86ee64e7SAndroid Build Coastguard Worker } 342*86ee64e7SAndroid Build Coastguard Worker } else { 343*86ee64e7SAndroid Build Coastguard Worker sources += [ "inflate.c" ] 344*86ee64e7SAndroid Build Coastguard Worker } 345*86ee64e7SAndroid Build Coastguard Worker 346*86ee64e7SAndroid Build Coastguard Worker if (is_android) { 347*86ee64e7SAndroid Build Coastguard Worker import("//build/config/android/config.gni") 348*86ee64e7SAndroid Build Coastguard Worker if (defined(android_ndk_root) && android_ndk_root != "") { 349*86ee64e7SAndroid Build Coastguard Worker deps += [ "//third_party/cpu_features:ndk_compat" ] 350*86ee64e7SAndroid Build Coastguard Worker } else { 351*86ee64e7SAndroid Build Coastguard Worker assert(false, "CPU detection requires the Android NDK") 352*86ee64e7SAndroid Build Coastguard Worker } 353*86ee64e7SAndroid Build Coastguard Worker } 354*86ee64e7SAndroid Build Coastguard Worker 355*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 356*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 357*86ee64e7SAndroid Build Coastguard Worker 358*86ee64e7SAndroid Build Coastguard Worker if (zlib_symbols_visible) { 359*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] 360*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/gcc:symbol_visibility_default" ] 361*86ee64e7SAndroid Build Coastguard Worker } 362*86ee64e7SAndroid Build Coastguard Worker 363*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_config" ] 364*86ee64e7SAndroid Build Coastguard Worker 365*86ee64e7SAndroid Build Coastguard Worker configs += [ 366*86ee64e7SAndroid Build Coastguard Worker ":zlib_internal_config", 367*86ee64e7SAndroid Build Coastguard Worker 368*86ee64e7SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered correctly. 369*86ee64e7SAndroid Build Coastguard Worker ":zlib_warnings", 370*86ee64e7SAndroid Build Coastguard Worker ] 371*86ee64e7SAndroid Build Coastguard Worker 372*86ee64e7SAndroid Build Coastguard Worker allow_circular_includes_from = deps 373*86ee64e7SAndroid Build Coastguard Worker} 374*86ee64e7SAndroid Build Coastguard Worker 375*86ee64e7SAndroid Build Coastguard Workerconfig("minizip_warnings") { 376*86ee64e7SAndroid Build Coastguard Worker visibility = [ ":*" ] 377*86ee64e7SAndroid Build Coastguard Worker 378*86ee64e7SAndroid Build Coastguard Worker if (is_clang) { 379*86ee64e7SAndroid Build Coastguard Worker cflags = [ 380*86ee64e7SAndroid Build Coastguard Worker # zlib uses `if ((a == b))` for some reason. 381*86ee64e7SAndroid Build Coastguard Worker "-Wno-parentheses-equality", 382*86ee64e7SAndroid Build Coastguard Worker ] 383*86ee64e7SAndroid Build Coastguard Worker } 384*86ee64e7SAndroid Build Coastguard Worker} 385*86ee64e7SAndroid Build Coastguard Worker 386*86ee64e7SAndroid Build Coastguard Workerstatic_library("minizip") { 387*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ 388*86ee64e7SAndroid Build Coastguard Worker ".", 389*86ee64e7SAndroid Build Coastguard Worker "//third_party/zlib", 390*86ee64e7SAndroid Build Coastguard Worker ] 391*86ee64e7SAndroid Build Coastguard Worker 392*86ee64e7SAndroid Build Coastguard Worker sources = [ 393*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/ioapi.c", 394*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/ioapi.h", 395*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/iowin32.c", 396*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/iowin32.h", 397*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/unzip.c", 398*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/unzip.h", 399*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/zip.c", 400*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/zip.h", 401*86ee64e7SAndroid Build Coastguard Worker ] 402*86ee64e7SAndroid Build Coastguard Worker 403*86ee64e7SAndroid Build Coastguard Worker if (!is_win) { 404*86ee64e7SAndroid Build Coastguard Worker sources -= [ 405*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/iowin32.c", 406*86ee64e7SAndroid Build Coastguard Worker "contrib/minizip/iowin32.h", 407*86ee64e7SAndroid Build Coastguard Worker ] 408*86ee64e7SAndroid Build Coastguard Worker } 409*86ee64e7SAndroid Build Coastguard Worker 410*86ee64e7SAndroid Build Coastguard Worker if (is_apple || is_android || is_nacl) { 411*86ee64e7SAndroid Build Coastguard Worker # Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We 412*86ee64e7SAndroid Build Coastguard Worker # use fopen, ftell, and fseek instead on these systems. 413*86ee64e7SAndroid Build Coastguard Worker defines = [ "USE_FILE32API" ] 414*86ee64e7SAndroid Build Coastguard Worker } 415*86ee64e7SAndroid Build Coastguard Worker 416*86ee64e7SAndroid Build Coastguard Worker deps = [ ":zlib" ] 417*86ee64e7SAndroid Build Coastguard Worker 418*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 419*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 420*86ee64e7SAndroid Build Coastguard Worker 421*86ee64e7SAndroid Build Coastguard Worker public_configs = [ ":zlib_config" ] 422*86ee64e7SAndroid Build Coastguard Worker 423*86ee64e7SAndroid Build Coastguard Worker configs += [ 424*86ee64e7SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered correctly. 425*86ee64e7SAndroid Build Coastguard Worker ":minizip_warnings", 426*86ee64e7SAndroid Build Coastguard Worker ] 427*86ee64e7SAndroid Build Coastguard Worker} 428*86ee64e7SAndroid Build Coastguard Worker 429*86ee64e7SAndroid Build Coastguard Workerexecutable("zlib_bench") { 430*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 431*86ee64e7SAndroid Build Coastguard Worker 432*86ee64e7SAndroid Build Coastguard Worker sources = [ "contrib/bench/zlib_bench.cc" ] 433*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 434*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 435*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 436*86ee64e7SAndroid Build Coastguard Worker } 437*86ee64e7SAndroid Build Coastguard Worker 438*86ee64e7SAndroid Build Coastguard Worker deps = [ ":zlib" ] 439*86ee64e7SAndroid Build Coastguard Worker 440*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 441*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 442*86ee64e7SAndroid Build Coastguard Worker} 443*86ee64e7SAndroid Build Coastguard Worker 444*86ee64e7SAndroid Build Coastguard Workerexecutable("minigzip") { 445*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 446*86ee64e7SAndroid Build Coastguard Worker 447*86ee64e7SAndroid Build Coastguard Worker sources = [ "test/minigzip.c" ] 448*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 449*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 450*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 451*86ee64e7SAndroid Build Coastguard Worker } 452*86ee64e7SAndroid Build Coastguard Worker 453*86ee64e7SAndroid Build Coastguard Worker deps = [ ":zlib" ] 454*86ee64e7SAndroid Build Coastguard Worker 455*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 456*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 457*86ee64e7SAndroid Build Coastguard Worker} 458*86ee64e7SAndroid Build Coastguard Worker 459*86ee64e7SAndroid Build Coastguard Workerexecutable("zpipe") { 460*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 461*86ee64e7SAndroid Build Coastguard Worker 462*86ee64e7SAndroid Build Coastguard Worker sources = [ "examples/zpipe.c" ] 463*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 464*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 465*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 466*86ee64e7SAndroid Build Coastguard Worker } 467*86ee64e7SAndroid Build Coastguard Worker 468*86ee64e7SAndroid Build Coastguard Worker deps = [ ":zlib" ] 469*86ee64e7SAndroid Build Coastguard Worker 470*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 471*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 472*86ee64e7SAndroid Build Coastguard Worker} 473*86ee64e7SAndroid Build Coastguard Worker 474*86ee64e7SAndroid Build Coastguard Workerif (!is_win || target_os != "winuwp") { 475*86ee64e7SAndroid Build Coastguard Worker executable("minizip_bin") { 476*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 477*86ee64e7SAndroid Build Coastguard Worker 478*86ee64e7SAndroid Build Coastguard Worker sources = [ "contrib/minizip/minizip.c" ] 479*86ee64e7SAndroid Build Coastguard Worker 480*86ee64e7SAndroid Build Coastguard Worker if (is_clang) { 481*86ee64e7SAndroid Build Coastguard Worker cflags = [ 482*86ee64e7SAndroid Build Coastguard Worker "-Wno-incompatible-pointer-types-discards-qualifiers", 483*86ee64e7SAndroid Build Coastguard Worker ] 484*86ee64e7SAndroid Build Coastguard Worker } 485*86ee64e7SAndroid Build Coastguard Worker 486*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 487*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 488*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 489*86ee64e7SAndroid Build Coastguard Worker } 490*86ee64e7SAndroid Build Coastguard Worker 491*86ee64e7SAndroid Build Coastguard Worker deps = [ ":minizip" ] 492*86ee64e7SAndroid Build Coastguard Worker 493*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 494*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 495*86ee64e7SAndroid Build Coastguard Worker } 496*86ee64e7SAndroid Build Coastguard Worker 497*86ee64e7SAndroid Build Coastguard Worker executable("miniunz_bin") { 498*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ "." ] 499*86ee64e7SAndroid Build Coastguard Worker 500*86ee64e7SAndroid Build Coastguard Worker sources = [ "contrib/minizip/miniunz.c" ] 501*86ee64e7SAndroid Build Coastguard Worker 502*86ee64e7SAndroid Build Coastguard Worker if (is_clang) { 503*86ee64e7SAndroid Build Coastguard Worker cflags = [ 504*86ee64e7SAndroid Build Coastguard Worker "-Wno-incompatible-pointer-types-discards-qualifiers", 505*86ee64e7SAndroid Build Coastguard Worker ] 506*86ee64e7SAndroid Build Coastguard Worker } 507*86ee64e7SAndroid Build Coastguard Worker 508*86ee64e7SAndroid Build Coastguard Worker if (!is_debug) { 509*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 510*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_speed" ] 511*86ee64e7SAndroid Build Coastguard Worker } 512*86ee64e7SAndroid Build Coastguard Worker 513*86ee64e7SAndroid Build Coastguard Worker deps = [ ":minizip" ] 514*86ee64e7SAndroid Build Coastguard Worker 515*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 516*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 517*86ee64e7SAndroid Build Coastguard Worker } 518*86ee64e7SAndroid Build Coastguard Worker} 519*86ee64e7SAndroid Build Coastguard Worker 520*86ee64e7SAndroid Build Coastguard Workerif (build_with_chromium) { 521*86ee64e7SAndroid Build Coastguard Worker test("zlib_unittests") { 522*86ee64e7SAndroid Build Coastguard Worker testonly = true 523*86ee64e7SAndroid Build Coastguard Worker 524*86ee64e7SAndroid Build Coastguard Worker sources = [ 525*86ee64e7SAndroid Build Coastguard Worker "contrib/tests/infcover.cc", 526*86ee64e7SAndroid Build Coastguard Worker "contrib/tests/infcover.h", 527*86ee64e7SAndroid Build Coastguard Worker "contrib/tests/run_all_unittests.cc", 528*86ee64e7SAndroid Build Coastguard Worker "contrib/tests/utils_unittest.cc", 529*86ee64e7SAndroid Build Coastguard Worker "google/compression_utils_unittest.cc", 530*86ee64e7SAndroid Build Coastguard Worker "google/zip_reader_unittest.cc", 531*86ee64e7SAndroid Build Coastguard Worker "google/zip_unittest.cc", 532*86ee64e7SAndroid Build Coastguard Worker ] 533*86ee64e7SAndroid Build Coastguard Worker 534*86ee64e7SAndroid Build Coastguard Worker data = [ "google/test/data/" ] 535*86ee64e7SAndroid Build Coastguard Worker 536*86ee64e7SAndroid Build Coastguard Worker if (is_ios) { 537*86ee64e7SAndroid Build Coastguard Worker bundle_deps = [ "google:zlib_pak_bundle_data" ] 538*86ee64e7SAndroid Build Coastguard Worker } 539*86ee64e7SAndroid Build Coastguard Worker 540*86ee64e7SAndroid Build Coastguard Worker deps = [ 541*86ee64e7SAndroid Build Coastguard Worker ":minizip", 542*86ee64e7SAndroid Build Coastguard Worker ":zlib", 543*86ee64e7SAndroid Build Coastguard Worker "google:compression_utils", 544*86ee64e7SAndroid Build Coastguard Worker "google:zip", 545*86ee64e7SAndroid Build Coastguard Worker "//base/test:test_support", 546*86ee64e7SAndroid Build Coastguard Worker "//testing/gtest", 547*86ee64e7SAndroid Build Coastguard Worker ] 548*86ee64e7SAndroid Build Coastguard Worker 549*86ee64e7SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 550*86ee64e7SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 551*86ee64e7SAndroid Build Coastguard Worker 552*86ee64e7SAndroid Build Coastguard Worker include_dirs = [ 553*86ee64e7SAndroid Build Coastguard Worker "//third_party/googletest/src/googletest/include/gtest", 554*86ee64e7SAndroid Build Coastguard Worker ".", 555*86ee64e7SAndroid Build Coastguard Worker "google", 556*86ee64e7SAndroid Build Coastguard Worker ] 557*86ee64e7SAndroid Build Coastguard Worker } 558*86ee64e7SAndroid Build Coastguard Worker} 559