-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathalienfile
70 lines (66 loc) · 2.5 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
use strict;
use warnings;
use alienfile;
use Path::Tiny qw(path);
### let's probe by compiling the code. on FreeBSD force the download and build
### the latest code since the pkg version is old
if ($^O !~ /freebsd|openbsd|netbsd/i) {
plugin 'Probe::CBuilder' => (
lang => 'C',
cflags => $ENV{TALIB_INCLUDES} ? "-I$ENV{TALIB_INCLUDES} -I$ENV{TALIB_INCLUDES}/ta-lib": "",
libs => $ENV{TALIB_LIBDIRS} ? "-L$ENV{TALIB_LIBDIRS} -lta-lib -lm" : "-lta-lib -lm",
program => <<'EOF');
#include <ta_libc.h>
int main(int argc, char **argv)
{
TA_Initialize();
TA_Shutdown();
return 0;
}
EOF
}
share {
plugin 'Download::GitHub' => (
github_user => 'TA-Lib',
github_repo => 'ta-lib',
);
plugin 'Extract' => 'tar.gz';
plugin 'Build::CMake';
patch [ '%{perl} -p -i -e "s/CMAKE_MINIMUM_REQUIRED.*/cmake_minimum_required(VERSION 3.18)/gi" %{.install.extract}/CMakeLists.txt'],
build [
# this is the default build step, if you do not specify one.
[ '%{cmake}',
@{ meta->prop->{plugin_build_cmake}->{args} },
# ... put extra cmake args here ...
'-DCMAKE_MINIMUM_REQUIRED_VERSION=3.1',
'%{.install.extract}/'
],
'%{make}',
'%{make} install',
];
plugin 'Gather::IsolateDynamic';
## lifted from alien-libdeflate
after gather => sub {
my $build = shift;
my $prefix = path($build->install_prop->{prefix})->absolute;
# for MSWin32 which creates a 'libta_lib_a.a' by default
my $static_libta_lib_a = $prefix->child( 'lib', 'libta-lib-static.a' );
my $static_libta_lib = $prefix->child( 'lib', 'libta-lib.a' );
if( -f $static_libta_lib_a && ! -f $static_libta_lib ) {
$build->log("move " . join(" => ", map $_->relative($prefix),
$static_libta_lib_a,
$static_libta_lib
));
$static_libta_lib_a->move( $static_libta_lib );
}
my $lib = $prefix->child('lib')->stringify;
my $include = $prefix->child('include');
## handle pre-installed TA-lib 0.4 and self built TA-lib 0.6
my $include2 = $prefix->child('include', 'ta-lib');
my $dynamic = $prefix->child('dynamic');
$build->runtime_prop->{cflags} = "-I$include -I$include2";
$build->runtime_prop->{libs} = "-L$dynamic -lta-lib -lm";
$build->runtime_prop->{libs_static} = "-L$lib -lta-lib -lm";
$build->runtime_prop->{inline_auto_include} = [ 'ta_libc.h' ];
};
};