From cd95a4ec76cc607886c21144b451c1b8e871013a Mon Sep 17 00:00:00 2001 From: mbonadei Date: Wed, 23 Aug 2017 23:55:54 -0700 Subject: [PATCH] The goal of this CL is to separate Obj-C/Obj-C++ code from targets which have also C++ code (see https://bugs.chromium.org/p/webrtc/issues/detail?id=7743 for more information). We have moved .mm files out of test_support and fileutils (into test_support_objc and fileutils_objc). To achieve the goal for run_test and test_renderer (in the next part of the phrase X is run_test or test_renderer) we have created 2 targets (X_objc and X_generic) and X will act as a proxy between these targets (this way we can avoid a circular dependency between X_generic and X_objc). BUG=webrtc:7743 Review-Url: https://codereview.webrtc.org/2991323003 Cr-Commit-Position: refs/heads/master@{#19479} --- webrtc/test/BUILD.gn | 149 +++++++++++++++++++++++++++++++++---------- 1 file changed, 116 insertions(+), 33 deletions(-) diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn index f5c0afde41..b7b2319858 100644 --- a/webrtc/test/BUILD.gn +++ b/webrtc/test/BUILD.gn @@ -109,6 +109,17 @@ rtc_source_set("field_trial") { ] } +if (is_ios) { + rtc_source_set("test_support_objc") { + testonly = true + visibility = [ ":*" ] + sources = [ + "ios/test_support.h", + "ios/test_support.mm", + ] + } +} + rtc_source_set("test_support") { testonly = true @@ -124,11 +135,11 @@ rtc_source_set("test_support") { "testsupport/unittest_utils.h", ] + public_deps = [ + ":fileutils", + ] if (is_ios) { - sources += [ - "ios/test_support.h", - "ios/test_support.mm", - ] + public_deps += [ ":test_support_objc" ] } deps = [ @@ -141,10 +152,6 @@ rtc_source_set("test_support") { "//testing/gtest", ] - public_deps = [ - ":fileutils", - ] - if (!build_with_chromium && is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] @@ -343,8 +350,23 @@ if (!build_with_chromium) { } } +if (is_ios) { + rtc_source_set("fileutils_objc") { + visibility = [ ":*" ] + sources = [ + "testsupport/iosfileutils.mm", + ] + deps = [ + "..:webrtc_common", + "../rtc_base:rtc_base_approved", + "../sdk:objc_common", + ] + } +} + rtc_source_set("fileutils") { testonly = true + visibility = [ ":*" ] sources = [ "testsupport/fileutils.cc", "testsupport/fileutils.h", @@ -354,27 +376,58 @@ rtc_source_set("fileutils") { "../rtc_base:rtc_base_approved", ] if (is_ios) { - sources += [ "testsupport/iosfileutils.mm" ] - deps += [ "../sdk:objc_common" ] + deps += [ ":fileutils_objc" ] } if (is_win) { deps += [ "../rtc_base:rtc_base" ] } - visibility = [ ":*" ] } rtc_source_set("run_test") { testonly = true + if (is_mac) { + public_deps = [ + ":run_test_objc", + ] + } else { + public_deps = [ + ":run_test_generic", + ] + } +} + +rtc_source_set("run_test_interface") { + testonly = true + visibility = [ ":*" ] sources = [ "run_test.h", ] - if (is_mac) { - sources += [ "mac/run_test.mm" ] - } else { - sources += [ "run_test.cc" ] +} + +if (is_mac) { + rtc_source_set("run_test_objc") { + testonly = true + visibility = [ ":*" ] + sources = [ + "mac/run_test.mm", + ] + public_deps = [ + ":run_test_interface", + ] } } +rtc_source_set("run_test_generic") { + testonly = true + visibility = [ ":*" ] + sources = [ + "run_test.cc", + ] + public_deps = [ + ":run_test_interface", + ] +} + rtc_source_set("fileutils_unittests") { testonly = true visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -543,18 +596,64 @@ config("test_renderer_exported_config") { rtc_source_set("test_renderer") { testonly = true + if (is_mac) { + public_deps = [ + ":test_renderer_objc", + ] + } else { + public_deps = [ + ":test_renderer_generic", + ] + } +} + +if (is_mac) { + rtc_source_set("test_renderer_objc") { + testonly = true + visibility = [ ":*" ] + sources = [ + "mac/video_renderer_mac.h", + "mac/video_renderer_mac.mm", + ] + public_deps = [ + ":test_renderer_generic", + ] + deps = [ + "../rtc_base:rtc_base_approved", + ] + libs = [ + "Cocoa.framework", + "OpenGL.framework", + "CoreVideo.framework", + ] + if (!build_with_chromium && is_clang) { + # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). + suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] + } + } +} + +rtc_source_set("test_renderer_generic") { + testonly = true + visibility = [ ":*" ] libs = [] sources = [ "linux/glx_renderer.cc", "linux/glx_renderer.h", "linux/video_renderer_linux.cc", - "mac/video_renderer_mac.h", - "mac/video_renderer_mac.mm", "video_renderer.cc", "video_renderer.h", "win/d3d_renderer.cc", "win/d3d_renderer.h", ] + deps = [ + ":test_support", + "..:webrtc_common", + "../common_video", + "../modules/media_file", + "../rtc_base:rtc_base_approved", + "//testing/gtest", + ] if (!is_linux && !is_mac && !is_win) { sources += [ "null_platform_renderer.cc" ] } @@ -578,13 +677,6 @@ rtc_source_set("test_renderer") { "log", ] } - if (is_mac) { - libs = [ - "Cocoa.framework", - "OpenGL.framework", - "CoreVideo.framework", - ] - } public_configs = [ ":test_renderer_exported_config" ] @@ -592,15 +684,6 @@ rtc_source_set("test_renderer") { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } - - deps = [ - ":test_support", - "..:webrtc_common", - "../common_video", - "../modules/media_file", - "../rtc_base:rtc_base_approved", - "//testing/gtest", - ] } rtc_source_set("audio_codec_mocks") {