15f9996aaSopenharmony_ci# Copyright (c) 2022 Huawei Device Co., Ltd. 25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 45f9996aaSopenharmony_ci# You may obtain a copy of the License at 55f9996aaSopenharmony_ci# 65f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 125f9996aaSopenharmony_ci# limitations under the License. 135f9996aaSopenharmony_ci 145f9996aaSopenharmony_ciimport("//build/templates/cxx/cxx.gni") 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_ciallowAllLints = [ 175f9996aaSopenharmony_ci "--cap-lints", 185f9996aaSopenharmony_ci "allow", 195f9996aaSopenharmony_ci] 205f9996aaSopenharmony_cirustcOhosLints = [ 215f9996aaSopenharmony_ci "-A", 225f9996aaSopenharmony_ci "deprecated", 235f9996aaSopenharmony_ci "-D", 245f9996aaSopenharmony_ci "missing-docs", 255f9996aaSopenharmony_ci "-D", 265f9996aaSopenharmony_ci "warnings", 275f9996aaSopenharmony_ci] 285f9996aaSopenharmony_cirustcVendorLints = [ 295f9996aaSopenharmony_ci "-A", 305f9996aaSopenharmony_ci "deprecated", 315f9996aaSopenharmony_ci "-D", 325f9996aaSopenharmony_ci "warnings", 335f9996aaSopenharmony_ci] 345f9996aaSopenharmony_ciclippyOhosLints = [ 355f9996aaSopenharmony_ci "-A", 365f9996aaSopenharmony_ci "clippy::type-complexity", 375f9996aaSopenharmony_ci "-A", 385f9996aaSopenharmony_ci "clippy::unnecessary-wraps", 395f9996aaSopenharmony_ci "-A", 405f9996aaSopenharmony_ci "clippy::unusual-byte-groupings", 415f9996aaSopenharmony_ci "-A", 425f9996aaSopenharmony_ci "clippy::upper-case-acronyms", 435f9996aaSopenharmony_ci] 445f9996aaSopenharmony_ciclippyVendorLints = [ 455f9996aaSopenharmony_ci "-A", 465f9996aaSopenharmony_ci "clippy::complexity", 475f9996aaSopenharmony_ci "-A", 485f9996aaSopenharmony_ci "clippy::perf", 495f9996aaSopenharmony_ci "-A", 505f9996aaSopenharmony_ci "clippy::style", 515f9996aaSopenharmony_ci] 525f9996aaSopenharmony_ci 535f9996aaSopenharmony_citemplate("rust_target_lints") { 545f9996aaSopenharmony_ci _target_name = target_name 555f9996aaSopenharmony_ci _crate_name = target_name 565f9996aaSopenharmony_ci _crate_type = invoker.crate_type 575f9996aaSopenharmony_ci _target_type = invoker.target_type 585f9996aaSopenharmony_ci _rustflags = [ "-Zstack-protector=all" ] 595f9996aaSopenharmony_ci 605f9996aaSopenharmony_ci target(_target_type, "$_target_name") { 615f9996aaSopenharmony_ci forward_variables_from(invoker, "*") 625f9996aaSopenharmony_ci crate_name = _crate_name 635f9996aaSopenharmony_ci crate_type = _crate_type 645f9996aaSopenharmony_ci 655f9996aaSopenharmony_ci if (defined(invoker.rustc_lints)) { 665f9996aaSopenharmony_ci rustc_lints = invoker.rustc_lints 675f9996aaSopenharmony_ci } 685f9996aaSopenharmony_ci if (defined(invoker.clippy_lints)) { 695f9996aaSopenharmony_ci clippy_lints = invoker.clippy_lints 705f9996aaSopenharmony_ci } 715f9996aaSopenharmony_ci if (!defined(rustc_lints) && !defined(clippy_lints)) { 725f9996aaSopenharmony_ci file_path = 735f9996aaSopenharmony_ci get_path_info(get_path_info(invoker.sources, "dir"), "abspath") 745f9996aaSopenharmony_ci file_path_split = string_split(file_path[0], "/") 755f9996aaSopenharmony_ci source_dir_begin = file_path_split[2] 765f9996aaSopenharmony_ci print(source_dir_begin) 775f9996aaSopenharmony_ci if (source_dir_begin == "openharmony") { 785f9996aaSopenharmony_ci _rustflags += allowAllLints 795f9996aaSopenharmony_ci } else if (source_dir_begin == "prebuilts") { 805f9996aaSopenharmony_ci _rustflags += allowAllLints 815f9996aaSopenharmony_ci } else if (source_dir_begin == "vendor") { 825f9996aaSopenharmony_ci _rustflags += rustcVendorLints 835f9996aaSopenharmony_ci _rustflags += clippyVendorLints 845f9996aaSopenharmony_ci } else if (source_dir_begin == "device") { 855f9996aaSopenharmony_ci _rustflags += rustcVendorLints 865f9996aaSopenharmony_ci _rustflags += clippyVendorLints 875f9996aaSopenharmony_ci } else { 885f9996aaSopenharmony_ci _rustflags += rustcOhosLints 895f9996aaSopenharmony_ci _rustflags += clippyOhosLints 905f9996aaSopenharmony_ci } 915f9996aaSopenharmony_ci } 925f9996aaSopenharmony_ci 935f9996aaSopenharmony_ci if (defined(rustc_lints)) { 945f9996aaSopenharmony_ci if (invoker.rustc_lints == "openharmony") { 955f9996aaSopenharmony_ci _rustflags += rustcOhosLints 965f9996aaSopenharmony_ci } else if (rustc_lints == "vendor") { 975f9996aaSopenharmony_ci _rustflags += rustcVendorLints 985f9996aaSopenharmony_ci } else if (rustc_lints == "none") { 995f9996aaSopenharmony_ci _rustflags += allowAllLints 1005f9996aaSopenharmony_ci } 1015f9996aaSopenharmony_ci } 1025f9996aaSopenharmony_ci if (defined(clippy_lints)) { 1035f9996aaSopenharmony_ci if (invoker.clippy_lints == "openharmony") { 1045f9996aaSopenharmony_ci _rustflags += clippyOhosLints 1055f9996aaSopenharmony_ci } else if (clippy_lints == "vendor") { 1065f9996aaSopenharmony_ci _rustflags += clippyVendorLints 1075f9996aaSopenharmony_ci } else if (clippy_lints == "none") { 1085f9996aaSopenharmony_ci _rustflags += allowAllLints 1095f9996aaSopenharmony_ci } 1105f9996aaSopenharmony_ci } 1115f9996aaSopenharmony_ci if (!defined(rustflags)) { 1125f9996aaSopenharmony_ci rustflags = _rustflags 1135f9996aaSopenharmony_ci } else { 1145f9996aaSopenharmony_ci rustflags += _rustflags 1155f9996aaSopenharmony_ci } 1165f9996aaSopenharmony_ci } 1175f9996aaSopenharmony_ci} 118