aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/config.go
diff options
context:
space:
mode:
authorTobias Bosch <tbosch@google.com>2019-09-26 09:45:35 -0700
committerTobias Bosch <tbosch@google.com>2019-09-26 20:19:44 +0000
commit8bb8b5b10282a5b603bb68e6c527d6b221d8f23d (patch)
treed20f602f7ee8e79872411028ef198acaab5e1d72 /compiler_wrapper/config.go
parent52bf1077e4117f4497d0cff09443d1e843058e7f (diff)
downloadtoolchain-utils-8bb8b5b10282a5b603bb68e6c527d6b221d8f23d.tar.gz
Support extra args for llvm next.
Also removes the capability of defining the old wrapper path now that we are getting close to landing it. BUG=chromium:773875 TEST=golden tests and comparison against old wrapper. Change-Id: I543ddb1651edf2a269917f8afb5a667129bc3561 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1826986 Tested-by: Tobias Bosch <tbosch@google.com> Reviewed-by: George Burgess <gbiv@chromium.org>
Diffstat (limited to 'compiler_wrapper/config.go')
-rw-r--r--compiler_wrapper/config.go39
1 files changed, 28 insertions, 11 deletions
diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go
index 92e503d9..4270cf5e 100644
--- a/compiler_wrapper/config.go
+++ b/compiler_wrapper/config.go
@@ -35,15 +35,16 @@ type config struct {
// Values fills config.version.
var Version = ""
-// OldWrapperPath can be set via a linker flag.
-// Value fills config.oldWrapperPath.
-var OldWrapperPath = ""
-
// UseCCache can be set via a linker flag.
// Value will be passed to strconv.ParseBool.
// E.g. go build -ldflags '-X config.UseCCache=true'.
var UseCCache = "unknown"
+// UseLlvmNext can be set via a linker flag.
+// Value will be passed to strconv.ParseBool.
+// E.g. go build -ldflags '-X config.UseLlvmNext=true'.
+var UseLlvmNext = "unknown"
+
// ConfigName can be set via a linker flag.
// Value has to be one of:
// - "cros.hardened"
@@ -56,29 +57,45 @@ func getRealConfig() (*config, error) {
if err != nil {
return nil, wrapErrorwithSourceLocf(err, "invalid format for UseCCache")
}
- config, err := getConfig(ConfigName, useCCache, OldWrapperPath, Version)
+ useLlvmNext, err := strconv.ParseBool(UseLlvmNext)
+ if err != nil {
+ return nil, wrapErrorwithSourceLocf(err, "invalid format for UseLLvmNext")
+ }
+ // FIXME: Remove comparison to old wrapper once the new wrapper has landed.
+ oldWrapperPath := ""
+ config, err := getConfig(ConfigName, useCCache, useLlvmNext, oldWrapperPath, Version)
if err != nil {
return nil, err
}
return config, nil
}
-func getConfig(configName string, useCCache bool, oldWrapperPath string, version string) (*config, error) {
- var cfg *config
+func getConfig(configName string, useCCache bool, useLlvmNext bool, oldWrapperPath string, version string) (*config, error) {
+ cfg := config{}
switch configName {
case "cros.hardened":
- cfg = crosHardenedConfig
+ cfg = *crosHardenedConfig
case "cros.nonhardened":
- cfg = crosNonHardenedConfig
+ cfg = *crosNonHardenedConfig
case "cros.host":
- cfg = crosHostConfig
+ cfg = *crosHostConfig
default:
return nil, newErrorwithSourceLocf("unknown config name: %s", configName)
}
cfg.useCCache = useCCache
+ if useLlvmNext {
+ cfg.clangFlags = append(cfg.clangFlags, llvmNextFlags...)
+ }
cfg.oldWrapperPath = oldWrapperPath
cfg.version = version
- return cfg, nil
+ return &cfg, nil
+}
+
+var llvmNextFlags = []string{
+ "-Wno-reorder-init-list",
+ "-Wno-final-dtor-non-final-class",
+ "-Wno-implicit-int-float-conversion",
+ "-Wno-return-stack-address",
}
// Full hardening.