diff --git a/android/paths.go b/android/paths.go index 61c125811..a40f48274 100644 --- a/android/paths.go +++ b/android/paths.go @@ -1831,17 +1831,13 @@ func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, return base.Join(ctx, pathComponents...) } -func pathForNdkOrSdkInstall(ctx PathContext, prefix string, paths []string) InstallPath { - base := pathForPartitionInstallDir(ctx, "", prefix, false) - return base.Join(ctx, paths...) -} - -func PathForNdkInstall(ctx PathContext, paths ...string) InstallPath { - return pathForNdkOrSdkInstall(ctx, "ndk", paths) +func PathForNdkInstall(ctx PathContext, paths ...string) OutputPath { + return PathForOutput(ctx, append([]string{"ndk"}, paths...)...) } func PathForMainlineSdksInstall(ctx PathContext, paths ...string) InstallPath { - return pathForNdkOrSdkInstall(ctx, "mainline-sdks", paths) + base := pathForPartitionInstallDir(ctx, "", "mainline-sdks", false) + return base.Join(ctx, paths...) } func InstallPathToOnDevicePath(ctx PathContext, path InstallPath) string { diff --git a/cc/androidmk.go b/cc/androidmk.go index 20673e825..6e27946a5 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -448,6 +448,7 @@ func (c *stubDecorator) AndroidMkEntries(ctx AndroidMkContext, entries *android. if c.parsedCoverageXmlPath.String() != "" { entries.SetString("SOONG_NDK_API_XML", "$(SOONG_NDK_API_XML) "+c.parsedCoverageXmlPath.String()) } + entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true) // Stubs should not be installed }) } diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go index 567cb7c53..57a3b3a9c 100644 --- a/cc/ndk_headers.go +++ b/cc/ndk_headers.go @@ -15,7 +15,6 @@ package cc import ( - "fmt" "path/filepath" "android/soong/android" @@ -45,7 +44,7 @@ func init() { } // Returns the NDK base include path for use with sdk_version current. Usable with -I. -func getCurrentIncludePath(ctx android.ModuleContext) android.InstallPath { +func getCurrentIncludePath(ctx android.ModuleContext) android.OutputPath { return getNdkSysrootBase(ctx).Join(ctx, "usr/include") } @@ -87,7 +86,7 @@ type headerModule struct { } func getHeaderInstallDir(ctx android.ModuleContext, header android.Path, from string, - to string) android.InstallPath { + to string) android.OutputPath { // Output path is the sysroot base + "usr/include" + to directory + directory component // of the file without the leading from directory stripped. // @@ -129,13 +128,12 @@ func (m *headerModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { for _, header := range m.srcPaths { installDir := getHeaderInstallDir(ctx, header, String(m.properties.From), String(m.properties.To)) - installedPath := ctx.InstallFile(installDir, header.Base(), header) installPath := installDir.Join(ctx, header.Base()) - if installPath != installedPath { - panic(fmt.Sprintf( - "expected header install path (%q) not equal to actual install path %q", - installPath, installedPath)) - } + ctx.Build(pctx, android.BuildParams{ + Rule: android.Cp, + Input: header, + Output: installPath, + }) m.installPaths = append(m.installPaths, installPath) } diff --git a/cc/ndk_library.go b/cc/ndk_library.go index 64193b166..39dd41523 100644 --- a/cc/ndk_library.go +++ b/cc/ndk_library.go @@ -518,19 +518,25 @@ func (stub *stubDecorator) nativeCoverage() bool { // Returns the install path for unversioned NDK libraries (currently only static // libraries). -func getUnversionedLibraryInstallPath(ctx ModuleContext) android.InstallPath { +func getUnversionedLibraryInstallPath(ctx ModuleContext) android.OutputPath { return getNdkSysrootBase(ctx).Join(ctx, "usr/lib", config.NDKTriple(ctx.toolchain())) } // Returns the install path for versioned NDK libraries. These are most often // stubs, but the same paths are used for CRT objects. -func getVersionedLibraryInstallPath(ctx ModuleContext, apiLevel android.ApiLevel) android.InstallPath { +func getVersionedLibraryInstallPath(ctx ModuleContext, apiLevel android.ApiLevel) android.OutputPath { return getUnversionedLibraryInstallPath(ctx).Join(ctx, apiLevel.String()) } func (stub *stubDecorator) install(ctx ModuleContext, path android.Path) { installDir := getVersionedLibraryInstallPath(ctx, stub.apiLevel) - stub.installPath = ctx.InstallFile(installDir, path.Base(), path) + out := installDir.Join(ctx, path.Base()) + ctx.Build(pctx, android.BuildParams{ + Rule: android.Cp, + Input: path, + Output: out, + }) + stub.installPath = out } func newStubLibrary() *Module { diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go index 483d23bd7..e815172ae 100644 --- a/cc/ndk_sysroot.go +++ b/cc/ndk_sysroot.go @@ -69,12 +69,12 @@ func RegisterNdkModuleTypes(ctx android.RegistrationContext) { ctx.RegisterParallelSingletonType("ndk", NdkSingleton) } -func getNdkInstallBase(ctx android.PathContext) android.InstallPath { +func getNdkInstallBase(ctx android.PathContext) android.OutputPath { return android.PathForNdkInstall(ctx) } // Returns the main install directory for the NDK sysroot. Usable with --sysroot. -func getNdkSysrootBase(ctx android.PathContext) android.InstallPath { +func getNdkSysrootBase(ctx android.PathContext) android.OutputPath { return getNdkInstallBase(ctx).Join(ctx, "sysroot") }