compiler_wrapper: remove WITH_TIDY support for android.

Also consolidates most of the android specific logic
into one place so it's clear which flags are used
and which ones are not.

Also detects wrapping of clang-tidy for future
special casing.

BUG=chromium:773875
TEST=unit tests, golden tests
TEST=android's test_compiler.py --with-tidy

Change-Id: Ic83340ba63ec3ea4c3c174069d3dc017ecbcdd72
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1866603
Tested-by: Tobias Bosch <tbosch@google.com>
Reviewed-by: George Burgess <gbiv@chromium.org>
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index b157687..17c62db 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -71,7 +71,27 @@
 	env = mainBuilder.env
 	var compilerCmd *command
 	clangSyntax := processClangSyntaxFlag(mainBuilder)
-	if mainBuilder.target.compilerType == clangType {
+	if cfg.isAndroidWrapper {
+		// FIXME: This combination of using the directory of the symlink but the
+		// basename of the link target is strange but is the logic that old android
+		// wrapper uses. Change this to use directory and basename either from the
+		// absWrapperPath or from the builder.path, but don't mix anymore.
+		mainBuilder.path = filepath.Join(filepath.Dir(mainBuilder.path), filepath.Base(mainBuilder.absWrapperPath)+".real")
+
+		switch mainBuilder.target.compilerType {
+		case clangType:
+			mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...)
+			mainBuilder.addPreUserArgs(mainBuilder.cfg.commonFlags...)
+			if _, err := processGomaCccFlags(mainBuilder); err != nil {
+				return 0, err
+			}
+			compilerCmd = mainBuilder.build()
+		case clangTidyType:
+			compilerCmd = mainBuilder.build()
+		default:
+			return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler)
+		}
+	} else if mainBuilder.target.compilerType == clangType {
 		cSrcFile, useClangTidy := processClangTidyFlags(mainBuilder)
 		sysroot, err := prepareClangCommand(mainBuilder)
 		if err != nil {
@@ -146,7 +166,7 @@
 
 func prepareClangCommand(builder *commandBuilder) (sysroot string, err error) {
 	sysroot = ""
-	if !builder.cfg.isHostWrapper && !builder.cfg.isAndroidWrapper {
+	if !builder.cfg.isHostWrapper {
 		sysroot = processSysrootFlag(builder)
 	}
 	builder.addPreUserArgs(builder.cfg.clangFlags...)
@@ -189,15 +209,13 @@
 
 func calcCommonPreUserArgs(builder *commandBuilder) {
 	builder.addPreUserArgs(builder.cfg.commonFlags...)
-	if !builder.cfg.isHostWrapper && !builder.cfg.isAndroidWrapper {
+	if !builder.cfg.isHostWrapper {
 		processPieFlags(builder)
 		processThumbCodeFlags(builder)
 		processStackProtectorFlags(builder)
 		processX86Flags(builder)
 	}
-	if !builder.cfg.isAndroidWrapper {
-		processSanitizerFlags(builder)
-	}
+	processSanitizerFlags(builder)
 }
 
 func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) (err error) {