1 # Copyright 2015 The Chromium Authors
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import("//build/config/chromeos/ui_mode.gni")
6 import("//build/config/sanitizers/sanitizers.gni")
7 import("//third_party/nasm/nasm_assemble.gni")
8 import("//third_party/openh264/openh264_sources.gni")
10 # Config shared by all openh264 targets.
15 if (is_chromeos && current_cpu == "arm") {
16 # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
24 # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
25 if (!is_win || is_clang) {
28 "-Wno-format-security",
29 "-Wno-header-hygiene",
30 "-Wno-unused-function",
35 # Platform-specific defines.
37 # Android NDK is necessary for its cpufeatures and this define is what
38 # OpenH264 code uses to check if it should be used.
39 defines += [ "ANDROID_NDK" ]
43 # MSAN builds are flaky with assembler. crbug.com/685168
45 use_assembler = (is_win || is_mac || is_linux || is_chromeos) &&
46 (current_cpu == "x86" || current_cpu == "x64") && !is_msan
48 # This IF statement will make the targets visible only on specific builds,
49 # which will lead to failures on other platforms if accidentally invoked.
52 if (!is_component_build) {
54 asm_defines += [ "WELS_PRIVATE_EXTERN=private_extern" ]
55 } else if (is_linux || is_chromeos || is_android || is_fuchsia) {
56 asm_defines += [ "WELS_PRIVATE_EXTERN=hidden" ]
60 nasm_assemble("openh264_common_asm") {
61 include_dirs = openh264_common_include_dirs
62 sources = openh264_common_sources_asm_x86
64 if (current_cpu == "x86") {
76 defines += [ "WIN64" ]
77 } else if (is_linux || is_chromeos) {
78 defines += [ "UNIX64" ]
83 nasm_assemble("openh264_processing_asm") {
84 include_dirs = openh264_processing_include_dirs
85 include_dirs += [ "./src/codec/common/x86" ]
86 sources = openh264_processing_sources_asm_x86
88 if (current_cpu == "x86") {
100 defines += [ "WIN64" ]
101 } else if (is_linux || is_chromeos) {
102 defines += [ "UNIX64" ]
107 nasm_assemble("openh264_encoder_asm") {
108 include_dirs = openh264_encoder_include_dirs
109 include_dirs += [ "./src/codec/common/x86" ]
110 sources = openh264_encoder_sources_asm_x86
111 defines = asm_defines
112 if (current_cpu == "x86") {
124 defines += [ "WIN64" ]
125 } else if (is_linux || is_chromeos) {
126 defines += [ "UNIX64" ]
130 } # if (is_win || is_linux || is_chromeos)
132 source_set("common") {
133 sources = openh264_common_sources
134 if (is_chromeos && current_cpu == "arm") {
135 sources += openh264_common_sources_asm_arm
137 include_dirs = openh264_common_include_dirs
139 configs -= [ "//build/config/compiler:chromium_code" ]
140 configs += [ "//build/config/compiler:no_chromium_code" ]
141 configs += [ ":config" ]
144 defines = [ "X86_ASM" ]
145 deps += [ ":openh264_common_asm" ]
149 # Defines "android_get/setCpu..." functions. The original OpenH264 build
150 # files replaces these using macros for "wels_..." versions of the same
151 # functions. We do not have access to these and use the <cpu-features.h>
153 "//third_party/cpu_features:ndk_compat",
158 source_set("processing") {
159 sources = openh264_processing_sources
160 if (is_chromeos && current_cpu == "arm") {
161 sources += openh264_processing_sources_asm_arm
163 include_dirs = openh264_processing_include_dirs
165 configs -= [ "//build/config/compiler:chromium_code" ]
166 configs += [ "//build/config/compiler:no_chromium_code" ]
167 configs += [ ":config" ]
170 defines = [ "X86_ASM" ]
171 deps += [ ":openh264_processing_asm" ]
175 source_set("encoder") {
176 sources = openh264_encoder_sources
177 if (is_chromeos && current_cpu == "arm") {
178 sources += openh264_encoder_sources_asm_arm
180 include_dirs = openh264_encoder_include_dirs
182 configs -= [ "//build/config/compiler:chromium_code" ]
183 configs += [ "//build/config/compiler:no_chromium_code" ]
184 configs += [ ":config" ]
186 # TODO: Remove after fixing always-true condition
187 # third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp:142.
189 configs -= [ "//build/config/clang:extra_warnings" ]
196 defines = [ "X86_ASM" ]
197 deps += [ ":openh264_encoder_asm" ]