From e5f831a065df1d6e4640ef389f8594a5f10c9c8e Mon Sep 17 00:00:00 2001 From: Daniel Fiala Date: Tue, 10 May 2022 14:39:19 +0200 Subject: [PATCH] mkdef.pl: Add cmd-line flag to differentiate shared libs and DSO. Fixes openssl#16984. Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/18284) --- Configurations/descrip.mms.tmpl | 2 +- Configurations/unix-Makefile.tmpl | 2 +- Configurations/windows-makefile.tmpl | 2 +- util/mkdef.pl | 6 +++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index c202bd4431..eb00587528 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -981,7 +981,7 @@ EOF ? '' : ' --case-insensitive'; return <<"EOF"; $target : $gen0 $deps $mkdef - \$(PERL) $mkdef$ord_ver --ordinals $gen0 --name $ord_name "--OS" "VMS"$case_insensitive > $target + \$(PERL) $mkdef$ord_ver --type $args{intent} --ordinals $gen0 --name $ord_name "--OS" "VMS"$case_insensitive > $target EOF } elsif (platform->isasm($args{src})) { # diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 35f03d69ec..5b8340dfaa 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -1549,7 +1549,7 @@ EOF my $ord_name = $args{generator}->[1] || $args{product}; return <<"EOF"; $target: $gen0 $deps \$(SRCDIR)/util/mkdef.pl - \$(PERL) \$(SRCDIR)/util/mkdef.pl$ord_ver --ordinals $gen0 --name $ord_name --OS $mkdef_os > $target + \$(PERL) \$(SRCDIR)/util/mkdef.pl$ord_ver --type $args{intent} --ordinals $gen0 --name $ord_name --OS $mkdef_os > $target EOF } elsif (platform->isasm($args{src})) { # diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index a195bd596f..5d874455f3 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -744,7 +744,7 @@ EOF $args{generator}->[1] || platform->dsoname($args{product}); return <<"EOF"; $target: $gen0 $deps $mkdef - "\$(PERL)" "$mkdef"$ord_ver --ordinals $gen0 --name $ord_name --OS windows > $target + "\$(PERL)" "$mkdef"$ord_ver --type $args{intent} --ordinals $gen0 --name $ord_name --OS windows > $target EOF } elsif (platform->isasm($args{src})) { # diff --git a/util/mkdef.pl b/util/mkdef.pl index a1c76f7c97..c84fb3348d 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -29,6 +29,7 @@ my $name = undef; # internal library/module name my $ordinals_file = undef; # the ordinals file to use my $version = undef; # the version to use for the library my $OS = undef; # the operating system family +my $type = 'lib'; # either lib or dso my $verbose = 0; my $ctest = 0; my $debug = 0; @@ -40,6 +41,7 @@ GetOptions('name=s' => \$name, 'ordinals=s' => \$ordinals_file, 'version=s' => \$version, 'OS=s' => \$OS, + 'type=s' => \$type, 'ctest' => \$ctest, 'verbose' => \$verbose, # For VMS @@ -48,6 +50,8 @@ GetOptions('name=s' => \$name, die "Please supply arguments\n" unless $name && $ordinals_file && $OS; +die "--type argument must be equal to 'lib' or 'dso'" + if $type ne 'lib' && $type ne 'dso'; # When building a "variant" shared library, with a custom SONAME, also customize # all the symbol versions. This produces a shared object that can coexist @@ -101,7 +105,7 @@ die "Please supply arguments\n" # (my $SO_VARIANT = uc($target{"shlib_variant"} // '')) =~ s/\W/_/g; -my $libname = platform->sharedname($name); +my $libname = $type eq 'lib' ? platform->sharedname($name) : platform->dsoname($name); my %OS_data = ( solaris => { writer => \&writer_linux,