Loading cc/snapshot_prebuilt.go +8 −0 Original line number Diff line number Diff line Loading @@ -559,10 +559,18 @@ func (p *snapshotLibraryDecorator) link(ctx ModuleContext, flags Flags, deps Pat return nil } // Flags specified directly to this module. p.libraryDecorator.reexportDirs(android.PathsForModuleSrc(ctx, p.properties.Export_include_dirs)...) p.libraryDecorator.reexportSystemDirs(android.PathsForModuleSrc(ctx, p.properties.Export_system_include_dirs)...) p.libraryDecorator.reexportFlags(p.properties.Export_flags...) // Flags reexported from dependencies. (e.g. vndk_prebuilt_shared) p.libraryDecorator.reexportDirs(deps.ReexportedDirs...) p.libraryDecorator.reexportSystemDirs(deps.ReexportedSystemDirs...) p.libraryDecorator.reexportFlags(deps.ReexportedFlags...) p.libraryDecorator.reexportDeps(deps.ReexportedDeps...) p.libraryDecorator.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...) in := android.PathForModuleSrc(ctx, *p.properties.Src) p.unstrippedOutputFile = in Loading cc/vendor_snapshot_test.go +67 −27 Original line number Diff line number Diff line Loading @@ -424,6 +424,20 @@ func TestVendorSnapshotUse(t *testing.T) { srcs: ["client.cpp"], } cc_library_shared { name: "libclient_cfi", vendor: true, nocrt: true, no_libcrt: true, stl: "none", system_shared_libs: [], static_libs: ["libvendor"], sanitize: { cfi: true, }, srcs: ["client.cpp"], } cc_binary { name: "bin_without_snapshot", vendor: true, Loading Loading @@ -492,13 +506,13 @@ func TestVendorSnapshotUse(t *testing.T) { arch: { arm64: { src: "libvndk.a", export_include_dirs: ["include/libvndk"], }, arm: { src: "libvndk.a", export_include_dirs: ["include/libvndk"], }, }, shared_libs: ["libvndk"], export_shared_lib_headers: ["libvndk"], } vendor_snapshot_shared { Loading Loading @@ -584,10 +598,18 @@ func TestVendorSnapshotUse(t *testing.T) { vendor: true, arch: { arm64: { cfi: { src: "libvendor.cfi.a", export_include_dirs: ["include/libvendor_cfi"], }, src: "libvendor.a", export_include_dirs: ["include/libvendor"], }, arm: { cfi: { src: "libvendor.cfi.a", export_include_dirs: ["include/libvendor_cfi"], }, src: "libvendor.a", export_include_dirs: ["include/libvendor"], }, Loading Loading @@ -736,11 +758,13 @@ func TestVendorSnapshotUse(t *testing.T) { "vendor/client.cpp": nil, "vendor/include/libvndk/a.h": nil, "vendor/include/libvendor/b.h": nil, "vendor/include/libvendor_cfi/c.h": nil, "vendor/libc++_static.a": nil, "vendor/libc++demangle.a": nil, "vendor/libgcc_striped.a": nil, "vendor/libvndk.a": nil, "vendor/libvendor.a": nil, "vendor/libvendor.cfi.a": nil, "vendor/libvendor.so": nil, "vendor/lib32.a": nil, "vendor/lib32.so": nil, Loading @@ -766,6 +790,9 @@ func TestVendorSnapshotUse(t *testing.T) { staticVariant := "android_vendor.30_arm64_armv8-a_static" binaryVariant := "android_vendor.30_arm64_armv8-a" sharedCfiVariant := "android_vendor.30_arm64_armv8-a_shared_cfi" staticCfiVariant := "android_vendor.30_arm64_armv8-a_static_cfi" shared32Variant := "android_vendor.30_arm_armv7-a-neon_shared" binary32Variant := "android_vendor.30_arm_armv7-a-neon" Loading Loading @@ -808,9 +835,22 @@ func TestVendorSnapshotUse(t *testing.T) { t.Errorf("wanted libclient32 AndroidMkSharedLibs %q, got %q", w, g) } // bin_without_snapshot uses libvndk.vendor_static.30.arm64 // libclient_cfi uses libvendor.vendor_static.30.arm64's cfi variant libclientCfiCcFlags := ctx.ModuleForTests("libclient_cfi", sharedCfiVariant).Rule("cc").Args["cFlags"] if !strings.Contains(libclientCfiCcFlags, "-Ivendor/include/libvendor_cfi") { t.Errorf("flags for libclient_cfi must contain %#v, but was %#v.", "-Ivendor/include/libvendor_cfi", libclientCfiCcFlags) } libclientCfiLdFlags := ctx.ModuleForTests("libclient_cfi", sharedCfiVariant).Rule("ld").Args["libFlags"] libvendorCfiOutputPaths := getOutputPaths(ctx, staticCfiVariant, []string{"libvendor.vendor_static.30.arm64"}) if !strings.Contains(libclientCfiLdFlags, libvendorCfiOutputPaths[0].String()) { t.Errorf("libflags for libclientCfi must contain %#v, but was %#v", libvendorCfiOutputPaths[0], libclientCfiLdFlags) } // bin_without_snapshot uses libvndk.vendor_static.30.arm64 (which reexports vndk's exported headers) binWithoutSnapshotCcFlags := ctx.ModuleForTests("bin_without_snapshot", binaryVariant).Rule("cc").Args["cFlags"] if !strings.Contains(binWithoutSnapshotCcFlags, "-Ivendor/include/libvndk") { if !strings.Contains(binWithoutSnapshotCcFlags, "-Ivndk/include/libvndk") { t.Errorf("flags for bin_without_snapshot must contain %#v, but was %#v.", "-Ivendor/include/libvndk", binWithoutSnapshotCcFlags) } Loading Loading
cc/snapshot_prebuilt.go +8 −0 Original line number Diff line number Diff line Loading @@ -559,10 +559,18 @@ func (p *snapshotLibraryDecorator) link(ctx ModuleContext, flags Flags, deps Pat return nil } // Flags specified directly to this module. p.libraryDecorator.reexportDirs(android.PathsForModuleSrc(ctx, p.properties.Export_include_dirs)...) p.libraryDecorator.reexportSystemDirs(android.PathsForModuleSrc(ctx, p.properties.Export_system_include_dirs)...) p.libraryDecorator.reexportFlags(p.properties.Export_flags...) // Flags reexported from dependencies. (e.g. vndk_prebuilt_shared) p.libraryDecorator.reexportDirs(deps.ReexportedDirs...) p.libraryDecorator.reexportSystemDirs(deps.ReexportedSystemDirs...) p.libraryDecorator.reexportFlags(deps.ReexportedFlags...) p.libraryDecorator.reexportDeps(deps.ReexportedDeps...) p.libraryDecorator.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...) in := android.PathForModuleSrc(ctx, *p.properties.Src) p.unstrippedOutputFile = in Loading
cc/vendor_snapshot_test.go +67 −27 Original line number Diff line number Diff line Loading @@ -424,6 +424,20 @@ func TestVendorSnapshotUse(t *testing.T) { srcs: ["client.cpp"], } cc_library_shared { name: "libclient_cfi", vendor: true, nocrt: true, no_libcrt: true, stl: "none", system_shared_libs: [], static_libs: ["libvendor"], sanitize: { cfi: true, }, srcs: ["client.cpp"], } cc_binary { name: "bin_without_snapshot", vendor: true, Loading Loading @@ -492,13 +506,13 @@ func TestVendorSnapshotUse(t *testing.T) { arch: { arm64: { src: "libvndk.a", export_include_dirs: ["include/libvndk"], }, arm: { src: "libvndk.a", export_include_dirs: ["include/libvndk"], }, }, shared_libs: ["libvndk"], export_shared_lib_headers: ["libvndk"], } vendor_snapshot_shared { Loading Loading @@ -584,10 +598,18 @@ func TestVendorSnapshotUse(t *testing.T) { vendor: true, arch: { arm64: { cfi: { src: "libvendor.cfi.a", export_include_dirs: ["include/libvendor_cfi"], }, src: "libvendor.a", export_include_dirs: ["include/libvendor"], }, arm: { cfi: { src: "libvendor.cfi.a", export_include_dirs: ["include/libvendor_cfi"], }, src: "libvendor.a", export_include_dirs: ["include/libvendor"], }, Loading Loading @@ -736,11 +758,13 @@ func TestVendorSnapshotUse(t *testing.T) { "vendor/client.cpp": nil, "vendor/include/libvndk/a.h": nil, "vendor/include/libvendor/b.h": nil, "vendor/include/libvendor_cfi/c.h": nil, "vendor/libc++_static.a": nil, "vendor/libc++demangle.a": nil, "vendor/libgcc_striped.a": nil, "vendor/libvndk.a": nil, "vendor/libvendor.a": nil, "vendor/libvendor.cfi.a": nil, "vendor/libvendor.so": nil, "vendor/lib32.a": nil, "vendor/lib32.so": nil, Loading @@ -766,6 +790,9 @@ func TestVendorSnapshotUse(t *testing.T) { staticVariant := "android_vendor.30_arm64_armv8-a_static" binaryVariant := "android_vendor.30_arm64_armv8-a" sharedCfiVariant := "android_vendor.30_arm64_armv8-a_shared_cfi" staticCfiVariant := "android_vendor.30_arm64_armv8-a_static_cfi" shared32Variant := "android_vendor.30_arm_armv7-a-neon_shared" binary32Variant := "android_vendor.30_arm_armv7-a-neon" Loading Loading @@ -808,9 +835,22 @@ func TestVendorSnapshotUse(t *testing.T) { t.Errorf("wanted libclient32 AndroidMkSharedLibs %q, got %q", w, g) } // bin_without_snapshot uses libvndk.vendor_static.30.arm64 // libclient_cfi uses libvendor.vendor_static.30.arm64's cfi variant libclientCfiCcFlags := ctx.ModuleForTests("libclient_cfi", sharedCfiVariant).Rule("cc").Args["cFlags"] if !strings.Contains(libclientCfiCcFlags, "-Ivendor/include/libvendor_cfi") { t.Errorf("flags for libclient_cfi must contain %#v, but was %#v.", "-Ivendor/include/libvendor_cfi", libclientCfiCcFlags) } libclientCfiLdFlags := ctx.ModuleForTests("libclient_cfi", sharedCfiVariant).Rule("ld").Args["libFlags"] libvendorCfiOutputPaths := getOutputPaths(ctx, staticCfiVariant, []string{"libvendor.vendor_static.30.arm64"}) if !strings.Contains(libclientCfiLdFlags, libvendorCfiOutputPaths[0].String()) { t.Errorf("libflags for libclientCfi must contain %#v, but was %#v", libvendorCfiOutputPaths[0], libclientCfiLdFlags) } // bin_without_snapshot uses libvndk.vendor_static.30.arm64 (which reexports vndk's exported headers) binWithoutSnapshotCcFlags := ctx.ModuleForTests("bin_without_snapshot", binaryVariant).Rule("cc").Args["cFlags"] if !strings.Contains(binWithoutSnapshotCcFlags, "-Ivendor/include/libvndk") { if !strings.Contains(binWithoutSnapshotCcFlags, "-Ivndk/include/libvndk") { t.Errorf("flags for bin_without_snapshot must contain %#v, but was %#v.", "-Ivendor/include/libvndk", binWithoutSnapshotCcFlags) } Loading