From f5fb6f0543cafd3db6671cfb987bf475a35f30f6 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 23 Oct 2018 15:45:24 +0200 Subject: [PATCH] Rework building: Get rid of old %unified_info structures Now that we have the names of libraries on different systems established through platform modules, we can remove the old structure to establish the same thing, i.e. $unified_info{sharednames} and $unified_info{rename}. That means removing support for the RENAME and SHARED_NAME keywords in build.info as well. Reviewed-by: Tim Hudson Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/7473) --- Configurations/README | 26 --------- Configurations/common.tmpl | 3 +- Configure | 116 +++++-------------------------------- build.info | 32 ---------- 4 files changed, 14 insertions(+), 163 deletions(-) diff --git a/Configurations/README b/Configurations/README index 10463aadee..c1f80fe49e 100644 --- a/Configurations/README +++ b/Configurations/README @@ -446,23 +446,6 @@ support building static libraries and DLLs at the same time, so using static libraries on Windows can only be done when configured 'no-shared'. -One some platforms, shared libraries come with a name that's different -from their static counterpart. That's declared as follows: - - SHARED_NAME[libfoo]=cygfoo-{- $config{shlibver} -} - -The example is from Cygwin, which has a required naming convention. - -Sometimes, it makes sense to rename an output file, for example a -library: - - RENAME[libfoo]=libbar - -That line has "libfoo" renamed to "libbar". While it makes no -sense at all to just have a rename like that (why not just use -"libbar" everywhere?), it does make sense when it can be used -conditionally. See a little further below for an example. - In some cases, it's desirable to include some source files in the shared form of a library only: @@ -571,15 +554,6 @@ conditions based on something in the passed variables, for example: SOURCE[libfoo]=... ENDIF -or: - - # VMS has a cultural standard where all libraries are prefixed. - # For OpenSSL, the choice is 'ossl_' - IF[{- $config{target} =~ /^vms/ -}] - RENAME[libcrypto]=ossl_libcrypto - RENAME[libssl]=ossl_libssl - ENDIF - Build-file programming with the "unified" build system ====================================================== diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl index bf440d9d88..9e07a6f112 100644 --- a/Configurations/common.tmpl +++ b/Configurations/common.tmpl @@ -129,8 +129,7 @@ return "" if $cache{$lib}; unless ($disabled{shared} || $lib =~ /\.a$/) { my $obj2shlib = defined &obj2shlib ? \&obj2shlib : \&libobj2shlib; - $OUT .= $obj2shlib->(shlib => $unified_info{sharednames}->{$lib}, - lib => $lib, + $OUT .= $obj2shlib->(lib => $lib, objs => $unified_info{shared_sources}->{$lib}, deps => [ reducedepends(resolvedepends($lib)) ], installed => is_installed($lib)); diff --git a/Configure b/Configure index a091dd3915..6860cfab81 100755 --- a/Configure +++ b/Configure @@ -1727,8 +1727,6 @@ if ($builder eq "unified") { my %includes = (); my %defines = (); my %depends = (); - my %renames = (); - my %sharednames = (); my %generate = (); # We want to detect configdata.pm in the source tree, so we @@ -1859,11 +1857,9 @@ if ($builder eq "unified") { => sub { push @{$generate{$1}}, $2 if !@skip || $skip[$#skip] > 0 }, qr/^\s*RENAME\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ - => sub { push @{$renames{$1}}, tokenize($2) - if !@skip || $skip[$#skip] > 0 }, - qr/^\s*SHARED_NAME\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ - => sub { push @{$sharednames{$1}}, tokenize($2) - if !@skip || $skip[$#skip] > 0 }, + => sub { warn "RENAME is no longer supported\n" }, + qr/^\s*SHARED_NAME\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ + => sub { warn "SHARED_NAME is no longer supported\n" }, qr/^\s*BEGINRAW\[((?:\\.|[^\\\]])+)\]\s*$/ => sub { my $lineiterator = shift; @@ -1897,48 +1893,23 @@ if ($builder eq "unified") { ); die "runaway IF?" if (@skip); - foreach (keys %renames) { - die "$_ renamed to more than one thing: " - ,join(" ", @{$renames{$_}}),"\n" - if scalar @{$renames{$_}} > 1; - my $dest = cleanfile($buildd, $_, $blddir); - my $to = cleanfile($buildd, $renames{$_}->[0], $blddir); - die "$dest renamed to more than one thing: " - ,$unified_info{rename}->{$dest}, $to - unless !defined($unified_info{rename}->{$dest}) - or $unified_info{rename}->{$dest} eq $to; - $unified_info{rename}->{$dest} = $to; - } - foreach (@programs) { my $program = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$program}) { - $program = $unified_info{rename}->{$program}; - } $unified_info{programs}->{$program} = 1; } foreach (@programs_install) { my $program = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$program}) { - $program = $unified_info{rename}->{$program}; - } $unified_info{install}->{programs}->{$program} = 1; } foreach (@libraries) { my $library = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$library}) { - $library = $unified_info{rename}->{$library}; - } $unified_info{libraries}->{$library} = 1; } foreach (@libraries_install) { my $library = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$library}) { - $library = $unified_info{rename}->{$library}; - } $unified_info{install}->{libraries}->{$library} = 1; } @@ -1948,33 +1919,21 @@ This is usually a fault in a build.info file. EOF foreach (@engines) { my $library = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$library}) { - $library = $unified_info{rename}->{$library}; - } $unified_info{engines}->{$library} = 1; } foreach (@engines_install) { my $library = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$library}) { - $library = $unified_info{rename}->{$library}; - } $unified_info{install}->{engines}->{$library} = 1; } foreach (@scripts) { my $script = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$script}) { - $script = $unified_info{rename}->{$script}; - } $unified_info{scripts}->{$script} = 1; } foreach (@scripts_install) { my $script = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$script}) { - $script = $unified_info{rename}->{$script}; - } $unified_info{install}->{scripts}->{$script} = 1; } @@ -1990,53 +1949,20 @@ EOF push @{$unified_info{rawlines}}, @rawlines; - unless ($disabled{shared}) { - # Check sharednames. - foreach (keys %sharednames) { - my $dest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$dest}) { - $dest = $unified_info{rename}->{$dest}; - } - die "shared_name for $dest with multiple values: " - ,join(" ", @{$sharednames{$_}}),"\n" - if scalar @{$sharednames{$_}} > 1; - my $to = cleanfile($buildd, $sharednames{$_}->[0], $blddir); - die "shared_name found for a library $dest that isn't defined\n" - unless $unified_info{libraries}->{$dest}; - die "shared_name for $dest with multiple values: " - ,$unified_info{sharednames}->{$dest}, ", ", $to - unless !defined($unified_info{sharednames}->{$dest}) - or $unified_info{sharednames}->{$dest} eq $to; - $unified_info{sharednames}->{$dest} = $to; - } - - # Additionally, we set up sharednames for libraries that don't - # have any, as themselves. Only for libraries that aren't - # explicitly static. - foreach (grep !/\.a$/, keys %{$unified_info{libraries}}) { - if (!defined $unified_info{sharednames}->{$_}) { - $unified_info{sharednames}->{$_} = $_ - } - } - - # Check that we haven't defined any library as both shared and - # explicitly static. That is forbidden. - my @doubles = (); - foreach (grep /\.a$/, keys %{$unified_info{libraries}}) { - (my $l = $_) =~ s/\.a$//; - push @doubles, $l if defined $unified_info{sharednames}->{$l}; - } - die "these libraries are both explicitly static and shared:\n ", - join(" ", @doubles), "\n" - if @doubles; + # Check that we haven't defined any library as both shared and + # explicitly static. That is forbidden. + my @doubles = (); + foreach (grep /\.a$/, keys %{$unified_info{libraries}}) { + (my $l = $_) =~ s/\.a$//; + push @doubles, $l if defined $unified_info{libraries}->{$l}; } + die "these libraries are both explicitly static and shared:\n ", + join(" ", @doubles), "\n" + if @doubles; foreach (keys %sources) { my $dest = $_; my $ddest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$ddest}) { - $ddest = $unified_info{rename}->{$ddest}; - } foreach (@{$sources{$dest}}) { my $s = cleanfile($sourced, $_, $blddir); @@ -2069,9 +1995,6 @@ EOF foreach (keys %shared_sources) { my $dest = $_; my $ddest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$ddest}) { - $ddest = $unified_info{rename}->{$ddest}; - } foreach (@{$shared_sources{$dest}}) { my $s = cleanfile($sourced, $_, $blddir); @@ -2110,9 +2033,6 @@ EOF foreach (keys %generate) { my $dest = $_; my $ddest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$ddest}) { - $ddest = $unified_info{rename}->{$ddest}; - } die "more than one generator for $dest: " ,join(" ", @{$generate{$_}}),"\n" if scalar @{$generate{$_}} > 1; @@ -2129,9 +2049,6 @@ EOF # a generated file in the build tree. if ($ddest ne "" && ($ddest eq $src_configdata || ! -f $ddest)) { $ddest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$ddest}) { - $ddest = $unified_info{rename}->{$ddest}; - } } foreach (@{$depends{$dest}}) { my $d = cleanfile($sourced, $_, $blddir); @@ -2154,11 +2071,7 @@ EOF # should be added back after treatment. $d =~ /(\.a)?$/; my $e = $1 // ""; - $d = $`; - if ($unified_info{rename}->{$d}) { - $d = $unified_info{rename}->{$d}; - } - $d .= $e; + $d = $`.$e; $unified_info{depends}->{$ddest}->{$d} = 1; } } @@ -2171,9 +2084,6 @@ EOF # a generated file in the build tree. if ($ddest eq $src_configdata || ! -f $ddest) { $ddest = cleanfile($buildd, $_, $blddir); - if ($unified_info{rename}->{$ddest}) { - $ddest = $unified_info{rename}->{$ddest}; - } } foreach (@{$includes{$dest}}) { my $is = cleandir($sourced, $_, $blddir); diff --git a/build.info b/build.info index afcb772caf..bea1441847 100644 --- a/build.info +++ b/build.info @@ -2,15 +2,6 @@ # %skipdir there for further explanations. SUBDIRS=crypto ssl apps test util tools fuzz engines -{- - my @sover = split(/\./, $config{shlib_version}); - our $sover_filename; - $sover_filename = join('.', @sover) - if $config{target} =~ /^mingw/ || $config{target} =~ /^VC-/; - $sover_filename = join('', map { sprintf "%02d", $_ } @sover) - if $config{target} =~ /^vms/; - ""; --} LIBS=libcrypto libssl INCLUDE[libcrypto]=. crypto/include include INCLUDE[libssl]=. include @@ -44,26 +35,3 @@ IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-)/ -}] SHARED_SOURCE[libcrypto]=libcrypto.rc SHARED_SOURCE[libssl]=libssl.rc ENDIF - -IF[{- $config{target} =~ /^Cygwin/ -}] - SHARED_NAME[libcrypto]=cygcrypto-{- $sover_filename -} - SHARED_NAME[libssl]=cygssl-{- $sover_filename -} -ELSIF[{- $config{target} =~ /^mingw/ -}] - SHARED_NAME[libcrypto]=libcrypto-{- $sover_filename -}{- $config{target} eq "mingw64" ? "-x64" : "" -} - SHARED_NAME[libssl]=libssl-{- $sover_filename -}{- $config{target} eq "mingw64" ? "-x64" : "" -} -ELSIF[{- $config{target} =~ /^VC-/ -}] - SHARED_NAME[libcrypto]=libcrypto-{- $sover_filename -}{- $target{multilib} -} - SHARED_NAME[libssl]=libssl-{- $sover_filename -}{- $target{multilib} -} -ENDIF - -# VMS has a cultural standard where all libraries are prefixed. -# For OpenSSL, the choice is 'ossl$' (this prefix was claimed in a -# conversation with VSI, Tuesday January 26 2016) -# Also, it seems it's usual to have the pointer size the libraries -# were built for as part of the name. -IF[{- $config{target} =~ /^vms/ -}] - RENAME[libcrypto]=ossl$libcrypto{- $target{pointer_size} -} - RENAME[libssl]=ossl$libssl{- $target{pointer_size} -} - SHARED_NAME[libcrypto]=ossl$libcrypto{- $sover_filename -}_shr{- $target{pointer_size} -} - SHARED_NAME[libssl]=ossl$libssl{- $sover_filename -}_shr{- $target{pointer_size} -} -ENDIF -- 2.25.1