summaryrefslogtreecommitdiffstats
path: root/tools/build.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build.pl')
-rw-r--r--tools/build.pl97
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