-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathBuild.rakumod
40 lines (31 loc) · 1017 Bytes
/
Build.rakumod
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
use v6;
use Shell::Command;
use LibraryMake;
class Build {
method build($dir) {
my %vars = get-vars($dir);
my $gsc_bin = (%*ENV<GSC> || q:x/which gsc-script/ || q:x/which gsc/).trim();
my $gsc_ver = (qq:x/$gsc_bin -v/).trim();
my $gsc_ver_int;
if ($gsc_ver ~~ /(\d+)\.(\d+)\.(\d+)/) {
$gsc_ver_int = ~$0 * 100000 + ~$1 * 1000 + ~$2;
}
if (defined $gsc_ver_int) {
%vars<GSC_VER> = $gsc_ver_int;
} else {
die "unable to determine gsc version";
}
%vars<GSC> = $gsc_bin;
%vars<LIBS> = %*ENV<LIBS> || '-lgambc';
%vars<MYEXTLIB> = %*ENV<MYEXTLIB> || '';
%vars<gambithelper> = $*VM.platform-library-name('gambithelper'.IO);
say %vars;
mkpath "$dir/resources/libraries";
%*ENV<GAMBCOMP_VERBOSE> = 1;
process-makefile('.', %vars);
my $goback = $*CWD;
chdir($dir);
shell(%vars<MAKE>);
chdir($goback);
}
}