Use --sysroot when compiling against the NDK

Match the NDK build by using --sysroot to point to the NDK headers
rather than manually specifying the include directories with -isystem.
Also remove --nostdlibinc from the global cflags so it is not used
for NDK builds, and manually add it back for non-NDK builds.

Bug: 374130155
Test: all NDK modules build
Test: TestIncludeDirectoryOrdering
Flag: EXEMPT refactor
Change-Id: I42ed714ba534d8ce252609bf618d4e3433875f28
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 2e6c152..90ec811 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -2734,6 +2734,11 @@
 
 func TestIncludeDirectoryOrdering(t *testing.T) {
 	t.Parallel()
+
+	expectedPlatformFlags := []string{
+		"-nostdlibinc",
+	}
+
 	baseExpectedFlags := []string{
 		"${config.ArmThumbCflags}",
 		"${config.ArmCflags}",
@@ -2795,9 +2800,9 @@
 	cstd := []string{"-std=gnu17", "-std=conly"}
 	cppstd := []string{"-std=gnu++20", "-std=cpp", "-fno-rtti"}
 
-	lastNDKIncludes := []string{
-		"out/soong/ndk/sysroot/usr/include",
-		"out/soong/ndk/sysroot/usr/include/arm-linux-androideabi",
+	lastNDKFlags := []string{
+		"--sysroot",
+		"out/soong/ndk/sysroot",
 	}
 
 	lastPlatformIncludes := []string{
@@ -2821,10 +2826,11 @@
 				expectedNDKSTLIncludes,
 				cflags,
 				cstd,
-				lastNDKIncludes,
+				lastNDKFlags,
 				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
 			),
 			expectedPlatform: slices.Concat(
+				expectedPlatformFlags,
 				baseExpectedFlags,
 				expectedTargetPlatformFlags,
 				conly,
@@ -2846,10 +2852,11 @@
 				expectedNDKSTLIncludes,
 				cflags,
 				cppstd,
-				lastNDKIncludes,
+				lastNDKFlags,
 				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
 			),
 			expectedPlatform: slices.Concat(
+				expectedPlatformFlags,
 				baseExpectedFlags,
 				expectedTargetPlatformFlags,
 				cppOnly,
@@ -2869,9 +2876,10 @@
 				[]string{"${config.CommonGlobalAsflags}"},
 				expectedIncludes,
 				expectedNDKSTLIncludes,
-				lastNDKIncludes,
+				lastNDKFlags,
 			),
 			expectedPlatform: slices.Concat(
+				expectedPlatformFlags,
 				baseExpectedFlags,
 				expectedTargetPlatformFlags,
 				[]string{"${config.CommonGlobalAsflags}"},
diff --git a/cc/compiler.go b/cc/compiler.go
index 7bba962..e49de6f 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -430,14 +430,14 @@
 	}
 
 	if ctx.useSdk() {
-		// TODO: Switch to --sysroot.
 		// The NDK headers are installed to a common sysroot. While a more
 		// typical Soong approach would be to only make the headers for the
 		// library you're using available, we're trying to emulate the NDK
 		// behavior here, and the NDK always has all the NDK headers available.
 		flags.SystemIncludeFlags = append(flags.SystemIncludeFlags,
-			"-isystem "+getCurrentIncludePath(ctx).String(),
-			"-isystem "+getCurrentIncludePath(ctx).Join(ctx, config.NDKTriple(tc)).String())
+			"--sysroot "+getNdkSysrootBase(ctx).String())
+	} else if ctx.Device() {
+		flags.Global.CommonFlags = append(flags.Global.CFlags, "-nostdlibinc")
 	}
 
 	if ctx.InVendorOrProduct() {
diff --git a/cc/config/global.go b/cc/config/global.go
index 9d3de6d..d63f86d 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -172,7 +172,6 @@
 		"-Werror=address",
 		"-Werror=sequence-point",
 		"-Werror=format-security",
-		"-nostdlibinc",
 	}
 
 	commonGlobalLldflags = []string{