123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- # Copyright 2015 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/chromeos/ui_mode.gni")
- import("//build/config/sanitizers/sanitizers.gni")
- import("//third_party/nasm/nasm_assemble.gni")
- import("//third_party/openh264/openh264_sources.gni")
- # Config shared by all openh264 targets.
- config("config") {
- cflags = []
- defines = []
- if (is_chromeos && current_cpu == "arm") {
- # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
- # devices.
- defines += [
- "HAVE_NEON",
- "__chromeos__",
- ]
- }
- # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
- if (!is_win || is_clang) {
- cflags += [
- "-Wno-format",
- "-Wno-format-security",
- "-Wno-header-hygiene",
- "-Wno-unused-function",
- "-Wno-unused-value",
- ]
- }
- # Platform-specific defines.
- if (is_android) {
- # Android NDK is necessary for its cpufeatures and this define is what
- # OpenH264 code uses to check if it should be used.
- defines += [ "ANDROID_NDK" ]
- }
- }
- # MSAN builds are flaky with assembler. crbug.com/685168
- use_assembler = (is_win || is_mac || is_linux || is_chromeos) &&
- (current_cpu == "x86" || current_cpu == "x64") && !is_msan
- # This IF statement will make the targets visible only on specific builds,
- # which will lead to failures on other platforms if accidentally invoked.
- if (use_assembler) {
- asm_defines = []
- if (!is_component_build) {
- if (is_apple) {
- asm_defines += [ "WELS_PRIVATE_EXTERN=private_extern" ]
- } else if (is_linux || is_chromeos || is_android || is_fuchsia) {
- asm_defines += [ "WELS_PRIVATE_EXTERN=hidden" ]
- }
- }
- nasm_assemble("openh264_common_asm") {
- include_dirs = openh264_common_include_dirs
- sources = openh264_common_sources_asm_x86
- defines = asm_defines
- if (current_cpu == "x86") {
- defines += [
- "X86_32",
- "X86_32_PICASM",
- ]
- } else { # x64
- if (is_mac) {
- defines += [
- "PREFIX",
- "UNIX64",
- ]
- } else if (is_win) {
- defines += [ "WIN64" ]
- } else if (is_linux || is_chromeos) {
- defines += [ "UNIX64" ]
- }
- }
- }
- nasm_assemble("openh264_processing_asm") {
- include_dirs = openh264_processing_include_dirs
- include_dirs += [ "./src/codec/common/x86" ]
- sources = openh264_processing_sources_asm_x86
- defines = asm_defines
- if (current_cpu == "x86") {
- defines += [
- "X86_32",
- "X86_32_PICASM",
- ]
- } else { # x64
- if (is_mac) {
- defines += [
- "PREFIX",
- "UNIX64",
- ]
- } else if (is_win) {
- defines += [ "WIN64" ]
- } else if (is_linux || is_chromeos) {
- defines += [ "UNIX64" ]
- }
- }
- }
- nasm_assemble("openh264_encoder_asm") {
- include_dirs = openh264_encoder_include_dirs
- include_dirs += [ "./src/codec/common/x86" ]
- sources = openh264_encoder_sources_asm_x86
- defines = asm_defines
- if (current_cpu == "x86") {
- defines += [
- "X86_32",
- "X86_32_PICASM",
- ]
- } else { # x64
- if (is_mac) {
- defines += [
- "PREFIX",
- "UNIX64",
- ]
- } else if (is_win) {
- defines += [ "WIN64" ]
- } else if (is_linux || is_chromeos) {
- defines += [ "UNIX64" ]
- }
- }
- }
- } # if (is_win || is_linux || is_chromeos)
- source_set("common") {
- sources = openh264_common_sources
- if (is_chromeos && current_cpu == "arm") {
- sources += openh264_common_sources_asm_arm
- }
- include_dirs = openh264_common_include_dirs
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
- configs += [ ":config" ]
- deps = []
- if (use_assembler) {
- defines = [ "X86_ASM" ]
- deps += [ ":openh264_common_asm" ]
- }
- if (is_android) {
- deps += [
- # Defines "android_get/setCpu..." functions. The original OpenH264 build
- # files replaces these using macros for "wels_..." versions of the same
- # functions. We do not have access to these and use the <cpu-features.h>
- # ones instead.
- "//third_party/android_ndk:cpu_features",
- ]
- }
- }
- source_set("processing") {
- sources = openh264_processing_sources
- if (is_chromeos && current_cpu == "arm") {
- sources += openh264_processing_sources_asm_arm
- }
- include_dirs = openh264_processing_include_dirs
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
- configs += [ ":config" ]
- deps = [ ":common" ]
- if (use_assembler) {
- defines = [ "X86_ASM" ]
- deps += [ ":openh264_processing_asm" ]
- }
- }
- source_set("encoder") {
- sources = openh264_encoder_sources
- if (is_chromeos && current_cpu == "arm") {
- sources += openh264_encoder_sources_asm_arm
- }
- include_dirs = openh264_encoder_include_dirs
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
- configs += [ ":config" ]
- # TODO: Remove after fixing always-true condition
- # third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp:142.
- if (is_clang) {
- configs -= [ "//build/config/clang:extra_warnings" ]
- }
- deps = [
- ":common",
- ":processing",
- ]
- if (use_assembler) {
- defines = [ "X86_ASM" ]
- deps += [ ":openh264_encoder_asm" ]
- }
- }
|