#!/usr/bin/perl
BEGIN {
use_ok(
'Dpkg::BuildFlags'
);
}
sub
test_optflag
{
my
(
$bf
,
$optflag
) =
@_
;
foreach
my
$flag
(
qw(CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS
FFLAGS FCFLAGS)
) {
my
$value
=
$bf
->get(
$flag
);
ok(
$value
=~ m/
$optflag
/,
"$flag contains $optflag: $value"
);
}
}
sub
test_ltoflag
{
my
$bf
=
shift
;
ok(
$bf
->get(
'LDFLAGS'
) =~ m/-flto=auto -ffat-lto-objects/,
"LDFLAGS contains LTO flags on $ENV{DEB_HOST_ARCH}"
);
}
sub
test_no_ltoflag
{
my
$bf
=
shift
;
ok(
$bf
->get(
'LDFLAGS'
) !~ m/-flto=auto -ffat-lto-objects/,
"LDFLAGS does not contain LTO flags on $ENV{DEB_HOST_ARCH}"
);
}
my
$bf
;
undef
$ENV
{DEB_BUILD_MAINT_OPTIONS};
$ENV
{DEB_VENDOR} =
'Ubuntu'
;
$ENV
{DEB_HOST_ARCH} =
'amd64'
;
$bf
= Dpkg::BuildFlags->new();
test_optflag(
$bf
,
'-O2'
);
test_ltoflag(
$bf
);
ok(
$bf
->get(
'LDFLAGS'
) =~ m/-Wl,-Bsymbolic-functions/,
'LDFLAGS contains -Bsymbolic-functions'
);
$ENV
{DEB_HOST_ARCH} =
'ppc64el'
;
$bf
= Dpkg::BuildFlags->new();
test_optflag(
$bf
,
'-O3'
);
test_ltoflag(
$bf
);
$ENV
{DEB_HOST_ARCH} =
'riscv64'
;
$bf
= Dpkg::BuildFlags->new();
test_no_ltoflag(
$bf
);
$ENV
{DEB_BUILD_MAINT_OPTIONS} =
'optimize=+lto'
;
$bf
= Dpkg::BuildFlags->new();
test_ltoflag(
$bf
);
$ENV
{DEB_HOST_ARCH} =
'amd64'
;
$ENV
{DEB_BUILD_MAINT_OPTIONS} =
'optimize=-lto'
;
$bf
= Dpkg::BuildFlags->new();
test_no_ltoflag(
$bf
);