Symbian sync
Jarkko Hietaniemi [Sat, 31 Mar 2007 15:30:09 +0000 (11:30 -0400)]
Message-ID: <460EB6C1.4020406@iki.fi>

p4raw-id: //depot/perl@30824

README.symbian
lib/AutoSplit.pm
lib/constant.pm
regcomp.pl
regnodes.h
symbian/port.pl
symbian/sdk.pl

index b96a911..6bd36f5 100644 (file)
@@ -69,16 +69,19 @@ mainly as demonstrations.
 
        perl symbian\config.pl
 
-    You must use the cmd.exe, the Cygwin shell will not work
-    (the PATH must include the SDK tools, including a Perl,
-    which should be the case under cmd.exe)
+    You must use the cmd.exe, the Cygwin shell will not work.
+    The PATH must include the SDK tools, including a Perl,
+    which should be the case under cmd.exe.  If you do not
+    have that, see the end of symbian\sdk.pl for notes of
+    how your environment should be set up for Symbian compiles.
 
 (4) Build the project, either by
 
        make all
 
     in cmd.exe or by using either the Metrowerks CodeWarrior
-    or the Visual C++ 6.0.
+    or the Visual C++ 6.0, or the Visual Studio 8 (the Visual C++
+    2005 Express Edition works fine).
 
     If you use the VC IDE, you will have to run F<symbian\config.pl>
     first using the cmd.exe, and then run 'make win.mf vc6.mf' to generate
@@ -95,7 +98,7 @@ mainly as demonstrations.
         S60 2.0 | +  | +  | 6600
         S60 2.1 | -  | +  | 6670
         S60 2.6 | +  | +  | 6630    
-        S60 2.8 | -  | +  | (not tested in a device)
+        S60 2.8 | +  | +  | (not tested in a device)
         S80 2.6 | -  | +  | 9300
         S90 1.1 | +  | -  | 7710
         UIQ 2.1 | -  | +  | (not tested in a device)
@@ -330,6 +333,8 @@ Jarkko Hietaniemi
 
 Copyright (c) 2004-2005 Nokia.  All rights reserved.
 
+Copyright (c) 2006-2007 Jarkko Hietaniemi.
+
 =head1 LICENSE
 
 The Symbian port is licensed under the same terms as Perl itself.
@@ -400,15 +405,28 @@ We maintain the binary incompatibility.
 
 We maintain the binary incompatibility.
 
+=item *
+
 0.4.1: December 2006
 
-  - Perl 5.9.5 (patch level 30002)
+  - Perl 5.9.5-to-be (patch level 30002)
   - added extensions: Compress/Raw/Zlib, Digest/SHA,
     Hash/Util, Math/BigInt/FastCalc, Text/Soundex, Time/Piece
   - port to S90 1.1 by alexander smishlajev
 
 We maintain the binary incompatibility.
 
+=item *
+
+0.4.2: March 2007
+
+  - catchup with Perl 5.9.5-to-be (patch level 30812)
+  - tested to build with Microsoft Visual C++ 2005 Express Edition
+    (which uses Microsoft Visual C 8, instead of the old VC6),
+    SDK used for testing S60_2nd_FP3 aka 8.1a
+
+We maintain the binary incompatibility.
+
 =back
 
 =cut
index bf92806..a6c0ee3 100644 (file)
@@ -1,6 +1,5 @@
 package AutoSplit;
 
-use 5.009005; # due to "my $_" and new regexp features
 use Exporter ();
 use Config qw(%Config);
 use File::Basename ();
@@ -146,9 +145,14 @@ if (defined (&Dos::UseLFN)) {
 }
 my $Is_VMS = ($^O eq 'VMS');
 
-# allow checking for valid ': attrlist' attachments
+# allow checking for valid ': attrlist' attachments.
+# extra jugglery required to support both 5.8 and 5.9/5.10 features
+# (support for 5.8 required for cross-compiling environments)
 
