xref: /aosp_15_r20/external/toolchain-utils/compiler_wrapper/main.go (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1// Copyright 2019 The ChromiumOS Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This binary requires the following linker variables:
6//   - main.UseCCache: Whether to use ccache.
7//   - main.ConfigName: Name of the configuration to use.
8//     See config.go for the supported values.
9//
10// The script ./build simplifies the call to `go build`.
11// E.g. ./build --use_ccache=true --config=cros.hardened will build a
12// binary that uses the ccache for ChromeOS with hardened flags.
13//
14// Test arguments:
15//   - updategolden: To update the golden results for the wrapper. Without it,
16//     the tests will verify that the wrapper output matches the goldens.
17//   - rungolden: To filter the golden tests by a regex for the wrapper env, path and args.
18//
19// Examples:
20//   - run all tests in isolation:
21//     go test third_party/toolchain-utils/compiler_wrapper/ -v
22package main
23
24import (
25	"log"
26	"os"
27)
28
29func main() {
30	env, err := newProcessEnv()
31	if err != nil {
32		log.Fatal(err)
33	}
34	cfg, err := getRealConfig()
35	if err != nil {
36		log.Fatal(err)
37	}
38	// Note: callCompiler will exec the command. Only in case of
39	// an error or when we run other commands like bisect
40	// will this os.Exit be called.
41	os.Exit(callCompiler(env, cfg, newProcessCommand()))
42}
43