# Copyright 2017 The Crashpad Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("../../build/crashpad_buildconfig.gni") if (crashpad_is_in_chromium || crashpad_is_in_fuchsia || crashpad_is_in_dart) { zlib_source = "external" } else if (!crashpad_is_win && !crashpad_is_fuchsia) { zlib_source = "system" } else if (crashpad_is_standalone) { zlib_source = "embedded" } else if (crashpad_is_external) { zlib_source = "external_with_embedded_build" } config("zlib_config") { if (zlib_source == "external") { defines = [ "CRASHPAD_ZLIB_SOURCE_EXTERNAL" ] } else if (zlib_source == "system") { defines = [ "CRASHPAD_ZLIB_SOURCE_SYSTEM" ] } else if (zlib_source == "embedded") { defines = [ "CRASHPAD_ZLIB_SOURCE_EMBEDDED" ] include_dirs = [ "zlib" ] } else if (zlib_source == "external_with_embedded_build") { defines = [ "CRASHPAD_ZLIB_SOURCE_EXTERNAL_WITH_EMBEDDED_BUILD" ] include_dirs = [ "../../../../zlib/src" ] } } if (zlib_source == "external") { group("zlib") { public_configs = [ ":zlib_config" ] public_deps = [ "//third_party/zlib" ] } } else if (zlib_source == "system") { source_set("zlib") { public_configs = [ ":zlib_config" ] libs = [ "z" ] } } else if (zlib_source == "embedded" || zlib_source == "external_with_embedded_build") { static_library("zlib") { if (zlib_source == "embedded") { zlib_dir = "zlib" } else if (zlib_source == "external_with_embedded_build") { zlib_dir = "../../../../zlib/src" } sources = [ "$zlib_dir/adler32.c", "$zlib_dir/compress.c", "$zlib_dir/crc32.c", "$zlib_dir/crc32.h", "$zlib_dir/deflate.c", "$zlib_dir/deflate.h", "$zlib_dir/gzclose.c", "$zlib_dir/gzguts.h", "$zlib_dir/gzlib.c", "$zlib_dir/gzread.c", "$zlib_dir/gzwrite.c", "$zlib_dir/infback.c", "$zlib_dir/inffast.c", "$zlib_dir/inffast.h", "$zlib_dir/inffixed.h", "$zlib_dir/inflate.c", "$zlib_dir/inflate.h", "$zlib_dir/inftrees.c", "$zlib_dir/inftrees.h", "$zlib_dir/trees.c", "$zlib_dir/trees.h", "$zlib_dir/uncompr.c", "$zlib_dir/zconf.h", "$zlib_dir/zlib.h", "$zlib_dir/zutil.c", "$zlib_dir/zutil.h", "zlib_crashpad.h", ] cflags = [] defines = [ "HAVE_STDARG_H" ] public_configs = [ ":zlib_config" ] if (crashpad_is_win) { cflags += [ "/wd4131", # uses old-style declarator "/wd4244", # conversion from 't1' to 't2', possible loss of data "/wd4245", # conversion from 't1' to 't2', signed/unsigned mismatch "/wd4267", # conversion from 'size_t' to 't', possible loss of data "/wd4324", # structure was padded due to alignment specifier "/wd4702", # unreachable code ] if (current_cpu == "arm64" && !crashpad_is_clang) { # Select code path for clang in zlib to avoid using MSVC x86/x64 # intrinsics for Windows ARM64. # TODO: https://crashpad.chromium.org/bug/267 defines += [ "__clang__" ] } } else { defines += [ "HAVE_HIDDEN", "HAVE_UNISTD_H", ] } if (crashpad_is_standalone) { configs -= [ "//third_party/mini_chromium/mini_chromium/build/config:Wimplicit_fallthrough" ] } else if (crashpad_is_external) { configs -= [ "//../../mini_chromium/mini_chromium/build/config:Wimplicit_fallthrough" ] } if (zlib_source == "embedded") { sources += [ "$zlib_dir/names.h" ] if (current_cpu == "x86" || current_cpu == "x64") { sources += [ "$zlib_dir/crc_folding.c", "$zlib_dir/fill_window_sse.c", "$zlib_dir/x86.c", "$zlib_dir/x86.h", ] if (!crashpad_is_win || crashpad_is_clang) { cflags += [ "-msse4.2", "-mpclmul", ] } if (crashpad_is_clang) { cflags += [ "-Wno-incompatible-pointer-types" ] } } else { sources += [ "$zlib_dir/simd_stub.c" ] } } } }