-my $attr_list = qr{
+my $attr_list = 
+  $] >= 5.009005 ?
+  eval <<'__QR__'
+  qr{
     \s* : \s*
     (?:
        # one attribute
@@ -158,7 +162,18 @@ my $attr_list = qr{
        )
        (?: \s* : \s* | \s+ (?! :) )
     )*
-}x;
+  }x
+__QR__
+  :
+  do {
+    # In pre-5.9.5 world we have to do dirty tricks.
+    # (we use 'our' rather than 'my' here, due to the rather complex and buggy
+    # behaviour of lexicals with qr// and (??{$lex}) )
+    our $trick1; # yes, cannot our and assign at the same time.
+    $trick1 = qr{ \( (?: (?> [^()]+ ) | (??{ $trick1 }) )* \) }x;
+    our $trick2 = qr{ (?> (?! \d) \w+ (?:$trick1)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
+    qr{ \s* : \s* (?: $trick2 )* }x;
+  };
 
 sub autosplit{
     my($file, $autodir,  $keep, $ckal, $ckmt) = @_;
@@ -181,8 +196,8 @@ sub carp{
 
 sub autosplit_lib_modules {
     my(@modules) = @_; # list of Module names
-
-    while (defined(my $_ = shift @modules)) {
+    local $_; # Avoid clobber.
+    while (defined($_ = shift @modules)) {
        while (m#([^:]+)::([^:].*)#) { # in case specified as ABC::XYZ
            $_ = catfile($1, $2);
        }
index 83714a8..f1b4d73 100644 (file)
@@ -109,7 +109,7 @@ sub import {
                    # constants from cv_const_sv are read only. So we have to:
                    Internals::SvREADONLY($scalar, 1);
                    $symtab->{$name} = \$scalar;
-                   Internals::inc_sub_generation;
+                   &Internals::inc_sub_generation;
                } else {
                    *$full_name = sub () { $scalar };
                }
index 38c346c..3ba699b 100644 (file)
@@ -164,7 +164,7 @@ print OUT <<EOP;
 #ifndef DOINIT
 EXTCONST char * PL_reg_name[];
 #else
-EXTCONST char * PL_reg_name[] = {
+EXTCONST char * const PL_reg_name[] = {
 EOP
 
 $ind = 0;
index 6f6e0b2..e704427 100644 (file)
@@ -459,7 +459,7 @@ static const char reg_off_by_arg[] = {
 #ifndef DOINIT
 EXTCONST char * PL_reg_name[];
 #else
-EXTCONST char * PL_reg_name[] = {
+EXTCONST char * const PL_reg_name[] = {
        "END",                          /* 0000 */
        "SUCCEED",                      /* 0x01 */
        "BOL",                          /* 0x02 */
index cbba0c8..599321d 100644 (file)
@@ -1,6 +1,6 @@
 {
-  dll => { MAJOR => 0, MINOR => 4, PATCH => 0 },
-  ext => { MAJOR => 0, MINOR => 4, PATCH => 0 }, 
-  lib => { MAJOR => 0, MINOR => 4, PATCH => 0 }, 
+  dll => { MAJOR => 0, MINOR => 4, PATCH => 2 },
+  ext => { MAJOR => 0, MINOR => 4, PATCH => 2 }, 
+  lib => { MAJOR => 0, MINOR => 4, PATCH => 2 }, 
 }
 
index 0db16ed..4003ae0 100644 (file)
@@ -89,18 +89,26 @@ $ENV{UARM} = $UARM;
 # set MSVC_INC=%MSVC%\VC98\atl\include;%MSVC%\VC98\include;%MSVC%\mfc\include;%MSVC%\include
 # set MSVC_LIB=%MSVC%\mfc\lib;%MSVC%\lib
 #
+# Note that if you are using Microsoft Visual Studio 8
+# (for example because you are using the Microsoft Visual C++
+#  2005 Express Edition), the MSVC settings will be different:
+# set MSVC=C:\Program Files\Microsoft Visual Studio 8\VC
+# set MSVC_BIN=%MSVC%\bin
+# set MSVC_INC=%MSVC%\include
+# set MSVC_LIB=%MSVC%\lib
+#
 # s60-1.2-cw:
 #
 # set EPOCROOT=\Symbian\Series60_1_2_CW\
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MSVC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES60_12__ -D__SERIES60_MAJOR__=1 -D__SERIES60_MINOR__=2 -D__SERIES60_1X__
 #
 # s60-1.2-vc:
 #
 # set EPOCROOT=\Symbian\6.1\Series60\
 # symbiancommon
-# set PATH=\Symbian\6.1\Shared\Epoc32\gcc\bin;\Symbian\6.1\Shared\Epoc32\Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=\Symbian\6.1\Shared\Epoc32\gcc\bin;\Symbian\6.1\Shared\Epoc32\Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set INCLUDE=%MSVC_INC%
 # set LIB=%MSVC_LIB%
 # set USERDEFS=%USERDEFS% -D__SERIES60_12__ -D__SERIES60_MAJOR__=1 -D__SERIES60_MINOR__=2 -D__SERIES60_1X__
@@ -110,7 +118,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\7.0s\Series60_v20_CW\
 # set EPOCDEVICE=Series60_2_0_CW:com.Nokia.Series60_2_0_CW
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES60_20__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=0 -D__SERIES60_2X__
 # 
 # s60-2.0-vc:
@@ -118,7 +126,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\7.0s\Series60_v20\
 # set EPOCDEVICE=Series60_v20:com.nokia.series60
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set INCLUDE=%MSVC_INC%
 # set LIB=%MSVC_LIB%
 # set USERDEFS=%USERDEFS% -D__SERIES60_20__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=0 -D__SERIES60_2X__
@@ -128,7 +136,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\7.0s\Series60_v21_CW\
 # set EPOCDEVICE=Series60_v21_CW:com.Nokia.series60
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES60_21__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=1 -D__SERIES60_2X__
 # 
 # s60-2.6-cw:
@@ -136,7 +144,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\8.0a\S60_2nd_FP2_CW\
 # set EPOCDEVICE=S60_2nd_FP2_CW:com.nokia.series60
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES60_26__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=6 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
 # 
 # s60-2.6-vc:
@@ -144,7 +152,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\8.0a\S60_2nd_FP2\
 # set EPOCDEVICE=S60_2nd_FP2:com.nokia.Series60
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set INCLUDE=%MSVC_INC%
 # set LIB=%MSVC_LIB%
 # set USERDEFS=%USERDEFS% -D__SERIES60_26__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=6 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
@@ -154,15 +162,23 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\8.1a\S60_2nd_FP3\
 # set EPOCDEVICE=S60_2nd_FP3:com.nokia.series60
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES60_28__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=8 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
 # 
+# s60-2.8-vc:
+#
+# set EPOCROOT=\Symbian\8.1a\S60_2nd_FP3\
+# set EPOCDEVICE=S60_2nd_FP3:com.nokia.series60
+# symbiancommon
+# set PATH=%EPOC_BIN%;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
+# set USERDEFS=%USERDEFS% -D__SERIES60_28__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=8 -D__SERIES60_2X__ -D__BLUETOOTH_API_V2__
+#
 # s80-2.0-cw:
 #
 # set EPOCROOT=\Symbian\7.0s\S80_DP2_0_SDK_CW\
 # set EPOCDEVICE=Series80_DP2_0_SDK_CW:com.nokia.Series80
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__
 #
 # s80-2.0-vc:
@@ -170,7 +186,7 @@ $ENV{UARM} = $UARM;
 # set EPOCROOT=\Symbian\7.0s\S80_DP2_0_SDK\
 # set EPOCDEVICE=Series80_DP2_0_SDK:com.nokia.Series80
 # symbiancommon
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__
 #
 # UIQ-2.1-vc:
@@ -182,7 +198,7 @@ $ENV{UARM} = $UARM;
 # set MSVC_BIN=%MSVC%;%MSVC%\Common\MSDev98\Bin
 # set MSVC_INC=%MSVC%\VC98\atl\include;%MSVC%\mfc\include;%MSVC%\include
 # set MSVC_LIB=%MSVC%\mfc\lib;%MSVC%\lib
-# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32
+# set PATH=%EPOC_BIN%;%MWCW%\Bin;%MWCW%\Symbian_Tools\Command_Line_Tools;%MSVC_BIN%;C:\perl\bin;C:\winnt\system32;%PATH%
 # set USERDEFS=%USERDEFS% -D__UIQ_21__ -D__UIQ_MAJOR__=2 -D__UIQ_MINOR__=1 -D__UIQ_2X__
 #
 # EOF