xref: /aosp_15_r20/build/soong/java/androidmk.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2015 Google Inc. All rights reserved.
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage java
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"fmt"
19*333d2b36SAndroid Build Coastguard Worker	"io"
20*333d2b36SAndroid Build Coastguard Worker
21*333d2b36SAndroid Build Coastguard Worker	"android/soong/android"
22*333d2b36SAndroid Build Coastguard Worker
23*333d2b36SAndroid Build Coastguard Worker	"github.com/google/blueprint/proptools"
24*333d2b36SAndroid Build Coastguard Worker)
25*333d2b36SAndroid Build Coastguard Worker
26*333d2b36SAndroid Build Coastguard Workerfunc (library *Library) AndroidMkEntriesHostDex() android.AndroidMkEntries {
27*333d2b36SAndroid Build Coastguard Worker	hostDexNeeded := Bool(library.deviceProperties.Hostdex) && !library.Host()
28*333d2b36SAndroid Build Coastguard Worker	if library.hideApexVariantFromMake {
29*333d2b36SAndroid Build Coastguard Worker		hostDexNeeded = false
30*333d2b36SAndroid Build Coastguard Worker	}
31*333d2b36SAndroid Build Coastguard Worker
32*333d2b36SAndroid Build Coastguard Worker	if hostDexNeeded {
33*333d2b36SAndroid Build Coastguard Worker		var output android.Path
34*333d2b36SAndroid Build Coastguard Worker		if library.dexJarFile.IsSet() {
35*333d2b36SAndroid Build Coastguard Worker			output = library.dexJarFile.Path()
36*333d2b36SAndroid Build Coastguard Worker		} else {
37*333d2b36SAndroid Build Coastguard Worker			output = library.implementationAndResourcesJar
38*333d2b36SAndroid Build Coastguard Worker		}
39*333d2b36SAndroid Build Coastguard Worker		return android.AndroidMkEntries{
40*333d2b36SAndroid Build Coastguard Worker			Class:      "JAVA_LIBRARIES",
41*333d2b36SAndroid Build Coastguard Worker			SubName:    "-hostdex",
42*333d2b36SAndroid Build Coastguard Worker			OutputFile: android.OptionalPathForPath(output),
43*333d2b36SAndroid Build Coastguard Worker			Required:   library.deviceProperties.Target.Hostdex.Required,
44*333d2b36SAndroid Build Coastguard Worker			Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
45*333d2b36SAndroid Build Coastguard Worker			ExtraEntries: []android.AndroidMkExtraEntriesFunc{
46*333d2b36SAndroid Build Coastguard Worker				func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
47*333d2b36SAndroid Build Coastguard Worker					entries.SetBool("LOCAL_IS_HOST_MODULE", true)
48*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_PREBUILT_MODULE_FILE", output)
49*333d2b36SAndroid Build Coastguard Worker					if library.dexJarFile.IsSet() {
50*333d2b36SAndroid Build Coastguard Worker						entries.SetPath("LOCAL_SOONG_DEX_JAR", library.dexJarFile.Path())
51*333d2b36SAndroid Build Coastguard Worker					}
52*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_INSTALLED_MODULE", library.hostdexInstallFile)
53*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_HEADER_JAR", library.headerJarFile)
54*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_CLASSES_JAR", library.implementationAndResourcesJar)
55*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_MODULE_STEM", library.Stem()+"-hostdex")
56*333d2b36SAndroid Build Coastguard Worker				},
57*333d2b36SAndroid Build Coastguard Worker			},
58*333d2b36SAndroid Build Coastguard Worker		}
59*333d2b36SAndroid Build Coastguard Worker	}
60*333d2b36SAndroid Build Coastguard Worker	return android.AndroidMkEntries{Disabled: true}
61*333d2b36SAndroid Build Coastguard Worker}
62*333d2b36SAndroid Build Coastguard Worker
63*333d2b36SAndroid Build Coastguard Workerfunc (library *Library) AndroidMkEntries() []android.AndroidMkEntries {
64*333d2b36SAndroid Build Coastguard Worker	var entriesList []android.AndroidMkEntries
65*333d2b36SAndroid Build Coastguard Worker
66*333d2b36SAndroid Build Coastguard Worker	if library.Os() == android.Windows {
67*333d2b36SAndroid Build Coastguard Worker		// Make does not support Windows Java modules
68*333d2b36SAndroid Build Coastguard Worker		return nil
69*333d2b36SAndroid Build Coastguard Worker	}
70*333d2b36SAndroid Build Coastguard Worker
71*333d2b36SAndroid Build Coastguard Worker	if library.hideApexVariantFromMake {
72*333d2b36SAndroid Build Coastguard Worker		// For a java library built for an APEX, we don't need a Make module for itself. Otherwise, it
73*333d2b36SAndroid Build Coastguard Worker		// will conflict with the platform variant because they have the same module name in the
74*333d2b36SAndroid Build Coastguard Worker		// makefile. However, we need to add its dexpreopt outputs as sub-modules, if it is preopted.
75*333d2b36SAndroid Build Coastguard Worker		dexpreoptEntries := library.dexpreopter.AndroidMkEntriesForApex()
76*333d2b36SAndroid Build Coastguard Worker		if len(dexpreoptEntries) > 0 {
77*333d2b36SAndroid Build Coastguard Worker			entriesList = append(entriesList, dexpreoptEntries...)
78*333d2b36SAndroid Build Coastguard Worker		}
79*333d2b36SAndroid Build Coastguard Worker		entriesList = append(entriesList, android.AndroidMkEntries{Disabled: true})
80*333d2b36SAndroid Build Coastguard Worker	} else if !library.ApexModuleBase.AvailableFor(android.AvailableToPlatform) {
81*333d2b36SAndroid Build Coastguard Worker		// Platform variant.  If not available for the platform, we don't need Make module.
82*333d2b36SAndroid Build Coastguard Worker		entriesList = append(entriesList, android.AndroidMkEntries{Disabled: true})
83*333d2b36SAndroid Build Coastguard Worker	} else if proptools.Bool(library.properties.Headers_only) {
84*333d2b36SAndroid Build Coastguard Worker		// If generating headers only then don't expose to Make.
85*333d2b36SAndroid Build Coastguard Worker		entriesList = append(entriesList, android.AndroidMkEntries{Disabled: true})
86*333d2b36SAndroid Build Coastguard Worker	} else {
87*333d2b36SAndroid Build Coastguard Worker		entriesList = append(entriesList, android.AndroidMkEntries{
88*333d2b36SAndroid Build Coastguard Worker			Class:      "JAVA_LIBRARIES",
89*333d2b36SAndroid Build Coastguard Worker			OutputFile: android.OptionalPathForPath(library.outputFile),
90*333d2b36SAndroid Build Coastguard Worker			Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
91*333d2b36SAndroid Build Coastguard Worker			ExtraEntries: []android.AndroidMkExtraEntriesFunc{
92*333d2b36SAndroid Build Coastguard Worker				func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
93*333d2b36SAndroid Build Coastguard Worker					if len(library.logtagsSrcs) > 0 {
94*333d2b36SAndroid Build Coastguard Worker						entries.AddStrings("LOCAL_SOONG_LOGTAGS_FILES", library.logtagsSrcs.Strings()...)
95*333d2b36SAndroid Build Coastguard Worker					}
96*333d2b36SAndroid Build Coastguard Worker
97*333d2b36SAndroid Build Coastguard Worker					if library.installFile == nil {
98*333d2b36SAndroid Build Coastguard Worker						entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", true)
99*333d2b36SAndroid Build Coastguard Worker					}
100*333d2b36SAndroid Build Coastguard Worker					if library.dexJarFile.IsSet() {
101*333d2b36SAndroid Build Coastguard Worker						entries.SetPath("LOCAL_SOONG_DEX_JAR", library.dexJarFile.Path())
102*333d2b36SAndroid Build Coastguard Worker					}
103*333d2b36SAndroid Build Coastguard Worker					if len(library.dexpreopter.builtInstalled) > 0 {
104*333d2b36SAndroid Build Coastguard Worker						entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", library.dexpreopter.builtInstalled)
105*333d2b36SAndroid Build Coastguard Worker					}
106*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SDK_VERSION", library.sdkVersion.String())
107*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_CLASSES_JAR", library.implementationAndResourcesJar)
108*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_HEADER_JAR", library.headerJarFile)
109*333d2b36SAndroid Build Coastguard Worker
110*333d2b36SAndroid Build Coastguard Worker					if library.jacocoReportClassesFile != nil {
111*333d2b36SAndroid Build Coastguard Worker						entries.SetPath("LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR", library.jacocoReportClassesFile)
112*333d2b36SAndroid Build Coastguard Worker					}
113*333d2b36SAndroid Build Coastguard Worker
114*333d2b36SAndroid Build Coastguard Worker					requiredUsesLibs, optionalUsesLibs := library.classLoaderContexts.UsesLibs()
115*333d2b36SAndroid Build Coastguard Worker					entries.AddStrings("LOCAL_EXPORT_SDK_LIBRARIES", append(requiredUsesLibs, optionalUsesLibs...)...)
116*333d2b36SAndroid Build Coastguard Worker
117*333d2b36SAndroid Build Coastguard Worker					entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_DICT", library.dexer.proguardDictionary)
118*333d2b36SAndroid Build Coastguard Worker					entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_USAGE_ZIP", library.dexer.proguardUsageZip)
119*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_MODULE_STEM", library.Stem())
120*333d2b36SAndroid Build Coastguard Worker
121*333d2b36SAndroid Build Coastguard Worker					entries.SetOptionalPaths("LOCAL_SOONG_LINT_REPORTS", library.linter.reports)
122*333d2b36SAndroid Build Coastguard Worker
123*333d2b36SAndroid Build Coastguard Worker					if library.dexpreopter.configPath != nil {
124*333d2b36SAndroid Build Coastguard Worker						entries.SetPath("LOCAL_SOONG_DEXPREOPT_CONFIG", library.dexpreopter.configPath)
125*333d2b36SAndroid Build Coastguard Worker					}
126*333d2b36SAndroid Build Coastguard Worker				},
127*333d2b36SAndroid Build Coastguard Worker			},
128*333d2b36SAndroid Build Coastguard Worker		})
129*333d2b36SAndroid Build Coastguard Worker	}
130*333d2b36SAndroid Build Coastguard Worker
131*333d2b36SAndroid Build Coastguard Worker	entriesList = append(entriesList, library.AndroidMkEntriesHostDex())
132*333d2b36SAndroid Build Coastguard Worker
133*333d2b36SAndroid Build Coastguard Worker	return entriesList
134*333d2b36SAndroid Build Coastguard Worker}
135*333d2b36SAndroid Build Coastguard Worker
136*333d2b36SAndroid Build Coastguard Workerfunc (j *JavaFuzzTest) AndroidMkEntries() []android.AndroidMkEntries {
137*333d2b36SAndroid Build Coastguard Worker	entriesList := j.Library.AndroidMkEntries()
138*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
139*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
140*333d2b36SAndroid Build Coastguard Worker		entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", "null-suite")
141*333d2b36SAndroid Build Coastguard Worker		androidMkWriteTestData(android.Paths{j.implementationJarFile}, entries)
142*333d2b36SAndroid Build Coastguard Worker		androidMkWriteTestData(j.jniFilePaths, entries)
143*333d2b36SAndroid Build Coastguard Worker		if j.fuzzPackagedModule.Corpus != nil {
144*333d2b36SAndroid Build Coastguard Worker			androidMkWriteTestData(j.fuzzPackagedModule.Corpus, entries)
145*333d2b36SAndroid Build Coastguard Worker		}
146*333d2b36SAndroid Build Coastguard Worker		if j.fuzzPackagedModule.Dictionary != nil {
147*333d2b36SAndroid Build Coastguard Worker			androidMkWriteTestData(android.Paths{j.fuzzPackagedModule.Dictionary}, entries)
148*333d2b36SAndroid Build Coastguard Worker		}
149*333d2b36SAndroid Build Coastguard Worker	})
150*333d2b36SAndroid Build Coastguard Worker	return entriesList
151*333d2b36SAndroid Build Coastguard Worker}
152*333d2b36SAndroid Build Coastguard Worker
153*333d2b36SAndroid Build Coastguard Worker// Called for modules that are a component of a test suite.
154*333d2b36SAndroid Build Coastguard Workerfunc testSuiteComponent(entries *android.AndroidMkEntries, test_suites []string, perTestcaseDirectory bool) {
155*333d2b36SAndroid Build Coastguard Worker	entries.SetString("LOCAL_MODULE_TAGS", "tests")
156*333d2b36SAndroid Build Coastguard Worker	if len(test_suites) > 0 {
157*333d2b36SAndroid Build Coastguard Worker		entries.AddCompatibilityTestSuites(test_suites...)
158*333d2b36SAndroid Build Coastguard Worker	} else {
159*333d2b36SAndroid Build Coastguard Worker		entries.AddCompatibilityTestSuites("null-suite")
160*333d2b36SAndroid Build Coastguard Worker	}
161*333d2b36SAndroid Build Coastguard Worker	entries.SetBoolIfTrue("LOCAL_COMPATIBILITY_PER_TESTCASE_DIRECTORY", perTestcaseDirectory)
162*333d2b36SAndroid Build Coastguard Worker}
163*333d2b36SAndroid Build Coastguard Worker
164*333d2b36SAndroid Build Coastguard Workerfunc (j *Test) AndroidMkEntries() []android.AndroidMkEntries {
165*333d2b36SAndroid Build Coastguard Worker	entriesList := j.Library.AndroidMkEntries()
166*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
167*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
168*333d2b36SAndroid Build Coastguard Worker		testSuiteComponent(entries, j.testProperties.Test_suites, Bool(j.testProperties.Per_testcase_directory))
169*333d2b36SAndroid Build Coastguard Worker		if j.testConfig != nil {
170*333d2b36SAndroid Build Coastguard Worker			entries.SetPath("LOCAL_FULL_TEST_CONFIG", j.testConfig)
171*333d2b36SAndroid Build Coastguard Worker		}
172*333d2b36SAndroid Build Coastguard Worker		androidMkWriteExtraTestConfigs(j.extraTestConfigs, entries)
173*333d2b36SAndroid Build Coastguard Worker		androidMkWriteTestData(j.data, entries)
174*333d2b36SAndroid Build Coastguard Worker		if !BoolDefault(j.testProperties.Auto_gen_config, true) {
175*333d2b36SAndroid Build Coastguard Worker			entries.SetString("LOCAL_DISABLE_AUTO_GENERATE_TEST_CONFIG", "true")
176*333d2b36SAndroid Build Coastguard Worker		}
177*333d2b36SAndroid Build Coastguard Worker		entries.AddStrings("LOCAL_TEST_MAINLINE_MODULES", j.testProperties.Test_mainline_modules...)
178*333d2b36SAndroid Build Coastguard Worker
179*333d2b36SAndroid Build Coastguard Worker		j.testProperties.Test_options.CommonTestOptions.SetAndroidMkEntries(entries)
180*333d2b36SAndroid Build Coastguard Worker	})
181*333d2b36SAndroid Build Coastguard Worker
182*333d2b36SAndroid Build Coastguard Worker	return entriesList
183*333d2b36SAndroid Build Coastguard Worker}
184*333d2b36SAndroid Build Coastguard Worker
185*333d2b36SAndroid Build Coastguard Workerfunc androidMkWriteExtraTestConfigs(extraTestConfigs android.Paths, entries *android.AndroidMkEntries) {
186*333d2b36SAndroid Build Coastguard Worker	if len(extraTestConfigs) > 0 {
187*333d2b36SAndroid Build Coastguard Worker		entries.AddStrings("LOCAL_EXTRA_FULL_TEST_CONFIGS", extraTestConfigs.Strings()...)
188*333d2b36SAndroid Build Coastguard Worker	}
189*333d2b36SAndroid Build Coastguard Worker}
190*333d2b36SAndroid Build Coastguard Worker
191*333d2b36SAndroid Build Coastguard Workerfunc (j *TestHelperLibrary) AndroidMkEntries() []android.AndroidMkEntries {
192*333d2b36SAndroid Build Coastguard Worker	entriesList := j.Library.AndroidMkEntries()
193*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
194*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
195*333d2b36SAndroid Build Coastguard Worker		testSuiteComponent(entries, j.testHelperLibraryProperties.Test_suites, Bool(j.testHelperLibraryProperties.Per_testcase_directory))
196*333d2b36SAndroid Build Coastguard Worker	})
197*333d2b36SAndroid Build Coastguard Worker
198*333d2b36SAndroid Build Coastguard Worker	return entriesList
199*333d2b36SAndroid Build Coastguard Worker}
200*333d2b36SAndroid Build Coastguard Worker
201*333d2b36SAndroid Build Coastguard Workerfunc (prebuilt *Import) AndroidMkEntries() []android.AndroidMkEntries {
202*333d2b36SAndroid Build Coastguard Worker	if prebuilt.hideApexVariantFromMake {
203*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{}
204*333d2b36SAndroid Build Coastguard Worker	}
205*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
206*333d2b36SAndroid Build Coastguard Worker		Class:        "JAVA_LIBRARIES",
207*333d2b36SAndroid Build Coastguard Worker		OverrideName: prebuilt.BaseModuleName(),
208*333d2b36SAndroid Build Coastguard Worker		OutputFile:   android.OptionalPathForPath(prebuilt.combinedImplementationFile),
209*333d2b36SAndroid Build Coastguard Worker		Include:      "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
210*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
211*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
212*333d2b36SAndroid Build Coastguard Worker				entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", !Bool(prebuilt.properties.Installable))
213*333d2b36SAndroid Build Coastguard Worker				if prebuilt.dexJarFile.IsSet() {
214*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_DEX_JAR", prebuilt.dexJarFile.Path())
215*333d2b36SAndroid Build Coastguard Worker				}
216*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.combinedHeaderFile)
217*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.combinedImplementationFile)
218*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_SDK_VERSION", prebuilt.sdkVersion.String())
219*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
220*333d2b36SAndroid Build Coastguard Worker				// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
221*333d2b36SAndroid Build Coastguard Worker			},
222*333d2b36SAndroid Build Coastguard Worker		},
223*333d2b36SAndroid Build Coastguard Worker	}}
224*333d2b36SAndroid Build Coastguard Worker}
225*333d2b36SAndroid Build Coastguard Worker
226*333d2b36SAndroid Build Coastguard Workerfunc (prebuilt *DexImport) AndroidMkEntries() []android.AndroidMkEntries {
227*333d2b36SAndroid Build Coastguard Worker	if prebuilt.hideApexVariantFromMake {
228*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{android.AndroidMkEntries{
229*333d2b36SAndroid Build Coastguard Worker			Disabled: true,
230*333d2b36SAndroid Build Coastguard Worker		}}
231*333d2b36SAndroid Build Coastguard Worker	}
232*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
233*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
234*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(prebuilt.dexJarFile.Path()),
235*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
236*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
237*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
238*333d2b36SAndroid Build Coastguard Worker				if prebuilt.dexJarFile.IsSet() {
239*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_DEX_JAR", prebuilt.dexJarFile.Path())
240*333d2b36SAndroid Build Coastguard Worker				}
241*333d2b36SAndroid Build Coastguard Worker				if len(prebuilt.dexpreopter.builtInstalled) > 0 {
242*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", prebuilt.dexpreopter.builtInstalled)
243*333d2b36SAndroid Build Coastguard Worker				}
244*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
245*333d2b36SAndroid Build Coastguard Worker				// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
246*333d2b36SAndroid Build Coastguard Worker			},
247*333d2b36SAndroid Build Coastguard Worker		},
248*333d2b36SAndroid Build Coastguard Worker	}}
249*333d2b36SAndroid Build Coastguard Worker}
250*333d2b36SAndroid Build Coastguard Worker
251*333d2b36SAndroid Build Coastguard Workerfunc (prebuilt *AARImport) AndroidMkEntries() []android.AndroidMkEntries {
252*333d2b36SAndroid Build Coastguard Worker	if prebuilt.hideApexVariantFromMake {
253*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{{
254*333d2b36SAndroid Build Coastguard Worker			Disabled: true,
255*333d2b36SAndroid Build Coastguard Worker		}}
256*333d2b36SAndroid Build Coastguard Worker	}
257*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
258*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
259*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(prebuilt.implementationJarFile),
260*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
261*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
262*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
263*333d2b36SAndroid Build Coastguard Worker				entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true)
264*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.headerJarFile)
265*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.implementationJarFile)
266*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE", prebuilt.exportPackage)
267*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_TRANSITIVE_RES_PACKAGES", prebuilt.transitiveAaptResourcePackagesFile)
268*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_EXPORT_PROGUARD_FLAGS", prebuilt.proguardFlags)
269*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_STATIC_LIBRARY_EXTRA_PACKAGES", prebuilt.extraAaptPackagesFile)
270*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_FULL_MANIFEST_FILE", prebuilt.manifest)
271*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_SDK_VERSION", prebuilt.sdkVersion.String())
272*333d2b36SAndroid Build Coastguard Worker				// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
273*333d2b36SAndroid Build Coastguard Worker			},
274*333d2b36SAndroid Build Coastguard Worker		},
275*333d2b36SAndroid Build Coastguard Worker	}}
276*333d2b36SAndroid Build Coastguard Worker}
277*333d2b36SAndroid Build Coastguard Worker
278*333d2b36SAndroid Build Coastguard Workerfunc (binary *Binary) AndroidMkEntries() []android.AndroidMkEntries {
279*333d2b36SAndroid Build Coastguard Worker	if binary.Os() == android.Windows {
280*333d2b36SAndroid Build Coastguard Worker		// Make does not support Windows Java modules
281*333d2b36SAndroid Build Coastguard Worker		return nil
282*333d2b36SAndroid Build Coastguard Worker	}
283*333d2b36SAndroid Build Coastguard Worker
284*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{{
285*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
286*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(binary.outputFile),
287*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
288*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
289*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
290*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_HEADER_JAR", binary.headerJarFile)
291*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", binary.implementationAndResourcesJar)
292*333d2b36SAndroid Build Coastguard Worker				if binary.dexJarFile.IsSet() {
293*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_DEX_JAR", binary.dexJarFile.Path())
294*333d2b36SAndroid Build Coastguard Worker				}
295*333d2b36SAndroid Build Coastguard Worker				if len(binary.dexpreopter.builtInstalled) > 0 {
296*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", binary.dexpreopter.builtInstalled)
297*333d2b36SAndroid Build Coastguard Worker				}
298*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_REQUIRED_MODULES", binary.androidMkNamesOfJniLibs...)
299*333d2b36SAndroid Build Coastguard Worker			},
300*333d2b36SAndroid Build Coastguard Worker		},
301*333d2b36SAndroid Build Coastguard Worker	}}
302*333d2b36SAndroid Build Coastguard Worker}
303*333d2b36SAndroid Build Coastguard Worker
304*333d2b36SAndroid Build Coastguard Workerfunc (app *AndroidApp) AndroidMkEntries() []android.AndroidMkEntries {
305*333d2b36SAndroid Build Coastguard Worker	if app.hideApexVariantFromMake || app.IsHideFromMake() {
306*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{android.AndroidMkEntries{
307*333d2b36SAndroid Build Coastguard Worker			Disabled: true,
308*333d2b36SAndroid Build Coastguard Worker		}}
309*333d2b36SAndroid Build Coastguard Worker	}
310*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
311*333d2b36SAndroid Build Coastguard Worker		Class:      "APPS",
312*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(app.outputFile),
313*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
314*333d2b36SAndroid Build Coastguard Worker		Required:   app.requiredModuleNames,
315*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
316*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
317*333d2b36SAndroid Build Coastguard Worker				// App module names can be overridden.
318*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_MODULE", app.installApkName)
319*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", app.appProperties.PreventInstall)
320*333d2b36SAndroid Build Coastguard Worker				if app.headerJarFile != nil {
321*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_HEADER_JAR", app.headerJarFile)
322*333d2b36SAndroid Build Coastguard Worker				}
323*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE", app.exportPackage)
324*333d2b36SAndroid Build Coastguard Worker				if app.dexJarFile.IsSet() {
325*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_DEX_JAR", app.dexJarFile.Path())
326*333d2b36SAndroid Build Coastguard Worker				}
327*333d2b36SAndroid Build Coastguard Worker				if app.implementationAndResourcesJar != nil {
328*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_CLASSES_JAR", app.implementationAndResourcesJar)
329*333d2b36SAndroid Build Coastguard Worker				}
330*333d2b36SAndroid Build Coastguard Worker				if app.headerJarFile != nil {
331*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_HEADER_JAR", app.headerJarFile)
332*333d2b36SAndroid Build Coastguard Worker				}
333*333d2b36SAndroid Build Coastguard Worker				if app.bundleFile != nil {
334*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_BUNDLE", app.bundleFile)
335*333d2b36SAndroid Build Coastguard Worker				}
336*333d2b36SAndroid Build Coastguard Worker				if app.jacocoReportClassesFile != nil {
337*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR", app.jacocoReportClassesFile)
338*333d2b36SAndroid Build Coastguard Worker				}
339*333d2b36SAndroid Build Coastguard Worker				entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_DICT", app.dexer.proguardDictionary)
340*333d2b36SAndroid Build Coastguard Worker				entries.SetOptionalPath("LOCAL_SOONG_PROGUARD_USAGE_ZIP", app.dexer.proguardUsageZip)
341*333d2b36SAndroid Build Coastguard Worker
342*333d2b36SAndroid Build Coastguard Worker				if app.Name() == "framework-res" {
343*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_MODULE_PATH", "$(TARGET_OUT_JAVA_LIBRARIES)")
344*333d2b36SAndroid Build Coastguard Worker					// Make base_rules.mk not put framework-res in a subdirectory called
345*333d2b36SAndroid Build Coastguard Worker					// framework_res.
346*333d2b36SAndroid Build Coastguard Worker					entries.SetBoolIfTrue("LOCAL_NO_STANDARD_LIBRARIES", true)
347*333d2b36SAndroid Build Coastguard Worker				}
348*333d2b36SAndroid Build Coastguard Worker
349*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_EXPORT_PACKAGE_RESOURCES", Bool(app.appProperties.Export_package_resources))
350*333d2b36SAndroid Build Coastguard Worker
351*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_FULL_MANIFEST_FILE", app.manifestPath)
352*333d2b36SAndroid Build Coastguard Worker
353*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", app.Privileged())
354*333d2b36SAndroid Build Coastguard Worker
355*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_CERTIFICATE", app.certificate.AndroidMkString())
356*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", app.getOverriddenPackages()...)
357*333d2b36SAndroid Build Coastguard Worker
358*333d2b36SAndroid Build Coastguard Worker				if app.embeddedJniLibs {
359*333d2b36SAndroid Build Coastguard Worker					jniSymbols := app.JNISymbolsInstalls(app.installPathForJNISymbols.String())
360*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SOONG_JNI_LIBS_SYMBOLS", jniSymbols.String())
361*333d2b36SAndroid Build Coastguard Worker				} else {
362*333d2b36SAndroid Build Coastguard Worker					var names []string
363*333d2b36SAndroid Build Coastguard Worker					for _, jniLib := range app.jniLibs {
364*333d2b36SAndroid Build Coastguard Worker						names = append(names, jniLib.name+":"+jniLib.target.Arch.ArchType.Bitness())
365*333d2b36SAndroid Build Coastguard Worker					}
366*333d2b36SAndroid Build Coastguard Worker					entries.AddStrings("LOCAL_REQUIRED_MODULES", names...)
367*333d2b36SAndroid Build Coastguard Worker				}
368*333d2b36SAndroid Build Coastguard Worker
369*333d2b36SAndroid Build Coastguard Worker				if len(app.jniCoverageOutputs) > 0 {
370*333d2b36SAndroid Build Coastguard Worker					entries.AddStrings("LOCAL_PREBUILT_COVERAGE_ARCHIVE", app.jniCoverageOutputs.Strings()...)
371*333d2b36SAndroid Build Coastguard Worker				}
372*333d2b36SAndroid Build Coastguard Worker				if len(app.dexpreopter.builtInstalled) > 0 {
373*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", app.dexpreopter.builtInstalled)
374*333d2b36SAndroid Build Coastguard Worker				}
375*333d2b36SAndroid Build Coastguard Worker				if app.dexpreopter.configPath != nil {
376*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_DEXPREOPT_CONFIG", app.dexpreopter.configPath)
377*333d2b36SAndroid Build Coastguard Worker				}
378*333d2b36SAndroid Build Coastguard Worker				for _, extra := range app.extraOutputFiles {
379*333d2b36SAndroid Build Coastguard Worker					install := app.onDeviceDir + "/" + extra.Base()
380*333d2b36SAndroid Build Coastguard Worker					entries.AddStrings("LOCAL_SOONG_BUILT_INSTALLED", extra.String()+":"+install)
381*333d2b36SAndroid Build Coastguard Worker				}
382*333d2b36SAndroid Build Coastguard Worker
383*333d2b36SAndroid Build Coastguard Worker				entries.SetOptionalPaths("LOCAL_SOONG_LINT_REPORTS", app.linter.reports)
384*333d2b36SAndroid Build Coastguard Worker
385*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_SOONG_LOGTAGS_FILES", app.logtagsSrcs.Strings()...)
386*333d2b36SAndroid Build Coastguard Worker			},
387*333d2b36SAndroid Build Coastguard Worker		},
388*333d2b36SAndroid Build Coastguard Worker		ExtraFooters: []android.AndroidMkExtraFootersFunc{
389*333d2b36SAndroid Build Coastguard Worker			func(w io.Writer, name, prefix, moduleDir string) {
390*333d2b36SAndroid Build Coastguard Worker				if app.javaApiUsedByOutputFile.String() != "" {
391*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s/$(notdir %s))\n",
392*333d2b36SAndroid Build Coastguard Worker						app.installApkName, app.javaApiUsedByOutputFile.String(), "java_apis_used_by_apex", app.javaApiUsedByOutputFile.String())
393*333d2b36SAndroid Build Coastguard Worker				}
394*333d2b36SAndroid Build Coastguard Worker			},
395*333d2b36SAndroid Build Coastguard Worker		}},
396*333d2b36SAndroid Build Coastguard Worker	}
397*333d2b36SAndroid Build Coastguard Worker}
398*333d2b36SAndroid Build Coastguard Worker
399*333d2b36SAndroid Build Coastguard Workerfunc (a *AutogenRuntimeResourceOverlay) AndroidMkEntries() []android.AndroidMkEntries {
400*333d2b36SAndroid Build Coastguard Worker	if a.IsHideFromMake() || a.outputFile == nil {
401*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{android.AndroidMkEntries{
402*333d2b36SAndroid Build Coastguard Worker			Disabled: true,
403*333d2b36SAndroid Build Coastguard Worker		}}
404*333d2b36SAndroid Build Coastguard Worker	}
405*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
406*333d2b36SAndroid Build Coastguard Worker		Class:      "APPS",
407*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(a.outputFile),
408*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
409*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
410*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
411*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_CERTIFICATE", a.certificate.AndroidMkString())
412*333d2b36SAndroid Build Coastguard Worker			},
413*333d2b36SAndroid Build Coastguard Worker		},
414*333d2b36SAndroid Build Coastguard Worker	}}
415*333d2b36SAndroid Build Coastguard Worker}
416*333d2b36SAndroid Build Coastguard Worker
417*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidApp) getOverriddenPackages() []string {
418*333d2b36SAndroid Build Coastguard Worker	var overridden []string
419*333d2b36SAndroid Build Coastguard Worker	if len(a.overridableAppProperties.Overrides) > 0 {
420*333d2b36SAndroid Build Coastguard Worker		overridden = append(overridden, a.overridableAppProperties.Overrides...)
421*333d2b36SAndroid Build Coastguard Worker	}
422*333d2b36SAndroid Build Coastguard Worker	return overridden
423*333d2b36SAndroid Build Coastguard Worker}
424*333d2b36SAndroid Build Coastguard Worker
425*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidTest) AndroidMkEntries() []android.AndroidMkEntries {
426*333d2b36SAndroid Build Coastguard Worker	entriesList := a.AndroidApp.AndroidMkEntries()
427*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
428*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
429*333d2b36SAndroid Build Coastguard Worker		testSuiteComponent(entries, a.testProperties.Test_suites, Bool(a.testProperties.Per_testcase_directory))
430*333d2b36SAndroid Build Coastguard Worker		if a.testConfig != nil {
431*333d2b36SAndroid Build Coastguard Worker			entries.SetPath("LOCAL_FULL_TEST_CONFIG", a.testConfig)
432*333d2b36SAndroid Build Coastguard Worker		}
433*333d2b36SAndroid Build Coastguard Worker		androidMkWriteExtraTestConfigs(a.extraTestConfigs, entries)
434*333d2b36SAndroid Build Coastguard Worker		androidMkWriteTestData(a.data, entries)
435*333d2b36SAndroid Build Coastguard Worker		entries.AddStrings("LOCAL_TEST_MAINLINE_MODULES", a.testProperties.Test_mainline_modules...)
436*333d2b36SAndroid Build Coastguard Worker	})
437*333d2b36SAndroid Build Coastguard Worker
438*333d2b36SAndroid Build Coastguard Worker	return entriesList
439*333d2b36SAndroid Build Coastguard Worker}
440*333d2b36SAndroid Build Coastguard Worker
441*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidTestHelperApp) AndroidMkEntries() []android.AndroidMkEntries {
442*333d2b36SAndroid Build Coastguard Worker	entriesList := a.AndroidApp.AndroidMkEntries()
443*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
444*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
445*333d2b36SAndroid Build Coastguard Worker		testSuiteComponent(entries, a.appTestHelperAppProperties.Test_suites, Bool(a.appTestHelperAppProperties.Per_testcase_directory))
446*333d2b36SAndroid Build Coastguard Worker		// introduce a flag variable to control the generation of the .config file
447*333d2b36SAndroid Build Coastguard Worker		entries.SetString("LOCAL_DISABLE_TEST_CONFIG", "true")
448*333d2b36SAndroid Build Coastguard Worker	})
449*333d2b36SAndroid Build Coastguard Worker
450*333d2b36SAndroid Build Coastguard Worker	return entriesList
451*333d2b36SAndroid Build Coastguard Worker}
452*333d2b36SAndroid Build Coastguard Worker
453*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidLibrary) AndroidMkEntries() []android.AndroidMkEntries {
454*333d2b36SAndroid Build Coastguard Worker	if a.hideApexVariantFromMake {
455*333d2b36SAndroid Build Coastguard Worker		return []android.AndroidMkEntries{{
456*333d2b36SAndroid Build Coastguard Worker			Disabled: true,
457*333d2b36SAndroid Build Coastguard Worker		}}
458*333d2b36SAndroid Build Coastguard Worker	}
459*333d2b36SAndroid Build Coastguard Worker	entriesList := a.Library.AndroidMkEntries()
460*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
461*333d2b36SAndroid Build Coastguard Worker
462*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
463*333d2b36SAndroid Build Coastguard Worker		if a.aarFile != nil {
464*333d2b36SAndroid Build Coastguard Worker			entries.SetPath("LOCAL_SOONG_AAR", a.aarFile)
465*333d2b36SAndroid Build Coastguard Worker		}
466*333d2b36SAndroid Build Coastguard Worker
467*333d2b36SAndroid Build Coastguard Worker		if a.Name() == "framework-res" {
468*333d2b36SAndroid Build Coastguard Worker			entries.SetString("LOCAL_MODULE_PATH", "$(TARGET_OUT_JAVA_LIBRARIES)")
469*333d2b36SAndroid Build Coastguard Worker			// Make base_rules.mk not put framework-res in a subdirectory called
470*333d2b36SAndroid Build Coastguard Worker			// framework_res.
471*333d2b36SAndroid Build Coastguard Worker			entries.SetBoolIfTrue("LOCAL_NO_STANDARD_LIBRARIES", true)
472*333d2b36SAndroid Build Coastguard Worker		}
473*333d2b36SAndroid Build Coastguard Worker
474*333d2b36SAndroid Build Coastguard Worker		entries.SetPath("LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE", a.exportPackage)
475*333d2b36SAndroid Build Coastguard Worker		entries.SetPath("LOCAL_SOONG_TRANSITIVE_RES_PACKAGES", a.transitiveAaptResourcePackagesFile)
476*333d2b36SAndroid Build Coastguard Worker		entries.SetPath("LOCAL_SOONG_STATIC_LIBRARY_EXTRA_PACKAGES", a.extraAaptPackagesFile)
477*333d2b36SAndroid Build Coastguard Worker		entries.SetPath("LOCAL_FULL_MANIFEST_FILE", a.mergedManifestFile)
478*333d2b36SAndroid Build Coastguard Worker		entries.SetPath("LOCAL_SOONG_EXPORT_PROGUARD_FLAGS", a.combinedExportedProguardFlagsFile)
479*333d2b36SAndroid Build Coastguard Worker		entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", true)
480*333d2b36SAndroid Build Coastguard Worker	})
481*333d2b36SAndroid Build Coastguard Worker
482*333d2b36SAndroid Build Coastguard Worker	return entriesList
483*333d2b36SAndroid Build Coastguard Worker}
484*333d2b36SAndroid Build Coastguard Worker
485*333d2b36SAndroid Build Coastguard Workerfunc (jd *Javadoc) AndroidMkEntries() []android.AndroidMkEntries {
486*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
487*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
488*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(jd.stubsSrcJar),
489*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
490*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
491*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
492*333d2b36SAndroid Build Coastguard Worker				if BoolDefault(jd.properties.Installable, true) {
493*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_DOC_ZIP", jd.docZip)
494*333d2b36SAndroid Build Coastguard Worker				}
495*333d2b36SAndroid Build Coastguard Worker				if jd.exportableStubsSrcJar != nil {
496*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_STUBS_SRCJAR", jd.exportableStubsSrcJar)
497*333d2b36SAndroid Build Coastguard Worker				}
498*333d2b36SAndroid Build Coastguard Worker			},
499*333d2b36SAndroid Build Coastguard Worker		},
500*333d2b36SAndroid Build Coastguard Worker	}}
501*333d2b36SAndroid Build Coastguard Worker}
502*333d2b36SAndroid Build Coastguard Worker
503*333d2b36SAndroid Build Coastguard Workerfunc (ddoc *Droiddoc) AndroidMkEntries() []android.AndroidMkEntries {
504*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
505*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
506*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(ddoc.Javadoc.docZip),
507*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
508*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
509*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
510*333d2b36SAndroid Build Coastguard Worker				if ddoc.Javadoc.docZip != nil {
511*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_DOC_ZIP", ddoc.Javadoc.docZip)
512*333d2b36SAndroid Build Coastguard Worker				}
513*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", !BoolDefault(ddoc.Javadoc.properties.Installable, true))
514*333d2b36SAndroid Build Coastguard Worker			},
515*333d2b36SAndroid Build Coastguard Worker		},
516*333d2b36SAndroid Build Coastguard Worker	}}
517*333d2b36SAndroid Build Coastguard Worker}
518*333d2b36SAndroid Build Coastguard Worker
519*333d2b36SAndroid Build Coastguard Workerfunc (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries {
520*333d2b36SAndroid Build Coastguard Worker	// If the stubsSrcJar is not generated (because generate_stubs is false) then
521*333d2b36SAndroid Build Coastguard Worker	// use the api file as the output file to ensure the relevant phony targets
522*333d2b36SAndroid Build Coastguard Worker	// are created in make if only the api txt file is being generated. This is
523*333d2b36SAndroid Build Coastguard Worker	// needed because an invalid output file would prevent the make entries from
524*333d2b36SAndroid Build Coastguard Worker	// being written.
525*333d2b36SAndroid Build Coastguard Worker	//
526*333d2b36SAndroid Build Coastguard Worker	// Note that dstubs.apiFile can be also be nil if WITHOUT_CHECKS_API is true.
527*333d2b36SAndroid Build Coastguard Worker	// TODO(b/146727827): Revert when we do not need to generate stubs and API separately.
528*333d2b36SAndroid Build Coastguard Worker
529*333d2b36SAndroid Build Coastguard Worker	outputFile := android.OptionalPathForPath(dstubs.stubsSrcJar)
530*333d2b36SAndroid Build Coastguard Worker	if !outputFile.Valid() {
531*333d2b36SAndroid Build Coastguard Worker		outputFile = android.OptionalPathForPath(dstubs.apiFile)
532*333d2b36SAndroid Build Coastguard Worker	}
533*333d2b36SAndroid Build Coastguard Worker	if !outputFile.Valid() {
534*333d2b36SAndroid Build Coastguard Worker		outputFile = android.OptionalPathForPath(dstubs.everythingArtifacts.apiVersionsXml)
535*333d2b36SAndroid Build Coastguard Worker	}
536*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
537*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
538*333d2b36SAndroid Build Coastguard Worker		OutputFile: outputFile,
539*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_droiddoc_prebuilt.mk",
540*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
541*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
542*333d2b36SAndroid Build Coastguard Worker				if dstubs.Javadoc.exportableStubsSrcJar != nil {
543*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_STUBS_SRCJAR", dstubs.Javadoc.exportableStubsSrcJar)
544*333d2b36SAndroid Build Coastguard Worker				}
545*333d2b36SAndroid Build Coastguard Worker				if dstubs.everythingArtifacts.apiVersionsXml != nil {
546*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_API_VERSIONS_XML", dstubs.exportableArtifacts.apiVersionsXml)
547*333d2b36SAndroid Build Coastguard Worker				}
548*333d2b36SAndroid Build Coastguard Worker				if dstubs.everythingArtifacts.annotationsZip != nil {
549*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_ANNOTATIONS_ZIP", dstubs.exportableArtifacts.annotationsZip)
550*333d2b36SAndroid Build Coastguard Worker				}
551*333d2b36SAndroid Build Coastguard Worker				if dstubs.everythingArtifacts.metadataZip != nil {
552*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_DROIDDOC_METADATA_ZIP", dstubs.exportableArtifacts.metadataZip)
553*333d2b36SAndroid Build Coastguard Worker				}
554*333d2b36SAndroid Build Coastguard Worker			},
555*333d2b36SAndroid Build Coastguard Worker		},
556*333d2b36SAndroid Build Coastguard Worker		ExtraFooters: []android.AndroidMkExtraFootersFunc{
557*333d2b36SAndroid Build Coastguard Worker			func(w io.Writer, name, prefix, moduleDir string) {
558*333d2b36SAndroid Build Coastguard Worker				if dstubs.apiFile != nil {
559*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintf(w, ".PHONY: %s %s.txt\n", dstubs.Name(), dstubs.Name())
560*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintf(w, "%s %s.txt: %s\n", dstubs.Name(), dstubs.Name(), dstubs.apiFile)
561*333d2b36SAndroid Build Coastguard Worker				}
562*333d2b36SAndroid Build Coastguard Worker				if dstubs.removedApiFile != nil {
563*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintf(w, ".PHONY: %s %s.txt\n", dstubs.Name(), dstubs.Name())
564*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintf(w, "%s %s.txt: %s\n", dstubs.Name(), dstubs.Name(), dstubs.removedApiFile)
565*333d2b36SAndroid Build Coastguard Worker				}
566*333d2b36SAndroid Build Coastguard Worker				if dstubs.checkCurrentApiTimestamp != nil {
567*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-check-current-api")
568*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, dstubs.Name()+"-check-current-api:",
569*333d2b36SAndroid Build Coastguard Worker						dstubs.checkCurrentApiTimestamp.String())
570*333d2b36SAndroid Build Coastguard Worker
571*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: checkapi")
572*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "checkapi:",
573*333d2b36SAndroid Build Coastguard Worker						dstubs.checkCurrentApiTimestamp.String())
574*333d2b36SAndroid Build Coastguard Worker
575*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: droidcore")
576*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "droidcore: checkapi")
577*333d2b36SAndroid Build Coastguard Worker				}
578*333d2b36SAndroid Build Coastguard Worker				if dstubs.updateCurrentApiTimestamp != nil {
579*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-update-current-api")
580*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, dstubs.Name()+"-update-current-api:",
581*333d2b36SAndroid Build Coastguard Worker						dstubs.updateCurrentApiTimestamp.String())
582*333d2b36SAndroid Build Coastguard Worker
583*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: update-api")
584*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "update-api:",
585*333d2b36SAndroid Build Coastguard Worker						dstubs.updateCurrentApiTimestamp.String())
586*333d2b36SAndroid Build Coastguard Worker				}
587*333d2b36SAndroid Build Coastguard Worker				if dstubs.checkLastReleasedApiTimestamp != nil {
588*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-check-last-released-api")
589*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, dstubs.Name()+"-check-last-released-api:",
590*333d2b36SAndroid Build Coastguard Worker						dstubs.checkLastReleasedApiTimestamp.String())
591*333d2b36SAndroid Build Coastguard Worker
592*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: checkapi")
593*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "checkapi:",
594*333d2b36SAndroid Build Coastguard Worker						dstubs.checkLastReleasedApiTimestamp.String())
595*333d2b36SAndroid Build Coastguard Worker
596*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: droidcore")
597*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "droidcore: checkapi")
598*333d2b36SAndroid Build Coastguard Worker				}
599*333d2b36SAndroid Build Coastguard Worker				if dstubs.apiLintTimestamp != nil {
600*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-api-lint")
601*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, dstubs.Name()+"-api-lint:",
602*333d2b36SAndroid Build Coastguard Worker						dstubs.apiLintTimestamp.String())
603*333d2b36SAndroid Build Coastguard Worker
604*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: checkapi")
605*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "checkapi:",
606*333d2b36SAndroid Build Coastguard Worker						dstubs.Name()+"-api-lint")
607*333d2b36SAndroid Build Coastguard Worker
608*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY: droidcore")
609*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "droidcore: checkapi")
610*333d2b36SAndroid Build Coastguard Worker
611*333d2b36SAndroid Build Coastguard Worker					if dstubs.apiLintReport != nil {
612*333d2b36SAndroid Build Coastguard Worker						fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s)\n", dstubs.Name()+"-api-lint",
613*333d2b36SAndroid Build Coastguard Worker							dstubs.apiLintReport.String(), "apilint/"+dstubs.Name()+"-lint-report.txt")
614*333d2b36SAndroid Build Coastguard Worker						fmt.Fprintf(w, "$(call declare-0p-target,%s)\n", dstubs.apiLintReport.String())
615*333d2b36SAndroid Build Coastguard Worker					}
616*333d2b36SAndroid Build Coastguard Worker				}
617*333d2b36SAndroid Build Coastguard Worker				if dstubs.checkNullabilityWarningsTimestamp != nil {
618*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-check-nullability-warnings")
619*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, dstubs.Name()+"-check-nullability-warnings:",
620*333d2b36SAndroid Build Coastguard Worker						dstubs.checkNullabilityWarningsTimestamp.String())
621*333d2b36SAndroid Build Coastguard Worker
622*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, ".PHONY:", "droidcore")
623*333d2b36SAndroid Build Coastguard Worker					fmt.Fprintln(w, "droidcore: ", dstubs.Name()+"-check-nullability-warnings")
624*333d2b36SAndroid Build Coastguard Worker				}
625*333d2b36SAndroid Build Coastguard Worker			},
626*333d2b36SAndroid Build Coastguard Worker		},
627*333d2b36SAndroid Build Coastguard Worker	}}
628*333d2b36SAndroid Build Coastguard Worker}
629*333d2b36SAndroid Build Coastguard Worker
630*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidAppImport) AndroidMkEntries() []android.AndroidMkEntries {
631*333d2b36SAndroid Build Coastguard Worker	if a.hideApexVariantFromMake {
632*333d2b36SAndroid Build Coastguard Worker		// The non-platform variant is placed inside APEX. No reason to
633*333d2b36SAndroid Build Coastguard Worker		// make it available to Make.
634*333d2b36SAndroid Build Coastguard Worker		return nil
635*333d2b36SAndroid Build Coastguard Worker	}
636*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
637*333d2b36SAndroid Build Coastguard Worker		Class:        "APPS",
638*333d2b36SAndroid Build Coastguard Worker		OutputFile:   android.OptionalPathForPath(a.outputFile),
639*333d2b36SAndroid Build Coastguard Worker		OverrideName: a.BaseModuleName(), // TODO (spandandas): Add a test
640*333d2b36SAndroid Build Coastguard Worker		Include:      "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
641*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
642*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
643*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", a.Privileged())
644*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_CERTIFICATE", a.certificate.AndroidMkString())
645*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", a.properties.Overrides...)
646*333d2b36SAndroid Build Coastguard Worker				if len(a.dexpreopter.builtInstalled) > 0 {
647*333d2b36SAndroid Build Coastguard Worker					entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", a.dexpreopter.builtInstalled)
648*333d2b36SAndroid Build Coastguard Worker				}
649*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_INSTALLED_MODULE_STEM", a.installPath.Rel())
650*333d2b36SAndroid Build Coastguard Worker				if Bool(a.properties.Export_package_resources) {
651*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE", a.outputFile)
652*333d2b36SAndroid Build Coastguard Worker				}
653*333d2b36SAndroid Build Coastguard Worker				// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
654*333d2b36SAndroid Build Coastguard Worker			},
655*333d2b36SAndroid Build Coastguard Worker		},
656*333d2b36SAndroid Build Coastguard Worker	}}
657*333d2b36SAndroid Build Coastguard Worker}
658*333d2b36SAndroid Build Coastguard Worker
659*333d2b36SAndroid Build Coastguard Workerfunc (a *AndroidTestImport) AndroidMkEntries() []android.AndroidMkEntries {
660*333d2b36SAndroid Build Coastguard Worker	entriesList := a.AndroidAppImport.AndroidMkEntries()
661*333d2b36SAndroid Build Coastguard Worker	entries := &entriesList[0]
662*333d2b36SAndroid Build Coastguard Worker	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
663*333d2b36SAndroid Build Coastguard Worker		testSuiteComponent(entries, a.testProperties.Test_suites, Bool(a.testProperties.Per_testcase_directory))
664*333d2b36SAndroid Build Coastguard Worker		androidMkWriteTestData(a.data, entries)
665*333d2b36SAndroid Build Coastguard Worker	})
666*333d2b36SAndroid Build Coastguard Worker	return entriesList
667*333d2b36SAndroid Build Coastguard Worker}
668*333d2b36SAndroid Build Coastguard Worker
669*333d2b36SAndroid Build Coastguard Workerfunc androidMkWriteTestData(data android.Paths, entries *android.AndroidMkEntries) {
670*333d2b36SAndroid Build Coastguard Worker	var testFiles []string
671*333d2b36SAndroid Build Coastguard Worker	for _, d := range data {
672*333d2b36SAndroid Build Coastguard Worker		testFiles = append(testFiles, d.String()+":"+d.Rel())
673*333d2b36SAndroid Build Coastguard Worker	}
674*333d2b36SAndroid Build Coastguard Worker	entries.AddStrings("LOCAL_COMPATIBILITY_SUPPORT_FILES", testFiles...)
675*333d2b36SAndroid Build Coastguard Worker}
676*333d2b36SAndroid Build Coastguard Worker
677*333d2b36SAndroid Build Coastguard Workerfunc (r *RuntimeResourceOverlay) AndroidMkEntries() []android.AndroidMkEntries {
678*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{android.AndroidMkEntries{
679*333d2b36SAndroid Build Coastguard Worker		Class:      "ETC",
680*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(r.outputFile),
681*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
682*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
683*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
684*333d2b36SAndroid Build Coastguard Worker				entries.SetString("LOCAL_CERTIFICATE", r.certificate.AndroidMkString())
685*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_MODULE_PATH", r.installDir)
686*333d2b36SAndroid Build Coastguard Worker				entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", r.properties.Overrides...)
687*333d2b36SAndroid Build Coastguard Worker				// TODO: LOCAL_ACONFIG_FILES -- Might eventually need aconfig flags?
688*333d2b36SAndroid Build Coastguard Worker			},
689*333d2b36SAndroid Build Coastguard Worker		},
690*333d2b36SAndroid Build Coastguard Worker	}}
691*333d2b36SAndroid Build Coastguard Worker}
692*333d2b36SAndroid Build Coastguard Worker
693*333d2b36SAndroid Build Coastguard Workerfunc (apkSet *AndroidAppSet) AndroidMkEntries() []android.AndroidMkEntries {
694*333d2b36SAndroid Build Coastguard Worker	return []android.AndroidMkEntries{
695*333d2b36SAndroid Build Coastguard Worker		android.AndroidMkEntries{
696*333d2b36SAndroid Build Coastguard Worker			Class:      "APPS",
697*333d2b36SAndroid Build Coastguard Worker			OutputFile: android.OptionalPathForPath(apkSet.primaryOutput),
698*333d2b36SAndroid Build Coastguard Worker			Include:    "$(BUILD_SYSTEM)/soong_android_app_set.mk",
699*333d2b36SAndroid Build Coastguard Worker			ExtraEntries: []android.AndroidMkExtraEntriesFunc{
700*333d2b36SAndroid Build Coastguard Worker				func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
701*333d2b36SAndroid Build Coastguard Worker					entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", apkSet.Privileged())
702*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_APK_SET_INSTALL_FILE", apkSet.PackedAdditionalOutputs())
703*333d2b36SAndroid Build Coastguard Worker					entries.SetPath("LOCAL_APKCERTS_FILE", apkSet.apkcertsFile)
704*333d2b36SAndroid Build Coastguard Worker					entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", apkSet.properties.Overrides...)
705*333d2b36SAndroid Build Coastguard Worker					// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts -- Both declarations and values
706*333d2b36SAndroid Build Coastguard Worker				},
707*333d2b36SAndroid Build Coastguard Worker			},
708*333d2b36SAndroid Build Coastguard Worker		},
709*333d2b36SAndroid Build Coastguard Worker	}
710*333d2b36SAndroid Build Coastguard Worker}
711*333d2b36SAndroid Build Coastguard Worker
712*333d2b36SAndroid Build Coastguard Workerfunc (al *ApiLibrary) AndroidMkEntries() []android.AndroidMkEntries {
713*333d2b36SAndroid Build Coastguard Worker	var entriesList []android.AndroidMkEntries
714*333d2b36SAndroid Build Coastguard Worker
715*333d2b36SAndroid Build Coastguard Worker	entriesList = append(entriesList, android.AndroidMkEntries{
716*333d2b36SAndroid Build Coastguard Worker		Class:      "JAVA_LIBRARIES",
717*333d2b36SAndroid Build Coastguard Worker		OutputFile: android.OptionalPathForPath(al.stubsJar),
718*333d2b36SAndroid Build Coastguard Worker		Include:    "$(BUILD_SYSTEM)/soong_java_prebuilt.mk",
719*333d2b36SAndroid Build Coastguard Worker		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
720*333d2b36SAndroid Build Coastguard Worker			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
721*333d2b36SAndroid Build Coastguard Worker				entries.SetBoolIfTrue("LOCAL_UNINSTALLABLE_MODULE", true)
722*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_CLASSES_JAR", al.stubsJar)
723*333d2b36SAndroid Build Coastguard Worker				entries.SetPath("LOCAL_SOONG_HEADER_JAR", al.stubsJar)
724*333d2b36SAndroid Build Coastguard Worker			},
725*333d2b36SAndroid Build Coastguard Worker		},
726*333d2b36SAndroid Build Coastguard Worker	})
727*333d2b36SAndroid Build Coastguard Worker
728*333d2b36SAndroid Build Coastguard Worker	return entriesList
729*333d2b36SAndroid Build Coastguard Worker}
730