add enable-warnings
flag for llvm
Signed-off-by: ozkanonur <work@onurozkan.dev>
This commit is contained in:
parent
0058748944
commit
2e7249fa0f
5 changed files with 12 additions and 6 deletions
|
@ -146,6 +146,9 @@ changelog-seen = 2
|
||||||
# Whether to build the clang compiler.
|
# Whether to build the clang compiler.
|
||||||
#clang = false
|
#clang = false
|
||||||
|
|
||||||
|
# Whether to enable llvm compilation warnings.
|
||||||
|
#enable-warnings = false
|
||||||
|
|
||||||
# Custom CMake defines to set when building LLVM.
|
# Custom CMake defines to set when building LLVM.
|
||||||
#build-config = {}
|
#build-config = {}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- If you have Rust already installed, `x.py` will now infer the host target
|
- If you have Rust already installed, `x.py` will now infer the host target
|
||||||
from the default rust toolchain. [#78513](https://github.com/rust-lang/rust/pull/78513)
|
from the default rust toolchain. [#78513](https://github.com/rust-lang/rust/pull/78513)
|
||||||
- Add options for enabling overflow checks, one for std (`overflow-checks-std`) and one for everything else (`overflow-checks`). Both default to false.
|
- Add options for enabling overflow checks, one for std (`overflow-checks-std`) and one for everything else (`overflow-checks`). Both default to false.
|
||||||
|
- Add llvm option `enable-warnings` to have control on llvm compilation warnings. Default to false.
|
||||||
|
|
||||||
|
|
||||||
## [Version 2] - 2020-09-25
|
## [Version 2] - 2020-09-25
|
||||||
|
|
|
@ -133,6 +133,7 @@ pub struct Config {
|
||||||
pub llvm_allow_old_toolchain: bool,
|
pub llvm_allow_old_toolchain: bool,
|
||||||
pub llvm_polly: bool,
|
pub llvm_polly: bool,
|
||||||
pub llvm_clang: bool,
|
pub llvm_clang: bool,
|
||||||
|
pub llvm_enable_warnings: bool,
|
||||||
pub llvm_from_ci: bool,
|
pub llvm_from_ci: bool,
|
||||||
pub llvm_build_config: HashMap<String, String>,
|
pub llvm_build_config: HashMap<String, String>,
|
||||||
|
|
||||||
|
@ -688,6 +689,7 @@ define_config! {
|
||||||
allow_old_toolchain: Option<bool> = "allow-old-toolchain",
|
allow_old_toolchain: Option<bool> = "allow-old-toolchain",
|
||||||
polly: Option<bool> = "polly",
|
polly: Option<bool> = "polly",
|
||||||
clang: Option<bool> = "clang",
|
clang: Option<bool> = "clang",
|
||||||
|
enable_warnings: Option<bool> = "enable-warnings",
|
||||||
download_ci_llvm: Option<StringOrBool> = "download-ci-llvm",
|
download_ci_llvm: Option<StringOrBool> = "download-ci-llvm",
|
||||||
build_config: Option<HashMap<String, String>> = "build-config",
|
build_config: Option<HashMap<String, String>> = "build-config",
|
||||||
}
|
}
|
||||||
|
@ -1184,6 +1186,7 @@ impl Config {
|
||||||
config.llvm_allow_old_toolchain = llvm.allow_old_toolchain.unwrap_or(false);
|
config.llvm_allow_old_toolchain = llvm.allow_old_toolchain.unwrap_or(false);
|
||||||
config.llvm_polly = llvm.polly.unwrap_or(false);
|
config.llvm_polly = llvm.polly.unwrap_or(false);
|
||||||
config.llvm_clang = llvm.clang.unwrap_or(false);
|
config.llvm_clang = llvm.clang.unwrap_or(false);
|
||||||
|
config.llvm_enable_warnings = llvm.enable_warnings.unwrap_or(false);
|
||||||
config.llvm_build_config = llvm.build_config.clone().unwrap_or(Default::default());
|
config.llvm_build_config = llvm.build_config.clone().unwrap_or(Default::default());
|
||||||
|
|
||||||
let asserts = llvm_assertions.unwrap_or(false);
|
let asserts = llvm_assertions.unwrap_or(false);
|
||||||
|
|
|
@ -7,6 +7,8 @@ compiler-docs = true
|
||||||
# This enables debug-assertions in LLVM,
|
# This enables debug-assertions in LLVM,
|
||||||
# catching logic errors in codegen much earlier in the process.
|
# catching logic errors in codegen much earlier in the process.
|
||||||
assertions = true
|
assertions = true
|
||||||
|
# enable warnings during the llvm compilation
|
||||||
|
enable-warnings = true
|
||||||
|
|
||||||
[rust]
|
[rust]
|
||||||
# This enables `RUSTC_LOG=debug`, avoiding confusing situations
|
# This enables `RUSTC_LOG=debug`, avoiding confusing situations
|
||||||
|
|
|
@ -304,6 +304,7 @@ impl Step for Llvm {
|
||||||
let assertions = if builder.config.llvm_assertions { "ON" } else { "OFF" };
|
let assertions = if builder.config.llvm_assertions { "ON" } else { "OFF" };
|
||||||
let plugins = if builder.config.llvm_plugins { "ON" } else { "OFF" };
|
let plugins = if builder.config.llvm_plugins { "ON" } else { "OFF" };
|
||||||
let enable_tests = if builder.config.llvm_tests { "ON" } else { "OFF" };
|
let enable_tests = if builder.config.llvm_tests { "ON" } else { "OFF" };
|
||||||
|
let enable_warnings = if builder.config.llvm_enable_warnings { "ON" } else { "OFF" };
|
||||||
|
|
||||||
cfg.out_dir(&out_dir)
|
cfg.out_dir(&out_dir)
|
||||||
.profile(profile)
|
.profile(profile)
|
||||||
|
@ -321,7 +322,8 @@ impl Step for Llvm {
|
||||||
.define("LLVM_ENABLE_Z3_SOLVER", "OFF")
|
.define("LLVM_ENABLE_Z3_SOLVER", "OFF")
|
||||||
.define("LLVM_PARALLEL_COMPILE_JOBS", builder.jobs().to_string())
|
.define("LLVM_PARALLEL_COMPILE_JOBS", builder.jobs().to_string())
|
||||||
.define("LLVM_TARGET_ARCH", target_native.split('-').next().unwrap())
|
.define("LLVM_TARGET_ARCH", target_native.split('-').next().unwrap())
|
||||||
.define("LLVM_DEFAULT_TARGET_TRIPLE", target_native);
|
.define("LLVM_DEFAULT_TARGET_TRIPLE", target_native)
|
||||||
|
.define("LLVM_ENABLE_WARNINGS", enable_warnings);
|
||||||
|
|
||||||
// Parts of our test suite rely on the `FileCheck` tool, which is built by default in
|
// Parts of our test suite rely on the `FileCheck` tool, which is built by default in
|
||||||
// `build/$TARGET/llvm/build/bin` is but *not* then installed to `build/$TARGET/llvm/bin`.
|
// `build/$TARGET/llvm/build/bin` is but *not* then installed to `build/$TARGET/llvm/bin`.
|
||||||
|
@ -483,11 +485,6 @@ impl Step for Llvm {
|
||||||
cfg.define(key, val);
|
cfg.define(key, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: we don't actually need to build all LLVM tools and all LLVM
|
|
||||||
// libraries here, e.g., we just want a few components and a few
|
|
||||||
// tools. Figure out how to filter them down and only build the right
|
|
||||||
// tools and libs on all platforms.
|
|
||||||
|
|
||||||
if builder.config.dry_run() {
|
if builder.config.dry_run() {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue