335d596384
module. This uses the Once cache for GlobalSoongConfig to propagate the dex2oat path from a module dependency to the singletons (both the one that writes out dexpreopt_soong.config and the one that creates the dexpreopted boot images). Unless dexpreopting is disabled altogether through DisablePreopt in dexpreopt.config, that means: - We must ensure at least one module registers a dex2oat tool dependency and resolves a GlobalSoongConfig using it, or else the singletons fail. That means we litter dex2oat dependencies in java modules even when they won't get dexpreopted and hence don't really need them. - We still assume there's at least one java_library or android_app in the build. Bug: 145934348 Test: m (check that out/soong/dexpreopt_soong.config points to dex2oatd64) Test: env USE_DEX2OAT_DEBUG=false m (check that out/soong/dexpreopt_soong.config points to dex2oat) Test: env OUT_DIR=out-tools prebuilts/build-tools/build-prebuilts.sh on the aosp-build-tools branch Change-Id: I38317f2d5e5cf6822f87daae25745767c8a3656c
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
// Copyright 2020 Google Inc. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package dexpreopt
|
|
|
|
import (
|
|
"android/soong/android"
|
|
)
|
|
|
|
type dummyToolBinary struct {
|
|
android.ModuleBase
|
|
}
|
|
|
|
func (m *dummyToolBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {}
|
|
|
|
func (m *dummyToolBinary) HostToolPath() android.OptionalPath {
|
|
return android.OptionalPathForPath(android.PathForTesting("dex2oat"))
|
|
}
|
|
|
|
func dummyToolBinaryFactory() android.Module {
|
|
module := &dummyToolBinary{}
|
|
android.InitAndroidArchModule(module, android.HostSupported, android.MultilibFirst)
|
|
return module
|
|
}
|
|
|
|
func RegisterToolModulesForTest(ctx *android.TestContext) {
|
|
ctx.RegisterModuleType("dummy_tool_binary", dummyToolBinaryFactory)
|
|
}
|
|
|
|
func BpToolModulesForTest() string {
|
|
return `
|
|
dummy_tool_binary {
|
|
name: "dex2oatd",
|
|
}
|
|
`
|
|
}
|