118 lines
3.1 KiB
Plaintext
118 lines
3.1 KiB
Plaintext
|
# Copyright (c) 2022 Huawei Device Co., Ltd.
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
|
||
|
import("//build/templates/cxx/cxx.gni")
|
||
|
|
||
|
allowAllLints = [
|
||
|
"--cap-lints",
|
||
|
"allow",
|
||
|
]
|
||
|
rustcOhosLints = [
|
||
|
"-A",
|
||
|
"deprecated",
|
||
|
"-D",
|
||
|
"missing-docs",
|
||
|
"-D",
|
||
|
"warnings",
|
||
|
]
|
||
|
rustcVendorLints = [
|
||
|
"-A",
|
||
|
"deprecated",
|
||
|
"-D",
|
||
|
"warnings",
|
||
|
]
|
||
|
clippyOhosLints = [
|
||
|
"-A",
|
||
|
"clippy::type-complexity",
|
||
|
"-A",
|
||
|
"clippy::unnecessary-wraps",
|
||
|
"-A",
|
||
|
"clippy::unusual-byte-groupings",
|
||
|
"-A",
|
||
|
"clippy::upper-case-acronyms",
|
||
|
]
|
||
|
clippyVendorLints = [
|
||
|
"-A",
|
||
|
"clippy::complexity",
|
||
|
"-A",
|
||
|
"clippy::perf",
|
||
|
"-A",
|
||
|
"clippy::style",
|
||
|
]
|
||
|
|
||
|
template("rust_target_lints") {
|
||
|
_target_name = target_name
|
||
|
_crate_name = target_name
|
||
|
_crate_type = invoker.crate_type
|
||
|
_target_type = invoker.target_type
|
||
|
_rustflags = []
|
||
|
|
||
|
target(_target_type, "$_target_name") {
|
||
|
forward_variables_from(invoker, "*")
|
||
|
crate_name = _crate_name
|
||
|
crate_type = _crate_type
|
||
|
|
||
|
if (defined(invoker.rustc_lints)) {
|
||
|
rustc_lints = invoker.rustc_lints
|
||
|
}
|
||
|
if (defined(invoker.clippy_lints)) {
|
||
|
clippy_lints = invoker.clippy_lints
|
||
|
}
|
||
|
if (!defined(rustc_lints) && !defined(clippy_lints)) {
|
||
|
file_path =
|
||
|
get_path_info(get_path_info(invoker.sources, "dir"), "abspath")
|
||
|
file_path_split = string_split(file_path[0], "/")
|
||
|
source_dir_begin = file_path_split[2]
|
||
|
print(source_dir_begin)
|
||
|
if (source_dir_begin == "openharmony") {
|
||
|
_rustflags += allowAllLints
|
||
|
} else if (source_dir_begin == "prebuilts") {
|
||
|
_rustflags += allowAllLints
|
||
|
} else if (source_dir_begin == "vendor") {
|
||
|
_rustflags += rustcVendorLints
|
||
|
_rustflags += clippyVendorLints
|
||
|
} else if (source_dir_begin == "device") {
|
||
|
_rustflags += rustcVendorLints
|
||
|
_rustflags += clippyVendorLints
|
||
|
} else {
|
||
|
_rustflags += rustcOhosLints
|
||
|
_rustflags += clippyOhosLints
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (defined(rustc_lints)) {
|
||
|
if (invoker.rustc_lints == "openharmony") {
|
||
|
_rustflags += rustcOhosLints
|
||
|
} else if (rustc_lints == "vendor") {
|
||
|
_rustflags += rustcVendorLints
|
||
|
} else if (rustc_lints == "none") {
|
||
|
_rustflags += allowAllLints
|
||
|
}
|
||
|
}
|
||
|
if (defined(clippy_lints)) {
|
||
|
if (invoker.clippy_lints == "openharmony") {
|
||
|
_rustflags += clippyOhosLints
|
||
|
} else if (clippy_lints == "vendor") {
|
||
|
_rustflags += clippyVendorLints
|
||
|
} else if (clippy_lints == "none") {
|
||
|
_rustflags += allowAllLints
|
||
|
}
|
||
|
}
|
||
|
if (!defined(rustflags)) {
|
||
|
rustflags = _rustflags
|
||
|
} else {
|
||
|
rustflags += _rustflags
|
||
|
}
|
||
|
}
|
||
|
}
|