even more Symbian
Jarkko Hietaniemi [Mon, 17 Oct 2005 18:27:57 +0000 (21:27 +0300)]
Message-ID: <B356D8F434D20B40A8CEDAEC305A1F24E7A61F@esebe105.NOE.Nokia.com>

p4raw-id: //depot/perl@25782

ext/Storable/Storable.xs
symbian/TODO
symbian/find_writeable_data.pl
symbian/xsbuild.pl

index c638648..0d2d8c6 100644 (file)
@@ -1082,7 +1082,7 @@ static int store_blessed(pTHX_ stcxt_t *cxt, SV *sv, int type, HV *pkg);
 
 typedef int (*sv_store_t)(pTHX_ stcxt_t *cxt, SV *sv);
 
-static sv_store_t sv_store[] = {
+static const sv_store_t sv_store[] = {
        (sv_store_t)store_ref,          /* svis_REF */
        (sv_store_t)store_scalar,       /* svis_SCALAR */
        (sv_store_t)store_array,        /* svis_ARRAY */
index e8586d2..52436da 100644 (file)
@@ -47,9 +47,6 @@
   fragile (see Symbian FAQ-0929), intensive debugging and fix needed
 - in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via
   FExplorer does not open up the console
-- in the SDK the build creates DLLs in the system area
-  (e.g. epoc32\release\thumb\urel\io.dll), this is dangerous.  Prefix them?
-  (needs changes in xsbuild and DynaLoader/XSLoader)
 
 =head2 Unicode
 
index 24bf298..bdb5790 100644 (file)
@@ -34,7 +34,7 @@ use Cwd;
 use File::Basename;
 
 my $dir = lc(getcwd());
-my $tgt = basename(shift @ARGV);
+my $tgt = basename(shift(@ARGV), ".mmp");
 
 $dir =~ s!/!\\!g;
 $dir =~ s!^c:!c:$ENV{EPOCROOT}epoc32\\build!;
index 556db70..0f6d66d 100644 (file)
@@ -206,10 +206,12 @@ sub read_mmp {
 }
 
 sub write_mmp {
-    my ( $base, $userinclude, @src ) = @_;
+    my ( $ext, $base, $userinclude, @src ) = @_;
+
+    my $extdash = $ext; $extdash =~ s!\\!-!g;
 
     print "\t$base.mmp\n";
-    $CONF{TARGET}        = "$base.dll";
+    $CONF{TARGET}        = "perl$VERSION-$extdash.dll";
     $CONF{TARGETPATH}    = "\\System\\Libs\\Perl\\$R_V_SV";
     $CONF{SOURCE}        = [@src];
     $CONF{SOURCEPATH}    = [ $CWD, $BUILDROOT ];
@@ -410,8 +412,10 @@ sub xsconfig {
 
     $extdirdir = $extdirdir eq "." ? "" : "$extdirdir\\";
 
+    my $extdash = $ext; $extdash =~ s!\\!-!g;
+
     my %lst;
-    $lst{"$UREL\\$base.dll"} =
+    $lst{"$UREL\\perl$VERSION-$extdash.dll"} =
       "$targetroot\\$ARM-symbian\\$base.dll"
       if -f $basexs;
     $lst{"$dir\\$base.pm"} = "$targetroot\\$extdirdir$base.pm"
@@ -424,6 +428,7 @@ sub xsconfig {
         my @found;
         find( sub { push @found, $File::Find::name if -f $_ }, 'lib' );
         for my $found (@found) {
+           next if $found =~ /\.bak$/i; # Zlib
             my ($short) = ( $found =~ m/^lib.(.+)/ );
             $short =~ s!/!\\!g;
             $found =~ s!/!\\!g;
@@ -603,7 +608,7 @@ __EOF__
                         unlink($submf);
                         my $subbase = $d;
                         $subbase =~ s!/!::!g;
-                        write_mmp( $subbase, ["..\\Encode"], "$subbase.c",
+                        write_mmp( $ext, $subbase, ["..\\Encode"], "$subbase.c",
                             @subsrc );
                         write_makefile( $subbase, $build );
                         write_bld_inf($subbase);
@@ -630,7 +635,7 @@ __EOF__
             print "Configuring Encode...\n";
         }
 
-        write_mmp( $base, [ keys %incdir ], @src );
+        write_mmp( $ext, $base, [ keys %incdir ], @src );
         write_makefile( $base, $build );
     }
     my $lstname = $ext;
@@ -658,6 +663,7 @@ sub update_cwd {
 for my $ext (@ARGV) {
 
     $ext =~ s!::!\\!g;
+    my $extdash = "ext\\$ext"; $extdash =~ s!\\!-!g;
     $ext =~ s!/!\\!g;
 
     my $cfg;
@@ -794,8 +800,8 @@ __EOF__
         my %symbol;
        my $def;
        my $basef;
-        for my $f ("$SDK\\Epoc32\\Build$CWD\\$base\\WINS\\$base.def",
-                  "..\\BMARM\\${base}u.def") {
+        for my $f ("$SDK\\Epoc32\\Build$CWD\\$base\\WINS\\perl$VERSION-$extdash.def",
+                  "..\\BMARM\\perl$VERSION-${extdash}u.def") {
            print "\t($f - ";
            if ( open( $def, $f ) ) {
                print "OK)\n";