blob: bc9a072c15a17183a00d11d05a31d2cbc324bd39 [file] [log] [blame]
# Copyright 2014 The Goma Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
if (os != "win") {
config_h_dir = "config/glog/$os"
} else {
import("//build/config/win/visual_studio_version.gni")
config_h_dir = "glog/src/windows"
}
glog_sources = [
"glog/src/base/commandlineflags.h",
"glog/src/base/googleinit.h",
"glog/src/base/mutex.h",
"glog/src/demangle.cc",
"glog/src/demangle.h",
"glog/src/logging.cc",
"glog/src/raw_logging.cc",
"glog/src/signalhandler.cc",
"glog/src/stacktrace_generic-inl.h",
"glog/src/stacktrace.h",
"glog/src/stacktrace_libunwind-inl.h",
"glog/src/stacktrace_x86_64-inl.h",
"glog/src/symbolize.cc",
"glog/src/symbolize.h",
"glog/src/utilities.cc",
"glog/src/utilities.h",
"glog/src/vlog_is_on.cc",
"$config_h_dir/config.h",
"$config_h_dir/glog/logging.h",
"$config_h_dir/glog/log_severity.h",
"$config_h_dir/glog/raw_logging.h",
"$config_h_dir/glog/stl_logging.h",
"$config_h_dir/glog/vlog_is_on.h",
]
glog_include_dirs = [
"$config_h_dir",
"glog/src",
]
glog_defines = [ "HAVE_CONFIG_H" ]
if (os == "win" &&
(visual_studio_version == "2015" || visual_studio_version == "2017")) {
glog_defines += [ "HAVE_SNPRINTF" ]
}
if (os != "win") {
glog_cflags_cc = [ "-Wno-sign-compare" ]
} else {
glog_cflags_cc = [
"/wd4541",
# C4389: signed/unsigned mismatch
# Come from glog/src/windows/glog/logging.h
"/wd4389",
# destructor never returns, potential memory leak.
# Occurred in glog Fatal.
"/wd4722",
]
glog_sources -= [
"glog/src/stacktrace_generic-inl.h",
"glog/src/stacktrace.h",
"glog/src/stacktrace_libunwind-inl.h",
"glog/src/stacktrace_x86_64-inl.h",
]
glog_sources += [
"glog/src/windows/port.cc",
"glog/src/windows/port.h",
]
}
config("glog_config") {
include_dirs = glog_include_dirs
if (is_posix) {
cflags = [
"-Wno-unused-local-typedef", # For COMPILE_ASSERT macro.
"-Wno-sign-compare", # glog/logging.h has sign compare code
]
}
}
static_library("glog") {
sources = glog_sources
include_dirs = glog_include_dirs
defines = glog_defines
cflags_cc = glog_cflags_cc
public_configs = [ ":glog_config" ]
configs -= [ "//build/config/compiler:goma_code" ]
configs += [ "//build/config/compiler:no_goma_code" ]
}
config("has_rtti_config") {
defines = [
# gtest isn't able to figure out when RTTI is disabled for gcc
# versions older than 4.3.2, and assumes it's enabled. Our Mac
# and Linux builds disable RTTI, and cannot guarantee that the
# compiler will be 4.3.2. or newer. The Mac, for example, uses
# 4.2.1 as that is the latest available on that platform. gtest
# must be instructed that RTTI is disabled here, and for any
# direct dependents that might include gtest headers.
"GTEST_HAS_RTTI=0",
]
}
config("use_own_tr1_tuple_config") {
defines = [
# We want gtest features that use tr1::tuple, but we currently
# don't support the variadic templates used by libstdc++'s
# implementation. gtest supports this scenario by providing its
# own implementation but we must opt in to it.
"GTEST_USE_OWN_TR1_TUPLE=1",
]
}
config("unittest_config") {
defines = [ "UNIT_TEST" ]
# So that gtest headers can find themselves.
include_dirs = [ "gtest/googletest/include" ]
if (is_clang) {
cflags = [
"-Wno-deprecated-declarations",
"-Wno-unused-variable",
]
}
}
# http://stackoverflow.com/questions/12558327/google-test-in-visual-studio-2012
config("variadix_max_config") {
defines = [ "_VARIADIC_MAX=10" ]
}
static_library("gtest") {
testonly = true
sources = [
"gtest/googletest/include/gtest/gtest-death-test.h",
"gtest/googletest/include/gtest/gtest-message.h",
"gtest/googletest/include/gtest/gtest-param-test.h",
"gtest/googletest/include/gtest/gtest-printers.h",
"gtest/googletest/include/gtest/gtest-spi.h",
"gtest/googletest/include/gtest/gtest-test-part.h",
"gtest/googletest/include/gtest/gtest-typed-test.h",
"gtest/googletest/include/gtest/gtest.h",
"gtest/googletest/include/gtest/gtest_pred_impl.h",
"gtest/googletest/include/gtest/gtest_prod.h",
"gtest/googletest/include/gtest/internal/custom/gtest-port.h",
"gtest/googletest/include/gtest/internal/custom/gtest-printers.h",
"gtest/googletest/include/gtest/internal/custom/gtest.h",
"gtest/googletest/include/gtest/internal/gtest-death-test-internal.h",
"gtest/googletest/include/gtest/internal/gtest-filepath.h",
"gtest/googletest/include/gtest/internal/gtest-internal.h",
"gtest/googletest/include/gtest/internal/gtest-linked_ptr.h",
"gtest/googletest/include/gtest/internal/gtest-param-util-generated.h",
"gtest/googletest/include/gtest/internal/gtest-param-util.h",
"gtest/googletest/include/gtest/internal/gtest-port-arch.h",
"gtest/googletest/include/gtest/internal/gtest-port.h",
"gtest/googletest/include/gtest/internal/gtest-string.h",
"gtest/googletest/include/gtest/internal/gtest-tuple.h",
"gtest/googletest/include/gtest/internal/gtest-type-util.h",
"gtest/googletest/src/gtest-death-test.cc",
"gtest/googletest/src/gtest-filepath.cc",
"gtest/googletest/src/gtest-internal-inl.h",
"gtest/googletest/src/gtest-port.cc",
"gtest/googletest/src/gtest-printers.cc",
"gtest/googletest/src/gtest-test-part.cc",
"gtest/googletest/src/gtest-typed-test.cc",
"gtest/googletest/src/gtest.cc",
]
include_dirs = [
"gtest/googletest",
"gtest/googletest/include",
]
public_configs = []
if (is_posix) {
public_configs += [ ":has_rtti_config" ]
}
if (is_clang && os != "win") {
public_configs += [ ":use_own_tr1_tuple_config" ]
}
if (os == "win") {
# http://stackoverflow.com/questions/12558327/google-test-in-visual-studio-2012
public_configs += [ ":variadix_max_config" ]
}
public_configs += [ ":unittest_config" ]
configs -= [ "//build/config/compiler:goma_code" ]
configs += [ "//build/config/compiler:no_goma_code" ]
}
# If you need to use gtest_prod.h, depend on "gtest_prod".
config("gtest_prod_config") {
include_dirs = [ "gtest/googletest/include" ]
}
source_set("gtest_prod") {
sources = [
"gtest/googletest/include/gtest/gtest_prod.h",
]
public_configs = [ ":gtest_prod_config" ]
}
static_library("gtest_main") {
testonly = true
deps = [
":gtest",
]
sources = [
"gtest/googletest/src/gtest_main.cc",
]
configs -= [ "//build/config/compiler:goma_code" ]
configs += [ "//build/config/compiler:no_goma_code" ]
}
config("liblzma_config") {
include_dirs = [ "xz/src/liblzma/api" ]
}
if (enable_lzma) {
static_library("liblzma") {
config_h_dir = "config/xz/$os"
sources = [
"$config_h_dir/config.h",
"xz/src/common/mythread.h",
"xz/src/common/sysdefs.h",
"xz/src/common/tuklib_common.h",
"xz/src/common/tuklib_config.h",
"xz/src/common/tuklib_intger.h",
"xz/src/common/tuklib_physmem.c",
"xz/src/common/tuklib_physmem.h",
"xz/src/liblzma/api/lzma.h",
"xz/src/liblzma/api/lzma/base.h",
"xz/src/liblzma/api/lzma/bcj.h",
"xz/src/liblzma/api/lzma/block.h",
"xz/src/liblzma/api/lzma/check.h",
"xz/src/liblzma/api/lzma/container.h",
"xz/src/liblzma/api/lzma/delta.h",
"xz/src/liblzma/api/lzma/filter.h",
"xz/src/liblzma/api/lzma/hardware.h",
"xz/src/liblzma/api/lzma/index.h",
"xz/src/liblzma/api/lzma/index_hash.h",
"xz/src/liblzma/api/lzma/lzma.h",
"xz/src/liblzma/api/lzma/stream_flags.h",
"xz/src/liblzma/api/lzma/version.h",
"xz/src/liblzma/api/lzma/vli.h",
"xz/src/liblzma/check/check.c",
"xz/src/liblzma/check/check.h",
"xz/src/liblzma/check/crc32_fast.c",
"xz/src/liblzma/check/crc32_table.c",
"xz/src/liblzma/check/crc32_table_be.h",
"xz/src/liblzma/check/crc32_table_le.h",
"xz/src/liblzma/check/crc64_fast.c",
"xz/src/liblzma/check/crc64_table.c",
"xz/src/liblzma/check/crc64_table_be.h",
"xz/src/liblzma/check/crc64_table_le.h",
"xz/src/liblzma/check/crc_macros.h",
"xz/src/liblzma/check/sha256.c",
"xz/src/liblzma/common/alone_decoder.c",
"xz/src/liblzma/common/alone_decoder.h",
"xz/src/liblzma/common/alone_encoder.c",
"xz/src/liblzma/common/auto_decoder.c",
"xz/src/liblzma/common/block_buffer_decoder.c",
"xz/src/liblzma/common/block_buffer_encoder.c",
"xz/src/liblzma/common/block_decoder.c",
"xz/src/liblzma/common/block_decoder.h",
"xz/src/liblzma/common/block_encoder.c",
"xz/src/liblzma/common/block_encoder.h",
"xz/src/liblzma/common/block_header_decoder.c",
"xz/src/liblzma/common/block_header_encoder.c",
"xz/src/liblzma/common/block_util.c",
"xz/src/liblzma/common/common.c",
"xz/src/liblzma/common/common.h",
"xz/src/liblzma/common/easy_buffer_encoder.c",
"xz/src/liblzma/common/easy_decoder_memusage.c",
"xz/src/liblzma/common/easy_encoder.c",
"xz/src/liblzma/common/easy_encoder_memusage.c",
"xz/src/liblzma/common/easy_preset.c",
"xz/src/liblzma/common/easy_preset.h",
"xz/src/liblzma/common/filter_buffer_decoder.c",
"xz/src/liblzma/common/filter_buffer_encoder.c",
"xz/src/liblzma/common/filter_common.c",
"xz/src/liblzma/common/filter_common.h",
"xz/src/liblzma/common/filter_decoder.c",
"xz/src/liblzma/common/filter_decoder.h",
"xz/src/liblzma/common/filter_encoder.c",
"xz/src/liblzma/common/filter_encoder.h",
"xz/src/liblzma/common/filter_flags_decoder.c",
"xz/src/liblzma/common/filter_flags_encoder.c",
"xz/src/liblzma/common/hardware_physmem.c",
"xz/src/liblzma/common/index.c",
"xz/src/liblzma/common/index.h",
"xz/src/liblzma/common/index_decoder.c",
"xz/src/liblzma/common/index_encoder.c",
"xz/src/liblzma/common/index_encoder.h",
"xz/src/liblzma/common/index_hash.c",
"xz/src/liblzma/common/stream_buffer_decoder.c",
"xz/src/liblzma/common/stream_buffer_encoder.c",
"xz/src/liblzma/common/stream_decoder.c",
"xz/src/liblzma/common/stream_decoder.h",
"xz/src/liblzma/common/stream_encoder.c",
"xz/src/liblzma/common/stream_encoder.h",
"xz/src/liblzma/common/stream_flags_common.c",
"xz/src/liblzma/common/stream_flags_common.h",
"xz/src/liblzma/common/stream_flags_decoder.c",
"xz/src/liblzma/common/stream_flags_encoder.c",
"xz/src/liblzma/common/vli_decoder.c",
"xz/src/liblzma/common/vli_encoder.c",
"xz/src/liblzma/common/vli_size.c",
"xz/src/liblzma/delta/delta_common.c",
"xz/src/liblzma/delta/delta_common.h",
"xz/src/liblzma/delta/delta_decoder.c",
"xz/src/liblzma/delta/delta_decoder.h",
"xz/src/liblzma/delta/delta_encoder.c",
"xz/src/liblzma/delta/delta_encoder.h",
"xz/src/liblzma/delta/delta_private.h",
"xz/src/liblzma/lz/lz_decoder.c",
"xz/src/liblzma/lz/lz_decoder.h",
"xz/src/liblzma/lz/lz_encoder.c",
"xz/src/liblzma/lz/lz_encoder.h",
"xz/src/liblzma/lz/lz_encoder_hash.h",
"xz/src/liblzma/lz/lz_encoder_hash_table.h",
"xz/src/liblzma/lz/lz_encoder_mf.c",
"xz/src/liblzma/lzma/fastpos.h",
"xz/src/liblzma/lzma/fastpos_table.c",
"xz/src/liblzma/lzma/lzma2_decoder.c",
"xz/src/liblzma/lzma/lzma2_decoder.h",
"xz/src/liblzma/lzma/lzma2_encoder.c",
"xz/src/liblzma/lzma/lzma2_encoder.h",
"xz/src/liblzma/lzma/lzma_common.h",
"xz/src/liblzma/lzma/lzma_decoder.c",
"xz/src/liblzma/lzma/lzma_decoder.h",
"xz/src/liblzma/lzma/lzma_encoder.c",
"xz/src/liblzma/lzma/lzma_encoder.h",
"xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c",
"xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c",
"xz/src/liblzma/lzma/lzma_encoder_presets.c",
"xz/src/liblzma/lzma/lzma_encoder_private.h",
"xz/src/liblzma/rangecoder/price.h",
"xz/src/liblzma/rangecoder/price_table.c",
"xz/src/liblzma/rangecoder/range_common.h",
"xz/src/liblzma/rangecoder/range_decoder.h",
"xz/src/liblzma/rangecoder/range_encoder.h",
"xz/src/liblzma/simple/arm.c",
"xz/src/liblzma/simple/armthumb.c",
"xz/src/liblzma/simple/ia64.c",
"xz/src/liblzma/simple/powerpc.c",
"xz/src/liblzma/simple/simple_coder.c",
"xz/src/liblzma/simple/simple_coder.h",
"xz/src/liblzma/simple/simple_decoder.c",
"xz/src/liblzma/simple/simple_decoder.h",
"xz/src/liblzma/simple/simple_encoder.c",
"xz/src/liblzma/simple/simple_encoder.h",
"xz/src/liblzma/simple/simple_private.h",
"xz/src/liblzma/simple/sparc.c",
"xz/src/liblzma/simple/x86.c",
]
include_dirs = [
"$config_h_dir",
"xz/src/liblzma/api",
"xz/src/liblzma/common",
"xz/src/liblzma/check",
"xz/src/liblzma/lz",
"xz/src/liblzma/rangecoder",
"xz/src/liblzma/lzma",
"xz/src/liblzma/delta",
"xz/src/liblzma/simple",
"xz/src/common",
]
defines = [
"HAVE_CONFIG_H",
"TUKLIB_SYMBOL_PREFIX=lzma_",
]
public_configs = [ ":liblzma_config" ]
configs -= [ "//build/config/compiler:goma_code" ]
configs += [ "//build/config/compiler:no_goma_code" ]
if (os == "win") {
configs -= [
"//build/config/win:lean_and_mean",
"//build/config/win:unicode",
]
if (is_clang) {
# For xz/src/common/tuklib_physmem.c(86,18)
cflags = [ "-Wno-incompatible-function-pointer-types" ]
}
}
}
}
# copied from zlib's BUILD.gn and modified for Goma.
# TODO: remove this if dependency issue has been fixed.
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
config("zlib_config") {
defines = [ "ZLIB_CONST" ]
include_dirs = [
"//third_party/zlib",
"//third_party/zlib/contrib",
]
}
static_library("zlib_x86_simd") {
if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
sources = [
"zlib/crc_folding.c",
# Added followings to mitigate gn check failure.
"zlib/deflate.h",
"zlib/fill_window_sse.c",
"zlib/zlib.h",
"zlib/zutil.h",
]
if (!is_win || is_clang) {
cflags = [
"-msse4.2",
"-mpclmul",
]
}
} else {
sources = [
"zlib/simd_stub.c",
]
}
configs -= [ "//build/config/compiler:goma_code" ]
configs += [ "//build/config/compiler:no_goma_code" ]
}
config("zlib_warnings") {
if (is_clang && !is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
cflags = [ "-Wno-incompatible-pointer-types" ]
}
}
static_library("zlib") {
if (!is_win) {
# Don't stomp on "libzlib" on other platforms.
output_name = "chrome_zlib"
}
sources = [
"zlib/adler32.c",
"zlib/compress.c",
"zlib/crc32.c",
"zlib/crc32.h",
"zlib/deflate.c",
"zlib/deflate.h",
"zlib/gzclose.c",
"zlib/gzguts.h",
"zlib/gzlib.c",
"zlib/gzread.c",
"zlib/gzwrite.c",
"zlib/infback.c",
"zlib/inffast.c",
"zlib/inffast.h",
"zlib/inffixed.h",
"zlib/inflate.c",
"zlib/inflate.h",
"zlib/inftrees.c",
"zlib/inftrees.h",
"zlib/names.h",
"zlib/trees.c",
"zlib/trees.h",
"zlib/uncompr.c",
"zlib/x86.h",
"zlib/zconf.h",
"zlib/zlib.h",
"zlib/zutil.c",
"zlib/zutil.h",
]
if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
sources += [ "zlib/x86.c" ]
}
configs -= [ "//build/config/compiler:goma_code" ]
configs += [
"//build/config/compiler:no_goma_code",
# Must be after no_chromium_code for warning flags to be ordered correctly.
":zlib_warnings",
]
public_configs = [ ":zlib_config" ]
deps = [
":zlib_x86_simd",
]
}
config("minizip_warnings") {
visibility = [ ":*" ]
if (is_clang) {
# zlib uses `if ((a == b))` for some reason.
cflags = [ "-Wno-parentheses-equality" ]
}
}
static_library("minizip") {
sources = [
"zlib/contrib/minizip/ioapi.c",
"zlib/contrib/minizip/ioapi.h",
"zlib/contrib/minizip/iowin32.c",
"zlib/contrib/minizip/iowin32.h",
"zlib/contrib/minizip/unzip.c",
"zlib/contrib/minizip/unzip.h",
"zlib/contrib/minizip/zip.c",
"zlib/contrib/minizip/zip.h",
]
if (!is_win) {
sources -= [
"zlib/contrib/minizip/iowin32.c",
"zlib/contrib/minizip/iowin32.h",
]
}
if (is_mac || is_ios || is_android) {
# Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We
# use fopen, ftell, and fseek instead on these systems.
defines = [ "USE_FILE32API" ]
}
deps = [
":zlib",
]
configs -= [ "//build/config/compiler:goma_code" ]
configs += [
"//build/config/compiler:no_goma_code",
# Must be after no_chromium_code for warning flags to be ordered correctly.
":minizip_warnings",
]
public_configs = [ ":zlib_config" ]
}