Loading cc/cc_test.go +107 −35 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "reflect" "regexp" "runtime" "slices" "strings" "testing" Loading Loading @@ -2742,10 +2743,18 @@ func TestIncludeDirectoryOrdering(t *testing.T) { "${config.ArmToolchainCflags}", "${config.ArmArmv7ANeonCflags}", "${config.ArmGenericCflags}", } expectedTargetNDKFlags := []string{ "-target", "armv7a-linux-androideabi21", } expectedTargetPlatformFlags := []string{ "-target", "armv7a-linux-androideabi10000", } expectedIncludes := []string{ "external/foo/android_arm_export_include_dirs", "external/foo/lib32_export_include_dirs", Loading Loading @@ -2773,6 +2782,9 @@ func TestIncludeDirectoryOrdering(t *testing.T) { "external/foo/libarm", "external/foo/lib32", "external/foo/libandroid_arm", } expectedNDKSTLIncludes := []string{ "defaults/cc/common/ndk_libc++_shared_include_dirs", } Loading @@ -2783,38 +2795,89 @@ func TestIncludeDirectoryOrdering(t *testing.T) { cstd := []string{"-std=gnu17", "-std=conly"} cppstd := []string{"-std=gnu++20", "-std=cpp", "-fno-rtti"} lastIncludes := []string{ lastNDKIncludes := []string{ "out/soong/ndk/sysroot/usr/include", "out/soong/ndk/sysroot/usr/include/arm-linux-androideabi", } combineSlices := func(slices ...[]string) []string { var ret []string for _, s := range slices { ret = append(ret, s...) } return ret lastPlatformIncludes := []string{ "${config.CommonGlobalIncludes}", } testCases := []struct { name string src string expected []string expectedNDK []string expectedPlatform []string }{ { name: "c", src: "foo.c", expected: combineSlices(baseExpectedFlags, conly, expectedIncludes, cflags, cstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, conly, expectedIncludes, expectedNDKSTLIncludes, cflags, cstd, lastNDKIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, conly, expectedIncludes, cflags, cstd, lastPlatformIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), }, { name: "cc", src: "foo.cc", expected: combineSlices(baseExpectedFlags, cppOnly, expectedIncludes, cflags, cppstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, cppOnly, expectedIncludes, expectedNDKSTLIncludes, cflags, cppstd, lastNDKIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, cppOnly, expectedIncludes, cflags, cppstd, lastPlatformIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), }, { name: "assemble", src: "foo.s", expected: combineSlices(baseExpectedFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, lastIncludes), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, expectedNDKSTLIncludes, lastNDKIncludes, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, lastPlatformIncludes, ), }, } Loading Loading @@ -2909,11 +2972,12 @@ func TestIncludeDirectoryOrdering(t *testing.T) { `, lib, lib) } runTest := func(t *testing.T, variant string, expected []string) { ctx := android.GroupFixturePreparers( PrepareForIntegrationTestWithCc, android.FixtureAddTextFile("external/foo/Android.bp", bp), ).RunTest(t) cflags := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_sdk_static").Output("obj/external/foo/foo.o").Args["cFlags"] cflags := ctx.ModuleForTests("libfoo", variant).Output("obj/external/foo/foo.o").Args["cFlags"] var includes []string flags := strings.Split(cflags, " ") Loading @@ -2927,7 +2991,15 @@ func TestIncludeDirectoryOrdering(t *testing.T) { } } android.AssertArrayString(t, "includes", tc.expected, includes) android.AssertArrayString(t, "includes", expected, includes) } t.Run("platform", func(t *testing.T) { runTest(t, "android_arm_armv7-a-neon_static", tc.expectedPlatform) }) t.Run("ndk", func(t *testing.T) { runTest(t, "android_arm_armv7-a-neon_sdk_static", tc.expectedNDK) }) }) } Loading Loading
cc/cc_test.go +107 −35 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import ( "reflect" "regexp" "runtime" "slices" "strings" "testing" Loading Loading @@ -2742,10 +2743,18 @@ func TestIncludeDirectoryOrdering(t *testing.T) { "${config.ArmToolchainCflags}", "${config.ArmArmv7ANeonCflags}", "${config.ArmGenericCflags}", } expectedTargetNDKFlags := []string{ "-target", "armv7a-linux-androideabi21", } expectedTargetPlatformFlags := []string{ "-target", "armv7a-linux-androideabi10000", } expectedIncludes := []string{ "external/foo/android_arm_export_include_dirs", "external/foo/lib32_export_include_dirs", Loading Loading @@ -2773,6 +2782,9 @@ func TestIncludeDirectoryOrdering(t *testing.T) { "external/foo/libarm", "external/foo/lib32", "external/foo/libandroid_arm", } expectedNDKSTLIncludes := []string{ "defaults/cc/common/ndk_libc++_shared_include_dirs", } Loading @@ -2783,38 +2795,89 @@ func TestIncludeDirectoryOrdering(t *testing.T) { cstd := []string{"-std=gnu17", "-std=conly"} cppstd := []string{"-std=gnu++20", "-std=cpp", "-fno-rtti"} lastIncludes := []string{ lastNDKIncludes := []string{ "out/soong/ndk/sysroot/usr/include", "out/soong/ndk/sysroot/usr/include/arm-linux-androideabi", } combineSlices := func(slices ...[]string) []string { var ret []string for _, s := range slices { ret = append(ret, s...) } return ret lastPlatformIncludes := []string{ "${config.CommonGlobalIncludes}", } testCases := []struct { name string src string expected []string expectedNDK []string expectedPlatform []string }{ { name: "c", src: "foo.c", expected: combineSlices(baseExpectedFlags, conly, expectedIncludes, cflags, cstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, conly, expectedIncludes, expectedNDKSTLIncludes, cflags, cstd, lastNDKIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, conly, expectedIncludes, cflags, cstd, lastPlatformIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), }, { name: "cc", src: "foo.cc", expected: combineSlices(baseExpectedFlags, cppOnly, expectedIncludes, cflags, cppstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, cppOnly, expectedIncludes, expectedNDKSTLIncludes, cflags, cppstd, lastNDKIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, cppOnly, expectedIncludes, cflags, cppstd, lastPlatformIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}, ), }, { name: "assemble", src: "foo.s", expected: combineSlices(baseExpectedFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, lastIncludes), expectedNDK: slices.Concat( baseExpectedFlags, expectedTargetNDKFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, expectedNDKSTLIncludes, lastNDKIncludes, ), expectedPlatform: slices.Concat( baseExpectedFlags, expectedTargetPlatformFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, lastPlatformIncludes, ), }, } Loading Loading @@ -2909,11 +2972,12 @@ func TestIncludeDirectoryOrdering(t *testing.T) { `, lib, lib) } runTest := func(t *testing.T, variant string, expected []string) { ctx := android.GroupFixturePreparers( PrepareForIntegrationTestWithCc, android.FixtureAddTextFile("external/foo/Android.bp", bp), ).RunTest(t) cflags := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_sdk_static").Output("obj/external/foo/foo.o").Args["cFlags"] cflags := ctx.ModuleForTests("libfoo", variant).Output("obj/external/foo/foo.o").Args["cFlags"] var includes []string flags := strings.Split(cflags, " ") Loading @@ -2927,7 +2991,15 @@ func TestIncludeDirectoryOrdering(t *testing.T) { } } android.AssertArrayString(t, "includes", tc.expected, includes) android.AssertArrayString(t, "includes", expected, includes) } t.Run("platform", func(t *testing.T) { runTest(t, "android_arm_armv7-a-neon_static", tc.expectedPlatform) }) t.Run("ndk", func(t *testing.T) { runTest(t, "android_arm_armv7-a-neon_sdk_static", tc.expectedNDK) }) }) } Loading