Home | History | Annotate | Line # | Download | only in platform
      1  1.1  christos package platform::Windows;
      2  1.1  christos 
      3  1.1  christos use strict;
      4  1.1  christos use warnings;
      5  1.1  christos use Carp;
      6  1.1  christos 
      7  1.1  christos use vars qw(@ISA);
      8  1.1  christos 
      9  1.1  christos require platform::BASE;
     10  1.1  christos @ISA = qw(platform::BASE);
     11  1.1  christos 
     12  1.1  christos # Assume someone set @INC right before loading this module
     13  1.1  christos use configdata;
     14  1.1  christos 
     15  1.1  christos sub binext              { '.exe' }
     16  1.1  christos sub dsoext              { '.dll' }
     17  1.1  christos sub shlibext            { '.dll' }
     18  1.1  christos sub libext              { '.lib' }
     19  1.1  christos sub defext              { '.def' }
     20  1.1  christos sub objext              { '.obj' }
     21  1.1  christos sub depext              { '.d' }
     22  1.1  christos sub asmext              { '.asm' }
     23  1.1  christos 
     24  1.1  christos # Other extra that aren't defined in platform::BASE
     25  1.1  christos sub resext              { '.res' }
     26  1.1  christos sub shlibextimport      { '.lib' }
     27  1.1  christos sub shlibvariant        { $target{shlib_variant} || '' }
     28  1.1  christos 
     29  1.1  christos sub staticname {
     30  1.1  christos     # Non-installed libraries are *always* static, and their names remain
     31  1.1  christos     # the same, except for the mandatory extension
     32  1.1  christos     my $in_libname = platform::BASE->staticname($_[1]);
     33  1.1  christos     return $in_libname
     34  1.1  christos         if $unified_info{attributes}->{libraries}->{$_[1]}->{noinst};
     35  1.1  christos 
     36  1.1  christos     # To make sure not to clash with an import library, we make the static
     37  1.1  christos     # variant of our installed libraries get '_static' added to their names.
     38  1.1  christos     return platform::BASE->staticname($_[1])
     39  1.1  christos         . ($disabled{shared} ? '' : '_static');
     40  1.1  christos }
     41  1.1  christos 
     42  1.1  christos # To mark forward compatibility, we include the OpenSSL major release version
     43  1.1  christos # number in the installed shared library names.
     44  1.1  christos (my $sover_filename = $config{shlib_version}) =~ s|\.|_|g;
     45  1.1  christos sub shlib_version_as_filename {
     46  1.1  christos     return $sover_filename
     47  1.1  christos }
     48  1.1  christos sub sharedname {
     49  1.1  christos     return platform::BASE::__concat(platform::BASE->sharedname($_[1]),
     50  1.1  christos                                     "-",
     51  1.1  christos                                     $_[0]->shlib_version_as_filename(),
     52  1.1  christos                                     ($_[0]->shlibvariant() // ''));
     53  1.1  christos }
     54  1.1  christos 
     55  1.1  christos sub sharedname_import {
     56  1.1  christos     return platform::BASE::__isshared($_[1]) ? $_[1] : undef;
     57  1.1  christos }
     58  1.1  christos 
     59  1.1  christos sub sharedlib_import {
     60  1.1  christos     return platform::BASE::__concat($_[0]->sharedname_import($_[1]),
     61  1.1  christos                                     $_[0]->shlibextimport());
     62  1.1  christos }
     63  1.1  christos 
     64  1.1  christos 1;
     65