From 44c7ecf88e4218d287e1ab55236d28ca5ec19f87 Mon Sep 17 00:00:00 2001 From: aleloi Date: Thu, 10 Nov 2016 08:16:25 -0800 Subject: [PATCH] Added a public GN config to compile mock headers. Due to bugs.webrtc.org/216 code that includes //webrtc/modules/audio_device:mock_audio_device fails to compile on Windows unless a warning flag is switched off. It seems that googlemock changes types of overridden virtual method parameters from 'const int' to 'int', which causes the VS compiler to report an error. The problem was not solved by suppressing the flag wd4373 in //webrtc/modules/audio_device:mock_audio_device, because targets that include the headers are compiled separately. This CL adds the flag suppression to the GN variable |all_dependent_configs|. Then GN will apply the configuration to all reachable dependencies. This is needed to reduce clutter and extra conditions in dependency build targets. The reason for |all_dependent_configs| before |public_configs| is for a situation in which a targets headers include the headers from this target. Then dependencies of dependencies will have a copy of this targets' code after preprocessing, and compilation will fail. This will happen if we e.g. change mock_voice_engine to return a MockAudioTransport or MockAudioDevice. This change has been tested by compiling a dependent CL (https://codereview.webrtc.org/2454373002/) which uses these mocks on Windows without suppressing the flag. There is no GYP change, because test code has been removed from GYP. NOTRY=True BUG=webrtc:216 Review-Url: https://codereview.webrtc.org/2492713003 Cr-Commit-Position: refs/heads/master@{#15024} --- webrtc/modules/audio_device/BUILD.gn | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn index c9c524a82d..63def05451 100644 --- a/webrtc/modules/audio_device/BUILD.gn +++ b/webrtc/modules/audio_device/BUILD.gn @@ -241,6 +241,17 @@ rtc_static_library("audio_device") { } } +config("mock_audio_device_config") { + if (is_win) { + cflags = [ + # TODO(phoglund): get rid of 4373 supression when + # http://code.google.com/p/webrtc/issues/detail?id=261 is solved. + # legacy warning for ignoring const / volatile in signatures. + "/wd4373", + ] + } +} + if (rtc_include_tests) { rtc_source_set("mock_audio_device") { testonly = true @@ -252,14 +263,7 @@ if (rtc_include_tests) { ":audio_device", "../../test:test_support", ] - if (is_win) { - cflags = [ - # TODO(phoglund): get rid of 4373 supression when - # http://code.google.com/p/webrtc/issues/detail?id=261 is solved. - # legacy warning for ignoring const / volatile in signatures. - "/wd4373", - ] - } + all_dependent_configs = [ ":mock_audio_device_config" ] } }