diff options
author | Tobias Bosch <tbosch@google.com> | 2019-09-26 09:45:35 -0700 |
---|---|---|
committer | Tobias Bosch <tbosch@google.com> | 2019-09-26 20:19:44 +0000 |
commit | 8bb8b5b10282a5b603bb68e6c527d6b221d8f23d (patch) | |
tree | d20f602f7ee8e79872411028ef198acaab5e1d72 /compiler_wrapper/config.go | |
parent | 52bf1077e4117f4497d0cff09443d1e843058e7f (diff) | |
download | toolchain-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.go | 39 |
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. |