-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathalienfile
108 lines (96 loc) · 2.82 KB
/
alienfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
use alienfile;
use constant {
BUILD_CONF_PREF_AUTOCONF => 'autoconf',
BUILD_CONF_PREF_CMAKE => 'cmake',
};
plugin 'PkgConfig' => 'libzmq';
# http://zeromq.org/
share {
requires 'File::Which';
my $default_build_conf_pref =
$^O ne 'MSWin32'
? BUILD_CONF_PREF_AUTOCONF
: BUILD_CONF_PREF_CMAKE;
my $build_conf_pref =
exists $ENV{ALIEN_ZMQ_LATEST_BUILD_CONFIG} && $ENV{ALIEN_ZMQ_LATEST_BUILD_CONFIG}
? $ENV{ALIEN_ZMQ_LATEST_BUILD_CONFIG}
: $default_build_conf_pref;
# $ENV{ALIEN_ZMQ_LATEST_BUILD_CONFIG} = (autoconf|cmake)
my $build_conf_re_alt = join "|", (BUILD_CONF_PREF_AUTOCONF, BUILD_CONF_PREF_CMAKE);
my $build_conf_re = qr/^($build_conf_re_alt)$/;
die <<EOF unless $build_conf_pref =~ $build_conf_re;
Unknown ALIEN_ZMQ_LATEST_BUILD_CONFIG = '$build_conf_pref'. Must
be '@{[ BUILD_CONF_PREF_AUTOCONF ]}' or '@{[ BUILD_CONF_PREF_CMAKE ]}'.
EOF
my $make = '%{make}';
if( $build_conf_pref eq BUILD_CONF_PREF_AUTOCONF ) {
if( $^O eq 'freebsd' || $^O eq 'solaris' ) {
requires 'Alien::gmake' => 0.14;
$make = '%{gmake}';
}
} elsif( $build_conf_pref eq BUILD_CONF_PREF_CMAKE ) {
requires 'Alien::cmake3';
}
my $zeromq_qr = qr/zeromq-([\d\.]+)\.tar\.gz/;
plugin 'Prefer::SortVersions' => (
filter => $zeromq_qr,
);
plugin 'Download::GitHub' => (
github_user => 'zeromq',
github_repo => 'libzmq',
include_assets => $zeromq_qr,
version => $zeromq_qr,
);
plugin Extract => 'tar.gz';
# Patches on top of libzmq 4.3.4.
my @patch_commands = map '%{patch} -d src -p2 < %{.install.patch}/' . $_, (
'4213.patch',
'4480.patch',
'4494.patch',
'4507.patch',
);
my $enable_static = $^O ne 'MSWin32';
my $enable_tests = 0;
if( $build_conf_pref eq BUILD_CONF_PREF_AUTOCONF ) {
plugin 'Build::Autoconf';
my $should_stub_tests = 1;
my @make_stub_tests = $should_stub_tests
? ( "noinst_LIBRARIES=" )
: ();
build [
@patch_commands,
join(' ',
'%{configure}',
( $enable_static ? '--enable-static' : '--disable-static' ),
'--enable-shared',
"MAKE=$make",
),
[ $make, @make_stub_tests ],
[ $make, 'install', @make_stub_tests ],
];
} elsif( $build_conf_pref eq BUILD_CONF_PREF_CMAKE ) {
plugin 'Build::CMake';
build [
@patch_commands,
[ '%{cmake}', -G => '%{cmake_generator}',
'-DCMAKE_MAKE_PROGRAM:PATH=%{make}',
'-DCMAKE_INSTALL_PREFIX:PATH=%{.install.prefix}',
"-DBUILD_STATIC=@{[ $enable_static ? 'ON' : 'OFF' ]}",
"-DZMQ_BUILD_TESTS=@{[ $enable_tests ? 'ON' : 'OFF' ]}",
( $^O eq 'MSWin32'
? ( '-DPKG_CONFIG_EXECUTABLE=' . File::Which::which('pkg-config'), )
: ()
),
( meta->prop->{platform}->{system_type} =~ /^windows-(mingw|strawberry)$/
? ( '-DZMQ_HAVE_IPC=OFF' )
: ()
),
qw(-S .),
qw(-B build),
],
[ $make, qw( -C build ) ],
[ $make, qw( -C build ), 'install' ],
];
}
plugin 'Gather::Dino';
};