| author | David Anderson <danderson@mozilla.com> |
| Wed Jul 25 23:26:16 2012 -0700 (2012-07-25) | |
| changeset 96 | 9d341206620f |
| parent 95 | 4d7366431a6c |
| child 97 | 3fba7cae702c |
| permissions | -rwxr-xr-x |
| danderson@95 | 1 |
#!/usr/bin/perl |
| danderson@95 | 2 |
# vim: set ts=2 sw=2 tw=99 noet: |
| danderson@95 | 3 |
|
| danderson@95 | 4 |
use strict; |
| danderson@95 | 5 |
use Cwd; |
| danderson@95 | 6 |
use File::Basename; |
| danderson@95 | 7 |
use File::Path; |
| danderson@95 | 8 |
|
| danderson@95 | 9 |
my ($myself, $path) = fileparse($0); |
| danderson@95 | 10 |
chdir($path); |
| danderson@95 | 11 |
|
| danderson@95 | 12 |
require 'helpers.pm'; |
| danderson@95 | 13 |
|
| danderson@95 | 14 |
#Go back above build dir |
| danderson@95 | 15 |
chdir(Build::PathFormat('../../..')); |
| danderson@95 | 16 |
|
| danderson@95 | 17 |
#Get the source path. |
| danderson@95 | 18 |
our ($root) = getcwd(); |
| danderson@95 | 19 |
|
| danderson@95 | 20 |
my $reconf = 0; |
| danderson@95 | 21 |
|
| danderson@95 | 22 |
#Create output folder if it doesn't exist. |
| danderson@95 | 23 |
if (!(-d 'OUTPUT')) { |
| danderson@95 | 24 |
$reconf = 1; |
| danderson@95 | 25 |
} else { |
| danderson@95 | 26 |
if (-f 'OUTPUT/sentinel') { |
| danderson@95 | 27 |
my @s = stat('OUTPUT/sentinel'); |
| danderson@95 | 28 |
my $mtime = $s[9]; |
| danderson@95 | 29 |
my @files = ('build/pushbuild.txt', 'build/AMBuildScript', 'build/product.version'); |
| danderson@95 | 30 |
my ($i); |
| danderson@95 | 31 |
for ($i = 0; $i <= $#files; $i++) { |
| danderson@95 | 32 |
if (IsNewer($files[$i], $mtime)) { |
| danderson@95 | 33 |
$reconf = 1; |
| danderson@95 | 34 |
last; |
| danderson@95 | 35 |
} |
| danderson@95 | 36 |
} |
| danderson@95 | 37 |
} else { |
| danderson@95 | 38 |
$reconf = 1; |
| danderson@95 | 39 |
} |
| danderson@95 | 40 |
} |
| danderson@95 | 41 |
|
| danderson@95 | 42 |
if ($reconf) { |
| danderson@95 | 43 |
rmtree('OUTPUT'); |
| danderson@95 | 44 |
mkdir('OUTPUT') or die("Failed to create output folder: $!\n"); |
| danderson@95 | 45 |
chdir('OUTPUT'); |
| danderson@95 | 46 |
|
| danderson@95 | 47 |
print "Attempting to reconfigure...\n"; |
| danderson@95 | 48 |
|
| danderson@95 | 49 |
my ($os, $bits, $mode); |
| danderson@95 | 50 |
$os = $ARGV[0]; |
| danderson@95 | 51 |
$bits = $ARGV[1]; |
| danderson@95 | 52 |
$mode = $ARGV[2]; |
| danderson@95 | 53 |
|
| danderson@95 | 54 |
my ($prefix, $python); |
| danderson@95 | 55 |
if ($^O eq "darwin") { |
| danderson@95 | 56 |
$prefix = 'CC="ccache clang" CXX="ccache clang++" '; |
| danderson@95 | 57 |
$python = 'python3'; |
| danderson@95 | 58 |
} elsif ($^O eq "linux") { |
| danderson@95 | 59 |
$prefix = 'CC="ccache gcc-4.4" CXX="ccache g++-4.4" '; |
| danderson@95 | 60 |
$python = 'python3'; |
| danderson@95 | 61 |
} elsif ($^O =~ /MSWin/) { |
| danderson@95 | 62 |
$prefix = ''; |
| danderson@95 | 63 |
$python = "C:\\Python31\\Python.exe"; |
| danderson@95 | 64 |
} |
| danderson@95 | 65 |
|
| danderson@95 | 66 |
my ($cmdstring); |
| danderson@95 | 67 |
$cmdstring = $prefix . |
| danderson@95 | 68 |
$python . ' ' . |
| danderson@95 | 69 |
Build::PathFormat('../build/configure.py') . ' '; |
| danderson@95 | 70 |
|
| danderson@95 | 71 |
if ($mode eq 'release') { |
| danderson@95 | 72 |
$cmdstring .= '--enable-optimize '; |
| danderson@95 | 73 |
} else { |
| danderson@95 | 74 |
$cmdstring .= '--enable-debug '; |
| danderson@95 | 75 |
} |
| danderson@95 | 76 |
|
| danderson@95 | 77 |
if ($bits eq '32') { |
| danderson@95 | 78 |
$cmdstring .= '--arch=x86 '; |
| danderson@95 | 79 |
} else { |
| danderson@95 | 80 |
$cmdstring .= '--arch-x64 '; |
| danderson@95 | 81 |
} |
| danderson@95 | 82 |
|
| danderson@95 | 83 |
my ($result); |
| danderson@95 | 84 |
$result = `$cmdstring`; |
| danderson@95 | 85 |
|
| danderson@95 | 86 |
print "$result\n"; |
| danderson@95 | 87 |
if ($? != 0) { |
| danderson@95 | 88 |
die("Could not configure: $!\n"); |
| danderson@95 | 89 |
} |
| danderson@95 | 90 |
open(FILE, '>sentinel'); |
| danderson@95 | 91 |
print FILE "this is nothing.\n"; |
| danderson@95 | 92 |
close(FILE); |
| danderson@95 | 93 |
} |
| danderson@95 | 94 |
|
| danderson@95 | 95 |
sub IsNewer |
| danderson@95 | 96 |
{ |
| danderson@95 | 97 |
my ($file, $time) = (@_); |
| danderson@95 | 98 |
|
| danderson@95 | 99 |
my @s = stat($file); |
| danderson@95 | 100 |
my $mtime = $s[9]; |
| danderson@95 | 101 |
return $mtime > $time; |
| danderson@95 | 102 |
} |
| danderson@95 | 103 |
|
| danderson@95 | 104 |
exit(0); |
| danderson@95 | 105 |
|
| danderson@95 | 106 |