Alien-libsdl2
view release on metacpan or search on metacpan
my $Win32 = $^O eq 'MSWin32';
my $VC = $Win32 && ( $Config{ccname} eq 'cl' ? 1 : 0 );
my $x64 = $Config{archname} =~ /^MSWin32-x64/ && $Config{ptrsize} == 8;
#
$Win32 = 0;
#
probe sub {
my ($build) = @_; # $build is the Alien::Build instance.
return 'share'; # We need headers
system 'pkg-config --exists sdl2';
$? == 0 ? 'system' : 'share';
};
share {
start_url 'https://libsdl.org/release';
if ($Win32) {
if ($VC) {
plugin 'Download' => (
#https://www.libsdl.org/release/SDL2-devel-2.0.14-VC.zip
filter => qr/^SDL2-devel-[0-9\.]+-VC\.zip$/,
version => qr/^SDL2-devel-([0-9\.]+)-VC\.zip$/,
);
plugin 'Extract' => 'zip';
build [
'move lib _lib',
'move _lib/' . ( $x64 ? 'x64' : 'x86' ) . ' lib'
];
}
else {
plugin 'Download' => (
#https://libsdl.org/release/SDL2-devel-2.0.14-mingw.tar.gz
filter => qr/^SDL2-devel-[0-9\.]+-mingw\.tar\.gz$/,
version => qr/^SDL2-devel-([0-9\.]+)-mingw\.tar\.gz$/,
);
plugin 'Extract' => 'tar.gz';
plugin 'Build::Make' => 'gmake';
build [
'%{make} install-package arch='
. ( $x64 ? 'x86_64' : 'i686' )
. '-w64-mingw32 prefix=%{.install.prefix}',
];
}
}
else {
plugin 'Download' => (
#https://libsdl.org/release/SDL2-2.0.14.tar.gz
filter => qr/^SDL2-[0-9\.]+\.tar\.gz$/,
version => qr/^SDL2-([0-9\.]+)\.tar\.gz$/,
);
plugin 'Extract' => 'tar.gz';
plugin 'Build::Autoconf';
plugin 'Build::Make' => 'gmake';
build [
'%{configure}', # --prefix=%{.install.prefix}', # --enable-threads=no',
'%{make}',
'%{make} install',
];
}
};
plugin 'Gather::IsolateDynamic';
gather [
[ 'pkg-config --modversion sdl2', \'%{.runtime.version}' ],
[ 'pkg-config --cflags ' . ( $Win32 ? '--static' : '' ) . ' sdl2', \'%{.runtime.cflags}' ],
[
( $Win32 ? 'cd %{.install.prefix}; sh sdl-config --libs' : 'pkg-config --libs sdl2' ),
\'%{.runtime.libs}'
],
];
#gather sub {
# my ($build) = @_;
# $build->runtime_prop->{version} = $version;
# $build->runtime_prop->{version} =~ s/^v//;
# $build->runtime_prop->{cflags} = "-I@{[ $build->runtime_prop->{prefix} ]}/include -lsetupapi -lhid";
# $build->runtime_prop->{libs} = "-L@{[ $build->runtime_prop->{prefix} ]}/lib -lSDL2";
# };
__END__
use alienfile;
use FFI::CheckLib qw[find_lib_or_die];
use Config;
plugin 'PkgConfig' => 'sdl2';
my $version = $ENV{ALIEN_LIBSDL2_VERSION} || '2.0.14';
my $arch = 'x86_64';
meta->around_hook(
probe => sub {
my $orig = shift;
my $build = shift;
my $type = $orig->( $build, @_ );
return $type if $type eq 'share';
find_lib_or_die lib => sdl2 => symbol => [qw[SDL_log SDL_rect]];
return $type;
}
);
#probe sub {'share'};
share {
if ( $^O eq 'MSWin32' ) {
plugin 'Download' => start_url(
( $Config{archname} !~ /^MSWin32-x64/ || $Config{ptrsize} != 8 )
? "https://www.libsdl.org/release/SDL2-$version-win32-x86.zip"
: "https://www.libsdl.org/release/SDL2-$version-win32-x64.zip"
);
plugin Extract => 'zip';
}
else { # Linux, OSX, etc.
plugin 'Download' => ( url => "https://libsdl.org/release/SDL2-$version.tar.gz" );
plugin Extract => 'tar.xz';
plugin 'Build::Autoconf';
plugin 'Build::Make' => 'gmake';
build [
#'mkdir build',
#'cd build',
'%{configure} --prefix=%{.install.prefix}', # --enable-threads=no',
'%{gmake} -j 10',
'%{gmake} install',
];
}
plugin 'Build::Copy';
gather sub {
my ($build) = @_;
$build->runtime_prop->{version} = $version;
$build->runtime_prop->{version} =~ s/^v//;
$build->runtime_prop->{cflags} = "-I@{[ $build->runtime_prop->{prefix} ]}/include";
$build->runtime_prop->{libs} = "-L@{[ $build->runtime_prop->{prefix} ]}/lib -lSDL2";
};
plugin 'Gather::IsolateDynamic';
};
( run in 0.970 second using v1.01-cache-2.11-cpan-9581c071862 )