mirror of
https://github.com/Alex313031/thorium.git
synced 2025-01-10 03:47:44 -03:00
714 lines
22 KiB
Text
714 lines
22 KiB
Text
# Copyright 2024 The Chromium Authors and Alex313031
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("//build/config/android/config.gni")
|
|
import("//build/config/arm.gni")
|
|
import("//build/config/chromeos/ui_mode.gni")
|
|
import("//testing/test.gni")
|
|
import("//third_party/libvpx/libvpx_srcs.gni")
|
|
import("//third_party/libvpx/libvpx_test_srcs.gni")
|
|
import("//third_party/nasm/nasm_assemble.gni")
|
|
|
|
# Sets the architecture name for building libvpx.
|
|
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 (is_chromeos) {
|
|
# ChromeOS gets highbd vp9 but other arm targets do not.
|
|
cpu_arch_full = "arm-neon-highbd"
|
|
} else 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 if (current_cpu == "arm64") {
|
|
if (is_win || is_chromeos || is_mac) {
|
|
# This is necessary for CrOS and macOS as they reuse the Linux
|
|
# configuration, of which there are two (see the later definition of
|
|
# os_category).
|
|
cpu_arch_full = "arm64-highbd"
|
|
} else {
|
|
cpu_arch_full = current_cpu
|
|
}
|
|
} else if (current_cpu == "riscv64") {
|
|
cpu_arch_full = "generic"
|
|
} else if (current_cpu == "loong64") {
|
|
cpu_arch_full = "loongarch"
|
|
} else {
|
|
cpu_arch_full = current_cpu
|
|
}
|
|
|
|
if (is_nacl) {
|
|
platform_include_dir = "source/config/nacl"
|
|
} else {
|
|
# 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
|
|
# vpx_config.asm
|
|
if (is_ios && current_cpu == "arm") {
|
|
os_category = current_os
|
|
} else if (is_posix || is_fuchsia) {
|
|
# Should cover linux, fuchsia, 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"
|
|
}
|
|
|
|
libvpx_include_dirs = [
|
|
"source/config",
|
|
"source/libvpx",
|
|
platform_include_dir,
|
|
]
|
|
|
|
# Private configuration used in building libvpx.
|
|
config("libvpx_config") {
|
|
include_dirs = libvpx_include_dirs
|
|
defines = [
|
|
"CHROMIUM",
|
|
|
|
# Maximum allowed for a direct mapping,
|
|
# see partition_alloc::internal::MaxDirectMapped()
|
|
"VPX_MAX_ALLOCABLE_MEMORY=((1ULL << 31) - (1 << 21))",
|
|
]
|
|
|
|
# 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 = [
|
|
# 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",
|
|
]
|
|
} else if (!is_win) {
|
|
cflags = [
|
|
"-Wno-unused-function",
|
|
"-Wno-sign-compare",
|
|
]
|
|
}
|
|
}
|
|
|
|
# This config is applied to targets that depend on libvpx.
|
|
config("libvpx_public_config") {
|
|
include_dirs = [
|
|
# libvpx_public_config does not have "source/config" (which gives access to
|
|
# the private header vpx_version.h) because code outside the libvpx library
|
|
# should use the vpx_codec_version*() functions and macros declared in the
|
|
# public header vpx_codec.h.
|
|
"source/libvpx",
|
|
platform_include_dir,
|
|
]
|
|
}
|
|
|
|
source_set("libvpx_test_generic_headers") {
|
|
deps = [ ":libvpx" ]
|
|
sources = libvpx_test_srcs_generic_headers
|
|
}
|
|
|
|
config("gtest_config") {
|
|
include_dirs = [
|
|
"source/libvpx/third_party/googletest/src/include/",
|
|
"source/libvpx/third_party/googletest/src/",
|
|
]
|
|
}
|
|
|
|
source_set("gtest") {
|
|
sources = [ "source/libvpx/third_party/googletest/src/src/gtest-all.cc" ]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
|
|
public_configs = [ ":gtest_config" ]
|
|
|
|
# gtest-death-test dependency on fdio for fuchsia builds
|
|
if (is_fuchsia) {
|
|
deps = [
|
|
"//third_party/fuchsia-sdk/sdk/pkg/fdio",
|
|
"//third_party/fuchsia-sdk/sdk/pkg/zx",
|
|
]
|
|
}
|
|
}
|
|
|
|
executable("decode_encode_profile_test") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
include_dirs = [ "source/libvpx/third_party/libwebm/" ]
|
|
|
|
testonly = true
|
|
sources = [
|
|
"source/libvpx/test/decode_test_driver.cc",
|
|
"source/libvpx/test/encode_test_driver.cc",
|
|
"source/libvpx/test/init_vpx_test.cc",
|
|
"source/libvpx/test/test_libvpx.cc",
|
|
"source/libvpx/test/test_vectors.cc",
|
|
"source/libvpx/test/test_vectors.h",
|
|
"source/libvpx/third_party/libwebm/mkvparser/mkvparser.cc",
|
|
"source/libvpx/third_party/libwebm/mkvparser/mkvreader.cc",
|
|
"source/libvpx/tools_common.h",
|
|
"source/libvpx/webmdec.cc",
|
|
"source/libvpx/y4minput.c",
|
|
"tests/pgo/decode_encode_profile_test.cc",
|
|
]
|
|
deps = [
|
|
":gtest",
|
|
":libvpx",
|
|
":libvpx_test_generic_headers",
|
|
]
|
|
}
|
|
|
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
|
nasm_assemble("libvpx_asm") {
|
|
if (current_cpu == "x86") {
|
|
sources = libvpx_srcs_x86_assembly
|
|
} else if (current_cpu == "x64") {
|
|
sources = libvpx_srcs_x86_64_assembly
|
|
}
|
|
|
|
defines = [ "CHROMIUM" ]
|
|
if (is_android) {
|
|
# On Android, define __ANDROID__ to use alternative standard library
|
|
# functions.
|
|
defines += [ "__ANDROID__" ]
|
|
}
|
|
include_dirs = libvpx_include_dirs
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
|
# The following targets are deliberately source_set rather than
|
|
# static_library. The :libvpx 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("libvpx_intrinsics_mmx") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (!is_win) {
|
|
cflags = [ "-mmmx" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
sources = libvpx_srcs_x86_mmx
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
} else if (current_cpu == "x64") {
|
|
sources = libvpx_srcs_x86_64_mmx
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_sse2") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (!is_win || is_clang) {
|
|
cflags = [ "-msse2" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
sources = libvpx_srcs_x86_sse2
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
} else if (current_cpu == "x64") {
|
|
sources = libvpx_srcs_x86_64_sse2
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_ssse3") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (!is_win || is_clang) {
|
|
cflags = [ "-mssse3" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
sources = libvpx_srcs_x86_ssse3
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
} else if (current_cpu == "x64") {
|
|
sources = libvpx_srcs_x86_64_ssse3
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_sse4_1") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (!is_win || is_clang) {
|
|
cflags = [ "-msse4.1" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
sources = libvpx_srcs_x86_sse4_1
|
|
} else if (current_cpu == "x64") {
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
sources = libvpx_srcs_x86_64_sse4_1
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_avx") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (is_win) {
|
|
cflags = [ "/arch:AVX" ]
|
|
} else {
|
|
cflags = [ "-mavx" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
sources = libvpx_srcs_x86_avx
|
|
} else if (current_cpu == "x64") {
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
sources = libvpx_srcs_x86_64_avx
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_avx2") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (is_win) {
|
|
cflags = [ "/arch:AVX2" ]
|
|
} else {
|
|
cflags = [ "-mavx2" ]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
sources = libvpx_srcs_x86_avx2
|
|
} else if (current_cpu == "x64") {
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
sources = libvpx_srcs_x86_64_avx2
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_avx512") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (is_win) {
|
|
# clang-cl does not accept this flag.
|
|
# https://bugs.chromium.org/p/chromium/issues/detail?id=783370
|
|
cflags = [ "/arch:AVX512" ]
|
|
} else {
|
|
cflags = [
|
|
"-mavx512f",
|
|
"-mavx512cd",
|
|
"-mavx512bw",
|
|
"-mavx512dq",
|
|
"-mavx512vl",
|
|
]
|
|
}
|
|
if (current_cpu == "x86") {
|
|
deps = [ ":libvpx_x86_headers" ]
|
|
sources = libvpx_srcs_x86_avx512
|
|
} else if (current_cpu == "x64") {
|
|
deps = [ ":libvpx_x86_64_headers" ]
|
|
sources = libvpx_srcs_x86_64_avx512
|
|
}
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "loong64") {
|
|
source_set("libvpx_loongarch_lsx") {
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
cflags = [ "-mlsx" ]
|
|
sources = libvpx_srcs_loongarch_lsx
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "arm" || current_cpu == "arm64") {
|
|
source_set("libvpx_intrinsics_neon") {
|
|
check_includes = false
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (current_cpu == "arm") {
|
|
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
cflags = [ "-mfpu=neon" ]
|
|
}
|
|
if (cpu_arch_full == "arm-neon") {
|
|
sources = libvpx_srcs_arm_neon_neon
|
|
deps = [ ":libvpx_arm_neon_headers" ]
|
|
} else if (cpu_arch_full == "arm-neon-highbd") {
|
|
sources = libvpx_srcs_arm_neon_highbd_neon
|
|
deps = [ ":libvpx_arm_neon_highbd_headers" ]
|
|
} else if (cpu_arch_full == "arm-neon-cpu-detect") {
|
|
sources = libvpx_srcs_arm_neon_cpu_detect_neon
|
|
deps = [ ":libvpx_arm_neon_cpu_detect_headers" ]
|
|
} else if (cpu_arch_full == "arm64") {
|
|
sources = libvpx_srcs_arm64_neon
|
|
deps = [ ":libvpx_arm64_headers" ]
|
|
} else if (cpu_arch_full == "arm64-highbd") {
|
|
sources = libvpx_srcs_arm64_highbd_neon
|
|
deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "arm64") {
|
|
source_set("libvpx_intrinsics_neon_dotprod") {
|
|
check_includes = false
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ "//build/config/compiler:march_dotprod" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (cpu_arch_full == "arm64") {
|
|
sources = libvpx_srcs_arm64_neon_dotprod
|
|
deps = [ ":libvpx_arm64_headers" ]
|
|
} else if (cpu_arch_full == "arm64-highbd") {
|
|
sources = libvpx_srcs_arm64_highbd_neon_dotprod
|
|
deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_neon_i8mm") {
|
|
check_includes = false
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ "//build/config/compiler:march_i8mm" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (cpu_arch_full == "arm64") {
|
|
sources = libvpx_srcs_arm64_neon_i8mm
|
|
deps = [ ":libvpx_arm64_headers" ]
|
|
} else if (cpu_arch_full == "arm64-highbd") {
|
|
sources = libvpx_srcs_arm64_highbd_neon_i8mm
|
|
deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
}
|
|
}
|
|
|
|
# SVE is disabled for Windows due to a limitation with clang-cl-18:
|
|
# third_party\llvm-build\Release+Asserts\lib\clang\18\include\arm_sve.h(271,1):
|
|
# error: cannot mangle this built-in __SVInt8_t type yet
|
|
if (!is_win) {
|
|
source_set("libvpx_intrinsics_sve") {
|
|
check_includes = false
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ "//build/config/compiler:march_dotprod_i8mm_sve" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (cpu_arch_full == "arm64") {
|
|
sources = libvpx_srcs_arm64_sve
|
|
deps = [ ":libvpx_arm64_headers" ]
|
|
} else if (cpu_arch_full == "arm64-highbd") {
|
|
sources = libvpx_srcs_arm64_highbd_sve
|
|
deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_intrinsics_sve2") {
|
|
check_includes = false
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ "//build/config/compiler:march_sve2" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (cpu_arch_full == "arm64") {
|
|
sources = libvpx_srcs_arm64_sve2
|
|
deps = [ ":libvpx_arm64_headers" ]
|
|
} else if (cpu_arch_full == "arm64-highbd") {
|
|
sources = libvpx_srcs_arm64_highbd_sve2
|
|
deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "arm") {
|
|
if (cpu_arch_full == "arm-neon") {
|
|
arm_assembly_sources = libvpx_srcs_arm_neon_assembly
|
|
} else if (cpu_arch_full == "arm-neon-highbd") {
|
|
arm_assembly_sources = libvpx_srcs_arm_neon_highbd_assembly
|
|
} else if (cpu_arch_full == "arm-neon-cpu-detect") {
|
|
arm_assembly_sources = libvpx_srcs_arm_neon_cpu_detect_assembly
|
|
} else {
|
|
arm_assembly_sources = libvpx_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/libvpx/run_perl.py"
|
|
sources = arm_assembly_sources
|
|
gen_file =
|
|
get_label_info("//third_party/libvpx/source/libvpx", "root_gen_dir") +
|
|
"/{{source_root_relative_dir}}/{{source_file_part}}.S"
|
|
outputs = [ gen_file ]
|
|
if (is_ios) {
|
|
ads2gas_script =
|
|
"//third_party/libvpx/source/libvpx/build/make/ads2gas_apple.pl"
|
|
} else {
|
|
ads2gas_script =
|
|
"//third_party/libvpx/source/libvpx/build/make/ads2gas.pl"
|
|
}
|
|
args = [
|
|
"-s",
|
|
rebase_path(ads2gas_script, root_build_dir),
|
|
"-i",
|
|
"{{source}}",
|
|
"-o",
|
|
rebase_path(gen_file, root_build_dir),
|
|
]
|
|
}
|
|
|
|
static_library("libvpx_assembly_arm") {
|
|
sources = get_target_outputs(":convert_arm_assembly")
|
|
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
|
|
configs += [ ":libvpx_config" ]
|
|
if (cpu_arch_full == "arm-neon" || cpu_arch_full == "arm-neon-cpu-detect" ||
|
|
cpu_arch_full == "arm-neon-highbd") {
|
|
asmflags = [ "-mfpu=neon" ]
|
|
|
|
# allow asm files to include generated sources which match the source
|
|
# tree layout, e.g., vpx_dsp/arm/...
|
|
include_dirs = [ get_label_info("//third_party/libvpx/source/libvpx",
|
|
"target_gen_dir") ]
|
|
}
|
|
deps = [ ":convert_arm_assembly" ]
|
|
}
|
|
}
|
|
|
|
source_set("libvpx_x86_headers") {
|
|
sources = libvpx_srcs_x86_headers
|
|
}
|
|
|
|
source_set("libvpx_x86_64_headers") {
|
|
sources = libvpx_srcs_x86_64_headers
|
|
}
|
|
|
|
source_set("libvpx_arm_headers") {
|
|
sources = libvpx_srcs_arm_headers
|
|
}
|
|
|
|
source_set("libvpx_arm_neon_headers") {
|
|
sources = libvpx_srcs_arm_neon_headers
|
|
}
|
|
|
|
source_set("libvpx_arm_neon_cpu_detect_headers") {
|
|
sources = libvpx_srcs_arm_neon_cpu_detect_headers
|
|
}
|
|
|
|
source_set("libvpx_arm64_headers") {
|
|
sources = libvpx_srcs_arm64_headers
|
|
}
|
|
|
|
source_set("libvpx_arm_neon_highbd_headers") {
|
|
sources = libvpx_srcs_arm_neon_highbd_headers
|
|
}
|
|
|
|
source_set("libvpx_arm64_highbd_headers") {
|
|
sources = libvpx_srcs_arm64_highbd_headers
|
|
}
|
|
|
|
source_set("libvpx_mips_headers") {
|
|
sources = libvpx_srcs_mips_headers
|
|
}
|
|
|
|
source_set("libvpx_loongarch_headers") {
|
|
sources = libvpx_srcs_loongarch_headers
|
|
}
|
|
|
|
source_set("libvpx_ppc64_headers") {
|
|
sources = libvpx_srcs_ppc64_headers
|
|
}
|
|
|
|
source_set("libvpx_nacl_headers") {
|
|
sources = libvpx_srcs_nacl_headers
|
|
}
|
|
|
|
source_set("libvpx_generic_headers") {
|
|
sources = libvpx_srcs_generic_headers
|
|
}
|
|
|
|
static_library("libvpx") {
|
|
if (!is_debug && (is_win || is_chromeos)) {
|
|
configs -= [ "//build/config/compiler:default_optimization" ]
|
|
configs += [ "//build/config/compiler:optimize_max" ]
|
|
}
|
|
|
|
if (is_nacl) {
|
|
sources = libvpx_srcs_generic
|
|
public_deps = [ ":libvpx_generic_headers" ]
|
|
} else if (current_cpu == "x86") {
|
|
sources = libvpx_srcs_x86
|
|
public_deps = [ ":libvpx_x86_headers" ]
|
|
} else if (current_cpu == "x64") {
|
|
if (is_msan) {
|
|
sources = libvpx_srcs_generic
|
|
public_deps = [ ":libvpx_generic_headers" ]
|
|
} else {
|
|
sources = libvpx_srcs_x86_64
|
|
public_deps = [ ":libvpx_x86_64_headers" ]
|
|
}
|
|
} else if (current_cpu == "mipsel" || current_cpu == "mips64el") {
|
|
sources = libvpx_srcs_mips
|
|
public_deps = [ ":libvpx_mips_headers" ]
|
|
} else if (current_cpu == "arm") {
|
|
if (is_chromeos) {
|
|
sources = libvpx_srcs_arm_neon_highbd
|
|
public_deps = [ ":libvpx_arm_neon_highbd_headers" ]
|
|
} else if (arm_use_neon) {
|
|
sources = libvpx_srcs_arm_neon
|
|
public_deps = [ ":libvpx_arm_neon_headers" ]
|
|
} else if (is_android) {
|
|
sources = libvpx_srcs_arm_neon_cpu_detect
|
|
public_deps = [ ":libvpx_arm_neon_cpu_detect_headers" ]
|
|
} else {
|
|
sources = libvpx_srcs_arm
|
|
public_deps = [ ":libvpx_arm_headers" ]
|
|
}
|
|
} else if (current_cpu == "arm64") {
|
|
if (is_chromeos || is_win || is_mac) {
|
|
sources = libvpx_srcs_arm64_highbd
|
|
public_deps = [ ":libvpx_arm64_highbd_headers" ]
|
|
} else {
|
|
sources = libvpx_srcs_arm64
|
|
public_deps = [ ":libvpx_arm64_headers" ]
|
|
}
|
|
} else if (current_cpu == "ppc64") {
|
|
sources = libvpx_srcs_ppc64
|
|
public_deps = [ ":libvpx_ppc64_headers" ]
|
|
} else if (current_cpu == "riscv64") {
|
|
sources = libvpx_srcs_generic
|
|
public_deps = [ ":libvpx_generic_headers" ]
|
|
} else if (current_cpu == "loong64") {
|
|
sources = libvpx_srcs_loongarch
|
|
public_deps = [ ":libvpx_loongarch_headers" ]
|
|
}
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
deps = []
|
|
if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) {
|
|
deps += [
|
|
":libvpx_asm",
|
|
":libvpx_intrinsics_avx",
|
|
":libvpx_intrinsics_avx2",
|
|
":libvpx_intrinsics_avx512",
|
|
":libvpx_intrinsics_mmx",
|
|
":libvpx_intrinsics_sse2",
|
|
":libvpx_intrinsics_sse4_1",
|
|
":libvpx_intrinsics_ssse3",
|
|
]
|
|
}
|
|
if (cpu_arch_full == "arm-neon-highbd" || cpu_arch_full == "arm-neon" ||
|
|
cpu_arch_full == "arm-neon-cpu-detect" || current_cpu == "arm64") {
|
|
deps += [ ":libvpx_intrinsics_neon" ]
|
|
}
|
|
if (current_cpu == "arm64") {
|
|
deps += [ ":libvpx_intrinsics_neon_dotprod" ]
|
|
deps += [ ":libvpx_intrinsics_neon_i8mm" ]
|
|
if (!is_win) {
|
|
deps += [
|
|
":libvpx_intrinsics_sve",
|
|
":libvpx_intrinsics_sve2",
|
|
]
|
|
}
|
|
}
|
|
if (is_android) {
|
|
deps += [ "//third_party/cpu_features:ndk_compat" ]
|
|
}
|
|
if (current_cpu == "arm" && arm_assembly_sources != []) {
|
|
deps += [ ":libvpx_assembly_arm" ]
|
|
}
|
|
if (current_cpu == "loong64") {
|
|
deps += [ ":libvpx_loongarch_lsx" ]
|
|
}
|
|
|
|
public_configs = [ ":libvpx_public_config" ]
|
|
}
|
|
|
|
static_library("libvpxrc") {
|
|
if (!is_debug && is_win) {
|
|
configs -= [ "//build/config/compiler:default_optimization" ]
|
|
configs += [ "//build/config/compiler:optimize_max" ]
|
|
}
|
|
|
|
sources = [
|
|
"//third_party/libvpx/source/libvpx/vp8/vp8_ratectrl_rtc.cc",
|
|
"//third_party/libvpx/source/libvpx/vp8/vp8_ratectrl_rtc.h",
|
|
"//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
|
|
"//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
|
|
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_ratectrl_rtc.h",
|
|
]
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
configs += [ ":libvpx_config" ]
|
|
public_deps = [ ":libvpx" ]
|
|
|
|
public_configs = [ ":libvpx_public_config" ]
|
|
}
|
|
|
|
test("vp8_encoder_fuzz_test") {
|
|
sources = [ "tests/fuzzer/vp8_encoder_fuzz_test.cc" ]
|
|
|
|
fuzztests = [
|
|
"VP8EncodeFuzzTest.VP8EncodeArbitraryCallSequenceSucceeds",
|
|
"VP8EncodeFuzzTest.VP8EncodeSucceeds",
|
|
]
|
|
|
|
deps = [
|
|
":libvpx",
|
|
"//third_party/fuzztest:fuzztest_gtest_main",
|
|
]
|
|
}
|
|
|
|
test("vp9_encoder_fuzz_test") {
|
|
sources = [ "tests/fuzzer/vp9_encoder_fuzz_test.cc" ]
|
|
|
|
fuzztests = [
|
|
"VP9EncodeFuzzTest.VP9EncodeArbitraryCallSequenceSucceeds",
|
|
"VP9EncodeFuzzTest.VP9EncodeSucceeds",
|
|
]
|
|
|
|
deps = [
|
|
":libvpx",
|
|
"//third_party/fuzztest:fuzztest_gtest_main",
|
|
]
|
|
}
|
|
|
|
test("test_libvpx") {
|
|
sources = libvpx_test_srcs_generic
|
|
sources += libvpx_test_srcs_generic_cc
|
|
|
|
include_dirs = [ "source/libvpx/third_party/libwebm/" ]
|
|
|
|
deps = [
|
|
":gtest",
|
|
":libvpx",
|
|
":libvpx_test_generic_headers",
|
|
]
|
|
|
|
if (is_android) {
|
|
use_raw_android_executable = true
|
|
defines = [ "LIBVPX_TEST_DATA_PATH=/data/local/tmp/chromium_tests_root/third_party/libvpx/testdata" ]
|
|
data = [ "testdata/" ]
|
|
} else {
|
|
defines = [ string_join("",
|
|
[
|
|
"LIBVPX_TEST_DATA_PATH=",
|
|
rebase_path("testdata", root_build_dir),
|
|
]) ]
|
|
}
|
|
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|