15f9996aaSopenharmony_ci# Copyright (c) 2013 The Chromium Authors. All rights reserved. 25f9996aaSopenharmony_ci# Use of this source code is governed by a BSD-style license that can be 35f9996aaSopenharmony_ci# found in the LICENSE file. 45f9996aaSopenharmony_ci 55f9996aaSopenharmony_ciimport("clang.gni") 65f9996aaSopenharmony_ci 75f9996aaSopenharmony_ciconfig("find_bad_constructs") { 85f9996aaSopenharmony_ci if (clang_use_chrome_plugins) { 95f9996aaSopenharmony_ci cflags = [] 105f9996aaSopenharmony_ci 115f9996aaSopenharmony_ci # On Windows, the plugin is built directly into clang, so there's 125f9996aaSopenharmony_ci # no need to load it dynamically. 135f9996aaSopenharmony_ci if (host_os == "mac") { 145f9996aaSopenharmony_ci cflags += [ 155f9996aaSopenharmony_ci "-Xclang", 165f9996aaSopenharmony_ci "-load", 175f9996aaSopenharmony_ci "-Xclang", 185f9996aaSopenharmony_ci rebase_path("${clang_base_path}/lib/libFindBadConstructs.dylib", 195f9996aaSopenharmony_ci root_build_dir), 205f9996aaSopenharmony_ci ] 215f9996aaSopenharmony_ci } else if (host_os == "linux") { 225f9996aaSopenharmony_ci cflags += [ 235f9996aaSopenharmony_ci "-Xclang", 245f9996aaSopenharmony_ci "-load", 255f9996aaSopenharmony_ci "-Xclang", 265f9996aaSopenharmony_ci rebase_path("${clang_base_path}/lib/libFindBadConstructs.so", 275f9996aaSopenharmony_ci root_build_dir), 285f9996aaSopenharmony_ci ] 295f9996aaSopenharmony_ci } 305f9996aaSopenharmony_ci 315f9996aaSopenharmony_ci cflags += [ 325f9996aaSopenharmony_ci "-Xclang", 335f9996aaSopenharmony_ci "-add-plugin", 345f9996aaSopenharmony_ci "-Xclang", 355f9996aaSopenharmony_ci "find-bad-constructs", 365f9996aaSopenharmony_ci ] 375f9996aaSopenharmony_ci 385f9996aaSopenharmony_ci cflags += [ 395f9996aaSopenharmony_ci "-Xclang", 405f9996aaSopenharmony_ci "-plugin-arg-find-bad-constructs", 415f9996aaSopenharmony_ci "-Xclang", 425f9996aaSopenharmony_ci "enforce-in-thirdparty-webkit", 435f9996aaSopenharmony_ci ] 445f9996aaSopenharmony_ci 455f9996aaSopenharmony_ci cflags += [ 465f9996aaSopenharmony_ci "-Xclang", 475f9996aaSopenharmony_ci "-plugin-arg-find-bad-constructs", 485f9996aaSopenharmony_ci "-Xclang", 495f9996aaSopenharmony_ci "check-enum-max-value", 505f9996aaSopenharmony_ci ] 515f9996aaSopenharmony_ci 525f9996aaSopenharmony_ci if (is_linux || is_ohos) { 535f9996aaSopenharmony_ci cflags += [ 545f9996aaSopenharmony_ci "-Xclang", 555f9996aaSopenharmony_ci "-plugin-arg-find-bad-constructs", 565f9996aaSopenharmony_ci "-Xclang", 575f9996aaSopenharmony_ci "check-ipc", 585f9996aaSopenharmony_ci ] 595f9996aaSopenharmony_ci } 605f9996aaSopenharmony_ci } 615f9996aaSopenharmony_ci} 625f9996aaSopenharmony_ci 635f9996aaSopenharmony_ci# Enables some extra Clang-specific warnings. Some third-party code won't 645f9996aaSopenharmony_ci# compile with these so may want to remove this config. 655f9996aaSopenharmony_ciconfig("extra_warnings") { 665f9996aaSopenharmony_ci cflags = [ 675f9996aaSopenharmony_ci "-Wheader-hygiene", 685f9996aaSopenharmony_ci 695f9996aaSopenharmony_ci # Warns when a const char[] is converted to bool. 705f9996aaSopenharmony_ci "-Wstring-conversion", 715f9996aaSopenharmony_ci "-Wtautological-overlap-compare", 725f9996aaSopenharmony_ci ] 735f9996aaSopenharmony_ci} 74