Loading cc/cc.go +4 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading cc/library.go +16 −12 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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...) } } } Loading cc/linkable.go +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ type LinkableInterface interface { HasStaticVariant() bool GetStaticVariant() LinkableInterface NonCcVariants() bool StubsVersions() []string BuildStubs() bool SetBuildStubs() Loading rust/rust.go +13 −0 Original line number Diff line number Diff line Loading @@ -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())) } Loading Loading
cc/cc.go +4 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
cc/library.go +16 −12 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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...) } } } Loading
cc/linkable.go +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ type LinkableInterface interface { HasStaticVariant() bool GetStaticVariant() LinkableInterface NonCcVariants() bool StubsVersions() []string BuildStubs() bool SetBuildStubs() Loading
rust/rust.go +13 −0 Original line number Diff line number Diff line Loading @@ -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())) } Loading