aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper
diff options
context:
space:
mode:
authorTobias Bosch <tbosch@google.com>2019-08-20 14:18:44 -0700
committerTobias Bosch <tbosch@google.com>2019-08-21 14:54:45 +0000
commitedaab0ffdce3754413699e082b69f3f582177553 (patch)
tree2ed54614b6f96155ea4fafe499fadee12a9e5818 /compiler_wrapper
parent2e7ed593657e7d7d4adadc4741edf518cab5359b (diff)
downloadtoolchain-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')
-rw-r--r--compiler_wrapper/command.go16
-rw-r--r--compiler_wrapper/cros_host_config_test.go26
-rw-r--r--compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json31
-rw-r--r--compiler_wrapper/testdata/cros_gcc_host_golden/gcc_host_wrapper.json26
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"
+ ]
+ }
+ }
+ ]
+ }
+]