Chromium Code Reviews| Index: third_party/openh264/BUILD.gn |
| diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn |
| index 4301abd65e1ad83b9156bd46b2d9b750270be0b8..dfefac587585017937c962e544e5c393a9d3ca71 100644 |
| --- a/third_party/openh264/BUILD.gn |
| +++ b/third_party/openh264/BUILD.gn |
| @@ -4,6 +4,7 @@ |
| 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") { |
| @@ -28,6 +29,79 @@ |
| } |
| } |
| +# 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. |
| +# |
| +# This IF statement will make the targets visible only on specific builds, |
| +# which will lead to failures on other platforms if accidentally invoked. |
| +if (is_win || is_linux) { |
| + yasm_assemble("openh264_common_yasm") { |
| + include_dirs = openh264_common_include_dirs |
| + assert(target_cpu == "x86" || target_cpu == "x64", |
|
kjellander_chromium
2017/01/23 08:17:59
This won't work for Linux ARM configurations. Can
|
| + "Assembly not defined for this CPU") |
| + sources = openh264_common_sources_asm_x86 |
| + 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" ] |
| + assert(target_cpu == "x86" || target_cpu == "x64", |
| + "Assembly not defined for this CPU") |
| + sources = openh264_processing_sources_asm_x86 |
| + 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" ] |
| + assert(target_cpu == "x86" || target_cpu == "x64", |
| + "Assembly not defined for this CPU") |
| + sources = openh264_encoder_sources_asm_x86 |
| + 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 |
| include_dirs = openh264_common_include_dirs |
| @@ -36,6 +110,10 @@ |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| configs += [ ":config" ] |
| deps = [] |
| + if ((is_win || is_linux) && (target_cpu == "x86" || target_cpu == "x64")) { |
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_common_yasm" ] |
| + } |
| if (is_android) { |
| deps += [ |
| # Defines "android_get/setCpu..." functions. The original OpenH264 build |
| @@ -57,6 +135,10 @@ |
| deps = [ |
| ":common", |
| ] |
| + if ((is_win || is_linux) && (target_cpu == "x86" || target_cpu == "x64")) { |
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_processing_yasm" ] |
| + } |
| } |
| source_set("encoder") { |
| @@ -76,4 +158,8 @@ |
| ":common", |
| ":processing", |
| ] |
| + if ((is_win || is_linux) && (target_cpu == "x86" || target_cpu == "x64")) { |
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_encoder_yasm" ] |
| + } |
| } |