use File::Basename; use feature "switch"; use lib 'tools'; use Jobs; # read command line params my $jobname = shift; # get script directory my $scriptdir = File::Basename::dirname($0); # read ini file my $inifile = $scriptdir . "/jobs.ini"; my %job = Jobs::get($inifile, $jobname); # examine the platform given ($job{'Platform'}) { when ("Win7") { $scriptdir =~ s/\//\\/g; # replace / -> \ # construct a build command if ($job{'ToolChain'} eq "mingw") { run($scriptdir . "\\build_win_mingw.bat", $job{'QtDir'}, $job{'Config'}, $job{'MinGWDir'}); } elsif ($job{'ToolChain'} eq "vs2005") { run($scriptdir . "\\build_win_vs2005.bat", $job{'QtDir'}, $job{'Config'}); } elsif ($job{'ToolChain'} eq "vs2008") { run($scriptdir . "\\build_win_vs2008.bat", $job{'QtDir'}, $job{'Config'}); } elsif ($job{'ToolChain'} eq "vs2010") { run($scriptdir . "\\build_win_vs2010.bat", $job{'QtDir'}, $job{'Config'}); } elsif ($job{'ToolChain'} eq "vs2010-64bit") { run($scriptdir . "\\build_win_vs2010_64bit.bat", $job{'QtDir'}, $job{'Config'}); } else { die "Unknown toolchain!"; } } when ("Mac") { # setup build environment $ENV{'QTDIR'} = $job{'QtDir'}; $ENV{'PATH'} = $job{'QtDir'} . "/bin:" . $ENV{'PATH'}; # run qmake my $cmd; if ($job{'ToolChain'} eq "clang") { run("qmake -r -spec unsupported/macx-clang CONFIG+=" . $job{'Config'}); } elsif ($job{'ToolChain'} eq "gcc") { run("qmake -r CONFIG+=" . $job{'Config'}); } else { die "Unknown toolchain!"; } # run make run("make"); } when ("Linux") { # setup build environment $ENV{'QTDIR'} = $job{'QtDir'}; $ENV{'PATH'} = $job{'QtDir'} . "/bin:" . $ENV{'PATH'}; # run qmake my $cmd; if ($job{'ToolChain'} eq "gcc") { run("qmake -r CONFIG+=" . $job{'Config'}); } else { die "Unknown toolchain!"; } # run make run("make -j 4"); } default { die "Unknown platform " . $job{'Platform'}; } } sub run { my $cmd; foreach (@_) { $cmd .= "$_ "; } print "running : $cmd\n"; system(@_) == 0 or die "system \"$cmd\" failed: $?"; }