diff options
author | Tobias Bosch <tbosch@google.com> | 2019-08-20 14:18:44 -0700 |
---|---|---|
committer | Tobias Bosch <tbosch@google.com> | 2019-08-21 14:54:45 +0000 |
commit | edaab0ffdce3754413699e082b69f3f582177553 (patch) | |
tree | 2ed54614b6f96155ea4fafe499fadee12a9e5818 /compiler_wrapper | |
parent | 2e7ed593657e7d7d4adadc4741edf518cab5359b (diff) | |
download | toolchain-utils-edaab0ffdce3754413699e082b69f3f582177553.tar.gz |
Support "gcc", "clang" as compiler names
BUG=chromium:773875
TEST=golden tests, emerge-lakitu sys-kernel/linux-headers
Change-Id: I205059a9f61484caaf69ed340fd42a47531e00f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1762344
Tested-by: Tobias Bosch <tbosch@google.com>
Reviewed-by: George Burgess <gbiv@chromium.org>
Diffstat (limited to 'compiler_wrapper')
4 files changed, 94 insertions, 5 deletions
diff --git a/compiler_wrapper/command.go b/compiler_wrapper/command.go index df424ad8..0ef2ee15 100644 --- a/compiler_wrapper/command.go +++ b/compiler_wrapper/command.go @@ -64,16 +64,22 @@ func newCommandBuilder(env env, cfg *config, cmd *command) (*commandBuilder, err basename := filepath.Base(cmd.Path) nameParts := strings.Split(basename, "-") target := builderTarget{} - if len(nameParts) == 4 { + switch len(nameParts) { + case 1: + // E.g. gcc + target = builderTarget{ + compiler: nameParts[0], + } + case 4: // E.g. armv7m-cros-eabi-gcc target = builderTarget{ arch: nameParts[0], vendor: nameParts[1], - sys: "", abi: nameParts[2], compiler: nameParts[3], + target: basename[:strings.LastIndex(basename, "-")], } - } else if len(nameParts) == 5 { + case 5: // E.g. x86_64-cros-linux-gnu-gcc target = builderTarget{ arch: nameParts[0], @@ -81,12 +87,12 @@ func newCommandBuilder(env env, cfg *config, cmd *command) (*commandBuilder, err sys: nameParts[2], abi: nameParts[3], compiler: nameParts[4], + target: basename[:strings.LastIndex(basename, "-")], } - } else { + default: return nil, newErrorwithSourceLocf("unexpected compiler name pattern. Actual: %s", basename) } - target.target = basename[:strings.LastIndex(basename, "-")] var compilerType compilerType switch { case strings.HasPrefix(target.compiler, "clang"): diff --git a/compiler_wrapper/cros_host_config_test.go b/compiler_wrapper/cros_host_config_test.go index e6a6f139..28575928 100644 --- a/compiler_wrapper/cros_host_config_test.go +++ b/compiler_wrapper/cros_host_config_test.go @@ -36,6 +36,7 @@ func TestCrosClangHostConfig(t *testing.T) { createBisectGoldenInputs(), createForceDisableWErrorGoldenInputs(), createClangTidyGoldenInputs(gomaEnv), + createClangHostWrapperInputs(), } runGoldenRecords(ctx, crosClangHostGoldenDir, goldenFiles) @@ -61,8 +62,33 @@ func TestCrosGccHostConfig(t *testing.T) { createGccPathGoldenInputs(ctx, gomaEnv), createGoldenInputsForAllTargets("gcc", mainCc), createGccArgsGoldenInputs(), + createGccHostWrapperInputs(), } runGoldenRecords(ctx, crosGccHostGoldenDir, goldenFiles) }) } + +func createClangHostWrapperInputs() goldenFile { + return goldenFile{ + Name: "clang_host_wrapper.json", + Records: []goldenRecord{ + { + WrapperCmd: newGoldenCmd("./clang", mainCc), + Cmds: okResults, + }, + }, + } +} + +func createGccHostWrapperInputs() goldenFile { + return goldenFile{ + Name: "gcc_host_wrapper.json", + Records: []goldenRecord{ + { + WrapperCmd: newGoldenCmd("./gcc", mainCc), + Cmds: okResults, + }, + }, + } +} diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json new file mode 100644 index 00000000..a5dd18d3 --- /dev/null +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -0,0 +1,31 @@ +[ + { + "wd": "/tmp/stable", + "wrapper": { + "cmd": { + "path": "./clang", + "args": [ + "main.cc" + ] + } + }, + "cmds": [ + { + "cmd": { + "path": "/tmp/stable/clang", + "args": [ + "-Qunused-arguments", + "-grecord-gcc-switches", + "-fno-addrsig", + "-Wno-unused-local-typedefs", + "-Wno-deprecated-declarations", + "-Wno-tautological-constant-compare", + "-Wno-tautological-unsigned-enum-zero-compare", + "-Wno-unknown-warning-option", + "main.cc" + ] + } + } + ] + } +] diff --git a/compiler_wrapper/testdata/cros_gcc_host_golden/gcc_host_wrapper.json b/compiler_wrapper/testdata/cros_gcc_host_golden/gcc_host_wrapper.json new file mode 100644 index 00000000..62afbbaa --- /dev/null +++ b/compiler_wrapper/testdata/cros_gcc_host_golden/gcc_host_wrapper.json @@ -0,0 +1,26 @@ +[ + { + "wd": "/tmp/stable", + "wrapper": { + "cmd": { + "path": "./gcc", + "args": [ + "main.cc" + ] + } + }, + "cmds": [ + { + "cmd": { + "path": "./gcc.real", + "args": [ + "-Wno-maybe-uninitialized", + "-Wno-unused-local-typedefs", + "-Wno-deprecated-declarations", + "main.cc" + ] + } + } + ] + } +] |