Loading Configurations/common.tmpl +15 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ my $thing = shift; my $extensionlessthing = extensionlesslib($thing); my @listsofar = @_; # to check if we're looping my @list = @{$unified_info{depends}->{$extensionlessthing}}; my @list = @{$unified_info{depends}->{$thing} // $unified_info{depends}->{$extensionlessthing}}; my @newlist = (); if (scalar @list) { foreach my $item (@list) { Loading @@ -33,13 +34,22 @@ sub reducedepends { my @list = @_; my @newlist = (); my %replace = (); while (@list) { my $item = shift @list; my $extensionlessitem = extensionlesslib($item); push @newlist, $item unless grep { $extensionlessitem eq extensionlesslib($_) } @list; if (grep { $extensionlessitem eq extensionlesslib($_) } @list) { if ($item ne $extensionlessitem) { # If this instance of the library is explicitely static, we # prefer that to any shared library name, since it must have # been done on purpose. $replace{$extensionlessitem} = $item; } @newlist; } else { push @newlist, $item; } } map { $replace{$_} // $_; } @newlist; } # is_installed checks if a given file will be installed (i.e. they are Loading Loading @@ -113,7 +123,7 @@ sub dolib { my $lib = shift; return "" if $cache{$lib}; unless ($disabled{shared}) { unless ($disabled{shared} || $lib =~ /\.a$/) { my %ordinals = $unified_info{ordinals}->{$lib} ? (ordinals => $unified_info{ordinals}->{$lib}) : (); Loading Configurations/descrip.mms.tmpl +19 −9 Original line number Diff line number Diff line Loading @@ -42,8 +42,18 @@ # Because we need to make two computations of these data, # we store them in arrays for reuse our @shlibs = map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}; our @install_shlibs = map { $unified_info{sharednames}->{$_} || () } @{$unified_info{install}->{libraries}}; our @libs = map { (my $x = $_) =~ s/\.a$//; $x } @{$unified_info{libraries}}; our @shlibs = map { $unified_info{sharednames}->{$_} || () } grep(!/\.a$/, @{$unified_info{libraries}}); our @install_libs = map { (my $x = $_) =~ s/\.a$//; $x } @{$unified_info{install}->{libraries}}; our @install_shlibs = map { $unified_info{sharednames}->{$_} || () } grep(!/\.a$/, @{$unified_info{install}->{libraries}}); our @generated = ( ( map { (my $x = $_) =~ s|\.S$|\.s|; $x } grep { defined $unified_info{generate}->{$_} } map { @{$unified_info{sources}->{$_}} } Loading Loading @@ -113,7 +123,7 @@ SHLIB_EXT=.EXE OBJ_EXT=.OBJ DEP_EXT=.D LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @{$unified_info{libraries}}) -} LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @libs) -} SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @shlibs) -} ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{engines}}) -} PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{programs}}) -} Loading @@ -127,7 +137,7 @@ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; } GENERATED_MANDATORY={- join(", ", map { "-\n\t".$_ } @{$unified_info{depends}->{""}} ) -} GENERATED={- join(", ", map { "-\n\t".$_ } @generated) -} INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @install_libs) -} INSTALL_SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @install_shlibs) -} INSTALL_ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{install}->{engines}}) -} INSTALL_PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{install}->{programs}}) -} Loading Loading @@ -230,10 +240,10 @@ NODEBUG=@ $(NODEBUG) ! Set up logical names for the libraries, so LINK and $(NODEBUG) ! running programs can use them. $(NODEBUG) ! $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEFINE ".uc($_)." 'F\$ENV(\"DEFAULT\")'".uc($_)."\$(SHLIB_EXT)" } map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}) || "!" -} $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEFINE ".uc($_)." 'F\$ENV(\"DEFAULT\")'".uc($_)."\$(SHLIB_EXT)" } @shlibs) || "!" -} .LAST : $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEASSIGN ".uc($_) } map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}) || "!" -} $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEASSIGN ".uc($_) } @shlibs) || "!" -} $(NODEBUG) DEASSIGN ossl_dataroot $(NODEBUG) DEASSIGN ossl_installroot $(NODEBUG) DEASSIGN internal Loading Loading @@ -317,7 +327,7 @@ uninstall : uninstall_docs uninstall_sw # Because VMS wants the generation number (or *) to delete files, we can't # use $(LIBS), $(PROGRAMS), $(GENERATED) and $(ENGINES)directly. libclean : {- join("\n\t", map { "- DELETE $_.OLB;*" } @{$unified_info{libraries}}) || "@ !" -} {- join("\n\t", map { "- DELETE $_.OLB;*" } @libs) || "@ !" -} {- join("\n\t", map { "- DELETE $_.EXE;*,$_.MAP;*,$_.OPT;*" } @shlibs) || "@ !" -} clean : libclean Loading Loading @@ -407,7 +417,7 @@ _install_dev_ns : check_INSTALLTOP - CREATE/DIR ossl_installroot:[LIB.'arch'] {- join("\n ", map { "COPY/PROT=W:R $_.OLB ossl_installroot:[LIB.'arch']" } @{$unified_info{install}->{libraries}}) -} @install_libs) -} install_dev : install_shared _install_dev_ns Loading Loading @@ -729,7 +739,7 @@ EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; (my $lib = $args{lib}) =~ s/\.a$//; my $objs = join(", -\n\t\t", map { $_.".OBJ" } (@{$args{objs}})); my $fill_lib = join("\n\t", (map { "LIBRARY/REPLACE $lib.OLB $_.OBJ" } @{$args{objs}})); Loading Configurations/unix-Makefile.tmpl +13 −7 Original line number Diff line number Diff line Loading @@ -38,20 +38,26 @@ # removed. On some systems, they may therefore return the exact same # string. sub shlib { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return $unified_info{sharednames}->{$lib} . $shlibext; } sub shlib_simple { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; if (windowsdll()) { return $lib . $shlibextimport; } return $lib . $shlibextsimple; } # Easy fixing of static library names sub lib { (my $lib = shift) =~ s/\.a$//; return $lib . $libext; } # dso is a complement to shlib / shlib_simple that returns the # given libname with the simple shared extension (possible SO version # removed). This differs from shlib_simple() by being unconditional. Loading Loading @@ -84,7 +90,7 @@ SHLIB_MAJOR={- $config{shlib_major} -} SHLIB_MINOR={- $config{shlib_minor} -} SHLIB_TARGET={- $target{shared_target} -} LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -} LIBS={- join(" ", map { lib($_) } @{$unified_info{libraries}}) -} SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -} SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -} ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -} Loading @@ -103,7 +109,7 @@ GENERATED={- join(" ", grep { /\.o$/ } keys %{$unified_info{sources}} ), ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -} INSTALL_LIBS={- join(" ", map { $_.$libext } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{install}->{libraries}}) -} INSTALL_ENGINES={- join(" ", map { dso($_) } @{$unified_info{install}->{engines}}) -} Loading Loading @@ -769,7 +775,7 @@ configdata.pm: $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build # It takes a list of library names and outputs a list of dependencies sub compute_lib_depends { if ($disabled{shared}) { return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_; return map { lib($_) } @_; } # Depending on shared libraries: Loading Loading @@ -983,7 +989,7 @@ EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; (my $lib = $args{lib}) =~ s/\.a$//; my $objs = join(" ", map { $_.$objext } @{$args{objs}}); return <<"EOF"; $lib$libext: $objs Loading Configurations/windows-makefile.tmpl +22 −11 Original line number Diff line number Diff line Loading @@ -31,14 +31,20 @@ $win_commonroot = $ENV{$win_commonroot}; sub shlib { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return () unless defined $unified_info{sharednames}->{$lib}; return $unified_info{sharednames}->{$lib} . $shlibext; } sub lib { (my $lib = shift) =~ s/\.a$//; return $lib . $libext; } sub shlib_import { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return $lib . $shlibextimport; } Loading Loading @@ -67,7 +73,7 @@ MINOR={- $config{minor} -} SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -} LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -} LIBS={- join(" ", map { lib($_) } @{$unified_info{libraries}}) -} SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -} SHLIBPDBS={- join(" ", map { local $shlibext = ".pdb"; shlib($_) } @{$unified_info{libraries}}) -} ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -} Loading @@ -88,7 +94,7 @@ GENERATED={- join(" ", grep { /\.o$/ } keys %{$unified_info{sources}} ), ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -} INSTALL_LIBS={- join(" ", map { $_.$libext } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBPDBS={- join(" ", map { local $shlibext = ".pdb"; shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_ENGINES={- join(" ", map { dso($_) } @{$unified_info{install}->{engines}}) -} Loading Loading @@ -352,11 +358,14 @@ configdata.pm: "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{b # It takes a list of library names and outputs a list of dependencies sub compute_lib_depends { if ($disabled{shared}) { return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_; return map { lib($_) } @_; } die "Linking with static OpenSSL libraries is not supported in this configuration\n" if grep /\.a$/, @_; return map { shlib_import($_) } @_; foreach (@_) { (my $l = $_) =~ s/\.a$//; die "Linking with static variants of shared libraries is not supported in this configuration\n" if $l ne $_ && shlib($l); } return map { shlib_import($_) or lib($_) } @_; } sub generatesrc { Loading Loading @@ -530,13 +539,15 @@ $objs$linklibs \$(EX_LIBS) EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; # Because static libs and import libs are both named the same in native # Windows, we can't have both. We skip the static lib in that case, # as the shared libs are what we use anyway. return "" unless $disabled{"shared"}; return "" unless $disabled{"shared"} || $lib =~ /\.a$/; my %args = @_; my $lib = $args{lib}; $lib =~ s/\.a$//; my $objs = join("\n", map { $_.$objext } @{$args{objs}}); my $deps = join(" ", map { $_.$objext } @{$args{objs}}); return <<"EOF"; Loading Configure +14 −2 Original line number Diff line number Diff line Loading @@ -1732,12 +1732,24 @@ EOF } # Additionally, we set up sharednames for libraries that don't # have any, as themselves. foreach (keys %{$unified_info{libraries}}) { # have any, as themselves. Only for libraries that aren't # explicitely 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 # explicitely 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 explicitely static and shared:\n ", join(" ", @doubles), "\n" if @doubles; } foreach (keys %ordinals) { Loading Loading
Configurations/common.tmpl +15 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ my $thing = shift; my $extensionlessthing = extensionlesslib($thing); my @listsofar = @_; # to check if we're looping my @list = @{$unified_info{depends}->{$extensionlessthing}}; my @list = @{$unified_info{depends}->{$thing} // $unified_info{depends}->{$extensionlessthing}}; my @newlist = (); if (scalar @list) { foreach my $item (@list) { Loading @@ -33,13 +34,22 @@ sub reducedepends { my @list = @_; my @newlist = (); my %replace = (); while (@list) { my $item = shift @list; my $extensionlessitem = extensionlesslib($item); push @newlist, $item unless grep { $extensionlessitem eq extensionlesslib($_) } @list; if (grep { $extensionlessitem eq extensionlesslib($_) } @list) { if ($item ne $extensionlessitem) { # If this instance of the library is explicitely static, we # prefer that to any shared library name, since it must have # been done on purpose. $replace{$extensionlessitem} = $item; } @newlist; } else { push @newlist, $item; } } map { $replace{$_} // $_; } @newlist; } # is_installed checks if a given file will be installed (i.e. they are Loading Loading @@ -113,7 +123,7 @@ sub dolib { my $lib = shift; return "" if $cache{$lib}; unless ($disabled{shared}) { unless ($disabled{shared} || $lib =~ /\.a$/) { my %ordinals = $unified_info{ordinals}->{$lib} ? (ordinals => $unified_info{ordinals}->{$lib}) : (); Loading
Configurations/descrip.mms.tmpl +19 −9 Original line number Diff line number Diff line Loading @@ -42,8 +42,18 @@ # Because we need to make two computations of these data, # we store them in arrays for reuse our @shlibs = map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}; our @install_shlibs = map { $unified_info{sharednames}->{$_} || () } @{$unified_info{install}->{libraries}}; our @libs = map { (my $x = $_) =~ s/\.a$//; $x } @{$unified_info{libraries}}; our @shlibs = map { $unified_info{sharednames}->{$_} || () } grep(!/\.a$/, @{$unified_info{libraries}}); our @install_libs = map { (my $x = $_) =~ s/\.a$//; $x } @{$unified_info{install}->{libraries}}; our @install_shlibs = map { $unified_info{sharednames}->{$_} || () } grep(!/\.a$/, @{$unified_info{install}->{libraries}}); our @generated = ( ( map { (my $x = $_) =~ s|\.S$|\.s|; $x } grep { defined $unified_info{generate}->{$_} } map { @{$unified_info{sources}->{$_}} } Loading Loading @@ -113,7 +123,7 @@ SHLIB_EXT=.EXE OBJ_EXT=.OBJ DEP_EXT=.D LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @{$unified_info{libraries}}) -} LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @libs) -} SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @shlibs) -} ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{engines}}) -} PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{programs}}) -} Loading @@ -127,7 +137,7 @@ DEPS={- our @deps = map { (my $x = $_) =~ s|\.o$|\$(DEP_EXT)|; $x; } GENERATED_MANDATORY={- join(", ", map { "-\n\t".$_ } @{$unified_info{depends}->{""}} ) -} GENERATED={- join(", ", map { "-\n\t".$_ } @generated) -} INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(", ", map { "-\n\t".$_.".OLB" } @install_libs) -} INSTALL_SHLIBS={- join(", ", map { "-\n\t".$_.".EXE" } @install_shlibs) -} INSTALL_ENGINES={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{install}->{engines}}) -} INSTALL_PROGRAMS={- join(", ", map { "-\n\t".$_.".EXE" } @{$unified_info{install}->{programs}}) -} Loading Loading @@ -230,10 +240,10 @@ NODEBUG=@ $(NODEBUG) ! Set up logical names for the libraries, so LINK and $(NODEBUG) ! running programs can use them. $(NODEBUG) ! $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEFINE ".uc($_)." 'F\$ENV(\"DEFAULT\")'".uc($_)."\$(SHLIB_EXT)" } map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}) || "!" -} $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEFINE ".uc($_)." 'F\$ENV(\"DEFAULT\")'".uc($_)."\$(SHLIB_EXT)" } @shlibs) || "!" -} .LAST : $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEASSIGN ".uc($_) } map { $unified_info{sharednames}->{$_} || () } @{$unified_info{libraries}}) || "!" -} $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEASSIGN ".uc($_) } @shlibs) || "!" -} $(NODEBUG) DEASSIGN ossl_dataroot $(NODEBUG) DEASSIGN ossl_installroot $(NODEBUG) DEASSIGN internal Loading Loading @@ -317,7 +327,7 @@ uninstall : uninstall_docs uninstall_sw # Because VMS wants the generation number (or *) to delete files, we can't # use $(LIBS), $(PROGRAMS), $(GENERATED) and $(ENGINES)directly. libclean : {- join("\n\t", map { "- DELETE $_.OLB;*" } @{$unified_info{libraries}}) || "@ !" -} {- join("\n\t", map { "- DELETE $_.OLB;*" } @libs) || "@ !" -} {- join("\n\t", map { "- DELETE $_.EXE;*,$_.MAP;*,$_.OPT;*" } @shlibs) || "@ !" -} clean : libclean Loading Loading @@ -407,7 +417,7 @@ _install_dev_ns : check_INSTALLTOP - CREATE/DIR ossl_installroot:[LIB.'arch'] {- join("\n ", map { "COPY/PROT=W:R $_.OLB ossl_installroot:[LIB.'arch']" } @{$unified_info{install}->{libraries}}) -} @install_libs) -} install_dev : install_shared _install_dev_ns Loading Loading @@ -729,7 +739,7 @@ EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; (my $lib = $args{lib}) =~ s/\.a$//; my $objs = join(", -\n\t\t", map { $_.".OBJ" } (@{$args{objs}})); my $fill_lib = join("\n\t", (map { "LIBRARY/REPLACE $lib.OLB $_.OBJ" } @{$args{objs}})); Loading
Configurations/unix-Makefile.tmpl +13 −7 Original line number Diff line number Diff line Loading @@ -38,20 +38,26 @@ # removed. On some systems, they may therefore return the exact same # string. sub shlib { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return $unified_info{sharednames}->{$lib} . $shlibext; } sub shlib_simple { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; if (windowsdll()) { return $lib . $shlibextimport; } return $lib . $shlibextsimple; } # Easy fixing of static library names sub lib { (my $lib = shift) =~ s/\.a$//; return $lib . $libext; } # dso is a complement to shlib / shlib_simple that returns the # given libname with the simple shared extension (possible SO version # removed). This differs from shlib_simple() by being unconditional. Loading Loading @@ -84,7 +90,7 @@ SHLIB_MAJOR={- $config{shlib_major} -} SHLIB_MINOR={- $config{shlib_minor} -} SHLIB_TARGET={- $target{shared_target} -} LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -} LIBS={- join(" ", map { lib($_) } @{$unified_info{libraries}}) -} SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -} SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -} ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -} Loading @@ -103,7 +109,7 @@ GENERATED={- join(" ", grep { /\.o$/ } keys %{$unified_info{sources}} ), ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -} INSTALL_LIBS={- join(" ", map { $_.$libext } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{install}->{libraries}}) -} INSTALL_ENGINES={- join(" ", map { dso($_) } @{$unified_info{install}->{engines}}) -} Loading Loading @@ -769,7 +775,7 @@ configdata.pm: $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build # It takes a list of library names and outputs a list of dependencies sub compute_lib_depends { if ($disabled{shared}) { return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_; return map { lib($_) } @_; } # Depending on shared libraries: Loading Loading @@ -983,7 +989,7 @@ EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; (my $lib = $args{lib}) =~ s/\.a$//; my $objs = join(" ", map { $_.$objext } @{$args{objs}}); return <<"EOF"; $lib$libext: $objs Loading
Configurations/windows-makefile.tmpl +22 −11 Original line number Diff line number Diff line Loading @@ -31,14 +31,20 @@ $win_commonroot = $ENV{$win_commonroot}; sub shlib { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return () unless defined $unified_info{sharednames}->{$lib}; return $unified_info{sharednames}->{$lib} . $shlibext; } sub lib { (my $lib = shift) =~ s/\.a$//; return $lib . $libext; } sub shlib_import { return () if $disabled{shared}; my $lib = shift; return () if $disabled{shared} || $lib =~ /\.a$/; return $lib . $shlibextimport; } Loading Loading @@ -67,7 +73,7 @@ MINOR={- $config{minor} -} SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -} LIBS={- join(" ", map { $_.$libext } @{$unified_info{libraries}}) -} LIBS={- join(" ", map { lib($_) } @{$unified_info{libraries}}) -} SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -} SHLIBPDBS={- join(" ", map { local $shlibext = ".pdb"; shlib($_) } @{$unified_info{libraries}}) -} ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -} Loading @@ -88,7 +94,7 @@ GENERATED={- join(" ", grep { /\.o$/ } keys %{$unified_info{sources}} ), ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -} INSTALL_LIBS={- join(" ", map { $_.$libext } @{$unified_info{install}->{libraries}}) -} INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_SHLIBPDBS={- join(" ", map { local $shlibext = ".pdb"; shlib($_) } @{$unified_info{install}->{libraries}}) -} INSTALL_ENGINES={- join(" ", map { dso($_) } @{$unified_info{install}->{engines}}) -} Loading Loading @@ -352,11 +358,14 @@ configdata.pm: "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{b # It takes a list of library names and outputs a list of dependencies sub compute_lib_depends { if ($disabled{shared}) { return map { $_ =~ /\.a$/ ? $`.$libext : $_.$libext } @_; return map { lib($_) } @_; } die "Linking with static OpenSSL libraries is not supported in this configuration\n" if grep /\.a$/, @_; return map { shlib_import($_) } @_; foreach (@_) { (my $l = $_) =~ s/\.a$//; die "Linking with static variants of shared libraries is not supported in this configuration\n" if $l ne $_ && shlib($l); } return map { shlib_import($_) or lib($_) } @_; } sub generatesrc { Loading Loading @@ -530,13 +539,15 @@ $objs$linklibs \$(EX_LIBS) EOF } sub obj2lib { my %args = @_; my $lib = $args{lib}; # Because static libs and import libs are both named the same in native # Windows, we can't have both. We skip the static lib in that case, # as the shared libs are what we use anyway. return "" unless $disabled{"shared"}; return "" unless $disabled{"shared"} || $lib =~ /\.a$/; my %args = @_; my $lib = $args{lib}; $lib =~ s/\.a$//; my $objs = join("\n", map { $_.$objext } @{$args{objs}}); my $deps = join(" ", map { $_.$objext } @{$args{objs}}); return <<"EOF"; Loading
Configure +14 −2 Original line number Diff line number Diff line Loading @@ -1732,12 +1732,24 @@ EOF } # Additionally, we set up sharednames for libraries that don't # have any, as themselves. foreach (keys %{$unified_info{libraries}}) { # have any, as themselves. Only for libraries that aren't # explicitely 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 # explicitely 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 explicitely static and shared:\n ", join(" ", @doubles), "\n" if @doubles; } foreach (keys %ordinals) { Loading