$ExtUtils::Builder::Linker::PE::MSVC::VERSION
=
'0.030'
;
sub
_init {
my
(
$self
,
%args
) =
@_
;
$args
{ld} //= [
'link'
];
$args
{export} //=
$args
{type} eq
'shared-library'
||
$args
{type} eq
'loadable-object'
?
'some'
:
'none'
;
$self
->ExtUtils::Builder::Linker::COFF::_init(
%args
);
return
;
}
sub
linker_flags {
my
(
$self
,
$from
,
$to
,
%opts
) =
@_
;
my
@ret
;
push
@ret
,
$self
->new_argument(
ranking
=> 5,
value
=> [
'/nologo'
]);
push
@ret
,
$self
->new_argument(
ranking
=> 10,
value
=> [
'/dll'
])
if
$self
->type eq
'shared-library'
or
$self
->type eq
'loadable-object'
;
push
@ret
,
map
{
$self
->new_argument(
ranking
=>
$_
->{ranking},
value
=> [
"/libpath:$_->{value}"
]) } @{
$self
->{library_dirs} };
push
@ret
,
map
{
$self
->new_argument(
ranking
=>
$_
->{ranking},
value
=> [
"$_->{value}.lib"
]) } @{
$self
->{libraries} };
push
@ret
,
$self
->new_argument(
ranking
=> 50,
value
=> [ @{
$from
} ]);
push
@ret
,
$self
->new_argument(
ranking
=> 60,
value
=> [
"/def:$opts{dl_file}"
])
if
$self
->export eq
'some'
&&
defined
$opts
{dl_file};
push
@ret
,
$self
->new_argument(
ranking
=> 80,
value
=> [
"/OUT:$to"
]);
return
@ret
;
}
1;