Generate umbrella header for macOS framework.
Similarly to how it is done for iOS.
Bug: webrtc:9627
Change-Id: I7e4e3495d28a0a098531250bfdcf93d272e27b9d
Reviewed-on: https://webrtc-review.googlesource.com/98162
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24594}
diff --git a/webrtc.gni b/webrtc.gni
index 67f2b5d..58631dd 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -30,6 +30,10 @@
import("//build/config/ios/rules.gni")
}
+if (is_mac) {
+ import("//build/config/mac/rules.gni")
+}
+
declare_args() {
# WARNING: This argument doesn't have any effect on the WebRTC build until
# https://webrtc-review.googlesource.com/c/src/+/94766 will land.
@@ -682,6 +686,68 @@
}
}
+if (is_mac) {
+ template("mac_framework_bundle_with_umbrella_header") {
+ forward_variables_from(invoker, [ "output_name" ])
+ umbrella_header_path =
+ "$target_gen_dir/$output_name.framework/Headers/$output_name.h"
+
+ mac_framework_bundle(target_name) {
+ forward_variables_from(invoker, "*", [])
+
+ framework_version = "A"
+ framework_contents = [ "Headers" ]
+
+ ldflags = [
+ "-all_load",
+ "-install_name",
+ "@rpath/$output_name.framework/$output_name",
+ ]
+
+ deps += [
+ ":copy_framework_headers_$target_name",
+ ":copy_umbrella_header_$target_name",
+ ]
+ }
+
+ copy("copy_framework_headers_$target_name") {
+ forward_variables_from(invoker, [ "sources" ])
+
+ outputs = [
+ "$root_out_dir/$output_name.framework/Headers/{{source_file_part}}",
+ ]
+ }
+
+ action("umbrella_header_$target_name") {
+ forward_variables_from(invoker, [ "sources" ])
+
+ script = "//tools_webrtc/ios/generate_umbrella_header.py"
+
+ outputs = [
+ umbrella_header_path,
+ ]
+ args = [
+ "--out",
+ rebase_path(umbrella_header_path, root_build_dir),
+ "--sources",
+ ] + sources
+ }
+
+ copy("copy_umbrella_header_$target_name") {
+ sources = [
+ umbrella_header_path,
+ ]
+ outputs = [
+ "$root_out_dir/$output_name.framework/Headers/$output_name.h",
+ ]
+
+ deps = [
+ ":umbrella_header_$target_name",
+ ]
+ }
+ }
+}
+
if (is_android) {
template("rtc_android_library") {
android_library(target_name) {