Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43db9bee authored by Paul Duffin's avatar Paul Duffin
Browse files

java_sdk_library: Allow creation of impl shared library to be disabled

Most modules will be providing their implementations via APEX and so do
not need to create an implementation shared library as part of this.

Adds an api_only property which will:
* Prevent the creation of the implementation library.
* Prevent the creation of the .xml file needed at runtime to make
  the shared library available.
* Prevent the library being added to the list of java sdk libraries
  used by make to handle installation.

Bug: 145998881
Test: m checkbuild
Change-Id: Ida5e46a81aa5b0a041882d90d5f362ec79fdddb2
parent 749f98fb
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -110,6 +110,9 @@ type sdkLibraryProperties struct {
	// Defaults to "api".
	Api_dir *string

	// If set to true there is no runtime library.
	Api_only *bool

	// local files that are used within user customized droiddoc options.
	Droiddoc_option_files []string

@@ -183,7 +186,10 @@ func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
}

func (module *SdkLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	// Don't build an implementation library if this is api only.
	if !proptools.Bool(module.sdkLibraryProperties.Api_only) {
		module.Library.GenerateAndroidBuildActions(ctx)
	}

	module.buildPermissionsFile(ctx)

@@ -247,6 +253,9 @@ func (module *SdkLibrary) OutputFiles(tag string) (android.Paths, error) {
}

func (module *SdkLibrary) AndroidMkEntries() []android.AndroidMkEntries {
	if proptools.Bool(module.sdkLibraryProperties.Api_only) {
		return nil
	}
	entriesList := module.Library.AndroidMkEntries()
	entries := &entriesList[0]
	entries.Required = append(entries.Required, module.xmlFileName())
@@ -773,10 +782,11 @@ func (module *SdkLibrary) CreateInternalModules(mctx android.LoadHookContext) {
		// for test API stubs
		module.createStubsLibrary(mctx, apiScopeTest)
		module.createStubsSources(mctx, apiScopeTest)
	}

	if !proptools.Bool(module.sdkLibraryProperties.Api_only) {
		// for runtime
		module.createXmlFile(mctx)
	}

		// record java_sdk_library modules so that they are exported to make
		javaSdkLibraries := javaSdkLibraries(mctx.Config())
@@ -784,6 +794,7 @@ func (module *SdkLibrary) CreateInternalModules(mctx android.LoadHookContext) {
		defer javaSdkLibrariesLock.Unlock()
		*javaSdkLibraries = append(*javaSdkLibraries, module.BaseModuleName())
	}
}

func (module *SdkLibrary) InitSdkLibraryProperties() {
	module.AddProperties(