Add support for stand-alone Fuchsia build.
When target_os is set to "fuchsia":
BUILD: suppress Wundef flag
DEPS: download the Fuchsia SDK
audio_encoding: add header include
video_capture: video_capture_factory is not yet implemented for Fuchsia
so we add a null capture factory when building for Fuchsia.
Bug: webrtc:14061
Change-Id: Id6ca7418859c85293a0a5e2a8427807ee039db2c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262200
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37030}
diff --git a/BUILD.gn b/BUILD.gn
index e290a6e..3ad9c97 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -356,10 +356,14 @@
}
if (is_clang) {
- cflags += [
- "-Wc++11-narrowing",
- "-Wundef",
- ]
+ cflags += [ "-Wc++11-narrowing" ]
+
+ if (!is_fuchsia) {
+ # Compiling with the Fuchsia SDK results in Wundef errors
+ # TODO(bugs.fuchsia.dev/100722): Remove from (!is_fuchsia) branch when
+ # Fuchsia build errors are fixed.
+ cflags += [ "-Wundef" ]
+ }
if (!is_nacl) {
# Flags NaCl (Clang 3.7) do not recognize.
diff --git a/DEPS b/DEPS
index e8120ae..6c97f73 100644
--- a/DEPS
+++ b/DEPS
@@ -2256,6 +2256,17 @@
'action': ['python3', 'src/build/mac_toolchain.py'],
},
{
+ # Update the Fuchsia SDK if necessary.
+ 'name': 'Download Fuchsia SDK',
+ 'pattern': '.',
+ 'condition': 'checkout_fuchsia',
+ 'action': [
+ 'python3',
+ 'src/build/fuchsia/update_sdk.py',
+ '--default-bucket=fuchsia',
+ ],
+ },
+ {
# Note: On Win, this should run after win_toolchain, as it may use it.
'name': 'clang',
'pattern': '.',
diff --git a/modules/audio_coding/neteq/tools/rtp_encode.cc b/modules/audio_coding/neteq/tools/rtp_encode.cc
index ee392f2..6aeeb6d 100644
--- a/modules/audio_coding/neteq/tools/rtp_encode.cc
+++ b/modules/audio_coding/neteq/tools/rtp_encode.cc
@@ -13,7 +13,7 @@
#ifdef WIN32
#include <winsock2.h>
#endif
-#ifdef WEBRTC_LINUX
+#if defined(WEBRTC_LINUX) || defined(WEBRTC_FUCHSIA)
#include <netinet/in.h>
#endif
diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn
index 616be5d..ad2d85e 100644
--- a/modules/video_capture/BUILD.gn
+++ b/modules/video_capture/BUILD.gn
@@ -102,6 +102,9 @@
]
}
}
+ if (is_fuchsia) {
+ sources = [ "video_capture_factory_null.cc" ]
+ }
if (build_with_mozilla && is_android) {
include_dirs = [
diff --git a/modules/video_capture/video_capture_factory_null.cc b/modules/video_capture/video_capture_factory_null.cc
new file mode 100644
index 0000000..7808d19
--- /dev/null
+++ b/modules/video_capture/video_capture_factory_null.cc
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "modules/video_capture/video_capture_impl.h"
+
+namespace webrtc {
+namespace videocapturemodule {
+
+// static
+VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() {
+ return nullptr;
+}
+
+rtc::scoped_refptr<VideoCaptureModule> VideoCaptureImpl::Create(
+ const char* device_id) {
+ return nullptr;
+}
+
+} // namespace videocapturemodule
+} // namespace webrtc