diff options
Diffstat (limited to 'tools/build.pl')
-rw-r--r-- | tools/build.pl | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/tools/build.pl b/tools/build.pl new file mode 100644 index 00000000..3379db74 --- /dev/null +++ b/tools/build.pl @@ -0,0 +1,97 @@ +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: $?"; +}
\ No newline at end of file |