@@ -184,53 +184,44 @@ func (g *androidNinjaGenerator) getSharedLibFlags(m BackendCommonLibraryInterfac
184184 ctx .VisitDirectDepsIf (
185185 func (m blueprint.Module ) bool { return ctx .OtherModuleDependencyTag (m ) == tag .SharedTag },
186186 func (m blueprint.Module ) {
187- if sl , ok := m .(* ModuleSharedLibrary ); ok {
188- if isExternal (m .(* ModuleSharedLibrary )) {
189- ldlibs = append (ldlibs , sl .FlagsOut ().Filtered (func (f flag.Flag ) bool {
190- return f .MatchesType (flag .TypeLinkLibrary )
191- }).ToStringSlice ()... )
192-
193- ldflags = append (ldflags , sl .FlagsOut ().Filtered (func (f flag.Flag ) bool {
194- return f .MatchesType (flag .TypeLinker )
195- }).ToStringSlice ()... )
196- } else {
197- b := & sl .ModuleLibrary .Properties .Build
198- if b .isForwardingSharedLibrary () {
199- hasForwardingLib = true
200- ldlibs = append (ldlibs , tc .GetLinker ().KeepSharedLibraryTransitivity ())
201- if useNoAsNeeded {
202- ldlibs = append (ldlibs , tc .GetLinker ().KeepUnusedDependencies ())
203- }
204- }
205- ldlibs = append (ldlibs , pathToLibFlagAndroid (sl .outputName ()))
206- if b .isForwardingSharedLibrary () {
207- if useNoAsNeeded {
208- ldlibs = append (ldlibs , tc .GetLinker ().DropUnusedDependencies ())
209- }
210- ldlibs = append (ldlibs , tc .GetLinker ().DropSharedLibraryTransitivity ())
187+ if ex , ok := m .(externableLibrary ); ok && ex .isExternal () {
188+ ldlibs = append (ldlibs , ex .FlagsOut ().Filtered (func (f flag.Flag ) bool {
189+ return f .MatchesType (flag .TypeLinkLibrary )
190+ }).ToStringSlice ()... )
191+
192+ ldflags = append (ldflags , ex .FlagsOut ().Filtered (func (f flag.Flag ) bool {
193+ return f .MatchesType (flag .TypeLinker )
194+ }).ToStringSlice ()... )
195+ } else if sl , ok := m .(* ModuleSharedLibrary ); ok {
196+ b := & sl .ModuleLibrary .Properties .Build
197+ if b .isForwardingSharedLibrary () {
198+ hasForwardingLib = true
199+ ldlibs = append (ldlibs , tc .GetLinker ().KeepSharedLibraryTransitivity ())
200+ if useNoAsNeeded {
201+ ldlibs = append (ldlibs , tc .GetLinker ().KeepUnusedDependencies ())
211202 }
212- if installPath , ok := sl .Properties .InstallableProps .getInstallPath (); ok {
213- libPaths = utils .AppendIfUnique (libPaths , installPath )
203+ }
204+ ldlibs = append (ldlibs , pathToLibFlagAndroid (sl .outputName ()))
205+ if b .isForwardingSharedLibrary () {
206+ if useNoAsNeeded {
207+ ldlibs = append (ldlibs , tc .GetLinker ().DropUnusedDependencies ())
214208 }
209+ ldlibs = append (ldlibs , tc .GetLinker ().DropSharedLibraryTransitivity ())
210+ }
211+ if installPath , ok := sl .Properties .InstallableProps .getInstallPath (); ok {
212+ libPaths = utils .AppendIfUnique (libPaths , installPath )
215213 }
216214 } else if sl , ok := m .(* generateSharedLibrary ); ok {
217215 ldlibs = append (ldlibs , pathToLibFlagAndroid (sl .outputName ()))
218216 if installPath , ok := sl .ModuleGenerateCommon .Properties .InstallableProps .getInstallPath (); ok {
219217 libPaths = utils .AppendIfUnique (libPaths , installPath )
220218 }
221- } else if el , ok := m .(* ModuleExternalLibrary ); ok {
222- ldlibs = append (ldlibs , el .FlagsOut ().Filtered (func (f flag.Flag ) bool {
223- return f .MatchesType (flag .TypeLinkLibrary )
224- }).ToStringSlice ()... )
225-
226- ldflags = append (ldflags , el .FlagsOut ().Filtered (func (f flag.Flag ) bool {
227- return f .MatchesType (flag .TypeLinker )
228- }).ToStringSlice ()... )
229219 } else if sl , ok := m .(* ModuleStrictLibrary ); ok {
230220 ldlibs = append (ldlibs , pathToLibFlagAndroid (sl .Name ()+ ".so" ))
231221 } else {
232222 utils .Die ("%s is not a shared library" , ctx .OtherModuleName (m ))
233223 }
224+
234225 })
235226
236227 ctx .VisitDirectDepsIf (
@@ -288,19 +279,17 @@ func (g *androidNinjaGenerator) getSharedLibTocPaths(ctx blueprint.ModuleContext
288279 ctx .VisitDirectDepsIf (
289280 func (m blueprint.Module ) bool { return ctx .OtherModuleDependencyTag (m ) == tag .SharedTag },
290281 func (m blueprint.Module ) {
291- if _ , ok := m .(sharedLibProducer ); ok { //Remove this check and replace it with an API call
292- if m , ok := m .(file.Provider ); ok {
293- if e , ok := m .(externable ); ! ok || ! isExternal (e ) {
294- if toc , ok := m .OutFiles ().FindSingle (
295- func (p file.Path ) bool { return p .IsType (file .TypeToc ) }); ok {
296- libs = append (libs , toc .BuildPath ())
297- }
298- }
299- }
300- } else if _ , ok := m .(* ModuleExternalLibrary ); ok {
282+ if e , ok := m .(externableLibrary ); ok && e .isExternal () {
301283 // Don't try and guess the path to external libraries,
302284 // and as they are outside of the build we don't need to
303285 // add a dependency on them anyway.
286+ } else if _ , ok := m .(sharedLibProducer ); ok { //Remove this check and replace it with an API call
287+ if m , ok := m .(file.Provider ); ok {
288+ if toc , ok := m .OutFiles ().FindSingle (
289+ func (p file.Path ) bool { return p .IsType (file .TypeToc ) }); ok {
290+ libs = append (libs , toc .BuildPath ())
291+ }
292+ }
304293 } else {
305294 utils .Die ("%s doesn't produce a shared library" , ctx .OtherModuleName (m ))
306295 }
@@ -312,14 +301,12 @@ func (g *androidNinjaGenerator) getSharedLibLinkPaths(ctx blueprint.ModuleContex
312301 ctx .VisitDirectDepsIf (
313302 func (m blueprint.Module ) bool { return ctx .OtherModuleDependencyTag (m ) == tag .SharedTag },
314303 func (m blueprint.Module ) {
315- if t , ok := m .(targetableModule ); ok {
316- if e , ok := t .(externable ); ! ok || ! isExternal (e ) {
317- libs = append (libs , g .getSharedLibLinkPath (t ))
318- }
319- } else if _ , ok := m .(* ModuleExternalLibrary ); ok {
304+ if e , ok := m .(externableLibrary ); ok && e .isExternal () {
320305 // Don't try and guess the path to external libraries,
321306 // and as they are outside of the build we don't need to
322307 // add a dependency on them anyway.
308+ } else if t , ok := m .(targetableModule ); ok {
309+ libs = append (libs , g .getSharedLibLinkPath (t ))
323310 } else {
324311 utils .Die ("%s doesn't support targets" , ctx .OtherModuleName (m ))
325312 }
0 commit comments