- unless ($disabled{shared}) {
- my %ordinals =
- $unified_info{ordinals}->{$lib}
- ? (ordinals => $unified_info{ordinals}->{$lib}) : ();
- $OUT .= libobj2shlib(shlib => $unified_info{sharednames}->{$lib},
- lib => $lib,
- objs => [ map { (my $x = $_) =~ s|\.o$||; $x }
- (@{$unified_info{sources}->{$lib}},
- @{$unified_info{shared_sources}->{$lib}}) ],
- deps => [ reducedepends(resolvedepends($lib)) ],
- %ordinals);
- foreach (@{$unified_info{shared_sources}->{$lib}}) {
- doobj($_, $lib, intent => "lib");
+ unless ($disabled{shared} || $lib =~ /\.a$/) {
+ my $obj2shlib = defined &obj2shlib ? \&obj2shlib : \&libobj2shlib;
+ $OUT .= $obj2shlib->(lib => $lib,
+ attrs => $unified_info{attributes}->{$lib},
+ objs => $unified_info{shared_sources}->{$lib},
+ deps => [ reducedepends(resolvedepends($lib)) ]);
+ foreach ((@{$unified_info{shared_sources}->{$lib}},
+ @{$unified_info{sources}->{$lib}})) {
+ # If this is somehow a compiled object, take care of it that way
+ # Otherwise, it might simply be generated
+ if (defined $unified_info{sources}->{$_}) {
+ doobj($_, $lib, intent => "shlib",
+ attrs => $unified_info{attributes}->{$lib});
+ } else {
+ dogenerate($_, undef, undef, intent => "lib");
+ }