Index: third_party/libvpx_new/BUILD.gn |
diff --git a/third_party/libvpx_new/BUILD.gn b/third_party/libvpx_new/BUILD.gn |
index e2a0320c19989c0d9ab480921d1757d298c288f2..24754dbc0bf71fb7e4dc302af572ffc41f9baccd 100644 |
--- a/third_party/libvpx_new/BUILD.gn |
+++ b/third_party/libvpx_new/BUILD.gn |
@@ -1,317 +1,15 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Copyright 2016 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/config/arm.gni") |
-import("//build/config/android/config.gni") |
-import("//build/config/sanitizers/sanitizers.gni") |
-import("//third_party/libvpx_new/libvpx_srcs.gni") |
-import("//third_party/yasm/yasm_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 (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 = "//third_party/libvpx_new/source/config/nacl" |
-} else { |
- if (is_posix && !is_mac) { |
- os_category = "linux" |
- } else { |
- os_category = current_os |
- } |
- platform_include_dir = |
- "//third_party/libvpx_new/source/config/$os_category/$cpu_arch_full" |
-} |
- |
-config("libvpx_config") { |
- include_dirs = [ |
- "//third_party/libvpx_new/source/config", |
- platform_include_dir, |
- "//third_party/libvpx_new/source/libvpx", |
- "$root_gen_dir/third_party/libvpx_new", # Provides vpx_rtcd.h. |
- ] |
- |
- if (current_cpu == "arm" && is_clang) { |
- # TODO(hans) Enable integrated-as (crbug.com/124610). |
- asmflags = [ "-fno-integrated-as" ] |
- if (is_android) { |
- rebased_android_toolchain_root = |
- rebase_path(android_toolchain_root, root_build_dir) |
- |
- # Else /usr/bin/as gets picked up. |
- asmflags += [ "-B${rebased_android_toolchain_root}/bin" ] |
- } |
- } |
-} |
- |
-# 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. |
-config("libvpx_warnings") { |
- 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_external_config") { |
- include_dirs = [ "//third_party/libvpx_new/source/libvpx" ] |
-} |
- |
-if (current_cpu == "x86" || current_cpu == "x64") { |
- yasm_assemble("libvpx_yasm") { |
- 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 = [ |
- platform_include_dir, |
- "//third_party/libvpx_new/source/config", |
- "//third_party/libvpx_new/source/libvpx", |
- target_gen_dir, |
- ] |
- } |
-} |
- |
-static_library("libvpx_intrinsics_mmx") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (!is_win) { |
- cflags = [ "-mmmx" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_mmx |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_mmx |
- } |
+ include_dirs = [ "//third_party/libvpx/source/libvpx" ] |
} |
-static_library("libvpx_intrinsics_sse2") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (!is_win || is_clang) { |
- cflags = [ "-msse2" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_sse2 |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_sse2 |
- } |
-} |
- |
-static_library("libvpx_intrinsics_ssse3") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (!is_win || is_clang) { |
- cflags = [ "-mssse3" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_ssse3 |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_ssse3 |
- } |
-} |
- |
-static_library("libvpx_intrinsics_sse4_1") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (!is_win || is_clang) { |
- cflags = [ "-msse4.1" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_sse4_1 |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_sse4_1 |
- } |
-} |
- |
-static_library("libvpx_intrinsics_avx") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (is_win) { |
- cflags = [ "/arch:AVX" ] |
- } else { |
- cflags = [ "-mavx" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_avx |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_avx |
- } |
-} |
- |
-static_library("libvpx_intrinsics_avx2") { |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- if (is_win) { |
- cflags = [ "/arch:AVX2" ] |
- } else { |
- cflags = [ "-mavx2" ] |
- } |
- if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86_avx2 |
- } else if (current_cpu == "x64") { |
- sources = libvpx_srcs_x86_64_avx2 |
- } |
-} |
- |
-if (cpu_arch_full == "arm-neon-cpu-detect") { |
- static_library("libvpx_intrinsics_neon") { |
- configs -= [ "//build/config/compiler:compiler_arm_fpu" ] |
- configs += [ ":libvpx_config" ] |
- configs += [ ":libvpx_warnings" ] |
- cflags = [ "-mfpu=neon" ] |
- sources = libvpx_srcs_arm_neon_cpu_detect_neon |
- } |
-} |
- |
-# Converts ARM assembly files to GAS style. |
-if (current_cpu == "arm") { |
- action_foreach("convert_arm_assembly") { |
- script = "//third_party/libvpx_new/run_perl.py" |
- if (cpu_arch_full == "arm-neon") { |
- sources = libvpx_srcs_arm_neon_assembly |
- } else if (cpu_arch_full == "arm-neon-cpu-detect") { |
- sources = libvpx_srcs_arm_neon_cpu_detect_assembly |
- } else { |
- sources = libvpx_srcs_arm_assembly |
- } |
- outputs = [ |
- "$target_gen_dir/{{source_name_part}}.S", |
- ] |
- args = [ |
- "-s", |
- rebase_path( |
- "//third_party/libvpx_new/source/libvpx/build/make/ads2gas.pl", |
- root_build_dir), |
- "-i", |
- "{{source}}", |
- "-o", |
- rebase_path("$target_gen_dir/{{source_name_part}}.S"), |
- ] |
- } |
- |
- static_library("libvpx_assembly_arm") { |
- sources = get_target_outputs(":convert_arm_assembly") |
- configs -= [ "//build/config/compiler:compiler_arm_fpu" ] |
- configs += [ ":libvpx_config" ] |
- configs += [ ":libvpx_warnings" ] |
- if (cpu_arch_full == "arm-neon" || cpu_arch_full == "arm-neon-cpu-detect") { |
- asmflags = [ "-mfpu=neon" ] |
- } |
- deps = [ |
- ":convert_arm_assembly", |
- ] |
- } |
-} |
- |
-static_library("libvpx_new") { |
- if (!is_debug && is_win) { |
- configs -= [ "//build/config/compiler:default_optimization" ] |
- configs += [ "//build/config/compiler:optimize_max" ] |
- } |
- |
- if (is_nacl) { |
- sources = libvpx_srcs_generic |
- } else if (current_cpu == "x86") { |
- sources = libvpx_srcs_x86 |
- } else if (current_cpu == "x64") { |
- if (is_msan) { |
- sources = libvpx_srcs_generic |
- } else { |
- sources = libvpx_srcs_x86_64 |
- } |
- } else if (current_cpu == "mipsel") { |
- sources = libvpx_srcs_mips |
- } else if (current_cpu == "arm") { |
- if (arm_use_neon) { |
- sources = libvpx_srcs_arm_neon |
- } else if (is_android) { |
- sources = libvpx_srcs_arm_neon_cpu_detect |
- } else { |
- sources = libvpx_srcs_arm |
- } |
- } else if (current_cpu == "arm64") { |
- sources = libvpx_srcs_arm64 |
- } |
- |
- configs += [ ":libvpx_config" ] |
- configs -= [ "//build/config/compiler:chromium_code" ] |
- configs += [ "//build/config/compiler:no_chromium_code" ] |
- configs += [ ":libvpx_warnings" ] |
- deps = [] |
- if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { |
- deps += [ |
- ":libvpx_intrinsics_avx", |
- ":libvpx_intrinsics_avx2", |
- ":libvpx_intrinsics_mmx", |
- ":libvpx_intrinsics_sse2", |
- ":libvpx_intrinsics_sse4_1", |
- ":libvpx_intrinsics_ssse3", |
- ":libvpx_yasm", |
- ] |
- } |
- if (cpu_arch_full == "arm-neon-cpu-detect") { |
- deps += [ ":libvpx_intrinsics_neon" ] |
- } |
- if (is_android) { |
- deps += [ "//third_party/android_tools:cpu_features" ] |
- } |
- if (current_cpu == "arm") { |
- deps += [ ":libvpx_assembly_arm" ] |
- } |
- |
+group("libvpx_new") { |
+ public_deps = [ |
+ "//third_party/libvpx", |
+ ] |
public_configs = [ ":libvpx_external_config" ] |
} |