From 9365338db2e0505d6e5f8ea62fa8fe2c45ea8f74 Mon Sep 17 00:00:00 2001 From: kjellander Date: Fri, 9 Sep 2016 00:05:58 -0700 Subject: [PATCH] Only expose gflags target in non-Chromium and non-fuzzer builds. Since gflags is not present in Chromium nor the libfuzzer infrastructure, we have to ensure we don't accidentally depend on it in WebRTC code that is used in such places. BUG=chromium:645069 NOTRY=True Review-Url: https://codereview.webrtc.org/2321963002 Cr-Commit-Position: refs/heads/master@{#14145} --- third_party/gflags/BUILD.gn | 113 +++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 53 deletions(-) diff --git a/third_party/gflags/BUILD.gn b/third_party/gflags/BUILD.gn index af41b7ecbf..f5cc42d32a 100644 --- a/third_party/gflags/BUILD.gn +++ b/third_party/gflags/BUILD.gn @@ -6,68 +6,75 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. -if (is_win) { - gflags_gen_arch_root = "gen/win" -} else { - gflags_gen_arch_root = "gen/posix" -} +import("../../webrtc/build/webrtc.gni") -config("gflags_config") { - include_dirs = [ - "$gflags_gen_arch_root/include", # For configured files. - "src/src", # For everything else. - ] - - defines = [ - # These macros exist so flags and symbols are properly exported when - # building DLLs. Since we don't build DLLs, we need to disable them. - "GFLAGS_DLL_DECL=", - "GFLAGS_DLL_DECLARE_FLAG=", - "GFLAGS_DLL_DEFINE_FLAG=", - ] - - # GN orders flags on a target before flags from configs. The default config - # adds -Wall, and this flag have to be after -Wall -- so they need to - # come from a config and can't be on the target directly. - if (is_clang) { - cflags = [ "-Wno-unused-local-typedef" ] - } -} - -source_set("gflags") { - cflags = [] - sources = [ - "src/src/gflags.cc", - "src/src/gflags_completions.cc", - "src/src/gflags_reporting.cc", - ] +# gflags can only be used by targets that are not built in Chromium, since +# Chromium doesn't have gflags as a dependency). +if (!build_with_chromium && !use_libfuzzer) { if (is_win) { - sources += [ "src/src/windows_port.cc" ] + gflags_gen_arch_root = "gen/win" + } else { + gflags_gen_arch_root = "gen/posix" + } - cflags += [ - "/wd4005", # WIN32_LEAN_AND_MEAN. - "/wd4267", # Conversion from size_t to "type". + config("gflags_config") { + include_dirs = [ + "$gflags_gen_arch_root/include", # For configured files. + "src/src", # For everything else. ] + + defines = [ + # These macros exist so flags and symbols are properly exported when + # building DLLs. Since we don't build DLLs, we need to disable them. + "GFLAGS_DLL_DECL=", + "GFLAGS_DLL_DECLARE_FLAG=", + "GFLAGS_DLL_DEFINE_FLAG=", + ] + + # GN orders flags on a target before flags from configs. The default config + # adds -Wall, and this flag have to be after -Wall -- so they need to + # come from a config and can't be on the target directly. + if (is_clang) { + cflags = [ "-Wno-unused-local-typedef" ] + } } - include_dirs = [ - "$gflags_gen_arch_root/include/gflags", # For configured files. - "$gflags_gen_arch_root/include/private", # For config.h - ] + source_set("gflags") { + testonly = true + cflags = [] + sources = [ + "src/src/gflags.cc", + "src/src/gflags_completions.cc", + "src/src/gflags_reporting.cc", + ] + if (is_win) { + sources += [ "src/src/windows_port.cc" ] - public_configs = [ ":gflags_config" ] + cflags += [ + "/wd4005", # WIN32_LEAN_AND_MEAN. + "/wd4267", # Conversion from size_t to "type". + ] + } - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + include_dirs = [ + "$gflags_gen_arch_root/include/gflags", # For configured files. + "$gflags_gen_arch_root/include/private", # For config.h + ] - if (is_win) { - configs -= [ "//build/config/win:unicode" ] - } + public_configs = [ ":gflags_config" ] - if (is_clang) { - # TODO(andrew): Look into fixing this warning upstream: - # http://code.google.com/p/webrtc/issues/detail?id=760 - configs -= [ "//build/config/clang:extra_warnings" ] - cflags += [ "-Wno-microsoft-include" ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + if (is_win) { + configs -= [ "//build/config/win:unicode" ] + } + + if (is_clang) { + # TODO(andrew): Look into fixing this warning upstream: + # http://code.google.com/p/webrtc/issues/detail?id=760 + configs -= [ "//build/config/clang:extra_warnings" ] + cflags += [ "-Wno-microsoft-include" ] + } } }