tools/buildbot/bootstrap.pl
author Asher Baker <asherkin@gmail.com>
Mon Jun 10 00:46:29 2013 +0100 (2013-06-10)
changeset 262 c4b1341297e5
parent 110 1b0577b26837
permissions -rwxr-xr-x
Fix warnings when building with clang.
danderson@95
     1
#!/usr/bin/perl
dvander@110
     2
# vim: set ts=2 sw=2 tw=99 et: 
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')) {
dvander@110
    24
  $reconf = 1;
danderson@95
    25
} else {
dvander@110
    26
  if (-f 'OUTPUT/sentinel') {
dvander@110
    27
  	my @s = stat('OUTPUT/sentinel');
dvander@110
    28
  	my $mtime = $s[9];
dvander@110
    29
  	my @files = ('build/pushbuild.txt',
dvander@110
    30
  							 'build/AMBuildScript',
dvander@110
    31
  							 'build/product.version',
dvander@110
    32
  							 'build/tools/bootstrap.pl');
dvander@110
    33
  	my ($i);
dvander@110
    34
  	for ($i = 0; $i <= $#files; $i++) {
dvander@110
    35
  		if (IsNewer($files[$i], $mtime)) {
dvander@110
    36
  			$reconf = 1;
dvander@110
    37
  			last;
dvander@110
    38
  		}
dvander@110
    39
  	}
dvander@110
    40
  } else {
dvander@110
    41
  	$reconf = 1;
dvander@110
    42
  }
danderson@95
    43
}
danderson@95
    44
danderson@95
    45
if ($reconf) {
dvander@110
    46
  rmtree('OUTPUT');
dvander@110
    47
  mkdir('OUTPUT') or die("Failed to create output folder: $!\n");
dvander@110
    48
  chdir('OUTPUT');
danderson@95
    49
dvander@110
    50
  print "Attempting to reconfigure...\n";
danderson@95
    51
dvander@110
    52
  my ($os, $bits, $mode);
dvander@110
    53
  $os = $ARGV[0];
dvander@110
    54
  $bits = $ARGV[1];
dvander@110
    55
  $mode = $ARGV[2];
danderson@95
    56
dvander@110
    57
  my ($prefix, $python);
dvander@110
    58
  if ($^O eq "darwin") {
dvander@110
    59
  	$prefix = 'CC=clang CXX=clang++ ';
dvander@110
    60
  	$python = 'python3';
dvander@110
    61
  } elsif ($^O eq "linux") {
dvander@110
    62
  	$prefix = 'CC="ccache gcc" CXX="ccache g++" ';
dvander@110
    63
  	$python = 'python3';
dvander@110
    64
  } elsif ($^O =~ /MSWin/) {
dvander@110
    65
  	$prefix = '';
dvander@110
    66
  	$python = "C:\\Python31\\Python.exe";
dvander@110
    67
  }
danderson@95
    68
dvander@110
    69
  my ($cmdstring);
dvander@110
    70
  $cmdstring = $prefix .
dvander@110
    71
  						 $python . ' ' .
dvander@110
    72
  						 Build::PathFormat('../build/configure.py') . ' ';
danderson@95
    73
dvander@110
    74
  if ($mode eq 'release') {
dvander@110
    75
  	$cmdstring .= '--enable-optimize ';
dvander@110
    76
  } else {
dvander@110
    77
  	$cmdstring .= '--enable-debug ';
dvander@110
    78
  }
danderson@95
    79
dvander@110
    80
  if ($bits eq '32') {
dvander@110
    81
  	$cmdstring .= '--arch=x86 ';
dvander@110
    82
  } else {
dvander@110
    83
  	$cmdstring .= '--arch=x64 ';
dvander@110
    84
  }
danderson@95
    85
dvander@110
    86
  my ($result);
dvander@110
    87
  print "-> $cmdstring\n";
dvander@110
    88
  $result = `$cmdstring`;
danderson@95
    89
dvander@110
    90
  print "$result\n";
dvander@110
    91
  if ($? != 0) {
dvander@110
    92
  	die("Could not configure: $!\n");
dvander@110
    93
  }
dvander@110
    94
  open(FILE, '>sentinel');
dvander@110
    95
  print FILE "this is nothing.\n";
dvander@110
    96
  close(FILE);
danderson@95
    97
}
danderson@95
    98
danderson@95
    99
sub IsNewer
danderson@95
   100
{
dvander@110
   101
  my ($file, $time) = (@_);
danderson@95
   102
dvander@110
   103
  my @s = stat($file);
dvander@110
   104
  my $mtime = $s[9];
dvander@110
   105
  return $mtime > $time;
danderson@95
   106
}
danderson@95
   107
danderson@95
   108
exit(0);
danderson@95
   109
danderson@95
   110