Index: third_party/widevine/cdm/BUILD.gn |
diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn |
index dda97991ca4b0c533ae7a5830d9e9d9195a86811..b66c652c0aebd8be609ce55e4964f50175098437 100644 |
--- a/third_party/widevine/cdm/BUILD.gn |
+++ b/third_party/widevine/cdm/BUILD.gn |
@@ -18,6 +18,16 @@ if (widevine_arch == "x86") { |
widevine_cdm_binary_files = [] |
widevine_cdm_manifest_file = [] |
+# Due to crbug.com/707488, in linux and chromeos chrome, we temporarily use |
+# stub cdm for building cdm adapter and copy the real cdm after that. |
+# The stub libwidevinecdm.so is in the sub-directory "./stub_cdm" to avoid |
+# GN's complaint about generating the same output in two targets. |
+# TODO(hmchen): Revert this change after crbug.com/707488 fixed. |
+use_stub_cdm_for_chrome = false |
+if (is_chrome_branded && is_linux) { |
+ use_stub_cdm_for_chrome = true |
+} |
+ |
if (is_android) { |
# Always available on Android regardless of branding. |
widevine_cdm_version_h_file = "android/widevine_cdm_version.h" |
@@ -82,7 +92,40 @@ source_set("headers") { |
] |
} |
-if (widevine_cdm_binary_files != []) { |
+if (use_stub_cdm_for_chrome) { |
+ widevine_cdm_binary_files = [] |
+ copy("copy_widevinecdm") { |
+ if (is_chromeos) { |
+ widevine_cdm = [ "chromeos/$widevine_arch/libwidevinecdm.so" ] |
+ } else if (is_linux) { |
+ widevine_cdm = [ "linux/$widevine_arch/libwidevinecdm.so" ] |
+ } |
+ sources = widevine_cdm |
+ outputs = [ |
+ "$root_out_dir/$widevine_cdm_path/{{source_file_part}}", |
+ ] |
+ } |
+ |
+ shared_library("widevinecdm") { |
+ output_dir = "$root_out_dir/$widevine_cdm_path/stub_cdm" |
+ sources = [ |
+ "//media/cdm/stub/stub_cdm.cc", |
+ "//media/cdm/stub/stub_cdm.h", |
+ ] |
+ |
+ defines = [ "CDM_IMPLEMENTATION" ] |
+ |
+ deps = [ |
+ ":version_h", |
+ ":copy_widevinecdm", |
+ "//base", |
+ "//build/config/sanitizers:deps", |
+ ] |
+ |
+ public_deps = [ ":copy_widevinecdm" ] |
+ cflags = [ "-fvisibility=hidden" ] |
+ } |
+} else if (widevine_cdm_binary_files != []) { |
copy("widevinecdm") { |
sources = widevine_cdm_binary_files |
outputs = [ |
@@ -165,7 +208,7 @@ if ((is_chrome_branded || enable_widevine) && enable_pepper_cdms) { |
":widevinecdm", |
] |
- if (is_linux) { |
+ if (is_linux && !use_stub_cdm_for_chrome) { |
ldflags = |
[ rebase_path("$root_out_dir/$widevine_cdm_path/libwidevinecdm.so", |
root_build_dir) ] |