Use cp instead of install for ndk_headers

ndk_headers currently use ctx.Install to install headers in
out/soong/ndk/sysroot. The files are subsequently used to compile ndk
variants of cc libraries on host.

Since these headers are not actually installed on device, use android.Cp
to assemble the NDK sysroot. By itself, it should be a no-op, but
androd.Cp is more friendly with restricting the installation rules to
PRODUCT_PACKAGES.

To make it explicit that the sysroot is not a typical installation path,
this CL also modifies the type to OutputPath

Test: m
Bug: 332778109
Change-Id: I1131c3c764443cbaac525c6022cd09c47695d275
This commit is contained in:
Spandan Das
2024-04-03 23:59:40 +00:00
parent 219ce55481
commit 1202729cb2
4 changed files with 16 additions and 22 deletions

View File

@@ -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)
}