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

Commit 3bc70db3 authored by Ivan Lozano's avatar Ivan Lozano Committed by Gerrit Code Review
Browse files

Merge "Allow cc.LinkabeInterfaces to request "" variants."

parents 66278b62 2b26297d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -562,6 +562,10 @@ func (c *Module) CcLibraryInterface() bool {
	return false
}

func (c *Module) NonCcVariants() bool {
	return false
}

func (c *Module) SetBuildStubs() {
	if c.linker != nil {
		if library, ok := c.linker.(*libraryDecorator); ok {
+16 −12
Original line number Diff line number Diff line
@@ -1262,14 +1262,16 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) {
			shared.linker.(prebuiltLibraryInterface).disablePrebuilt()
		}
	} else if library, ok := mctx.Module().(LinkableInterface); ok && library.CcLibraryInterface() {
		if library.BuildStaticVariant() && library.BuildSharedVariant() {
			variations := []string{"static", "shared"}

			// Non-cc.Modules need an empty variant for their mutators.
			if _, ok := mctx.Module().(*Module); !ok {
		// Non-cc.Modules may need an empty variant for their mutators.
		variations := []string{}
		if library.NonCcVariants() {
			variations = append(variations, "")
		}

		if library.BuildStaticVariant() && library.BuildSharedVariant() {
			variations := append([]string{"static", "shared"}, variations...)

			modules := mctx.CreateLocalVariations(variations...)
			static := modules[0].(LinkableInterface)
			shared := modules[1].(LinkableInterface)
@@ -1281,16 +1283,18 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) {
				reuseStaticLibrary(mctx, static.(*Module), shared.(*Module))
			}
		} else if library.BuildStaticVariant() {
			modules := mctx.CreateLocalVariations("static")
			variations := append([]string{"static"}, variations...)

			modules := mctx.CreateLocalVariations(variations...)
			modules[0].(LinkableInterface).SetStatic()
		} else if library.BuildSharedVariant() {
			modules := mctx.CreateLocalVariations("shared")
			variations := append([]string{"shared"}, variations...)

			modules := mctx.CreateLocalVariations(variations...)
			modules[0].(LinkableInterface).SetShared()
		} else if _, ok := mctx.Module().(*Module); !ok {
			// Non-cc.Modules need an empty variant for their mutators.
			mctx.CreateLocalVariations("")
		} else if len(variations) > 0 {
			mctx.CreateLocalVariations(variations...)
		}

	}
}

+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ type LinkableInterface interface {
	HasStaticVariant() bool
	GetStaticVariant() LinkableInterface

	NonCcVariants() bool

	StubsVersions() []string
	BuildStubs() bool
	SetBuildStubs()
+13 −0
Original line number Diff line number Diff line
@@ -89,6 +89,19 @@ func (mod *Module) SelectedStl() string {
	return ""
}

func (mod *Module) NonCcVariants() bool {
	if mod.compiler != nil {
		if library, ok := mod.compiler.(libraryInterface); ok {
			if library.buildRlib() || library.buildDylib() {
				return true
			} else {
				return false
			}
		}
	}
	panic(fmt.Errorf("NonCcVariants called on non-library module: %q", mod.BaseModuleName()))
}

func (mod *Module) ApiLevel() string {
	panic(fmt.Errorf("Called ApiLevel on Rust module %q; stubs libraries are not yet supported.", mod.BaseModuleName()))
}