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 5package main 6 7func processClangSyntaxFlag(builder *commandBuilder) (clangSyntax bool) { 8 builder.transformArgs(func(arg builderArg) string { 9 if arg.value == "-clang-syntax" { 10 clangSyntax = true 11 return "" 12 } 13 return arg.value 14 }) 15 return clangSyntax 16} 17 18func checkClangSyntax(env env, clangCmd *command, gccCmd *command) (exitCode int, err error) { 19 clangSyntaxCmd := &command{ 20 Path: clangCmd.Path, 21 Args: append(clangCmd.Args, "-fsyntax-only", "-stdlib=libstdc++"), 22 EnvUpdates: clangCmd.EnvUpdates, 23 } 24 25 getStdin, err := prebufferStdinIfNeeded(env, clangCmd) 26 if err != nil { 27 return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err) 28 } 29 30 exitCode, err = wrapSubprocessErrorWithSourceLoc(clangSyntaxCmd, 31 env.run(clangSyntaxCmd, getStdin(), env.stdout(), env.stderr())) 32 if err != nil || exitCode != 0 { 33 return exitCode, err 34 } 35 return wrapSubprocessErrorWithSourceLoc(gccCmd, 36 env.run(gccCmd, getStdin(), env.stdout(), env.stderr())) 37} 38