diff options
| -rw-r--r-- | android/mutator.go | 4 | ||||
| -rw-r--r-- | cc/builder.go | 2 | ||||
| -rw-r--r-- | cc/cc.go | 3 | ||||
| -rw-r--r-- | cc/vndk.go | 5 | ||||
| -rw-r--r-- | cc/vndk_prebuilt.go | 4 | ||||
| -rw-r--r-- | java/app_builder.go | 24 | ||||
| -rw-r--r-- | java/config/config.go | 67 | ||||
| -rw-r--r-- | java/config/makevars.go | 13 | ||||
| -rw-r--r-- | java/gen.go | 5 | ||||
| -rw-r--r-- | java/sdk.go | 11 | ||||
| -rw-r--r-- | rust/rust.go | 18 | ||||
| -rw-r--r-- | ui/build/paths/config.go | 4 |
12 files changed, 105 insertions, 55 deletions
diff --git a/android/mutator.go b/android/mutator.go index 8e4343d0f..e76f847c9 100644 --- a/android/mutator.go +++ b/android/mutator.go @@ -244,8 +244,8 @@ func (t *topDownMutatorContext) Rename(name string) { } func (t *topDownMutatorContext) CreateModule(factory blueprint.ModuleFactory, props ...interface{}) { - common := []interface{}{&t.Module().base().commonProperties} - t.bp.CreateModule(factory, append(common, props...)...) + inherited := []interface{}{&t.Module().base().commonProperties, &t.Module().base().variableProperties} + t.bp.CreateModule(factory, append(inherited, props...)...) } func (b *bottomUpMutatorContext) MutatorName() string { diff --git a/cc/builder.go b/cc/builder.go index 554706ca8..42d809aa8 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -551,7 +551,7 @@ func TransformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths) { arCmd := "${config.ClangBin}/llvm-ar" - arFlags := "crsD" + arFlags := "crsPD" if !ctx.Darwin() { arFlags += " -format=gnu" } @@ -2323,6 +2323,9 @@ func ImageMutator(mctx android.BottomUpMutatorContext) { // If the device isn't compiling against the VNDK, we always // use the core mode. coreVariantNeeded = true + } else if m.Target().NativeBridge == android.NativeBridgeEnabled { + // Skip creating vendor variants for natvie bridge modules + coreVariantNeeded = true } else if _, ok := m.linker.(*llndkStubDecorator); ok { // LL-NDK stubs only exist in the vendor variant, since the // real libraries will be used in the core variant. diff --git a/cc/vndk.go b/cc/vndk.go index 2a86f5bc8..698fab527 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -317,10 +317,13 @@ func VndkMutator(mctx android.BottomUpMutatorContext) { if !ok { return } - if !m.Enabled() { return } + if m.Target().NativeBridge == android.NativeBridgeEnabled { + // Skip native_bridge modules + return + } if m.isVndk() { if lib, ok := m.linker.(*vndkPrebuiltLibraryDecorator); ok { diff --git a/cc/vndk_prebuilt.go b/cc/vndk_prebuilt.go index c8ff87f04..da357ed93 100644 --- a/cc/vndk_prebuilt.go +++ b/cc/vndk_prebuilt.go @@ -139,6 +139,10 @@ func (p *vndkPrebuiltLibraryDecorator) link(ctx ModuleContext, return nil } +func (p *vndkPrebuiltLibraryDecorator) nativeCoverage() bool { + return false +} + func (p *vndkPrebuiltLibraryDecorator) install(ctx ModuleContext, file android.Path) { arches := ctx.DeviceConfig().Arches() if len(arches) == 0 || arches[0].ArchType.String() != p.arch() { diff --git a/java/app_builder.go b/java/app_builder.go index 348c8b4bb..ec2f6dafe 100644 --- a/java/app_builder.go +++ b/java/app_builder.go @@ -31,31 +31,13 @@ import ( var ( Signapk = pctx.AndroidStaticRule("signapk", blueprint.RuleParams{ - Command: `${config.JavaCmd} ${config.JavaVmFlags} -Djava.library.path=$$(dirname $signapkJniLibrary) ` + - `-jar $signapkCmd $flags $certificates $in $out`, - CommandDeps: []string{"$signapkCmd", "$signapkJniLibrary"}, + Command: `${config.JavaCmd} ${config.JavaVmFlags} -Djava.library.path=$$(dirname ${config.SignapkJniLibrary}) ` + + `-jar ${config.SignapkCmd} $flags $certificates $in $out`, + CommandDeps: []string{"${config.SignapkCmd}", "${config.SignapkJniLibrary}"}, }, "flags", "certificates") - - androidManifestMerger = pctx.AndroidStaticRule("androidManifestMerger", - blueprint.RuleParams{ - Command: "java -classpath $androidManifestMergerCmd com.android.manifmerger.Main merge " + - "--main $in --libs $libsManifests --out $out", - CommandDeps: []string{"$androidManifestMergerCmd"}, - Description: "merge manifest files", - }, - "libsManifests") ) -func init() { - pctx.SourcePathVariable("androidManifestMergerCmd", "prebuilts/devtools/tools/lib/manifest-merger.jar") - pctx.HostBinToolVariable("aaptCmd", "aapt") - pctx.HostJavaToolVariable("signapkCmd", "signapk.jar") - // TODO(ccross): this should come from the signapk dependencies, but we don't have any way - // to express host JNI dependencies yet. - pctx.HostJNIToolVariable("signapkJniLibrary", "libconscrypt_openjdk_jni") -} - var combineApk = pctx.AndroidStaticRule("combineApk", blueprint.RuleParams{ Command: `${config.MergeZipsCmd} $out $in`, diff --git a/java/config/config.go b/java/config/config.go index 6be83c397..ce62b932a 100644 --- a/java/config/config.go +++ b/java/config/config.go @@ -141,27 +141,66 @@ func init() { pctx.HostJavaToolVariable("JacocoCLIJar", "jacoco-cli.jar") - hostBinToolVariableWithPrebuilt := func(name, prebuiltDir, tool string) { - pctx.VariableFunc(name, func(ctx android.PackageVarContext) string { - if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() { - return filepath.Join(prebuiltDir, runtime.GOOS, "bin", tool) - } else { - return pctx.HostBinToolPath(ctx, tool).String() - } - }) - } - - hostBinToolVariableWithPrebuilt("Aapt2Cmd", "prebuilts/sdk/tools", "aapt2") - pctx.HostBinToolVariable("ManifestCheckCmd", "manifest_check") pctx.HostBinToolVariable("ManifestFixerCmd", "manifest_fixer") pctx.HostBinToolVariable("ManifestMergerCmd", "manifest-merger") - pctx.HostBinToolVariable("ZipAlign", "zipalign") - pctx.HostBinToolVariable("Class2Greylist", "class2greylist") pctx.HostBinToolVariable("HiddenAPI", "hiddenapi") + + hostBinToolVariableWithSdkToolsPrebuilt("Aapt2Cmd", "aapt2") + hostBinToolVariableWithBuildToolsPrebuilt("AidlCmd", "aidl") + hostBinToolVariableWithBuildToolsPrebuilt("ZipAlign", "zipalign") + + hostJavaToolVariableWithSdkToolsPrebuilt("SignapkCmd", "signapk") + // TODO(ccross): this should come from the signapk dependencies, but we don't have any way + // to express host JNI dependencies yet. + hostJNIToolVariableWithSdkToolsPrebuilt("SignapkJniLibrary", "libconscrypt_openjdk_jni") +} + +func hostBinToolVariableWithSdkToolsPrebuilt(name, tool string) { + pctx.VariableFunc(name, func(ctx android.PackageVarContext) string { + if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() { + return filepath.Join("prebuilts/sdk/tools", runtime.GOOS, "bin", tool) + } else { + return pctx.HostBinToolPath(ctx, tool).String() + } + }) +} + +func hostJavaToolVariableWithSdkToolsPrebuilt(name, tool string) { + pctx.VariableFunc(name, func(ctx android.PackageVarContext) string { + if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() { + return filepath.Join("prebuilts/sdk/tools/lib", tool+".jar") + } else { + return pctx.HostJavaToolPath(ctx, tool+".jar").String() + } + }) +} + +func hostJNIToolVariableWithSdkToolsPrebuilt(name, tool string) { + pctx.VariableFunc(name, func(ctx android.PackageVarContext) string { + if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() { + ext := ".so" + if runtime.GOOS == "darwin" { + ext = ".dylib" + } + return filepath.Join("prebuilts/sdk/tools", runtime.GOOS, "lib64", tool+ext) + } else { + return pctx.HostJNIToolPath(ctx, tool).String() + } + }) +} + +func hostBinToolVariableWithBuildToolsPrebuilt(name, tool string) { + pctx.VariableFunc(name, func(ctx android.PackageVarContext) string { + if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() { + return filepath.Join("prebuilts/build-tools", ctx.Config().PrebuiltOS(), "bin", tool) + } else { + return pctx.HostBinToolPath(ctx, tool).String() + } + }) } // JavaCmd returns a SourcePath object with the path to the java command. diff --git a/java/config/makevars.go b/java/config/makevars.go index ead298acd..c40f4fcc5 100644 --- a/java/config/makevars.go +++ b/java/config/makevars.go @@ -82,4 +82,17 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("HIDDENAPI", "${HiddenAPI}") ctx.Strict("DEX_FLAGS", "${DexFlags}") + + ctx.Strict("AIDL", "${AidlCmd}") + ctx.Strict("AAPT2", "${Aapt2Cmd}") + ctx.Strict("ZIPALIGN", "${ZipAlign}") + ctx.Strict("SIGNAPK_JAR", "${SignapkCmd}") + ctx.Strict("SIGNAPK_JNI_LIBRARY_PATH", "${SignapkJniLibrary}") + + ctx.Strict("SOONG_ZIP", "${SoongZipCmd}") + ctx.Strict("MERGE_ZIPS", "${MergeZipsCmd}") + ctx.Strict("ZIP2ZIP", "${Zip2ZipCmd}") + + ctx.Strict("ZIPTIME", "${Ziptime}") + } diff --git a/java/gen.go b/java/gen.go index 532a22c8c..a69e9a2b9 100644 --- a/java/gen.go +++ b/java/gen.go @@ -23,7 +23,6 @@ import ( ) func init() { - pctx.HostBinToolVariable("aidlCmd", "aidl") pctx.HostBinToolVariable("syspropCmd", "sysprop_java") pctx.SourcePathVariable("logtagsCmd", "build/make/tools/java-event-log-tags.py") pctx.SourcePathVariable("mergeLogtagsCmd", "build/make/tools/merge-event-log-tags.py") @@ -33,8 +32,8 @@ func init() { var ( aidl = pctx.AndroidStaticRule("aidl", blueprint.RuleParams{ - Command: "$aidlCmd -d$depFile $aidlFlags $in $out", - CommandDeps: []string{"$aidlCmd"}, + Command: "${config.AidlCmd} -d$depFile $aidlFlags $in $out", + CommandDeps: []string{"${config.AidlCmd}"}, }, "depFile", "aidlFlags") diff --git a/java/sdk.go b/java/sdk.go index d1e2ae4d1..3451774c0 100644 --- a/java/sdk.go +++ b/java/sdk.go @@ -19,7 +19,6 @@ import ( "android/soong/java/config" "fmt" "path/filepath" - "runtime" "sort" "strconv" "strings" @@ -349,15 +348,7 @@ func createAPIFingerprint(ctx android.SingletonContext) { cmd.Text("cat"). Inputs(android.PathsForSource(ctx, in)). - Text("|") - - if runtime.GOOS == "darwin" { - cmd.Text("md5") - } else { - cmd.Text("md5sum") - } - - cmd.Text("| cut -d' ' -f1 >"). + Text("| md5sum | cut -d' ' -f1 >"). Output(out) } else { // Unbundled build diff --git a/rust/rust.go b/rust/rust.go index 5a2514e47..62ccfc740 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -173,6 +173,24 @@ func (mod *Module) Init() android.Module { android.InitDefaultableModule(mod) + // Explicitly disable unsupported targets. + android.AddLoadHook(mod, func(ctx android.LoadHookContext) { + disableTargets := struct { + Target struct { + Darwin struct { + Enabled *bool + } + Linux_bionic struct { + Enabled *bool + } + } + }{} + disableTargets.Target.Darwin.Enabled = proptools.BoolPtr(false) + disableTargets.Target.Linux_bionic.Enabled = proptools.BoolPtr(false) + + ctx.AppendProperties(&disableTargets) + }) + return mod } diff --git a/ui/build/paths/config.go b/ui/build/paths/config.go index b97391b20..786e7d391 100644 --- a/ui/build/paths/config.go +++ b/ui/build/paths/config.go @@ -129,12 +129,10 @@ var Configuration = map[string]PathConfig{ func init() { if runtime.GOOS == "darwin" { - // TODO: move Darwin off md5 and onto our md5sum prebuilt. - Configuration["md5"] = Allowed Configuration["sw_vers"] = Allowed Configuration["xcrun"] = Allowed - // We don't have darwin prebuilts for some tools (like toybox), + // We don't have darwin prebuilts for some tools, // so allow the host versions. for name, config := range Configuration { if config.LinuxOnlyPrebuilt { |