// Copyright 2019 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package main func processClangSyntaxFlag(builder *commandBuilder) (clangSyntax bool) { builder.transformArgs(func(arg builderArg) string { if arg.value == "-clang-syntax" { clangSyntax = true return "" } return arg.value }) return clangSyntax } func checkClangSyntax(env env, clangCmd *command, gccCmd *command) (exitCode int, err error) { clangSyntaxCmd := &command{ Path: clangCmd.Path, Args: append(clangCmd.Args, "-fsyntax-only", "-stdlib=libstdc++"), EnvUpdates: clangCmd.EnvUpdates, } getStdin, err := prebufferStdinIfNeeded(env, clangCmd) if err != nil { return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err) } exitCode, err = wrapSubprocessErrorWithSourceLoc(clangSyntaxCmd, env.run(clangSyntaxCmd, getStdin(), env.stdout(), env.stderr())) if err != nil || exitCode != 0 { return exitCode, err } return wrapSubprocessErrorWithSourceLoc(gccCmd, env.run(gccCmd, getStdin(), env.stdout(), env.stderr())) }