Fix iOS GN build and cleanup system_wrappers
Compile fixes for GN on iOS that finally gets our bots green.
Changes to system_wrappers:
* Updated to only use inclusive sources for maintainability
* Add a few missing GN headers.
* Cleanup GYP hack for atomic32_mac.cc
* Renamed changes sources to avoid problems with GYP/GN file
suffix rules:
- atomic32_mac.cc -> atomic32_darwin.cc
- atomic32_posix.cc -> atomic32_non_darwin_unix.cc
See https://code.google.com/p/chromium/codesearch#chromium/src/build/config/BUILDCONFIG.gn&l=325
for details on which extensions can/cannot be used.
BUG=webrtc:5586
NOTRY=True
Review-Url: https://codereview.webrtc.org/1999723002
Cr-Commit-Position: refs/heads/master@{#12897}
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.h b/webrtc/modules/audio_device/ios/audio_device_ios.h
index 9616a28..e6b72d6 100644
--- a/webrtc/modules/audio_device/ios/audio_device_ios.h
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.h
@@ -92,7 +92,8 @@
// See audio_device_not_implemented.cc for trivial implementations.
int32_t PlayoutBuffer(AudioDeviceModule::BufferType& type,
uint16_t& sizeMS) const override;
- int32_t ActiveAudioLayer(AudioDeviceModule::AudioLayer& audioLayer) const;
+ int32_t ActiveAudioLayer(
+ AudioDeviceModule::AudioLayer& audioLayer) const override;
int32_t ResetAudioDevice() override;
int32_t PlayoutIsAvailable(bool& available) override;
int32_t RecordingIsAvailable(bool& available) override;
diff --git a/webrtc/modules/audio_device/ios/voice_processing_audio_unit.mm b/webrtc/modules/audio_device/ios/voice_processing_audio_unit.mm
index db7f42e..a9d599a 100644
--- a/webrtc/modules/audio_device/ios/voice_processing_audio_unit.mm
+++ b/webrtc/modules/audio_device/ios/voice_processing_audio_unit.mm
@@ -370,10 +370,12 @@
case kStarted:
Stop();
// Fall through.
+ FALLTHROUGH();
case kInitialized:
Uninitialize();
break;
case kUninitialized:
+ FALLTHROUGH();
case kInitRequired:
break;
}
diff --git a/webrtc/modules/utility/BUILD.gn b/webrtc/modules/utility/BUILD.gn
index 6704cd6..6cd3dbb 100644
--- a/webrtc/modules/utility/BUILD.gn
+++ b/webrtc/modules/utility/BUILD.gn
@@ -24,6 +24,7 @@
"source/file_recorder_impl.cc",
"source/file_recorder_impl.h",
"source/helpers_android.cc",
+ "source/helpers_ios.mm",
"source/jvm_android.cc",
"source/process_thread_impl.cc",
"source/process_thread_impl.h",
diff --git a/webrtc/modules/video_coding/BUILD.gn b/webrtc/modules/video_coding/BUILD.gn
index e0f26f3..c18ae71 100644
--- a/webrtc/modules/video_coding/BUILD.gn
+++ b/webrtc/modules/video_coding/BUILD.gn
@@ -151,6 +151,11 @@
"../../system_wrappers",
]
+ if (is_ios) {
+ sources += [ "codecs/h264/h264_objc.mm" ]
+ deps += [ ":webrtc_h264_video_toolbox" ]
+ }
+
if (rtc_use_h264) {
defines += [ "WEBRTC_USE_H264" ]
if (rtc_initialize_ffmpeg) {
@@ -170,8 +175,52 @@
}
}
-# TODO(tkchin): Source set for webrtc_h264_video_toolbox. Currently not
-# possible to add, see https://crbug.com/297668.
+if (is_ios) {
+ source_set("webrtc_h264_video_toolbox") {
+ sources = [
+ "codecs/h264/h264_video_toolbox_decoder.cc",
+ "codecs/h264/h264_video_toolbox_decoder.h",
+ "codecs/h264/h264_video_toolbox_encoder.cc",
+ "codecs/h264/h264_video_toolbox_encoder.h",
+ "codecs/h264/h264_video_toolbox_nalu.cc",
+ "codecs/h264/h264_video_toolbox_nalu.h",
+ ]
+
+ configs += [ "//build/config/compiler:enable_arc" ]
+
+ cflags = [ "-Wobjc-missing-property-synthesis" ]
+
+ precompiled_header = "../../sdk/objc/WebRTC-Prefix.pch"
+ precompiled_source = "../../sdk/objc/WebRTC-Prefix.pch"
+
+ deps = [
+ "../../sdk:rtc_sdk_common_objc",
+ ]
+
+ libs = [
+ "CoreFoundation.framework",
+ "CoreMedia.framework",
+ "CoreVideo.framework",
+ "VideoToolbox.framework",
+ ]
+
+ if (is_clang) {
+ # Suppress warnings from Chrome's Clang plugins.
+ # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+ configs -= [ "//build/config/clang:find_bad_constructs" ]
+ }
+
+ if (rtc_build_libyuv) {
+ deps += [ "$rtc_libyuv_dir" ]
+ public_deps = [
+ "$rtc_libyuv_dir",
+ ]
+ } else {
+ # Need to add a directory normally exported by libyuv.
+ include_dirs += [ "$rtc_libyuv_dir/include" ]
+ }
+ }
+}
source_set("webrtc_i420") {
sources = [