mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-28 18:54:36 +00:00
Building: Build Unix static libraries one object file at a time
We're hitting problems that the 'ar' command line becomes too long for some 'make' versions, or the shell it uses. We therefore change the way we create a static library by doing so one object file at a time. This is slower, but has better guarantees to work properly on limited systems. Fixes #12116 Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com> (Merged from https://github.com/openssl/openssl/pull/12706)
This commit is contained in:
parent
6353507e9d
commit
385deae79f
@ -66,7 +66,7 @@ my %targets=(
|
||||
template => 1,
|
||||
|
||||
AR => "ar",
|
||||
ARFLAGS => "r",
|
||||
ARFLAGS => "qc",
|
||||
CC => "cc",
|
||||
lflags =>
|
||||
sub { $withargs{zlib_lib} ? "-L".$withargs{zlib_lib} : () },
|
||||
|
@ -1508,11 +1508,16 @@ EOF
|
||||
my %args = @_;
|
||||
my $lib = platform->staticlib($args{lib});
|
||||
my @objs = map { platform->obj($_) } @{$args{objs}};
|
||||
my $objs = join(" \\\n" . ' ' x (length($lib) + 2),
|
||||
my $deps = join(" \\\n" . ' ' x (length($lib) + 2),
|
||||
fill_lines(' ', $COLUMNS - length($lib) - 2, @objs));
|
||||
my $max_per_call = 250;
|
||||
my @objs_grouped;
|
||||
push @objs_grouped, join(" ", splice @objs, 0, $max_per_call) while @objs;
|
||||
my $fill_lib =
|
||||
join("\n\t", (map { "\$(AR) \$(ARFLAGS) $lib $_" } @objs_grouped));
|
||||
return <<"EOF";
|
||||
$lib: $objs
|
||||
\$(AR) \$(ARFLAGS) \$\@ \$\?
|
||||
$lib: $deps
|
||||
$fill_lib
|
||||
\$(RANLIB) \$\@ || echo Never mind.
|
||||
EOF
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user