mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 06:16:30 +03:00
195 lines
5.3 KiB
Plaintext
195 lines
5.3 KiB
Plaintext
# 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/sanitizers/sanitizers.gni")
|
|
import("//third_party/openh264/openh264_args.gni")
|
|
import("//third_party/openh264/openh264_sources.gni")
|
|
import("//third_party/yasm/yasm_assemble.gni")
|
|
|
|
# Config shared by all openh264 targets.
|
|
config("config") {
|
|
cflags = []
|
|
|
|
if (is_chromeos && target_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" ]
|
|
}
|
|
}
|
|
|
|
# YASM assembly is only checked to be working on Windows and Linux.
|
|
# Mac is known to fail certain tests when building, but actual assembly
|
|
# is believed to work.
|
|
# MSAN builds are flaky with assembler. crbug.com/685168
|
|
|
|
use_assembler = (is_win || is_linux) &&
|
|
(target_cpu == "x86" || target_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) {
|
|
yasm_defines = []
|
|
if (!is_component_build) {
|
|
if (is_mac || is_ios) {
|
|
yasm_defines += [ "WELS_PRIVATE_EXTERN=:private_extern" ]
|
|
} else if (is_linux || is_android || is_fuchsia) {
|
|
yasm_defines += [ "WELS_PRIVATE_EXTERN=:hidden" ]
|
|
}
|
|
}
|
|
|
|
yasm_assemble("openh264_common_yasm") {
|
|
include_dirs = openh264_common_include_dirs
|
|
sources = openh264_common_sources_asm_x86
|
|
defines = yasm_defines
|
|
if (target_cpu == "x86") {
|
|
defines += [ "X86_32" ]
|
|
} else { # x64
|
|
if (is_mac) {
|
|
defines += [
|
|
"PREFIX",
|
|
"UNIX64",
|
|
]
|
|
} else if (is_win) {
|
|
defines += [ "WIN64" ]
|
|
} else if (is_linux) {
|
|
defines += [ "UNIX64" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
yasm_assemble("openh264_processing_yasm") {
|
|
include_dirs = openh264_processing_include_dirs
|
|
include_dirs += [ "./src/codec/common/x86" ]
|
|
sources = openh264_processing_sources_asm_x86
|
|
defines = yasm_defines
|
|
if (target_cpu == "x86") {
|
|
defines += [ "X86_32" ]
|
|
} else { # x64
|
|
if (is_mac) {
|
|
defines += [
|
|
"PREFIX",
|
|
"UNIX64",
|
|
]
|
|
} else if (is_win) {
|
|
defines += [ "WIN64" ]
|
|
} else if (is_linux) {
|
|
defines += [ "UNIX64" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
yasm_assemble("openh264_encoder_yasm") {
|
|
include_dirs = openh264_encoder_include_dirs
|
|
include_dirs += [ "./src/codec/common/x86" ]
|
|
sources = openh264_encoder_sources_asm_x86
|
|
defines = yasm_defines
|
|
if (target_cpu == "x86") {
|
|
defines += [ "X86_32" ]
|
|
} else { # x64
|
|
if (is_mac) {
|
|
defines += [
|
|
"PREFIX",
|
|
"UNIX64",
|
|
]
|
|
} else if (is_win) {
|
|
defines += [ "WIN64" ]
|
|
} else if (is_linux) {
|
|
defines += [ "UNIX64" ]
|
|
}
|
|
}
|
|
}
|
|
} # if (is_win || is_linux)
|
|
|
|
source_set("common") {
|
|
sources = openh264_common_sources
|
|
if (is_chromeos && target_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_yasm" ]
|
|
}
|
|
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_tools:cpu_features",
|
|
]
|
|
}
|
|
}
|
|
|
|
source_set("processing") {
|
|
sources = openh264_processing_sources
|
|
if (is_chromeos && target_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_yasm" ]
|
|
}
|
|
}
|
|
|
|
source_set("encoder") {
|
|
sources = openh264_encoder_sources
|
|
if (is_chromeos && target_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_yasm" ]
|
|
}
|
|
}
|