-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.pl
75 lines (61 loc) · 1.34 KB
/
build.pl
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
#!/usr/bin/perl -w
use File::Basename;
my $outname = $ARGV[1] . '/' . basename($ARGV[0]);
my $outfile;
open $outfile, '>' . $outname or die "Unable to open outfile: " . $outname;
merge($ARGV[0], $outfile);
close $outfile;
exit;
####################################
sub merge {
my $file;
my $outfile = $_[1];
my $opened = 1;
open $file, $_[0] or $opened = 0;
if(!$opened) {
printf STDERR "Could not open module " . $_[0] . "\n";
return(0);
}
while(<$file>) {
if(/^\W?\$import (\S*?)\s/) {
#Get the module filename
my $module = $1;
$module =~ s/\./\//g;
$module =~ s/;//;
$module =~ s/\/lslm/\.lslm/;
#Did we do this one already?
if(!hasModule($module)) {
if($module ne 'common/log.lslm') {
#Import the module
addModule($module);
merge($module, $outfile);
}
}
} else {
#Strip out module statements
next if(/^\$module/);
#Strip out debug statements
next if(/debug\(/);
next if(/debugl\(/);
print $outfile $_;
}
}
close $file;
}
{
my @modules = ();
####################################
sub hasModule {
my $module = $_[0];
my $count = 0 + @modules;
for(my $i = 0; $i < $count; $i++) {
if($modules[$i] eq $module) { return 1; }
}
return 0;
}
####################################
sub addModule {
my $module = $_[0];
push(@modules, $module);
}
}