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..b7d38486e4a65c96d149d7ff7867d9d6464ba782 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,87 @@ config("config") { |
| } |
| } |
| +# YASM assembly is only checked to be working on Windows. |
| +# This IF statement will make the targets visible only on Windows builds, |
| +# which will lead to failures on other platforms if accidentally invoked. |
| +if (is_win || is_linux) { |
|
ehmaldonado_chromium
2017/01/17 14:17:33
Do you plan to enable it for Mac too, and get rid
hta - Chromium
2017/01/17 14:34:45
Mac has a special problem with symbol handling (we
ehmaldonado_chromium
2017/01/17 14:52:20
The best place to look at would be:
https://cs.chr
|
| + |
| +yasm_assemble("openh264_common_yasm") { |
| + include_dirs = openh264_common_include_dirs |
| + if (target_cpu == "x86" || target_cpu == "x64") { |
| + sources = openh264_common_sources_asm_x86 |
| + if (target_cpu == "x86") { |
| + defines = [ "X86_32" ] |
| + } else { # x64 |
| + if (is_mac || is_linux) { |
| + defines = [ |
| + "PREFIX", |
| + "UNIX64", |
| + ] |
| + } else if (is_win) { |
| + defines = [ "WIN64" ] |
| + } else { |
| + assert(false, "Assembly not defined for this platform") |
| + } |
| + } |
| + } else { |
| + # TODO(hta): Add support for other platforms |
| + assert(false, "Assembly not defined for this CPU") |
| + } |
| +} |
| + |
| +yasm_assemble("openh264_processing_yasm") { |
| + include_dirs = openh264_processing_include_dirs |
| + include_dirs += [ "./src/codec/common/x86" ] |
| + if (target_cpu == "x86" || target_cpu == "x64") { |
| + sources = openh264_processing_sources_asm_x86 |
| + if (target_cpu == "x86") { |
| + defines = [ "X86_32" ] |
| + } else { # x64 |
| + if (is_mac || is_linux) { |
| + defines = [ |
| + "PREFIX", |
| + "UNIX64", |
| + ] |
| + } else if (is_win) { |
| + defines = [ "WIN64" ] |
| + } else { |
| + assert(false, "Assembly not defined for this platform") |
| + } |
| + } |
| + } else { |
| + # TODO(hta): Add support for other platforms |
| + assert(false, "Assembly not defined for this CPU") |
|
ehmaldonado_chromium
2017/01/17 14:17:33
What if you move this above and make it something
hta - Chromium
2017/01/17 14:34:45
Sounds better. Will do.
|
| + } |
| +} |
| + |
| +yasm_assemble("openh264_encoder_yasm") { |
| + include_dirs = openh264_encoder_include_dirs |
| + include_dirs += [ "./src/codec/common/x86" ] |
| + if (target_cpu == "x86" || target_cpu == "x64") { |
| + sources = openh264_encoder_sources_asm_x86 |
| + if (target_cpu == "x86") { |
| + defines = [ "X86_32" ] |
| + } else { # x64 |
| + if (is_mac || is_linux) { |
| + defines = [ |
| + "PREFIX", |
| + "UNIX64", |
| + ] |
| + } else if (is_win) { |
| + defines = [ "WIN64" ] |
| + } else { |
| + assert(false, "Assembly not defined for this platform") |
| + } |
| + } |
| + } else { |
| + # TODO(hta): Add support for other platforms |
| + assert(false, "Assembly not defined for this CPU") |
| + } |
| +} |
| + |
| +} # if is_win |
| + |
| source_set("common") { |
| sources = openh264_common_sources |
| include_dirs = openh264_common_include_dirs |
| @@ -36,6 +118,10 @@ source_set("common") { |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| configs += [ ":config" ] |
| deps = [] |
| + if (is_win && (target_cpu == "x86" || target_cpu == "x64")) { |
|
kthelgason
2017/01/18 08:10:33
Targets are defined for windows and linux, but onl
|
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_common_yasm" ] |
| + } |
| if (is_android) { |
| deps += [ |
| # Defines "android_get/setCpu..." functions. The original OpenH264 build |
| @@ -57,6 +143,10 @@ source_set("processing") { |
| deps = [ |
| ":common", |
| ] |
| + if (is_win && (target_cpu == "x86" || target_cpu == "x64")) { |
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_processing_yasm" ] |
| + } |
| } |
| source_set("encoder") { |
| @@ -76,4 +166,8 @@ source_set("encoder") { |
| ":common", |
| ":processing", |
| ] |
| + if (is_win && (target_cpu == "x86" || target_cpu == "x64")) { |
| + defines = [ "X86_ASM" ] |
| + deps += [ ":openh264_encoder_yasm" ] |
| + } |
| } |