summaryrefslogtreecommitdiff
path: root/symbian/sdk.pl
diff options
context:
space:
mode:
Diffstat (limited to 'symbian/sdk.pl')
-rw-r--r--symbian/sdk.pl48
1 files changed, 48 insertions, 0 deletions
diff --git a/symbian/sdk.pl b/symbian/sdk.pl
new file mode 100644
index 0000000000..1dc4d2f552
--- /dev/null
+++ b/symbian/sdk.pl
@@ -0,0 +1,48 @@
+use strict;
+
+my $SDK;
+my $WIN;
+
+if ($ENV{PATH} =~ m!\\Symbian\\(.+?)\\gcc\\bin!) {
+ my $cc = $1;
+ $WIN = $cc =~ m!_CW!i ? 'winscw' : 'wins';
+ $ENV{WIN} = $WIN;
+ if ($cc =~ m!Series60_v20!) {
+ $ENV{S60SDK} = '2.0';
+ } elsif ($cc =~ m!Series60_v21!) {
+ $ENV{S60SDK} = '2.1';
+ } elsif ($cc =~ m!S60_2nd_FP2!) {
+ $ENV{S60SDK} = '2.6';
+ }
+}
+
+if (open(GCC, "gcc -v 2>&1|")) {
+ while (<GCC>) {
+ if (/Reading specs from ((?:C:)?\\Symbian.+?)\\Epoc32\\/i) {
+ $SDK = $1;
+ # The S60SDK tells the Series 60 SDK version.
+ if ($SDK eq 'C:\Symbian\6.1\Shared') { # Visual C.
+ $SDK = 'C:\Symbian\6.1\Series60';
+ $ENV{S60SDK} = '1.2';
+ } elsif ($SDK eq 'C:\Symbian\Series60_1_2_CW') { # CodeWarrior.
+ $ENV{S60SDK} = '1.2';
+ }
+ last;
+ }
+ }
+ close GCC;
+} else {
+ die "$0: failed to run gcc: $!\n";
+}
+
+my $UARM = $ENV{UARM} ? $ENV{UARM} : "urel";
+my $UREL = "$SDK\\epoc32\\release\\-ARM-\\$UARM";
+if ($SDK eq 'C:\Symbian\6.1\Series60' && $ENV{WIN} eq 'winscw') {
+ $UREL = "C:\\Symbian\\Series60_1_2_CW\\epoc32\\release\\-ARM-\\urel";
+}
+$ENV{UREL} = $UREL;
+$ENV{UARM} = $UARM;
+
+die "$0: failed to locate the Symbian SDK\n" unless defined $SDK;
+
+$SDK;