mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 08:16:09 +03:00
346 lines
11 KiB
Plaintext
346 lines
11 KiB
Plaintext
|
# Copyright 2014 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.
|
||
|
|
||
|
import("//build/buildflag_header.gni")
|
||
|
import("//build/config/arm.gni")
|
||
|
import("//build/config/android/config.gni")
|
||
|
import("//build/config/sanitizers/sanitizers.gni")
|
||
|
import("//third_party/libaom/options.gni")
|
||
|
import("//third_party/libaom/libaom_srcs.gni")
|
||
|
import("//third_party/yasm/yasm_assemble.gni")
|
||
|
|
||
|
buildflag_header("av1_features") {
|
||
|
header = "av1_features.h"
|
||
|
|
||
|
flags = [ "ENABLE_AV1_DECODER=$enable_av1_decoder" ]
|
||
|
}
|
||
|
|
||
|
if (enable_av1_decoder) {
|
||
|
# Sets the architecture name for building libaom.
|
||
|
if (current_cpu == "x86") {
|
||
|
cpu_arch_full = "ia32"
|
||
|
} else if (current_cpu == "x64") {
|
||
|
if (is_msan) {
|
||
|
cpu_arch_full = "generic"
|
||
|
} else {
|
||
|
cpu_arch_full = "x64"
|
||
|
}
|
||
|
} else if (current_cpu == "arm") {
|
||
|
if (arm_use_neon) {
|
||
|
cpu_arch_full = "arm-neon"
|
||
|
} else if (is_android) {
|
||
|
cpu_arch_full = "arm-neon-cpu-detect"
|
||
|
} else {
|
||
|
cpu_arch_full = "arm"
|
||
|
}
|
||
|
} else {
|
||
|
cpu_arch_full = current_cpu
|
||
|
}
|
||
|
|
||
|
if (is_nacl) {
|
||
|
platform_include_dir = "source/config/nacl"
|
||
|
} else {
|
||
|
# TODO(johannkoenig): remove mac-specific config files.
|
||
|
# The mac configurations are currently a relic. They were useful when
|
||
|
# x86inc.asm did not work for MACH_O but now the build is identical to the
|
||
|
# linux config. iOS for arm on the other hand needs an apple-specific twist in
|
||
|
# aom_config.asm
|
||
|
if (is_ios && current_cpu == "arm") {
|
||
|
os_category = current_os
|
||
|
} else if (is_posix) { # Should cover linux, mac, and the ios simulator.
|
||
|
os_category = "linux"
|
||
|
} else { # This should only match windows.
|
||
|
os_category = current_os
|
||
|
}
|
||
|
platform_include_dir = "source/config/$os_category/$cpu_arch_full"
|
||
|
}
|
||
|
|
||
|
libaom_include_dirs = [
|
||
|
"source/config",
|
||
|
platform_include_dir,
|
||
|
"source/libaom",
|
||
|
]
|
||
|
|
||
|
config("libaom_config") {
|
||
|
include_dirs = libaom_include_dirs
|
||
|
|
||
|
# gn orders flags on a target before flags from configs. The default config
|
||
|
# adds -Wall, and these flags have to be after -Wall -- so they need to come
|
||
|
# from a config and can't be on the target directly.
|
||
|
if (is_clang) {
|
||
|
cflags = [
|
||
|
# TODO(johannkoenig): these may no longer apply.
|
||
|
# libvpx heavily relies on implicit enum casting.
|
||
|
"-Wno-conversion",
|
||
|
|
||
|
# libvpx does `if ((a == b))` in some places.
|
||
|
"-Wno-parentheses-equality",
|
||
|
|
||
|
# libvpx has many static functions in header, which trigger this warning.
|
||
|
"-Wno-unused-function",
|
||
|
]
|
||
|
|
||
|
# TODO(johannkoenig): these may no longer apply.
|
||
|
# Fixes a mac / ios simulator link error for vpx_scaled_2d:
|
||
|
# Undefined symbols for architecture x86_64:
|
||
|
# "_vpx_scaled_2d", referenced from:
|
||
|
# _vp9_scale_and_extend_frame_c in libvpx.a(vp9_frame_scale.o)
|
||
|
# (maybe you meant: _vpx_scaled_2d_ssse3)
|
||
|
# ld: symbol(s) not found for architecture x86_64
|
||
|
if (is_mac || (is_ios && (current_cpu == "x86" || current_cpu == "x64"))) {
|
||
|
cflags += [ "-fno-common" ]
|
||
|
}
|
||
|
} else if (!is_win) {
|
||
|
cflags = [
|
||
|
"-Wno-unused-function",
|
||
|
"-Wno-sign-compare",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# This config is applied to targets that depend on libaom.
|
||
|
config("libaom_external_config") {
|
||
|
include_dirs = [ "source/libaom" ]
|
||
|
}
|
||
|
|
||
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
||
|
yasm_assemble("libaom_yasm") {
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_assembly
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_assembly
|
||
|
}
|
||
|
|
||
|
defines = [ "CHROMIUM" ]
|
||
|
if (is_android) {
|
||
|
# TODO(johannkoenig): this was for vp8 assembly. May no longer apply.
|
||
|
# On Android, define __ANDROID__ to use alternative standard library
|
||
|
# functions.
|
||
|
defines += [ "__ANDROID__" ]
|
||
|
}
|
||
|
include_dirs = libaom_include_dirs
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
||
|
# The following targets are deliberately source_set rather than
|
||
|
# static_library. The :libaom target exposes these intrinsic implementations
|
||
|
# via global function pointer symbols, which hides the object dependency at
|
||
|
# link time. On Mac, this results in undefined references to the intrinsic
|
||
|
# symbols.
|
||
|
|
||
|
source_set("libaom_intrinsics_mmx") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (!is_win) {
|
||
|
cflags = [ "-mmmx" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_mmx
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_mmx
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source_set("libaom_intrinsics_sse2") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (!is_win || is_clang) {
|
||
|
cflags = [ "-msse2" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_sse2
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_sse2
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source_set("libaom_intrinsics_ssse3") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (!is_win || is_clang) {
|
||
|
cflags = [ "-mssse3" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_ssse3
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_ssse3
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source_set("libaom_intrinsics_sse4_1") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (!is_win || is_clang) {
|
||
|
cflags = [ "-msse4.1" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_sse4_1
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_sse4_1
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source_set("libaom_intrinsics_avx") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (is_win) {
|
||
|
cflags = [ "/arch:AVX" ]
|
||
|
} else {
|
||
|
cflags = [ "-mavx" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_avx
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_avx
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source_set("libaom_intrinsics_avx2") {
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (is_win) {
|
||
|
cflags = [ "/arch:AVX2" ]
|
||
|
} else {
|
||
|
cflags = [ "-mavx2" ]
|
||
|
}
|
||
|
if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86_avx2
|
||
|
} else if (current_cpu == "x64") {
|
||
|
sources = libaom_srcs_x86_64_avx2
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (cpu_arch_full == "arm-neon-cpu-detect") {
|
||
|
static_library("libaom_intrinsics_neon") {
|
||
|
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
cflags = [ "-mfpu=neon" ]
|
||
|
sources = libaom_srcs_arm_neon_cpu_detect_neon
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (current_cpu == "arm") {
|
||
|
if (cpu_arch_full == "arm-neon") {
|
||
|
arm_assembly_sources = libaom_srcs_arm_neon_assembly
|
||
|
} else if (cpu_arch_full == "arm-neon-cpu-detect") {
|
||
|
arm_assembly_sources = libaom_srcs_arm_neon_cpu_detect_assembly
|
||
|
} else {
|
||
|
arm_assembly_sources = libaom_srcs_arm_assembly
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Converts ARM assembly files to GAS style.
|
||
|
if (current_cpu == "arm" && arm_assembly_sources != []) {
|
||
|
action_foreach("convert_arm_assembly") {
|
||
|
script = "//third_party/libaom/run_perl.py"
|
||
|
sources = arm_assembly_sources
|
||
|
gen_file =
|
||
|
get_label_info("//third_party/libaom/source/libaom", "root_gen_dir") +
|
||
|
"/{{source_root_relative_dir}}/{{source_file_part}}.S"
|
||
|
outputs = [
|
||
|
gen_file,
|
||
|
]
|
||
|
if (is_ios) {
|
||
|
ads2gas_script =
|
||
|
"//third_party/libaom/source/libaom/build/make/ads2gas_apple.pl"
|
||
|
} else {
|
||
|
ads2gas_script =
|
||
|
"//third_party/libaom/source/libaom/build/make/ads2gas.pl"
|
||
|
}
|
||
|
args = [
|
||
|
"-s",
|
||
|
rebase_path(ads2gas_script, root_build_dir),
|
||
|
"-i",
|
||
|
"{{source}}",
|
||
|
"-o",
|
||
|
rebase_path(gen_file),
|
||
|
]
|
||
|
}
|
||
|
|
||
|
static_library("libaom_assembly_arm") {
|
||
|
sources = get_target_outputs(":convert_arm_assembly")
|
||
|
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
if (cpu_arch_full == "arm-neon" ||
|
||
|
cpu_arch_full == "arm-neon-cpu-detect") {
|
||
|
asmflags = [ "-mfpu=neon" ]
|
||
|
|
||
|
# allow asm files to include generated sources which match the source
|
||
|
# tree layout, e.g., aom_dsp/arm/...
|
||
|
include_dirs = [ get_label_info("//third_party/libaom/source/libaom",
|
||
|
"target_gen_dir") ]
|
||
|
}
|
||
|
deps = [
|
||
|
":convert_arm_assembly",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static_library("libaom") {
|
||
|
if (!is_debug && is_win) {
|
||
|
configs -= [ "//build/config/compiler:default_optimization" ]
|
||
|
configs += [ "//build/config/compiler:optimize_max" ]
|
||
|
}
|
||
|
|
||
|
if (is_nacl) {
|
||
|
sources = libaom_srcs_generic
|
||
|
} else if (current_cpu == "x86") {
|
||
|
sources = libaom_srcs_x86
|
||
|
} else if (current_cpu == "x64") {
|
||
|
if (is_msan) {
|
||
|
sources = libaom_srcs_generic
|
||
|
} else {
|
||
|
sources = libaom_srcs_x86_64
|
||
|
}
|
||
|
} else if (current_cpu == "mipsel" || current_cpu == "mips64el") {
|
||
|
sources = libaom_srcs_mips
|
||
|
} else if (current_cpu == "arm") {
|
||
|
if (arm_use_neon) {
|
||
|
sources = libaom_srcs_arm_neon
|
||
|
} else if (is_android) {
|
||
|
sources = libaom_srcs_arm_neon_cpu_detect
|
||
|
} else {
|
||
|
sources = libaom_srcs_arm
|
||
|
}
|
||
|
} else if (current_cpu == "arm64") {
|
||
|
sources = libaom_srcs_arm64
|
||
|
}
|
||
|
|
||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||
|
configs += [ ":libaom_config" ]
|
||
|
deps = []
|
||
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
||
|
deps += [
|
||
|
":libaom_intrinsics_avx",
|
||
|
":libaom_intrinsics_avx2",
|
||
|
":libaom_intrinsics_mmx",
|
||
|
":libaom_intrinsics_sse2",
|
||
|
":libaom_intrinsics_sse4_1",
|
||
|
":libaom_intrinsics_ssse3",
|
||
|
":libaom_yasm",
|
||
|
]
|
||
|
}
|
||
|
if (cpu_arch_full == "arm-neon-cpu-detect") {
|
||
|
deps += [ ":libaom_intrinsics_neon" ]
|
||
|
}
|
||
|
if (is_android) {
|
||
|
deps += [ "//third_party/android_tools:cpu_features" ]
|
||
|
}
|
||
|
if (current_cpu == "arm" && arm_assembly_sources != []) {
|
||
|
deps += [ ":libaom_assembly_arm" ]
|
||
|
}
|
||
|
|
||
|
public_configs = [ ":libaom_external_config" ]
|
||
|
}
|
||
|
}
|