Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 66 lines (63 sloc) 2.16 kb
8eaa988 added libtommath-0.31
Tom St Denis authored
1 #!/bin/perl -w
2 #
3 # Cute little builder for perl
4 # Total waste of development time...
5 #
6 # This will build all the object files and then the archive .a file
7 # requires GCC, GNU make and a sense of humour.
8 #
9 # Tom St Denis
10 use strict;
11
12 my $count = 0;
13 my $starttime = time;
14 my $rate = 0;
15 print "Scanning for source files...\n";
16 foreach my $filename (glob "*.c") {
17 ++$count;
18 }
19 print "Source files to build: $count\nBuilding...\n";
20 my $i = 0;
21 my $lines = 0;
22 my $filesbuilt = 0;
23 foreach my $filename (glob "*.c") {
24 printf("Building %3.2f%%, ", (++$i/$count)*100.0);
25 if ($i % 4 == 0) { print "/, "; }
26 if ($i % 4 == 1) { print "-, "; }
27 if ($i % 4 == 2) { print "\\, "; }
28 if ($i % 4 == 3) { print "|, "; }
29 if ($rate > 0) {
30 my $tleft = ($count - $i) / $rate;
31 my $tsec = $tleft%60;
32 my $tmin = ($tleft/60)%60;
33 my $thour = ($tleft/3600)%60;
34 printf("%2d:%02d:%02d left, ", $thour, $tmin, $tsec);
35 }
36 my $cnt = ($i/$count)*30.0;
37 my $x = 0;
38 print "[";
39 for (; $x < $cnt; $x++) { print "#"; }
40 for (; $x < 30; $x++) { print " "; }
41 print "]\r";
42 my $tmp = $filename;
43 $tmp =~ s/\.c/".o"/ge;
44 if (open(SRC, "<$tmp")) {
45 close SRC;
46 } else {
47 !system("make $tmp > /dev/null 2>/dev/null") or die "\nERROR: Failed to make $tmp!!!\n";
48 open( SRC, "<$filename" ) or die "Couldn't open $filename for reading: $!";
49 ++$lines while (<SRC>);
50 close SRC or die "Error closing $filename after reading: $!";
51 ++$filesbuilt;
52 }
53
54 # update timer
55 if (time != $starttime) {
56 my $delay = time - $starttime;
57 $rate = $i/$delay;
58 }
59 }
60
61 # finish building the library
62 printf("\nFinished building source (%d seconds, %3.2f files per second).\n", time - $starttime, $rate);
63 print "Compiled approximately $filesbuilt files and $lines lines of code.\n";
64 print "Doing final make (building archive...)\n";
65 !system("make > /dev/null 2>/dev/null") or die "\nERROR: Failed to perform last make command!!!\n";
66 print "done.\n";
Something went wrong with that request. Please try again.