diff options
author | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2020-03-04 00:28:00 +0000 |
---|---|---|
committer | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2020-07-20 23:28:12 +0100 |
commit | 822c8b4dc3fe62cd97d78e693e5871fcc65782fd (patch) | |
tree | 58172809ebe7ee4365ca85886b38fbcf6862b86e | |
parent | 6e764e36cf6a7c109e74ca4ccafbba27a0b422cd (diff) | |
download | perl-822c8b4dc3fe62cd97d78e693e5871fcc65782fd.tar.gz |
Remove Symbian port
Also eliminate USE_HEAP_INSTEAD_OF_STACK and
SETSOCKOPT_OPTION_VALUE_T, since Symbian was the only user of those.
81 files changed, 35 insertions, 8851 deletions
@@ -19,14 +19,14 @@ #undef EXTCONST #undef dEXTCONST -# if (defined(WIN32) || defined(__SYMBIAN32__)) && !defined(PERL_STATIC_SYMS) +# if defined(WIN32) && !defined(PERL_STATIC_SYMS) /* miniperl should not export anything */ # if defined(PERL_IS_MINIPERL) # define EXT extern # define dEXT # define EXTCONST extern const # define dEXTCONST const -# elif defined(PERLDLL) || defined(__SYMBIAN32__) +# elif defined(PERLDLL) # define EXT EXTERN_C __declspec(dllexport) # define dEXT # define EXTCONST EXTERN_C __declspec(dllexport) const @@ -19,8 +19,7 @@ #undef EXTCONST #undef dEXTCONST -# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) \ - || defined(__SYMBIAN32__) +# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL)) # ifdef __cplusplus # define EXT __declspec(dllexport) # define dEXT @@ -4139,7 +4139,6 @@ ext/DynaLoader/dl_dyld.xs NeXT/Apple dyld implementation ext/DynaLoader/dl_freemint.xs GNU dld style implementation for FreeMINT ext/DynaLoader/dl_hpux.xs HP-UX implementation ext/DynaLoader/dl_none.xs Stub implementation -ext/DynaLoader/dl_symbian.xs Symbian implementation ext/DynaLoader/dl_vms.xs VMS implementation ext/DynaLoader/dl_win32.xs Win32 implementation ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files @@ -5415,7 +5414,6 @@ README.plan9 Perl notes for Plan 9 README.qnx Perl notes for QNX README.riscos Perl notes for RISC OS README.solaris Perl notes for Solaris -README.symbian Perl notes for Symbian README.synology Perl notes for Synology README.tru64 Perl notes for Tru64 README.tw Perl for Traditional Chinese (in Big5) @@ -5467,56 +5465,6 @@ SECURITY.md Add Security Policy for GitHub stadtx_hash.h StadtX hash code (64 Bit fast hash function) sv.c Scalar value code sv.h Scalar value header -symbian/bld.inf Symbian sample app build config -symbian/config.pl Configuration script for Symbian -symbian/config.sh Configuration data for Symbian -symbian/cwd.pl Helper code for config.pl -symbian/demo_pl "Archive" of demo code -symbian/ext/Moped/Msg/bld.inf Demo extension build configuration -symbian/ext/Moped/Msg/location.pl Demo extension script -symbian/ext/Moped/Msg/Msg.mmp Demo extension building -symbian/ext/Moped/Msg/Msg.pkg Demo extension packaging -symbian/ext/Moped/Msg/Msg.pm Demo extension Perl glue -symbian/ext/Moped/Msg/Msg.xs Demo extension code -symbian/ext/Moped/Msg/README Demo extension documentation -symbian/find_writeable_data.pl Development utility -symbian/hexdump.pl Helper for sisify.pl updating -symbian/install.cfg Installation instructions -symbian/makesis.pl Installation file creator -symbian/PerlApp.cpp Symbian app launcher code -symbian/PerlApp.h Symbian app launcher header -symbian/PerlApp.hrh Symbian app launcher resource header -symbian/PerlAppAif.rss Symbian app launcher code -symbian/PerlBase.cpp Symbian Perl base class -symbian/PerlBase.h Symbian Perl base class header -symbian/PerlBase.pod Symbian Perl base class documentation -symbian/PerlRecog.cpp Symbian recognizer code -symbian/PerlRecog.mmp Symbian recognizer build -symbian/PerlUi.cpp Symbian Perl UI class -symbian/PerlUi.h Symbian Perl UI class header -symbian/PerlUi.hrh Symbian Perl UI class resource header -symbian/PerlUiS60.rss Symbian app launcher resource definition -symbian/PerlUiS80.rss Symbian app launcher resource definition -symbian/PerlUiS90.rss Symbian app launcher resource definition -symbian/PerlUiUIQ.rss Symbian app launcher resource definition -symbian/PerlUtil.cpp Symbian Perl utility class -symbian/PerlUtil.h Symbian Perl utility class header -symbian/PerlUtil.pod Symbian Perl utility class documentation -symbian/port.pl Helper code for config.pl -symbian/README ReadMe for the Symbian files -symbian/sanity.pl Helper code for config.pl -symbian/sdk.pl Helper code for config.pl -symbian/sisify.pl Packaging utility -symbian/symbian_dll.cpp The DLL stub for Symbian -symbian/symbian_proto.h Prototypes for Symbian -symbian/symbian_stubs.c Stub routines for Symbian -symbian/symbian_stubs.h Stub headers for Symbian -symbian/symbian_utils.cpp Helper routines for Symbian -symbian/symbianish.h Header for Symbian -symbian/TODO Symbian things to do -symbian/uid.pl Helper code for config.pl -symbian/version.pl Helper code for config.pl -symbian/xsbuild.pl Building extensions t/base/cond.t See if conditionals work t/base/if.t See if if works t/base/lex.t See if lexical items work diff --git a/Porting/checkcfgvar.pl b/Porting/checkcfgvar.pl index 101f12d868..e7eb58e5bf 100755 --- a/Porting/checkcfgvar.pl +++ b/Porting/checkcfgvar.pl @@ -50,7 +50,6 @@ my @CFG = ( "Cross/config.sh-arm-linux", "Cross/config.sh-arm-linux-n770", "NetWare/config.wc", - "symbian/config.sh", "uconfig.sh", "uconfig64.sh", "plan9/config_sh.sample", diff --git a/Porting/corelist.pl b/Porting/corelist.pl index 2f2e61c52e..05393c0ada 100755 --- a/Porting/corelist.pl +++ b/Porting/corelist.pl @@ -105,7 +105,7 @@ find( $version =~ /\d/ and $version = "'$version'"; # some heuristics to figure out the module name from the file name - $module =~ s{^(lib|cpan|dist|(?:symbian/)?ext|os2/OS2)/}{} + $module =~ s{^(lib|cpan|dist|ext|os2/OS2)/}{} and $1 ne 'lib' and ( $module =~ s{\b(\w+)/\1\b}{$1}, @@ -130,7 +130,6 @@ find( $module_to_file{$module} = $File::Find::name; }, 'os2/OS2', - 'symbian/ext', 'lib', 'ext', 'cpan', diff --git a/README.cygwin b/README.cygwin index 5885ac5f69..6ad9fb542c 100644 --- a/README.cygwin +++ b/README.cygwin @@ -576,7 +576,6 @@ be kept as clean as possible. lib/ExtUtils/NOTES lib/ExtUtils/PATCHING lib/ExtUtils/README lib/Net/Ping/Changes lib/Test/Harness/Changes lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README - README.symbian symbian/TODO =item Build, Configure, Make, Install @@ -597,7 +596,6 @@ be kept as clean as possible. NetWare/Makefile plan9/mkfile - symbian/sanity.pl symbian/sisify.pl hints/uwin.sh vms/descrip_mms.template win32/Makefile win32/makefile.mk diff --git a/README.symbian b/README.symbian deleted file mode 100644 index cb4a42ff94..0000000000 --- a/README.symbian +++ /dev/null @@ -1,434 +0,0 @@ -If you read this file _as_is_, just ignore the funny characters you see. -It is written in the POD format (see pod/perlpod.pod) which is specially -designed to be readable as is. - -=head1 NAME - -perlsymbian - Perl version 5 on Symbian OS - -=head1 DESCRIPTION - -This document describes various features of the Symbian operating -system that will affect how Perl version 5 (hereafter just Perl) -is compiled and/or runs. - -B<NOTE: this port (as of 0.4.1) does not compile into a Symbian -OS GUI application, but instead it results in a Symbian DLL.> -The DLL includes a C++ class called CPerlBase, which one can then -(derive from and) use to embed Perl into applications, see F<symbian/README>. - -The base port of Perl to Symbian only implements the basic POSIX-like -functionality; it does not implement any further Symbian or Series 60, -Series 80, or UIQ bindings for Perl. - -It is also possible to generate Symbian executables for "miniperl" -and "perl", but since there is no standard command line interface -for Symbian (nor full keyboards in the devices), these are useful -mainly as demonstrations. - -=head2 Compiling Perl on Symbian - -(0) You need to have the appropriate Symbian SDK installed. - -These instructions have been tested under various Nokia Series 60 -Symbian SDKs (1.2 to 2.6, 2.8 should also work, 1.2 compiles but -does not work), Series 80 2.0, and Nokia 7710 (Series 90) SDK. -You can get the SDKs from Forum Nokia (L<http://www.forum.nokia.com/>). -A very rough port ("it compiles") to UIQ 2.1 has also been made. - -A prerequisite for any of the SDKs is to install ActivePerl -from ActiveState, L<http://www.activestate.com/Products/ActivePerl/> - -Having the SDK installed also means that you need to have either -the Metrowerks CodeWarrior installed (2.8 and 3.0 were used in testing) -or the Microsoft Visual C++ 6.0 installed (SP3 minimum, SP5 recommended). - -Note that for example the Series 60 2.0 VC SDK installation talks -about ActivePerl build 518, which does no more (as of mid-2005) exist -at the ActiveState website. The ActivePerl 5.8.4 build 810 was -used successfully for compiling Perl on Symbian. The 5.6.x ActivePerls -do not work. - -Other SDKs or compilers like Visual.NET, command-line-only -Visual.NET, Borland, GnuPoc, or sdk2unix have not been tried. - -These instructions almost certainly won't work with older Symbian -releases or other SDKs. Patches to get this port running in other -releases, SDKs, compilers, platforms, or devices are naturally welcome. - -(1) Get a Perl source code distribution (for example the file -perl-5.9.2.tar.gz is fine) from L<http://www.cpan.org/src/> -and unpack it in your the C:/Symbian directory of your Windows -system. - -(2) Change to the perl source directory. - - cd c:\Symbian\perl-5.x.x - -(3) Run the following script using the perl coming with the SDK - - 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. 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 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 -the VC6 makefiles and workspaces. "make vc6" will compile for the VC6, -and "make cw" for the CodeWarrior. - -The following SDK and compiler configurations and Nokia phones were -tested at some point in time (+ = compiled and PerlApp run, - = not), -both for Perl 5.8.x and 5.9.x: - - SDK | VC | CW | - --------+----+----+--- - S60 1.2 | + | + | 3650 (*) - S60 2.0 | + | + | 6600 - S60 2.1 | - | + | 6670 - S60 2.6 | + | + | 6630 - S60 2.8 | + | + | (not tested in a device) - S80 2.6 | - | + | 9300 - S90 1.1 | + | - | 7710 - UIQ 2.1 | - | + | (not tested in a device) - - (*) Compiles but does not work, unfortunately, a problem with Symbian. - -If you are using the 'make' directly, it is the GNU make from the SDKs, -and it will invoke the right make commands for the Windows emulator -build and the Arm target builds ('thumb' by default) as necessary. - -The build scripts assume the 'absolute style' SDK installs under C:, -the 'subst style' will not work. - -If using the VC IDE, to build use for example the File->Open Workspace-> -C:\Symbian\8.0a\S60_2nd_FP2\epoc32\build\symbian\perl\perl\wins\perl.dsw -The emulator binaries will appear in the same directory. - -If using the VC IDE, you will a lot of warnings in the beginning of -the build because a lot of headers mentioned by the source cannot -be found, but this is not serious since those headers are not used. - -The Metrowerks will give a lot of warnings about unused variables and -empty declarations, you can ignore those. - -When the Windows and Arm DLLs are built do not be scared by a very long -messages whizzing by: it is the "export freeze" phase where the whole -(rather large) API of Perl is listed. - -Once the build is completed you need to create the DLL SIS file by - - make perldll.sis - -which will create the file perlXYZ.sis (the XYZ being the Perl version) -which you can then install into your Symbian device: an easy way -to do this is to send them via Bluetooth or infrared and just open -the messages. - -Since the total size of all Perl SIS files once installed is -over 2 MB, it is recommended to do the installation into a -memory card (drive E:) instead of the C: drive. - -The size of the perlXYZ.SIS is about 370 kB but once it is in the -device it is about one 750 kB (according to the application manager). - -The perlXYZ.sis includes only the Perl DLL: to create an additional -SIS file which includes some of the standard (pure) Perl libraries, -issue the command - - make perllib.sis - -Some of the standard Perl libraries are included, but not all: -see L</HISTORY> or F<symbian\install.cfg> for more details -(250 kB -> 700 kB). - -Some of the standard Perl XS extensions (see L</HISTORY> are -also available: - - make perlext.sis - -which will create perlXYZext.sis (290 kB -> 770 kB). - -To compile the demonstration application PerlApp you need first to -install the Perl headers under the SDK. - -To install the Perl headers and the class CPerlBase documentation -so that you no more need the Perl sources around to compile Perl -applications using the SDK: - - make sdkinstall - -The destination directory is C:\Symbian\perl\X.Y.Z. For more -details, see F<symbian\PerlBase.pod>. - -Once the headers have been installed, you can create a SIS for -the PerlApp: - - make perlapp.sis - -The perlapp.sis (11 kB -> 16 kB) will be built in the symbian -subdirectory, but a copy will also be made to the main directory. - -If you want to package the Perl DLLs (one for WINS, one for ARMI), -the headers, and the documentation: - - make perlsdk.zip - -which will create perlXYZsdk.zip that can be used in another -Windows system with the SDK, without having to compile Perl in -that system. - -If you want to package the PerlApp sources: - - make perlapp.zip - -If you want to package the perl.exe and miniperl.exe, you -can use the perlexe.sis and miniperlexe.sis make targets. -You also probably want the perllib.sis for the libraries -and maybe even the perlapp.sis for the recognizer. - -The make target 'allsis' combines all the above SIS targets. - -To clean up after compilation you can use either of - - make clean - make distclean - -depending on how clean you want to be. - -=head2 Compilation problems - -If you see right after "make" this - - cat makefile.sh >makefile - 'cat' is not recognized as an internal or external command, - operable program or batch file. - -it means you need to (re)run the F<symbian\config.pl>. - -If you get the error - - 'perl' is not recognized as an internal or external command, - operable program or batch file. - -you may need to reinstall the ActivePerl. - -If you see this - - ren makedef.pl nomakedef.pl - The system cannot find the file specified. - C:\Symbian\...\make.exe: [rename_makedef] Error 1 (ignored) - -please ignore it since it is nothing serious (the build process of -renames the Perl makedef.pl as nomakedef.pl to avoid confusing it -with a makedef.pl of the SDK). - -=head2 PerlApp - -The PerlApp application demonstrates how to embed Perl interpreters -to a Symbian application. The "Time" menu item runs the following -Perl code: C<print "Running in ", $^O, "\n", scalar localtime>, -the "Oneliner" allows one to type in Perl code, and the "Run" -opens a file chooser for selecting a Perl file to run. - -The PerlApp also is started when the "Perl recognizer" (also included -and installed) detects a Perl file being activated through the GUI, -and offers either to install it under \Perl (if the Perl file is in -the inbox of the messaging application) or to run it (if the Perl file -is under \Perl). - -=head2 sisify.pl - -In the symbian subdirectory there is F<sisify.pl> utility which can be used -to package Perl scripts and/or Perl library directories into SIS files, -which can be installed to the device. To run the sisify.pl utility, -you will need to have the 'makesis' and 'uidcrc' utilities already -installed. If you don't have the Win32 SDKs, you may try for example -L<http://gnupoc.sourceforge.net/> or L<http://symbianos.org/~andreh/>. - -=head2 Using Perl in Symbian - -First of all note that you have full access to the Symbian device -when using Perl: you can do a lot of damage to your device (like -removing system files) unless you are careful. Please do take -backups before doing anything. - -The Perl port has been done for the most part using the Symbian -standard POSIX-ish STDLIB library. It is a reasonably complete -library, but certain corners of such emulation libraries that tend -to be left unimplemented on non-UNIX platforms have been left -unimplemented also this time: fork(), signals(), user/group ids, -select() working for sockets, non-blocking sockets, and so forth. -See the file F<symbian/config.sh> and look for 'undef' to find the -unsupported APIs (or from Perl use Config). - -The filesystem of Symbian devices uses DOSish syntax, "drives" -separated from paths by a colon, and backslashes for the path. The -exact assignment of the drives probably varies between platforms, but -for example in Series 60 you might see C: as the (flash) main memory, -D: as the RAM drive, E: as the memory card (MMC), Z: as the ROM. In -Series 80 D: is the memory card. As far the devices go the NUL: is -the bit bucket, the COMx: are the serial lines, IRCOMx: are the IR -ports, TMP: might be C:\System\Temp. Remember to double those -backslashes in doublequoted strings. - -The Perl DLL is installed in \System\Libs\. The Perl libraries and -extension DLLs are installed in \System\Libs\Perl\X.Y.Z\. The PerlApp -is installed in \System\Apps\, and the SIS also installs a couple of -demo scripts in \Perl\ (C:\Mydocs\Perl\ on Nokia 7710). - -Note that the Symbian filesystem is very picky: it strongly prefers -the \ instead of the /. - -When doing XS / Symbian C++ programming include first the Symbian -headers, then any standard C/POSIX headers, then Perl headers, and finally -any application headers. - -New() and Copy() are unfortunately used by both Symbian and Perl code -so you'll have to play cpp games if you need them. PerlBase.h undefines -the Perl definitions and redefines them as PerlNew() and PerlCopy(). - -=head1 TO DO - -Lots. See F<symbian/TODO>. - -=head1 WARNING - -As of Perl Symbian port version 0.4.1 any part of Perl's standard -regression test suite has not been run on a real Symbian device using -the ported Perl, so innumerable bugs may lie in wait. Therefore there -is absolutely no warranty. - -=head1 NOTE - -When creating and extending application programming interfaces (APIs) -for Symbian or Series 60 or Series 80 or Series 90 it is suggested -that trademarks, registered trademarks, or trade names are not used in -the API names. Instead, developers should consider basing the API -naming in the existing (C++, or maybe Java) public component and API -naming, modified as appropriate by the rules of the programming -language the new APIs are for. - -Nokia is a registered trademark of Nokia Corporation. Nokia's product -names are trademarks or registered trademarks of Nokia. Other product -and company names mentioned herein may be trademarks or trade names of -their respective owners. - -=head1 AUTHOR - -Jarkko Hietaniemi - -=head1 COPYRIGHT - -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. - -=head1 HISTORY - -=over 4 - -=item * - -0.1.0: April 2005 - -(This will show as "0.01" in the Symbian Installer.) - - - The console window is a very simple console indeed: one can - get the newline with "000" and the "C" button is a backspace. - Do not expect a terminal capable of vt100 or ANSI sequences. - The console is also "ASCII", you cannot input e.g. any accented - letters. Because of obvious physical constraints the console is - also very small: (in Nokia 6600) 22 columns, 17 rows. - - The following libraries are available: - AnyDBM_File AutoLoader base Carp Config Cwd constant - DynaLoader Exporter File::Spec integer lib strict Symbol - vars warnings XSLoader - - The following extensions are available: - attributes Compress::Zlib Cwd Data::Dumper Devel::Peek - Digest::MD5 DynaLoader Fcntl File::Glob Filter::Util::Call - IO List::Util MIME::Base64 - PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes - - The following extensions are missing for various technical - reasons: - B ByteLoader Devel::DProf Devel::PPPort Encode GDBM_File - IPC::SysV NDBM_File Opcode PerlIO::encoding POSIX - re Safe Sys::Hostname Sys::Syslog - threads threads::shared Unicode::Normalize - - Using MakeMaker or the Module::* to build and install modules - is not supported. - - Building XS other than the ones in the core is not supported. - -Since this is 0.something release, any future releases are almost -guaranteed to be binary incompatible. As a sign of this the Symbian -symbol exports are kept unfrozen and the .def files fully rebuilt -every time. - -=item * - -0.2.0: October 2005 - - - Perl 5.9.3 (patch level 25741) - - Compress::Zlib and IO::Zlib supported - - sisify.pl added - -We maintain the binary incompatibility. - -=item * - -0.3.0: October 2005 - - - Perl 5.9.3 (patch level 25911) - - Series 80 2.0 and UIQ 2.1 support - -We maintain the binary incompatibility. - -=item * - -0.4.0: November 2005 - - - Perl 5.9.3 (patch level 26052) - - adding a sample Symbian extension - -We maintain the binary incompatibility. - -=item * - -0.4.1: December 2006 - - - 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 @@ -127,9 +127,6 @@ is a lexical C<$_> in scope. #if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING) # define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name) # define XS_INTERNAL(name) STATIC XSPROTO(name) -#elif defined(__SYMBIAN32__) -# define XS_EXTERNAL(name) EXPORT_C XSPROTO(name) -# define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name) #elif defined(__cplusplus) # define XS_EXTERNAL(name) extern "C" XSPROTO(name) # define XS_INTERNAL(name) static XSPROTO(name) @@ -2299,7 +2299,7 @@ Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, { dVAR; PERL_ARGS_ASSERT_DO_AEXEC5; -#if defined(__SYMBIAN32__) || defined(__LIBCATAMOUNT__) +#if defined(__LIBCATAMOUNT__) Perl_croak(aTHX_ "exec? I'm not *that* kind of operating system"); #else assert(sp >= mark); @@ -684,7 +684,7 @@ pM |bool|do_exec |NN const char* cmd p |bool|do_exec |NN const char* cmd #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) Ap |int |do_aspawn |NULLOK SV* really|NN SV** mark|NN SV** sp Ap |int |do_spawn |NN char* cmd Ap |int |do_spawn_nowait|NN char* cmd @@ -914,7 +914,7 @@ #define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c) #define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c) #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) #define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c) #define do_spawn(a) Perl_do_spawn(aTHX_ a) #define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL index 5c14cccc8d..9609664f13 100644 --- a/ext/DynaLoader/DynaLoader_pm.PL +++ b/ext/DynaLoader/DynaLoader_pm.PL @@ -486,14 +486,6 @@ sub dl_findfile { push(@names, $_); } my $dirsep = '/'; - <<$^O-eq-symbian>> - $dirsep = '\\'; - if ($0 =~ /^([a-z]):/i) { - my $drive = $1; - @dirs = map { "$drive:$_" } @dirs; - @dl_library_path = map { "$drive:$_" } @dl_library_path; - } - <</$^O-eq-symbian>> foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; <<$^O-eq-VMS>> diff --git a/ext/DynaLoader/dl_symbian.xs b/ext/DynaLoader/dl_symbian.xs deleted file mode 100644 index c2d1094aed..0000000000 --- a/ext/DynaLoader/dl_symbian.xs +++ /dev/null @@ -1,245 +0,0 @@ -/* dl_symbian.xs - * - * Platform: Symbian 7.0s - * Author: Jarkko Hietaniemi <jarkko.hietaniemi@nokia.com> - * Copyright: 2004, Nokia - * License: Artistic/GPL - * - */ - -/* - * In Symbian DLLs there is no name information, one can only access - * the functions by their ordinals. Perl, however, very much would like - * to load functions by their names. We fake this by having a special - * setup function at the ordinal 1 (this is arranged by building the DLLs - * in a special way). The setup function builds a Perl hash mapping the - * names to the ordinals, and the hash is then used by dlsym(). - * - */ - -#include <e32base.h> -#include <eikdll.h> -#include <utf.h> - -/* This is a useful pattern: first include the Symbian headers, - * only after that the Perl ones. Otherwise you will get a lot - * trouble because of Symbian's New(), Copy(), etc definitions. */ - -#define PERL_EXT -#define PERL_IN_DL_SYMBIAN_XS - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -START_EXTERN_C - -void *dlopen(const char *filename, int flag); -void *dlsym(void *handle, const char *symbol); -int dlclose(void *handle); -const char *dlerror(void); - -extern void* memset(void *s, int c, size_t n); -extern size_t strlen(const char *s); - -END_EXTERN_C - -#include "dlutils.c" - -#define RTLD_LAZY 0x0001 -#define RTLD_NOW 0x0002 -#define RTLD_GLOBAL 0x0004 - -#ifndef NULL -# define NULL 0 -#endif - -/* No need to pull in symbian_dll.cpp for this. */ -#define symbian_get_vars() ((void*)Dll::Tls()) - -const TInt KPerlDllSetupFunction = 1; - -typedef struct { - RLibrary handle; - TInt error; - HV* symbols; -} PerlSymbianLibHandle; - -typedef void (*PerlSymbianLibInit)(void *); - -void* dlopen(const char *filename, int flags) { - TBuf16<KMaxFileName> utf16fn; - const TUint8* utf8fn = (const TUint8*)filename; - PerlSymbianLibHandle* h = NULL; - TInt error; - - error = - CnvUtfConverter::ConvertToUnicodeFromUtf8(utf16fn, TPtrC8(utf8fn)); - if (error == KErrNone) { - h = new PerlSymbianLibHandle; - if (h) { - h->error = KErrNone; - h->symbols = (HV *)NULL; - } else - error = KErrNoMemory; - } - - if (h && error == KErrNone) { - error = (h->handle).Load(utf16fn); - if (error == KErrNone) { - TLibraryFunction init = (h->handle).Lookup(KPerlDllSetupFunction); - ((PerlSymbianLibInit)init)(h); - } else { - free(h); - h = NULL; - } - } - - if (h) - h->error = error; - - return h; -} - -void* dlsym(void *handle, const char *symbol) { - if (handle) { - dTHX; - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle; - HV* symbols = h->symbols; - if (symbols) { - SV** svp = hv_fetch(symbols, symbol, strlen(symbol), FALSE); - if (svp && *svp && SvIOK(*svp)) { - IV ord = SvIV(*svp); - if (ord > 0) - return (void*)((h->handle).Lookup(ord)); - } - } - } - return NULL; -} - -int dlclose(void *handle) { - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle; - if (h) { - (h->handle).Close(); - if (h->symbols) { - dTHX; - hv_undef(h->symbols); - h->symbols = NULL; - } - return 0; - } else - return 1; -} - -const char* dlerror(void) { - return 0; /* Bad interface: assumes static data. */ -} - -static void -dl_private_init(pTHX) -{ - (void)dl_generic_private_init(aTHX); -} - -MODULE = DynaLoader PACKAGE = DynaLoader - -PROTOTYPES: ENABLE - -BOOT: - (void)dl_private_init(aTHX); - - -void -dl_load_file(filename, flags=0) - char * filename - int flags - PREINIT: - PerlSymbianLibHandle* h; - CODE: -{ - ST(0) = sv_newmortal(); - h = (PerlSymbianLibHandle*)dlopen(filename, flags); - if (h && h->error == KErrNone) - sv_setiv(ST(0), PTR2IV(h)); - else - SaveError(aTHX_ "(dl_load_file %s %d)" - filename, h ? h->error : -1); -} - - -int -dl_unload_file(libhandle) - void * libhandle - CODE: - RETVAL = (dlclose(libhandle) == 0 ? 1 : 0); - OUTPUT: - RETVAL - - -void -dl_find_symbol(libhandle, symbolname, ign_err=0) - void * libhandle - char * symbolname - int ign_err - PREINIT: - void *sym; - CODE: - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)libhandle; - sym = dlsym(libhandle, symbolname); - ST(0) = sv_newmortal(); - if (sym) { - sv_setiv(ST(0), PTR2IV(sym)); - } else { - if (!ign_err) - SaveError(aTHX_ "(dl_find_symbol %s %d)", - symbolname, h ? h->error : -1); - } - - -void -dl_undef_symbols() - CODE: - - - -# These functions should not need changing on any platform: - -void -dl_install_xsub(perl_name, symref, filename="$Package") - char * perl_name - void * symref - const char * filename - CODE: - ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name, - (void(*)(pTHX_ CV *))symref, - filename, NULL, - XS_DYNAMIC_FILENAME))); - - -SV * -dl_error() - CODE: - dMY_CXT; - RETVAL = newSVsv(MY_CXT.x_dl_last_error); - OUTPUT: - RETVAL - -#if defined(USE_ITHREADS) - -void -CLONE(...) - CODE: - MY_CXT_CLONE; - - PERL_UNUSED_VAR(items); - - /* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid - * using Perl variables that belong to another thread, we create our - * own for this thread. - */ - MY_CXT.x_dl_last_error = newSVpvs(""); - -#endif - -# end. diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL index 84fd151d27..4f8acfee23 100644 --- a/ext/Errno/Errno_pm.PL +++ b/ext/Errno/Errno_pm.PL @@ -2,14 +2,11 @@ use ExtUtils::MakeMaker; use Config; use strict; -our $VERSION = "1.30"; +our $VERSION = "1.31"; my %err = (); -# Symbian cross-compiling environment. -my $IsSymbian = exists $ENV{SDK} && -d "$ENV{SDK}\\epoc32"; - -my $IsMSWin32 = $^O eq 'MSWin32' && !$IsSymbian; +my $IsMSWin32 = $^O eq 'MSWin32'; unlink "Errno.pm" if -f "Errno.pm"; unlink "Errno.tmp" if -f "Errno.tmp"; @@ -148,10 +145,6 @@ sub get_files { } elsif ($^O eq 'vos') { # avoid problem where cpp returns non-POSIX pathnames $file{'/system/include_library/errno.h'} = 1; - } elsif ($IsSymbian) { - my $SDK = $ENV{SDK}; - $SDK =~ s!\\!/!g; - $file{"$SDK/epoc32/include/libc/sys/errno.h"} = 1; } else { open(CPPI, '>', 'errno.c') or die "Cannot open errno.c"; @@ -244,12 +237,7 @@ sub write_errno_pm { $inhibit_linemarkers; open(CPPO,"$cpp errno.c |") or die "Cannot run '$cpp errno.c'"; - } elsif ($IsSymbian) { - my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . - $inhibit_linemarkers ." -"; - open(CPPO,"$cpp < errno.c |") - or die "Cannot exec $cpp"; - } else { + } else { my $cpp = default_cpp() . $inhibit_linemarkers; open(CPPO,"$cpp < errno.c |") or die "Cannot exec $cpp"; @@ -2480,7 +2480,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) if (xsinit) (*xsinit)(aTHX); /* in case linked C routines want magical variables */ #ifndef PERL_MICRO -#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) || defined(SYMBIAN) +#if defined(VMS) || defined(WIN32) || defined(DJGPP) || defined(__CYGWIN__) init_os_extras(); #endif #endif @@ -2505,9 +2505,6 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) * PL_utf8locale is conditionally turned on by * locale.c:Perl_init_i18nl10n() if the environment * look like the user wants to use UTF-8. */ -#if defined(__SYMBIAN32__) - PL_unicode = PERL_UNICODE_STD_FLAG; /* See PERL_SYMBIAN_CONSOLE_UTF8. */ -#endif # ifndef PERL_IS_MINIPERL if (PL_unicode) { /* Requires init_predump_symbols(). */ @@ -3861,10 +3858,6 @@ S_minus_v(pTHX) PerlIO_printf(PIO_stdout, "BS2000 (POSIX) port by Start Amadeus GmbH, 1998-1999\n"); #endif -#ifdef __SYMBIAN32__ - PerlIO_printf(PIO_stdout, - "Symbian port by Nokia, 2004-2005\n"); -#endif #ifdef BINARY_BUILD_NOTICE BINARY_BUILD_NOTICE; #endif @@ -4767,7 +4760,7 @@ S_init_perllib(pTHX) } } -#if defined(DOSISH) || defined(__SYMBIAN32__) +#if defined(DOSISH) # define PERLLIB_SEP ';' #elif defined(__VMS) # define PERLLIB_SEP PL_perllib_sep @@ -86,27 +86,6 @@ # undef _WIN32 #endif -#if defined(__SYMBIAN32__) || (defined(__VC32__) && defined(WINS)) -# ifndef SYMBIAN -# define SYMBIAN -# endif -#endif - -#ifdef __SYMBIAN32__ -# include "symbian/symbian_proto.h" -#endif - -/* Any stack-challenged places. The limit varies (and often - * is configurable), but using more than a kilobyte of stack - * is usually dubious in these systems. */ -#if defined(__SYMBIAN32__) -/* Symbian: need to work around the SDK features. * - * On WINS: MS VC5 generates calls to _chkstk, * - * if a "large" stack frame is allocated. * - * gcc on MARM does not generate calls like these. */ -# define USE_HEAP_INSTEAD_OF_STACK -#endif - /* Use the reentrant APIs like localtime_r and getpwent_r */ /* Win32 has naturally threadsafe libraries, no need to use any _r variants. * XXX KEEP makedef.pl copy of this code in sync */ @@ -999,10 +978,6 @@ extern char **myenviron; # include <sys/wait.h> #endif -#ifdef __SYMBIAN32__ -# undef _SC_ARG_MAX /* Symbian has _SC_ARG_MAX but no sysconf() */ -#endif - #if defined(HAS_SYSCALL) && !defined(HAS_SYSCALL_PROTO) EXTERN_C int syscall(int, ...); #endif @@ -1176,7 +1151,7 @@ EXTERN_C int usleep(unsigned int); #define PERL_USES_PL_PIDSTATUS #endif -#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(__SYMBIAN32__) +#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) #define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #endif @@ -1221,9 +1196,7 @@ EXTERN_C int usleep(unsigned int); # define Ptrdiff_t SSize_t #endif -#ifndef __SYMBIAN32__ # include <string.h> -#endif /* This comes after <stdlib.h> so we don't try to change the standard * library prototypes; we'll use our own in proto.h instead. */ @@ -2869,8 +2842,6 @@ typedef struct padname PADNAME; # else # include "vos/vosish.h" # endif -#elif defined(__SYMBIAN32__) -# include "symbian/symbianish.h" #elif defined(__HAIKU__) # include "haiku/haikuish.h" #else @@ -4121,7 +4092,7 @@ my_swap16(const U16 x) { #endif #ifndef __cplusplus -#if !(defined(WIN32) || defined(SYMBIAN)) +#if !defined(WIN32) Uid_t getuid (void); Uid_t geteuid (void); Gid_t getgid (void); @@ -236,7 +236,7 @@ PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names) PerlIO * PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) { -#if defined(PERL_MICRO) || defined(__SYMBIAN32__) +#if defined(PERL_MICRO) return NULL; #elif defined(PERL_IMPLICIT_SYS) return PerlSIO_fdupopen(f); diff --git a/pod/perl.pod b/pod/perl.pod index 0f99716f69..0aebd6ae0c 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -284,7 +284,6 @@ aux h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp perlqnx Perl notes for QNX perlriscos Perl notes for RISC OS perlsolaris Perl notes for Solaris - perlsymbian Perl notes for Symbian perlsynology Perl notes for Synology perltru64 Perl notes for Tru64 perlvms Perl notes for VMS diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 2b2df17a1f..d7531e4ac2 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -2235,8 +2235,8 @@ variable and glob that. =item exec? I'm not *that* kind of operating system -(F) The C<exec> function is not implemented on some systems, e.g., Symbian -OS. See L<perlport>. +(F) The C<exec> function is not implemented on some systems, e.g. +Catamount. See L<perlport>. =item %sExecution of %s aborted due to compilation errors. diff --git a/pod/perlport.pod b/pod/perlport.pod index 1715eafa1b..a9809802fd 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -1655,9 +1655,6 @@ code. (SunOS, Solaris, HP-UX) Does not automatically flush output handles on some platforms. -(Symbian OS) -Not supported. - =item exit (VMS) @@ -2301,8 +2298,6 @@ F<ext/Win32CORE/t/win32core.t> - may fail on recent cygwin installs. =back -=item Symbian - =item NetBSD =item FreeBSD @@ -2333,8 +2328,6 @@ Caveats: =back -=item Symbian (Series 60 v3, 3.2 and 5 - what else?) - =item Stratus VOS / OpenVOS =item AIX @@ -4145,18 +4145,6 @@ S_require_file(pTHX_ SV *sv) continue; sv_setpv(namesv, unixdir); sv_catpv(namesv, unixname); -#elif defined(__SYMBIAN32__) - if (PL_origfilename[0] && - PL_origfilename[1] == ':' && - !(dir[0] && dir[1] == ':')) - Perl_sv_setpvf(aTHX_ namesv, - "%c:%s\\%s", - PL_origfilename[0], - dir, name); - else - Perl_sv_setpvf(aTHX_ namesv, - "%s\\%s", - dir, name); #else /* The equivalent of Perl_sv_setpvf(aTHX_ namesv, "%s/%s", dir, name); @@ -2705,30 +2705,16 @@ PP(pp_ssockopt) PUSHs(sv); break; case OP_SSOCKOPT: { -#if defined(__SYMBIAN32__) -# define SETSOCKOPT_OPTION_VALUE_T void * -#else -# define SETSOCKOPT_OPTION_VALUE_T const char * -#endif - /* XXX TODO: We need to have a proper type (a Configure probe, - * etc.) for what the C headers think of the third argument of - * setsockopt(), the option_value read-only buffer: is it - * a "char *", or a "void *", const or not. Some compilers - * don't take kindly to e.g. assuming that "char *" implicitly - * promotes to a "void *", or to explicitly promoting/demoting - * consts to non/vice versa. The "const void *" is the SUS - * definition, but that does not fly everywhere for the above - * reasons. */ - SETSOCKOPT_OPTION_VALUE_T buf; + const char *buf; int aint; if (SvPOKp(sv)) { STRLEN l; - buf = (SETSOCKOPT_OPTION_VALUE_T) SvPV_const(sv, l); + buf = SvPV_const(sv, l); len = l; } else { aint = (int)SvIV(sv); - buf = (SETSOCKOPT_OPTION_VALUE_T) &aint; + buf = (const char *) &aint; len = sizeof(int); } if (PerlSock_setsockopt(fd, lvl, optname, buf, len) < 0) @@ -4494,14 +4480,14 @@ PP(pp_system) result = 0; if (PL_op->op_flags & OPf_STACKED) { SV * const really = *++MARK; -# if defined(WIN32) || defined(OS2) || defined(__SYMBIAN32__) || defined(__VMS) +# if defined(WIN32) || defined(OS2) || defined(__VMS) value = (I32)do_aspawn(really, MARK, SP); # else value = (I32)do_aspawn(really, (void **)MARK, (void **)SP); # endif } else if (SP - MARK != 1) { -# if defined(WIN32) || defined(OS2) || defined(__SYMBIAN32__) || defined(__VMS) +# if defined(WIN32) || defined(OS2) || defined(__VMS) value = (I32)do_aspawn(NULL, MARK, SP); # else value = (I32)do_aspawn(NULL, (void **)MARK, (void **)SP); @@ -6894,7 +6894,7 @@ PERL_CALLCONV_NO_RET void win32_croak_not_implemented(const char * fname) assert(fname) #endif -#if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS) +#if defined(WIN32) || defined(VMS) PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp); #define PERL_ARGS_ASSERT_DO_ASPAWN \ assert(mark); assert(sp) @@ -8854,13 +8854,7 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append) else { /*The big, slow, and stupid way. */ -#ifdef USE_HEAP_INSTEAD_OF_STACK /* Even slower way. */ - STDCHAR *buf = NULL; - Newx(buf, 8192, STDCHAR); - assert(buf); -#else STDCHAR buf[8192]; -#endif screamer2: if (rslen) { @@ -8909,9 +8903,6 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append) goto screamer2; } -#ifdef USE_HEAP_INSTEAD_OF_STACK - Safefree(buf); -#endif } if (rspara) { /* have to do this both before and after */ diff --git a/symbian/PerlApp.cpp b/symbian/PerlApp.cpp deleted file mode 100644 index ffca7afc52..0000000000 --- a/symbian/PerlApp.cpp +++ /dev/null @@ -1,546 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlApp application is licensed under the same terms as Perl itself. - * - * Note that this PerlApp is for Symbian/Series 60/80/UIQ smartphones - * and it has nothing whatsoever to do with the ActiveState PerlApp. */ - -#include "PerlApp.h" - -#include <apparc.h> -#include <e32base.h> -#include <e32cons.h> -#include <eikenv.h> -#include <bautils.h> -#include <eikappui.h> -#include <utf.h> -#include <f32file.h> - -#include <coemain.h> - -#ifndef PerlAppMinimal - -#include "PerlApp.hrh" - -#endif //#ifndef PerlAppMinimal - -#define PERL_GLOBAL_STRUCT -#define PERL_GLOBAL_STRUCT_PRIVATE - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#include "PerlBase.h" -#include "PerlUtil.h" - -#define symbian_get_vars() Dll::Tls() // Not visible from perlXYZ.lib? - -const TUid KPerlAppUid = { -#ifdef PerlAppMinimalUid - PerlAppMinimalUid -#else - 0x102015F6 -#endif -}; - -_LIT(KDefaultScript, "default.pl"); - -#ifdef PerlAppMinimalName -_LIT_NO_L(KAppName, PerlAppMinimalName); -#else -_LIT(KAppName, "PerlApp"); -#endif - -#ifndef PerlAppMinimal - -_LIT_NO_L(KFlavor, PERL_SYMBIANSDK_FLAVOR); -_LIT(KAboutFormat, - "Perl %d.%d.%d, Symbian port %d.%d.%d, built for %S SDK %d.%d"); -_LIT(KCopyrightFormat, - "Copyright 1987-2005 Larry Wall and others, Symbian port Copyright Nokia 2004-2005"); -_LIT(KInboxPrefix, "\\System\\Mail\\"); -_LIT(KScriptPrefix, "\\Perl\\"); - -_LIT8(KModulePrefix, SITELIB); // SITELIB from Perl config.h - -typedef TBuf<256> TMessageBuffer; -typedef TBuf8<256> TPeekBuffer; -typedef TBuf8<256> TFileName8; - -#endif // #ifndef PerlAppMinimal - -static void DoRunScriptL(TFileName aScriptName); - -TUid CPerlAppApplication::AppDllUid() const -{ - return KPerlAppUid; -} - -enum TPerlAppPanic -{ - EPerlAppCommandUnknown = 1 -}; - -void Panic(TPerlAppPanic aReason) -{ - User::Panic(KAppName, aReason); -} - -#ifndef PerlAppMinimal - -// The isXXX() come from the Perl headers. -#define FILENAME_IS_ABSOLUTE(n) \ - (isALPHA(((n)[0])) && ((n)[1]) == ':' && ((n)[2]) == '\\') - -static TBool IsInPerl(TFileName aFileName) -{ - TInt offset = aFileName.FindF(KScriptPrefix); - return ((offset == 0 && // \foo - aFileName[0] == '\\') - || - (offset == 2 && // x:\foo - FILENAME_IS_ABSOLUTE(aFileName))); -} - -static TBool IsInInbox(TFileName aFileName) -{ - TInt offset = aFileName.FindF(KInboxPrefix); - return ((offset == 0 && // \foo - aFileName[0] == '\\') - || - (offset == 2 && // x:\foo - FILENAME_IS_ABSOLUTE(aFileName))); -} - -static TBool IsPerlModule(TParsePtrC aParsed) -{ - return aParsed.Ext().CompareF(_L(".pm")) == 0; -} - -static TBool IsPerlScript(TParsePtrC aParsed) -{ - return aParsed.Ext().CompareF(_L(".pl")) == 0; -} - -static void CopyFromInboxL(RFs aFs, const TFileName& aSrc, const TFileName& aDst) -{ - TBool proceed = ETrue; - TMessageBuffer message; - - message.Format(_L("%S is untrusted. Install only if you trust provider."), &aDst); - if (CPerlUi::OkCancelDialogL(message)) { - message.Format(_L("Install as %S?"), &aDst); - if (CPerlUi::OkCancelDialogL(message)) { - if (BaflUtils::FileExists(aFs, aDst)) { - message.Format(_L("Replace old %S?"), &aDst); - if (!CPerlUi::OkCancelDialogL(message)) - proceed = EFalse; - } - if (proceed) { - // Create directory? - TInt err = BaflUtils::CopyFile(aFs, aSrc, aDst); - if (err == KErrNone) { - message.Format(_L("Installed %S"), &aDst); - CPerlUi::InformationNoteL(message); - } - else { - message.Format(_L("Failure %d installing %S"), err, &aDst); - CPerlUi::WarningNoteL(message); - } - } - } - } -} - -static TBool FindPerlPackageName(TPeekBuffer aPeekBuffer, TInt aOff, TFileName& aFn) -{ - aFn.SetMax(); - TInt m = aFn.MaxLength(); - TInt n = aPeekBuffer.Length(); - TInt i = 0; - TInt j = aOff; - - aFn.SetMax(); - // The following is a little regular expression - // engine that matches Perl package names. - if (j < n && isSPACE(aPeekBuffer[j])) { - while (j < n && isSPACE(aPeekBuffer[j])) j++; - if (j < n && isALPHA(aPeekBuffer[j])) { - while (j < n && isALNUM(aPeekBuffer[j])) { - while (j < n && - isALNUM(aPeekBuffer[j]) && - i < m) - aFn[i++] = aPeekBuffer[j++]; - if (j + 1 < n && - aPeekBuffer[j ] == ':' && - aPeekBuffer[j + 1] == ':' && - i < m) { - aFn[i++] = '\\'; - j += 2; - if (j < n && - isALPHA(aPeekBuffer[j])) { - while (j < n && - isALNUM(aPeekBuffer[j]) && - i < m) - aFn[i++] = aPeekBuffer[j++]; - } - } - } - while (j < n && isSPACE(aPeekBuffer[j])) j++; - if (j < n && aPeekBuffer[j] == ';' && i + 3 < m) { - aFn.SetLength(i); - aFn.Append(_L(".pm")); - return ETrue; - } - } - } - return EFalse; -} - -static void GuessPerlModule(TFileName& aGuess, TPeekBuffer aPeekBuffer, TParse aDrive) -{ - TInt offset = aPeekBuffer.Find(_L8("package")); - if (offset != KErrNotFound) { - const TInt KPackageLen = 7; - TFileName q; - - if (!FindPerlPackageName(aPeekBuffer, offset + KPackageLen, q)) - return; - - TFileName8 p; - p.Copy(aDrive.Drive()); - p.Append(KModulePrefix); - - aGuess.SetMax(); - if (p.Length() + 1 + q.Length() < aGuess.MaxLength()) { - TInt i = 0, j; - - for (j = 0; j < p.Length(); j++) - aGuess[i++] = p[j]; - aGuess[i++] = '\\'; - for (j = 0; j < q.Length(); j++) - aGuess[i++] = q[j]; - aGuess.SetLength(i); - } - else - aGuess.SetLength(0); - } -} - -static TBool LooksLikePerlL(TPeekBuffer aPeekBuffer) -{ - return aPeekBuffer.Left(2).Compare(_L8("#!")) == 0 && - aPeekBuffer.Find(_L8("perl")) != KErrNotFound; -} - -static TBool InstallStuffL(const TFileName &aSrc, TParse aDrive, TParse aFile, TPeekBuffer aPeekBuffer, RFs aFs) -{ - TFileName aDst; - TPtrC drive = aDrive.Drive(); - TPtrC namext = aFile.NameAndExt(); - - aDst.Format(_L("%S%S%S"), &drive, &KScriptPrefix, &namext); - if (!IsPerlScript(aDst) && !LooksLikePerlL(aPeekBuffer)) { - aDst.SetLength(0); - if (IsPerlModule(aDst)) - GuessPerlModule(aDst, aPeekBuffer, aDrive); - } - if (aDst.Length() > 0) { - CopyFromInboxL(aFs, aSrc, aDst); - return ETrue; - } - - return EFalse; -} - -static TBool RunStuffL(const TFileName& aScriptName, TPeekBuffer aPeekBuffer) -{ - TBool isModule = EFalse; - - if (IsInPerl(aScriptName) && - (IsPerlScript(aScriptName) || - (isModule = IsPerlModule(aScriptName)) || - LooksLikePerlL(aPeekBuffer))) { - TMessageBuffer message; - - if (isModule) - message.Format(_L("Really run module %S?"), &aScriptName); - else - message.Format(_L("Run %S?"), &aScriptName); - if (CPerlUi::YesNoDialogL(message)) - DoRunScriptL(aScriptName); - return ETrue; - } - - return EFalse; -} - -void CPerlAppAppUi::InstallOrRunL(const TFileName& aFileName) -{ - TParse aFile; - TParse aDrive; - TMessageBuffer message; - - aFile.Set(aFileName, NULL, NULL); - if (FILENAME_IS_ABSOLUTE(aFileName)) { - aDrive.Set(aFileName, NULL, NULL); - } else { - TFileName appName = - CEikonEnv::Static()->EikAppUi()->Application()->AppFullName(); - aDrive.Set(appName, NULL, NULL); - } - if (!iFs) - iFs = &CEikonEnv::Static()->FsSession(); - RFile f; - TInt err = f.Open(*iFs, aFileName, EFileRead); - if (err == KErrNone) { - TPeekBuffer aPeekBuffer; - err = f.Read(aPeekBuffer); - f.Close(); // Release quickly. - if (err == KErrNone) { - if (!(IsInInbox(aFileName) ? - InstallStuffL(aFileName, aDrive, aFile, aPeekBuffer, *iFs) : - RunStuffL(aFileName, aPeekBuffer))) { - message.Format(_L("Failed for file %S"), &aFileName); - CPerlUi::WarningNoteL(message); - } - } else { - message.Format(_L("Error %d reading %S"), err, &aFileName); - CPerlUi::WarningNoteL(message); - } - } else { - message.Format(_L("Error %d opening %S"), err, &aFileName); - CPerlUi::WarningNoteL(message); - } - if (iDoorObserver) - delete CEikonEnv::Static()->EikAppUi(); - else - Exit(); -} - -#endif /* #ifndef PerlAppMinimal */ - -CPerlAppAppUi::~CPerlAppAppUi() -{ - if (iAppView) { - iEikonEnv->RemoveFromStack(iAppView); - delete iAppView; - iAppView = NULL; - } - if (iFs) { - delete iFs; - iFs = NULL; - } - if (iDoorObserver) // Otherwise the embedding application waits forever. - iDoorObserver->NotifyExit(MApaEmbeddedDocObserver::EEmpty); -} - -static void DoRunScriptL(TFileName aScriptName) -{ - CPerlBase* perl = CPerlBase::NewInterpreterLC(); - TRAPD(error, perl->RunScriptL(aScriptName)); -#ifndef PerlAppMinimal - if (error != KErrNone) { - TMessageBuffer message; - message.Format(_L("Error %d"), error); - CPerlUi::YesNoDialogL(message); - } -#endif // #ifndef PerlAppMinimal - CleanupStack::PopAndDestroy(perl); -} - -#ifndef PerlAppMinimal - -void CPerlAppAppUi::OpenFileL(const TDesC& aFileName) -{ - InstallOrRunL(aFileName); - return; -} - -#endif // #ifndef PerlAppMinimal - -TBool CPerlAppAppUi::ProcessCommandParametersL(TApaCommand aCommand, TFileName& /* aDocumentName */, const TDesC8& /* aTail */) -{ - if (aCommand == EApaCommandRun) { - TFileName appName = Application()->AppFullName(); - TParse p; - p.Set(KDefaultScript, &appName, NULL); - TEntry aEntry; - RFs aFs; - aFs.Connect(); - if (aFs.Entry(p.FullName(), aEntry) == KErrNone) { - DoRunScriptL(p.FullName()); - Exit(); - } - } - return aCommand == EApaCommandOpen ? ETrue : EFalse; -} - -#ifndef PerlAppMinimal - -void CPerlAppAppUi::SetFs(const RFs& aFs) -{ - iFs = (RFs*) &aFs; -} - -#endif // #ifndef PerlAppMinimal - -void CPerlAppAppUi::DoHandleCommandL(TInt aCommand) { -#ifndef PerlAppMinimal - TMessageBuffer message; -#endif // #ifndef PerlAppMinimal - - switch(aCommand) - { -#ifndef PerlAppMinimal - case EPerlAppCommandAbout: - { - message.Format(KAboutFormat, - PERL_REVISION, - PERL_VERSION, - PERL_SUBVERSION, - PERL_SYMBIANPORT_MAJOR, - PERL_SYMBIANPORT_MINOR, - PERL_SYMBIANPORT_PATCH, - &KFlavor, - PERL_SYMBIANSDK_MAJOR, - PERL_SYMBIANSDK_MINOR - ); - CPerlUi::InformationNoteL(message); - } - break; - case EPerlAppCommandTime: - { - CPerlBase* perl = CPerlBase::NewInterpreterLC(); - const char *const argv[] = - { "perl", "-le", - "print 'Running in ', $^O, \"\\n\", scalar localtime" }; - perl->ParseAndRun(sizeof(argv)/sizeof(char*), (char **)argv, 0); - CleanupStack::PopAndDestroy(perl); - } - break; -#ifndef __UIQ__ - case EPerlAppCommandRunFile: - { - TFileName aScriptUtf16; - aScriptUtf16.Copy(_L("C:\\")); - if (CPerlUi::FileQueryDialogL(aScriptUtf16)) - DoRunScriptL(aScriptUtf16); - } - break; -#endif - case EPerlAppCommandOneLiner: - { -#ifdef __SERIES60__ - _LIT(prompt, "Oneliner:"); -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - _LIT(prompt, "Code:"); // The title has "Oneliner" already. -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ - CPerlAppAppUi* cAppUi = - static_cast<CPerlAppAppUi*>(CEikonEnv::Static()->EikAppUi()); - if (CPerlUi::TextQueryDialogL(_L("Oneliner"), - prompt, - cAppUi->iOneLiner, - KPerlUiOneLinerSize)) { - const TUint KPerlUiUtf8Multi = 3; // Expansion multiplier. - TBuf8<KPerlUiUtf8Multi * KPerlUiOneLinerSize> utf8; - - CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8, - cAppUi->iOneLiner); - CPerlBase* perl = CPerlBase::NewInterpreterLC(); -#ifdef __SERIES90__ - int argc = 5; -#else - int argc = 3; -#endif - char **argv = (char**) malloc(argc * sizeof(char *)); - User::LeaveIfNull(argv); - - TCleanupItem argvCleanupItem = TCleanupItem(free, argv); - CleanupStack::PushL(argvCleanupItem); - argv[0] = (char *) "perl"; - argv[1] = (char *) "-le"; -#ifdef __SERIES90__ - argv[2] = (char *) "unshift @INC, 'C:/Mydocs';"; - argv[3] = (char *) "-e"; - argv[4] = (char *) utf8.PtrZ(); -#else - argv[2] = (char *) utf8.PtrZ(); -#endif - perl->ParseAndRun(argc, argv); - CleanupStack::PopAndDestroy(2, perl); - } - } - break; - case EPerlAppCommandCopyright: - { - message.Format(KCopyrightFormat); - CPerlUi::InformationNoteL(message); - } - break; - case EPerlAppCommandAboutCopyright: - { - TMessageBuffer m1; - TMessageBuffer m2; - m1.Format(KAboutFormat, - PERL_REVISION, - PERL_VERSION, - PERL_SUBVERSION, - PERL_SYMBIANPORT_MAJOR, - PERL_SYMBIANPORT_MINOR, - PERL_SYMBIANPORT_PATCH, - &KFlavor, - PERL_SYMBIANSDK_MAJOR, - PERL_SYMBIANSDK_MINOR - ); - CPerlUi::InformationNoteL(m1); - User::After((TTimeIntervalMicroSeconds32) (1000*1000)); // 1 sec. - m2.Format(KCopyrightFormat); - CPerlUi::InformationNoteL(m2); - } - break; -#endif // #ifndef PerlAppMinimal - default: - Panic(EPerlAppCommandUnknown); - } -} - -CApaDocument* CPerlAppApplication::CreateDocumentL() -{ - CPerlAppDocument* cDoc = new (ELeave) CPerlAppDocument(*this); - return cDoc; -} - -CEikAppUi* CPerlAppDocument::CreateAppUiL() -{ - CPerlAppAppUi* cAppUi = new (ELeave) CPerlAppAppUi(); - return cAppUi; -} - - -#ifndef PerlAppMinimal - -CFileStore* CPerlAppDocument::OpenFileL(TBool aDoOpen, const TDesC& aFileName, RFs& aFs) -{ - CPerlAppAppUi* cAppUi = - static_cast<CPerlAppAppUi*>(CEikonEnv::Static()->EikAppUi()); - cAppUi->SetFs(aFs); - if (aDoOpen) - cAppUi->OpenFileL(aFileName); - return NULL; -} - -#endif // #ifndef PerlAppMinimal - -EXPORT_C CApaApplication* NewApplication() -{ - return new CPerlAppApplication; -} - -GLDEF_C TInt E32Dll(TDllReason /*aReason*/) -{ - return KErrNone; -} - diff --git a/symbian/PerlApp.h b/symbian/PerlApp.h deleted file mode 100644 index cbf1963cf4..0000000000 --- a/symbian/PerlApp.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlApp application is licensed under the same terms as Perl itself. */ - -#ifndef __PerlApp_h__ -#define __PerlApp_h__ - -#include "PerlUi.h" - -/* The source code can be compiled into "PerlApp" which is the simple - * launchpad application/demonstrator, or into "PerlAppMinimal", which - * is the minimal Perl launchpad application. Define the cpp symbols - * CreatePerlAppMinimal (a boolean), PerlAppMinimalUid (the Symbian - * application uid in the 0x... format), and PerlAppMinimalName (a C - * wide string, with the L prefix) to compile as "PerlAppMinimal". */ - -// #define CreatePerlAppMinimal - -#ifdef CreatePerlAppMinimal -# define PerlAppMinimal -# ifndef PerlAppMinimalUid // PerlApp is ...F6, PerlRecog is ...F7 -# define PerlAppMinimalUid 0x102015F8 -# endif -# ifndef PerlAppMinimalName -# define PerlAppMinimalName L"PerlAppMinimal" -# endif -#endif - -#ifdef PerlAppMinimal -# ifndef PerlAppMinimalUid -# error PerlAppMinimal defined but PerlAppMinimalUid undefined -# endif -# ifndef PerlAppMinimalName -# error PerlAppMinimal defined but PerlAppMinimalName undefined -# endif -#endif - -class CPerlAppDocument : public CgPerlUiDocument -{ - public: - CPerlAppDocument(CEikApplication& aApp) : CgPerlUiDocument(aApp) {;} -#ifndef PerlAppMinimal - CFileStore* OpenFileL(TBool aDoOpen, const TDesC& aFilename, RFs& aFs); -#endif // #ifndef PerlAppMinimal - private: // from CEikDocument - CEikAppUi* CreateAppUiL(); -}; - -class CPerlAppApplication : public CPerlUiApplication -{ - private: - CApaDocument* CreateDocumentL(); - TUid AppDllUid() const; -}; - -class CPerlAppAppView; - -class CPerlAppAppUi : public CPerlUiAppUi -{ - public: - TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail); - void DoHandleCommandL(TInt aCommand); -#ifndef PerlAppMinimal - void OpenFileL(const TDesC& aFileName); - void InstallOrRunL(const TFileName& aFileName); - void SetFs(const RFs& aFs); -#endif // #ifndef PerlAppMinimal - ~CPerlAppAppUi(); - private: - RFs* iFs; -}; - -class CPerlAppAppView : public CPerlUiAppView -{ - public: -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - void HandleCommandL(TInt aCommand); -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ -}; - -#endif // __PerlApp_h__ diff --git a/symbian/PerlApp.hrh b/symbian/PerlApp.hrh deleted file mode 100644 index fd37a96a37..0000000000 --- a/symbian/PerlApp.hrh +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlApp application is licensed under the same terms as Perl itself. */ - -#ifndef __PerlApp_HRH__ -#define __PerlApp_HRH__ - -enum TPerlAppIds -{ - EPerlAppCommandAbout = 1024, // start value must not be 0 - EPerlAppCommandTime = 1025, - EPerlAppCommandRunFile = 1026, - EPerlAppCommandOneLiner = 1027, - EPerlAppCommandCopyright = 1028, - EPerlAppCommandAboutCopyright = 1029, - EPerlAppLast = 1099 // no comma here -}; - -#endif // __PerlApp_HRH__ diff --git a/symbian/PerlAppAif.rss b/symbian/PerlAppAif.rss deleted file mode 100644 index 03e17cd5ba..0000000000 --- a/symbian/PerlAppAif.rss +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlApp application is licensed under the same terms as Perl itself. */ - -#include <aiftool.rh> - -RESOURCE AIF_DATA -{ - app_uid = 0x102015F6; - embeddability = KAppEmbeddable; - hidden = KAppNotHidden; - launch = KAppLaunchInForeground; - newfile = KAppDoesNotSupportNewFile; - datatype_list = { - DATATYPE - { - priority = EDataTypePriorityNormal; - type = "x-application/x-perl"; - } - }; -} diff --git a/symbian/PerlBase.cpp b/symbian/PerlBase.cpp deleted file mode 100644 index 9312abeb55..0000000000 --- a/symbian/PerlBase.cpp +++ /dev/null @@ -1,425 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The CPerlBase class is licensed under the same terms as Perl itself. */ - -/* See PerlBase.pod for documentation. */ - -#define PERLBASE_CPP - -#include <e32cons.h> -#include <e32keys.h> -#include <utf.h> - -#include "PerlBase.h" - -const TUint KPerlConsoleBufferMaxTChars = 0x0200; -const TUint KPerlConsoleNoPos = 0xffff; - -CPerlBase::CPerlBase() -{ -} - -EXPORT_C void CPerlBase::Destruct() -{ - dTHX; - iState = EPerlDestroying; - if (iConsole) { - iConsole->Printf(_L("[Any key to continue]")); - iConsole->Getch(); - } - if (iPerl) { - (void)perl_destruct(iPerl); - perl_free(iPerl); - iPerl = NULL; - PERL_SYS_TERM(); - } - if (iConsole) { - delete iConsole; - iConsole = NULL; - } - if (iConsoleBuffer) { - free(iConsoleBuffer); - iConsoleBuffer = NULL; - } -#ifdef PERL_GLOBAL_STRUCT - if (iVars) { - PerlInterpreter* my_perl = NULL; - free_global_struct(iVars); - iVars = NULL; - } -#endif -} - -CPerlBase::~CPerlBase() -{ - Destruct(); -} - -EXPORT_C CPerlBase* CPerlBase::NewInterpreter(TBool aCloseStdlib, - void (*aStdioInitFunc)(void*), - void *aStdioInitCookie) -{ - CPerlBase* self = new (ELeave) CPerlBase; - self->iCloseStdlib = aCloseStdlib; - self->iStdioInitFunc = aStdioInitFunc; - self->iStdioInitCookie = aStdioInitCookie; - self->ConstructL(); - PERL_APPCTX_SET(self); - return self; -} - -EXPORT_C CPerlBase* CPerlBase::NewInterpreterL(TBool aCloseStdlib, - void (*aStdioInitFunc)(void*), - void *aStdioInitCookie) -{ - CPerlBase* self = - CPerlBase::NewInterpreterLC(aCloseStdlib, - aStdioInitFunc, - aStdioInitCookie); - CleanupStack::Pop(self); - return self; -} - -EXPORT_C CPerlBase* CPerlBase::NewInterpreterLC(TBool aCloseStdlib, - void (*aStdioInitFunc)(void*), - void *aStdioInitCookie) -{ - CPerlBase* self = new (ELeave) CPerlBase; - CleanupStack::PushL(self); - self->iCloseStdlib = aCloseStdlib; - self->iStdioInitFunc = aStdioInitFunc; - self->iStdioInitCookie = aStdioInitCookie; - self->ConstructL(); - PERL_APPCTX_SET(self); - return self; -} - -static int _console_stdin(void* cookie, char* buf, int n) -{ - return ((CPerlBase*)cookie)->ConsoleRead(0, buf, n); -} - -static int _console_stdout(void* cookie, const char* buf, int n) -{ - return ((CPerlBase*)cookie)->ConsoleWrite(1, buf, n); -} - -static int _console_stderr(void* cookie, const char* buf, int n) -{ - return ((CPerlBase*)cookie)->ConsoleWrite(2, buf, n); -} - -void CPerlBase::StdioRewire(void *arg) { - _REENT->_sf[0]._cookie = (void*)this; - _REENT->_sf[0]._read = &_console_stdin; - _REENT->_sf[0]._write = 0; - _REENT->_sf[0]._seek = 0; - _REENT->_sf[0]._close = 0; - - _REENT->_sf[1]._cookie = (void*)this; - _REENT->_sf[1]._read = 0; - _REENT->_sf[1]._write = &_console_stdout; - _REENT->_sf[1]._seek = 0; - _REENT->_sf[1]._close = 0; - - _REENT->_sf[2]._cookie = (void*)this; - _REENT->_sf[2]._read = 0; - _REENT->_sf[2]._write = &_console_stderr; - _REENT->_sf[2]._seek = 0; - _REENT->_sf[2]._close = 0; -} - -void CPerlBase::ConstructL() -{ - iState = EPerlNone; -#ifdef PERL_GLOBAL_STRUCT - PerlInterpreter *my_perl = 0; - iVars = init_global_struct(); - User::LeaveIfNull(iVars); -#endif - iPerl = perl_alloc(); - User::LeaveIfNull(iPerl); - iState = EPerlAllocated; - perl_construct(iPerl); // returns void - if (!iStdioInitFunc) { - iConsole = - Console::NewL(_L("Perl Console"), - TSize(KConsFullScreen, KConsFullScreen)); - iConsoleBuffer = - (TUint16*)malloc(sizeof(TUint) * - KPerlConsoleBufferMaxTChars); - User::LeaveIfNull(iConsoleBuffer); - iConsoleUsed = 0; -#ifndef USE_PERLIO - iStdioInitFunc = &StdioRewire; -#endif - } - if (iStdioInitFunc) - iStdioInitFunc(iStdioInitCookie); - iReadFunc = NULL; - iWriteFunc = NULL; - iState = EPerlConstructed; -} - -EXPORT_C PerlInterpreter* CPerlBase::GetInterpreter() -{ - return (PerlInterpreter*) iPerl; -} - -#ifdef PERL_MINIPERL -static void boot_DynaLoader(pTHX_ CV* cv) { } -#else -EXTERN_C void boot_DynaLoader(pTHX_ CV* cv); -#endif - -static void xs_init(pTHX) -{ - dXSUB_SYS; - newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__); -} - -EXPORT_C TInt CPerlBase::RunScriptL(const TDesC& aFileName, - int argc, - char **argv, - char *envp[]) { - TBuf8<KMaxFileName> scriptUtf8; - TInt error; - error = CnvUtfConverter::ConvertFromUnicodeToUtf8(scriptUtf8, aFileName); - User::LeaveIfError(error); - char *filename = (char*)scriptUtf8.PtrZ(); - struct stat st; - if (stat(filename, &st) == -1) - return KErrNotFound; - if (argc < 2) - return KErrGeneral; /* Anything better? */ - char **Argv = (char**)malloc(argc * sizeof(char*)); - User::LeaveIfNull(Argv); - TCleanupItem ArgvCleanupItem = TCleanupItem(free, Argv); - CleanupStack::PushL(ArgvCleanupItem); - Argv[0] = "perl"; - if (argv && argc > 2) - for (int i = 2; i < argc - 1; i++) - Argv[i] = argv[i]; - Argv[argc - 1] = filename; - error = this->ParseAndRun(argc, Argv, envp); - CleanupStack::PopAndDestroy(Argv); - Argv = 0; - return error == 0 ? KErrNone : KErrGeneral; -} - - -EXPORT_C int CPerlBase::Parse(int argc, char *argv[], char *envp[]) -{ - if (iState == EPerlConstructed) { - const char* const NullArgv[] = { "perl", "-e", "0" }; - if (argc == 0 || argv == 0) { - argc = 3; - argv = (char**) NullArgv; - } - PERL_SYS_INIT(&argc, &argv); - int parsed = perl_parse(iPerl, xs_init, argc, argv, envp); - if (parsed == 0) - iState = EPerlParsed; - return parsed; - } else - return -1; -} - -EXPORT_C void CPerlBase::SetupExit() -{ - if (iState == EPerlParsed) { - diTHX; - PL_exit_flags |= PERL_EXIT_DESTRUCT_END; - // PL_perl_destruct level of 2 would be nice but - // it causes "Unbalanced scopes" for some reason. - PL_perl_destruct_level = 1; - } -} - -EXPORT_C int CPerlBase::Run() -{ - if (iState == EPerlParsed) { - SetupExit(); - iState = EPerlRunning; - int ran = perl_run(iPerl); - iState = (ran == 0) ? EPerlSuccess : EPerlFailure; - return ran; - } else - return -1; -} - -EXPORT_C int CPerlBase::ParseAndRun(int argc, char *argv[], char *envp[]) -{ - int parsed = Parse(argc, argv, envp); - int ran = (parsed == 0) ? Run() : -1; - return ran; -} - -int CPerlBase::ConsoleReadLine() -{ - if (!iConsole) - return -EIO; - - TUint currX = KPerlConsoleNoPos; - TUint currY = KPerlConsoleNoPos; - TUint prevX = KPerlConsoleNoPos; - TUint prevY = KPerlConsoleNoPos; - TUint maxX = KPerlConsoleNoPos; - TUint offset = 0; - - for (;;) { - TKeyCode code = iConsole->Getch(); - - if (code == EKeyLineFeed || code == EKeyEnter) { - if (offset < KPerlConsoleBufferMaxTChars) { - iConsoleBuffer[offset++] = '\n'; - iConsole->Printf(_L("\n")); - iConsoleBuffer[offset++] = 0; - } - break; - } - else { - TBool doBackward = EFalse; - TBool doBackspace = EFalse; - - prevX = currX; - prevY = currY; - if (code == EKeyBackspace) { - if (offset > 0) { - iConsoleBuffer[--offset] = 0; - doBackward = ETrue; - doBackspace = ETrue; - } - } - else if (offset < KPerlConsoleBufferMaxTChars) { - TChar ch = TChar(code); - - if (ch.IsPrint()) { - iConsoleBuffer[offset++] = (unsigned short)code; - iConsole->Printf(_L("%c"), code); - } - } - currX = iConsole->WhereX(); - currY = iConsole->WhereY(); - if (maxX == KPerlConsoleNoPos && prevX != KPerlConsoleNoPos && - prevY != KPerlConsoleNoPos && currY == prevY + 1) - maxX = prevX; - if (doBackward) { - if (currX > 0) - iConsole->SetPos(currX - 1); - else if (currY > 0) - iConsole->SetPos(maxX, currY - 1); - if (doBackspace) { - TUint nowX = iConsole->WhereX(); - TUint nowY = iConsole->WhereY(); - iConsole->Printf(_L(" ")); /* scrub */ - iConsole->SetPos(nowX, nowY); - } - } - } - } - - return offset; -} - -int CPerlBase::ConsoleRead(const int fd, char* buf, int n) -{ - if (iReadFunc) - return iReadFunc(fd, buf, n); - - if (!iConsole) { - errno = EIO; - return -1; - } - - if (n < 0) { - errno = EINVAL; - return -1; - } - - if (n == 0) - return 0; - - TBuf8<4 * KPerlConsoleBufferMaxTChars> aBufferUtf8; - TBuf16<KPerlConsoleBufferMaxTChars> aBufferUtf16; - int length = ConsoleReadLine(); - int i; - - iConsoleUsed += length; - - aBufferUtf16.SetLength(length); - for (i = 0; i < length; i++) - aBufferUtf16[i] = iConsoleBuffer[i]; - aBufferUtf8.SetLength(4 * length); - - CnvUtfConverter::ConvertFromUnicodeToUtf8(aBufferUtf8, aBufferUtf16); - - char *pUtf8 = (char*)aBufferUtf8.PtrZ(); - int nUtf8 = aBufferUtf8.Size(); - if (nUtf8 > n) - nUtf8 = n; /* Potential data loss. */ -#ifdef PERL_SYMBIAN_CONSOLE_UTF8 - for (i = 0; i < nUtf8; i++) - buf[i] = pUtf8[i]; -#else - dTHX; - for (i = 0; i < nUtf8; i+= UTF8SKIP(pUtf8 + i)) { - unsigned long u = utf8_to_uvchr_buf((U8*)(pUtf8 + i), - (U8*)(pUtf8 + nUtf8), - 0); - if (u > 0xFF) { - iConsole->Printf(_L("(keycode > 0xFF)\n")); - buf[i] = 0; - return -1; - } - buf[i] = u; - } -#endif - if (nUtf8 < n) - buf[nUtf8] = 0; - return nUtf8; -} - -int CPerlBase::ConsoleWrite(const int fd, const char* buf, int n) -{ - if (iWriteFunc) - return iWriteFunc(fd, buf, n); - - if (!iConsole) { - errno = EIO; - return -1; - } - - if (n < 0) { - errno = EINVAL; - return -1; - } - - if (n == 0) - return 0; - - int wrote = 0; -#ifdef PERL_SYMBIAN_CONSOLE_UTF8 - dTHX; - if (is_utf8_string((U8*)buf, n)) { - for (int i = 0; i < n; i += UTF8SKIP(buf + i)) { - TChar u = valid_utf8_to_uvchr((U8*)(buf + i), 0); - iConsole->Printf(_L("%c"), u); - wrote++; - } - } else { - iConsole->Printf(_L("(malformed utf8: ")); - for (int i = 0; i < n; i++) - iConsole->Printf(_L("%02x "), buf[i]); - iConsole->Printf(_L(")\n")); - } -#else - for (int i = 0; i < n; i++) { - iConsole->Printf(_L("%c"), buf[i]); - } - wrote = n; -#endif - iConsoleUsed += wrote; - return n; -} - diff --git a/symbian/PerlBase.h b/symbian/PerlBase.h deleted file mode 100644 index 769958d3e4..0000000000 --- a/symbian/PerlBase.h +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The CPerlBase class is licensed under the same terms as Perl itself. */ - -/* See PerlBase.pod for documentation. */ - -#ifndef __PerlBase_h__ -#define __PerlBase_h__ - -#include <e32base.h> - -#if !defined(PERL_MINIPERL) && !defined(PERL_PERL) -# ifndef PERL_IMPLICIT_CONTEXT -# define PERL_IMPLICIT_CONTEXT -# endif -# ifndef PERL_MULTIPLICITY -# define PERL_MULTIPLICITY -# endif -# ifndef PERL_GLOBAL_STRUCT -# define PERL_GLOBAL_STRUCT -# endif -# ifndef PERL_GLOBAL_STRUCT_PRIVATE -# define PERL_GLOBAL_STRUCT_PRIVATE -# endif -#endif - -#include "EXTERN.h" -#include "perl.h" - -typedef enum { - EPerlNone, - EPerlAllocated, - EPerlConstructed, - EPerlParsed, - EPerlRunning, - EPerlTerminated, - EPerlPaused, - EPerlSuccess, - EPerlFailure, - EPerlDestroying -} TPerlState; - -class PerlConsole; - -class CPerlBase : public CBase -{ - public: - CPerlBase(); - IMPORT_C virtual ~CPerlBase(); - IMPORT_C static CPerlBase* NewInterpreter(TBool aCloseStdlib = ETrue, - void (*aStdioInitFunc)(void*) = NULL, - void *aStdioInitCookie = NULL); - IMPORT_C static CPerlBase* NewInterpreterL(TBool aCloseStdlib = ETrue, - void (*aStdioInitFunc)(void*) = NULL, - void *aStdioInitCookie = NULL); - IMPORT_C static CPerlBase* NewInterpreterLC(TBool iCloseStdlib = ETrue, - void (*aStdioInitFunc)(void*) = NULL, - void *aStdioInitCookie = NULL); - IMPORT_C TInt RunScriptL(const TDesC& aFileName, int argc = 2, char **argv = NULL, char *envp[] = NULL); - IMPORT_C int Parse(int argc = 0, char *argv[] = NULL, char *envp[] = NULL); - IMPORT_C void SetupExit(); - IMPORT_C int Run(); - IMPORT_C int ParseAndRun(int argc = 0, char *argv[] = 0, char *envp[] = 0); - IMPORT_C void Destruct(); - - IMPORT_C PerlInterpreter* GetInterpreter(); - - // These two really should be private but when not using PERLIO - // certain C callback functions of STDLIB need to be able to call - // these. In general, all the console related functionality is - // intentionally hidden and underdocumented. - int ConsoleRead(const int fd, char* buf, int n); - int ConsoleWrite(const int fd, const char* buf, int n); - - // Having these public does not feel right, but maybe someone needs - // to do creative things with them. - int (*iReadFunc)(const int fd, char *buf, int n); - int (*iWriteFunc)(const int fd, const char *buf, int n); - - protected: - PerlInterpreter* iPerl; -#ifdef PERL_GLOBAL_STRUCT - struct perl_vars* iVars; -#else - void* iAppCtx; -#endif - TPerlState iState; - - private: - void ConstructL(); - CConsoleBase* iConsole; /* The screen. */ - TUint16* iConsoleBuffer; /* The UTF-16 characters. */ - TUint iConsoleUsed; /* How many in iConsoleBuffer. */ - TBool iCloseStdlib; /* Close STDLIB on exit? */ - - void (*iStdioInitFunc)(void *); - void* iStdioInitCookie; - - int ConsoleReadLine(); - void StdioRewire(void*); -}; - -#define diTHX PerlInterpreter* my_perl = iPerl -#define diVAR struct perl_vars* my_vars = iVars - -#ifdef PERL_GLOBAL_STRUCT -# define PERL_APPCTX_SET(c) ((c)->iVars->Gappctx = (c)) -#else -# define PERL_APPCTX_SET(c) (PL_appctx = (c)) -#endif - -#undef Copy -#undef CopyD /* For symmetry, not for Symbian reasons. */ -#undef New -#define PerlCopy(s,d,n,t) (MEM_WRAP_CHECK(n,t), (void)memcpy((char*)(d),(char*)(s), (n) * sizeof(t))) -#define PerlCopyD(s,d,n,t) (MEM_WRAP_CHECK(n,t), memcpy((char*)(d),(char*)(s), (n) * sizeof(t))) -#define PerlNew(x,v,n,t) (v = (MEM_WRAP_CHECK(n,t), (t*)safemalloc((MEM_SIZE)((n)*sizeof(t))))) - -// This is like the Symbian _LIT() but without the embedded L prefix, -// which enables using #defined constants (which need to carry their -// own L prefix). -#ifndef _LIT_NO_L -# define _LIT_NO_L(n, s) static const TLitC<sizeof(s)/2> n={sizeof(s)/2-1,s} -#endif // #ifndef _LIT_NO_L - -#endif /* #ifndef __PerlBase_h__ */ - diff --git a/symbian/PerlBase.pod b/symbian/PerlBase.pod deleted file mode 100644 index 70fc9afb4f..0000000000 --- a/symbian/PerlBase.pod +++ /dev/null @@ -1,204 +0,0 @@ -=head1 NAME - -CPerlBase - a C++ base class encapsulating a Perl interpreter in Symbian - -=head1 SYNOPSIS - - // in your App.mmp - USERINCLUDE \symbian\perl\x.y.z\include - LIBRARY perlXYZ.lib - - // in your App - #include "PerlBase.h" // includes also EXTERN.h and perl.h - CPerlBase* perl = CPerlBase::NewInterpreterLC(); - ... - delete perl; - -=head1 DESCRIPTION - -CPerlBase is a simple Symbian C++ class that wraps a Perl -interpreter; its creation, use, and destroying. To understand -what this is doing, and how to use the interpreter, a fair knowledge -of L<perlapi>, L<perlguts>, and L<perlembed> is recommended. - -One useful thing CPerlBase does compared with just using the raw -Perl C API is that it redirects the "std streams" (STDOUT et alia) -to a text console implementation which while being very basic -is marginally more usable than the Symbian basic text console. - -=head2 The Basics - -=over 4 - -=item * - -CPerlBase* NewInterpreterL(); - -The constructor that does not keep the object in the Symbian "cleanup stack". -perl_alloc() and perl_construct() are called behind the curtains. - -Accepts the same arguments as NewInterpreterLC(). - -=item * - -CPerlBase* NewInterpreterLC(); - -The constructor that keeps the object in the Symbian "cleanup stack". -perl_alloc() and perl_construct() are called behind the curtains. - -Can have three arguments: - -=over 8 - -=item * - -TBool aCloseStdlib = ETrue - -Should a CPerlBase close the Symbian POSIX STDLIB when closing down. -Good for one-shot script execution, probably less good for longer term -embedded interpreter. - -=item * - -void (*aStdioInitFunc)(void*) = NULL - -If set, called with aStdioInitCookie, and the default console is -not created. You may want to set the iReadFunc() and iWriteFunc(). - -=item * - -void *aStdioInitCookie = NULL - -Used as the argument for aStdioInitFunc(). - -=back - -=item * - -void Destroy(); - -The destructor of the interpreter. The class destructor calls -first this and then the Symbian CloseSTDLIB(). - -perl_destruct(), perl_free(), and PERL_SYS_TERM() are called -behind the curtains. - -=back - -=head2 Utility functions - -=over 4 - -=item * - -int Parse(int argc = 0, char *argv[] = 0, char *envp[] = 0); - -Prepare an interpreter for executing by parsing input as if a C main() -had been called. For example to parse a script, use argc of 2 and argv -of { "perl", script_name }. - -All arguments are optional: in case either argc or argv are zero, -argc of 3 and argv of { "perl", "-e", "0" } is assumed. - -PERL_SYS_INIT() and perl_parse() are called behind the curtains. - -Note that a call to Parse() is required before Run(). - -Returns zero if parsing was successful, non-zero if not (and the stderr -will get the error). - -=item * - -int Run() - -Start executing an interpreter. A Parse() must have been called before -a Run(): use 3 and { "", "-e", 0 } if you do not have an argv. - -Note that a call to Parse() is required before Run(). - -perl_run() is called behind the curtains. - -Returns zero if execution was successful, non-zero if not (and the stderr -will get the error). - -=item * - -int ParseAndRun(int argc, char *argv[], char *envp[]); - -Combined Parse() and Run(). The Run() is not run if the Parse() fails. - -Returns zero if parsing and execution were successful, non-zero if not. - -=item * - -TInt RunScriptL(TDesC& aFileName, int argc, char **argv, char *envp[]) - -Like ParseAndRun() but works for Symbian filenames (UTF-16LE). -The UTF-8 version of aFileName is always argv[argc-1], and argv[0] -is always "perl". - -=back - -=head2 Macros - -=over 4 - -=item * - -diTHX - -Set up my_perl from the current object (like dTHX). - -=item * - -diVAR - -Set up my_vars from the current object (like dVAR). - -=back - -=head2 Extending CPerlBase (subclassing, deriving from) - -Note that it probably isn't worth the trouble to try to wrap the -whole, rather large, Perl C API into a C++ API. Just use the C API. - -The protected members of the class are: - -=over 4 - -=item * - -PerlInterpreter* iPerl - -The Perl interpreter. - -=item * - -struct perl_vars* iVars - -The global variables of the interpreter. - -=item * - -TPerlState iState - -The state of the Perl interpreter. TPerlState is one of EPerlNone, -EPerlAllocated, EPerlConstructed, EPerlParsed, EPerlRunning, -EPerlTerminated, EPerlPaused (these two are currently unused -but in the future they might be used to indicate that the interpreter -was stopped either non-resumably or resumably for some reason), -EPerlSuccess (perl_run() succeeded), EPerlFailure (perl_run() failed), -EPerlDestroying. - -=back - -=head1 COPYRIGHT - -Copyright (c) 2004-2005 Nokia. All rights reserved. - -=head1 LICENSE - -The CPerlBase class is licensed under the same terms as Perl itself. - -=cut - diff --git a/symbian/PerlRecog.cpp b/symbian/PerlRecog.cpp deleted file mode 100644 index d2db54491b..0000000000 --- a/symbian/PerlRecog.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlRecog application is licensed under the same terms as Perl itself. */ - -#include <apmrec.h> -#include <apmstd.h> -#include <f32file.h> - -const TUid KUidPerlRecog = { 0x102015F7 }; -_LIT8(KPerlMimeType, "x-application/x-perl"); -_LIT8(KPerlSig, "#!/usr/bin/perl"); -const TInt KPerlSigLen = 15; - -class CApaPerlRecognizer : public CApaDataRecognizerType { - public: - CApaPerlRecognizer():CApaDataRecognizerType(KUidPerlRecog, EHigh) { - iCountDataTypes = 1; - } - virtual TUint PreferredBufSize() { return KPerlSigLen; } - virtual TDataType SupportedDataTypeL(TInt /* aIndex */) const { - return TDataType(KPerlMimeType); - } - private: - virtual void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer); -}; - -void CApaPerlRecognizer::DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer) -{ - iConfidence = ENotRecognized; - - if (aBuffer.Length() >= KPerlSigLen && - aBuffer.Left(KPerlSigLen).Compare(KPerlSig) == 0) { - iConfidence = ECertain; - iDataType = TDataType(KPerlMimeType); - } else { - TParsePtrC p(aName); - - if ((p.Ext().CompareF(_L(".pl")) == 0) || - (p.Ext().CompareF(_L(".pm")) == 0)) { - iConfidence = ECertain; - iDataType = TDataType(KPerlMimeType); - } - } -} - -EXPORT_C CApaDataRecognizerType* CreateRecognizer() -{ - return new CApaPerlRecognizer; -} - -GLDEF_C TInt E32Dll(TDllReason /* aReason */) -{ - return KErrNone; -} - - - diff --git a/symbian/PerlRecog.mmp b/symbian/PerlRecog.mmp deleted file mode 100644 index 6850103b5b..0000000000 --- a/symbian/PerlRecog.mmp +++ /dev/null @@ -1,9 +0,0 @@ -TARGET PerlRecog.mdl -TARGETTYPE mdl -UID 0x10003A19 0x102015F7 -TARGETPATH \system\recogs -SOURCE PerlRecog.cpp -USERINCLUDE . -SYSTEMINCLUDE \epoc32\include -LIBRARY euser.lib efsrv.lib apmime.lib - diff --git a/symbian/PerlUi.cpp b/symbian/PerlUi.cpp deleted file mode 100644 index 01be136d09..0000000000 --- a/symbian/PerlUi.cpp +++ /dev/null @@ -1,273 +0,0 @@ -/* Copyright (c) 2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -#include "PerlUi.h" - -#ifdef __SERIES60__ -# include <avkon.hrh> -# include <aknnotewrappers.h> -# include <AknCommonDialogs.h> -# ifndef __SERIES60_1X__ -# include <CAknFileSelectionDialog.h> -# endif -#endif /* #ifdef __SERIES60__ */ - -#if defined(__SERIES80__) || defined(__SERIES90__) -# include <eikon.hrh> -# include <cknflash.h> -# include <ckndgopn.h> -# include <ckndgfob.h> -# include <eiklabel.h> -# include <cknconf.h> -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ - -#ifdef __UIQ__ -# include <qikon.hrh> -# include <eikedwin.h> -# include <eiklabel.h> -#endif /* #ifdef __UIQ__ */ - -#include <apparc.h> -#include <e32base.h> -#include <e32cons.h> -#include <eikenv.h> -#include <bautils.h> -#include <eikappui.h> -#include <utf.h> -#include <f32file.h> - -#include <coemain.h> - -#include "PerlUi.hrh" -#include "PerlUi.rsg" - -#if defined(__SERIES80__) || defined(__SERIES90__) -#include "Eikon.rsg" -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -#include "PerlBase.h" -#include "PerlUtil.h" - -#define symbian_get_vars() Dll::Tls() // Not visible from perlXYZ.lib? - -_LIT(KDefaultScript, "default.pl"); - -EXPORT_C void CPerlUiAppUi::ConstructL() -{ - BaseConstructL(); - iAppView = CPerlUiAppView::NewL(ClientRect()); - AddToStackL(iAppView); - CEikonEnv::Static()->DisableExitChecks(ETrue); // Symbian FAQ-0577. -} - -EXPORT_C TBool CPerlUi::OkCancelDialogL(TDesC& aMessage) -{ -#ifdef __SERIES60__ - CAknNoteDialog* dlg = - new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone); - dlg->PrepareLC(R_PERLUI_OK_CANCEL_DIALOG); - dlg->SetTextL(aMessage); - return dlg->RunDlgLD() == EAknSoftkeyOk; -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) - return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_CANCEL_OK); -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ -#ifdef __UIQ__ - CEikDialog* dlg = new (ELeave) CEikDialog(); - return dlg->ExecuteLD(R_PERLUI_OK_CANCEL_DIALOG) == EEikBidOk; -#endif /* #ifdef __UIQ__ */ -} - -EXPORT_C TBool CPerlUi::YesNoDialogL(TDesC& aMessage) -{ -#ifdef __SERIES60__ - CAknNoteDialog* dlg = - new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone); - dlg->PrepareLC(R_PERLUI_YES_NO_DIALOG); - dlg->SetTextL(aMessage); - return dlg->RunDlgLD() == EAknSoftkeyOk; -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) - return CCknConfirmationDialog::RunDlgWithDefaultIconLD(aMessage, R_EIK_BUTTONS_NO_YES); -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ -#ifdef __UIQ__ - CEikDialog* dlg = new (ELeave) CEikDialog(); - return dlg->ExecuteLD(R_PERLUI_YES_NO_DIALOG) == EEikBidOk; -#endif /* #ifdef __UIQ__ */ -} - -EXPORT_C void CPerlUi::InformationNoteL(TDesC& aMessage) -{ -#ifdef __SERIES60__ - CAknInformationNote* note = new (ELeave) CAknInformationNote; - note->ExecuteLD(aMessage); -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - CEikonEnv::Static()->InfoMsg(aMessage); -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ -} - -EXPORT_C TInt CPerlUi::WarningNoteL(TDesC& aMessage) -{ -#ifdef __SERIES60__ - CAknWarningNote* note = new (ELeave) CAknWarningNote; - return note->ExecuteLD(aMessage); -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - CEikonEnv::Static()->AlertWin(aMessage); - return ETrue; -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ -} - -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - -CPerlUiTextQueryDialog::CPerlUiTextQueryDialog(HBufC*& aBuffer) : - iData(aBuffer) -{ -} - -TBool CPerlUiTextQueryDialog::OkToExitL(TInt /* aKeycode */) -{ - iData = static_cast<CEikEdwin*>(Control(EPerlUiTextQueryInputField))->GetTextInHBufL(); - return ETrue; -} - -void CPerlUiTextQueryDialog::PreLayoutDynInitL() -{ - SetTitleL(iTitle); - CEikLabel* promptLabel = ControlCaption(EPerlUiTextQueryInputField); - promptLabel->SetTextL(iPrompt); -} - -/* TODO: OfferKeyEventL() so that newline can be seen as 'OK'. - * Or a hotkey for the button? */ - -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ - -EXPORT_C TBool CPerlUi::TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength) -{ -#ifdef __SERIES60__ - CAknTextQueryDialog* dlg = - new (ELeave) CAknTextQueryDialog(aData); - dlg->SetPromptL(aPrompt); - dlg->SetMaxLength(aMaxLength); - return dlg->ExecuteLD(R_PERLUI_TEXT_QUERY_DIALOG); -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - HBufC* data = NULL; - CPerlUiTextQueryDialog* dlg = - new (ELeave) CPerlUiTextQueryDialog(data); - dlg->iTitle.Set(aTitle); - dlg->iPrompt.Set(aPrompt); - dlg->iMaxLength = aMaxLength; - if (dlg->ExecuteLD(R_PERLUI_ONELINER_DIALOG)) { - aData.Copy(*data); - return ETrue; - } - return EFalse; -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ -} - -EXPORT_C TBool CPerlUi::FileQueryDialogL(TDes& aFilename) -{ -#ifdef __SERIES60__ - return AknCommonDialogs::RunSelectDlgLD(aFilename, - R_PERLUI_FILE_SELECTION_DIALOG); -#endif /* #ifdef __SERIES60__ */ -#if defined(__SERIES80__) || defined(__SERIES90__) - if (CCknOpenFileDialog::RunDlgLD(aFilename, - CCknFileListDialogBase::EShowAllDrives - |CCknFileListDialogBase::EShowSystemFilesAndFolders - |CCknFileListDialogBase::EShowBothFilesAndFolders - )) { - TEntry aEntry; // Be paranoid and check that the file is there. - RFs aFs; - aFs.Connect(); - if (aFs.Entry(aFilename, aEntry) == KErrNone) - return ETrue; - else - CEikonEnv::Static()->InfoMsg(_L("File not found")); - } - return EFalse; -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ -#ifdef __UIQ__ - return EFalse; // No filesystem access in UIQ 2.x! -#endif /* #ifdef __UIQ__ */ -} - -#ifdef __SERIES60__ - -EXPORT_C void CPerlUiAppUi::HandleCommandL(TInt aCommand) -{ - switch(aCommand) - { - case EEikCmdExit: - case EAknSoftkeyExit: - Exit(); - break; - default: - DoHandleCommandL(aCommand); - break; - } -} - -#endif /* #ifdef __SERIES60__ */ - -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - -EXPORT_C void CPerlUiAppView::HandleCommandL(TInt aCommand, CPerlUiAppUi* aAppUi) { - aAppUi->DoHandleCommandL(aCommand); -} - -EXPORT_C void CPerlUiAppUi::HandleCommandL(TInt aCommand) { - switch(aCommand) - { - case EEikCmdExit: - Exit(); - break; - default: - iAppView->HandleCommandL(aCommand, this); - break; - } -} - -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ - -CPerlUiAppView* CPerlUiAppView::NewL(const TRect& aRect) -{ - CPerlUiAppView* self = CPerlUiAppView::NewLC(aRect); - CleanupStack::Pop(self); - return self; -} - -CPerlUiAppView* CPerlUiAppView::NewLC(const TRect& aRect) -{ - CPerlUiAppView* self = new (ELeave) CPerlUiAppView; - CleanupStack::PushL(self); - self->ConstructL(aRect); - return self; -} - -void CPerlUiAppView::ConstructL(const TRect& aRect) -{ - CreateWindowL(); - SetRect(aRect); - ActivateL(); -} - -CPerlUiAppView::~CPerlUiAppView() -{ -} - -void CPerlUiAppView::Draw(const TRect& /*aRect*/) const -{ - CWindowGc& gc = SystemGc(); - TRect rect = Rect(); - gc.Clear(rect); -} - diff --git a/symbian/PerlUi.h b/symbian/PerlUi.h deleted file mode 100644 index 9a5002032f..0000000000 --- a/symbian/PerlUi.h +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (c) 2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -#ifndef __PerlUi_h__ -#define __PerlUi_h__ - -#ifdef __SERIES60__ -# include <aknapp.h> -# include <aknappui.h> -# include <akndoc.h> -#endif /* #ifdef __SERIES60__ */ - -#if defined(__SERIES80__) || defined(__SERIES90__) -# include <eikapp.h> -# include <eikappui.h> -# include <eikdoc.h> -# include <eikbctrl.h> -# include <eikgted.h> -# include <eikdialg.h> -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ - -#ifdef __UIQ__ -# include <qikapplication.h> -# include <qikappui.h> -# include <qikdocument.h> -# include <eikdialg.h> -#endif /* #ifdef __UIQ____ */ - -#include <coecntrl.h> -#include <f32file.h> - -#ifdef __SERIES60__ -# define CgPerlUiDocument CAknDocument -# define CgPerlUiApplication CAknApplication -# define CgPerlUiAppUi CAknAppUi -# define CgPerlUiNoteDialog CAknNoteDialog -# define CgPerlUiAppView CCoeControl -#endif /* #ifdef __SERIES60__ */ - -#if defined(__SERIES80__) || defined(__SERIES90__) -# define CgPerlUiDocument CEikDocument -# define CgPerlUiApplication CEikApplication -# define CgPerlUiAppUi CEikAppUi -# define CgPerlUiNoteDialog CCknFlashingDialog -# define CgPerlUiAppView CEikBorderedControl -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) */ - -#ifdef __UIQ__ -# define CgPerlUiDocument CEikDocument -# define CgPerlUiApplication CQikApplication -# define CgPerlUiAppUi CQikAppUi -# define CgPerlUiNoteDialog CCknFlashingDialog -# define CgPerlUiAppView CCoeControl -#endif /* #ifdef __UIQ__ */ - -class CPerlUiApplication : public CgPerlUiApplication -{ -}; - -const TUint KPerlUiPromptSize = 20; -const TUint KPerlUiOneLinerSize = 128; - -class CPerlUiAppView; - -class CPerlUiAppUi : public CgPerlUiAppUi -{ - public: - IMPORT_C void ConstructL(); - void virtual DoHandleCommandL(TInt aCommand) = 0; - IMPORT_C void HandleCommandL(TInt aCommand); - TBuf<KPerlUiOneLinerSize> iOneLiner; // Perl code to evaluate. - CPerlUiAppView* iAppView; -}; - -class CPerlUiAppView : public CgPerlUiAppView -{ - public: - static CPerlUiAppView* NewL(const TRect& aRect); - static CPerlUiAppView* NewLC(const TRect& aRect); - ~CPerlUiAppView(); - void Draw(const TRect& aRect) const; -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - IMPORT_C void HandleCommandL(TInt aCommand, CPerlUiAppUi* aAppUi); -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ - private: - void ConstructL(const TRect& aRect); -}; - -#if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) - -class CPerlUiTextQueryDialog : public CEikDialog -{ - public: - CPerlUiTextQueryDialog(HBufC*& aBuffer); - /* TODO: OfferKeyEventL() so that newline can be seen as 'OK'. */ - HBufC*& iData; - TPtrC iTitle; // used in S80 but not in S60 - TPtrC iPrompt; // used in S60 and S80 - TInt iMaxLength; - protected: - void PreLayoutDynInitL(); - private: - TBool OkToExitL(TInt aKeycode); -}; - -#endif /* #if defined(__SERIES80__) || defined(__SERIES90__) || defined(__UIQ__) */ - -class CPerlUi : public CgPerlUiAppUi -{ - public: - IMPORT_C static TBool OkCancelDialogL(TDesC& aMessage); - IMPORT_C static TBool YesNoDialogL(TDesC& aMessage); - IMPORT_C static void InformationNoteL(TDesC& aMessage); - IMPORT_C static TInt WarningNoteL(TDesC& aMessage); - IMPORT_C static TBool TextQueryDialogL(const TDesC& aTitle, const TDesC& aPrompt, TDes& aData, const TInt aMaxLength); - IMPORT_C static TBool FileQueryDialogL(TDes& aFilename); -}; - -#endif // __PerlUi_h__ diff --git a/symbian/PerlUi.hrh b/symbian/PerlUi.hrh deleted file mode 100644 index edb657d9e2..0000000000 --- a/symbian/PerlUi.hrh +++ /dev/null @@ -1,14 +0,0 @@ -/* Copyright (c) 2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -#ifndef __PerlUi_HRH__ -#define __PerlUi_HRH__ - -enum TPerlUiIds -{ - EPerlUiTextQueryInputField = 2048, - EPerlUiLast = 2099 // no comma here -}; - -#endif // __PerlUi_HRH__ diff --git a/symbian/PerlUiS60.rss b/symbian/PerlUiS60.rss deleted file mode 100644 index 757fb33740..0000000000 --- a/symbian/PerlUiS60.rss +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -/* The S60 definitions. */ - -NAME PERL - -#include <eikon.rh> -#include <avkon.rh> -#include <avkon.rsg> - -#include "PerlUi.hrh" -#include "PerlApp.hrh" - -RESOURCE RSS_SIGNATURE -{ -} - -RESOURCE TBUF r_default_document_name -{ - buf = ""; -} - -RESOURCE EIK_APP_INFO -{ - menubar = r_Perl_menubar; - cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; -} - - -RESOURCE MENU_BAR r_Perl_menubar -{ - titles = { - MENU_TITLE - { - menu_pane = r_Perl_menu; - } - }; -} - - -RESOURCE MENU_PANE r_Perl_menu -{ - items = { - MENU_ITEM { - command = EPerlAppCommandAbout; - txt = "About"; - }, - MENU_ITEM { - command = EPerlAppCommandTime; - txt = "Time"; - }, - MENU_ITEM { - command = EPerlAppCommandRunFile; - txt = "Run"; - }, - MENU_ITEM { - command = EPerlAppCommandOneLiner; - txt = "Oneliner"; - }, - MENU_ITEM { - command = EPerlAppCommandCopyright; - txt = "Copyright"; - } - }; -} - -RESOURCE DIALOG r_perlui_ok_cancel_dialog -{ - flags = EEikDialogFlagWait | EEikDialogFlagCbaButtons; - buttons = R_AVKON_SOFTKEYS_OK_CANCEL; - items = { - DLG_LINE - { - type = EAknCtNote; - id = EGeneralNote; - control = AVKON_NOTE - { - layout = EGeneralLayout; - }; - } - }; -} - -RESOURCE DIALOG r_perlui_yes_no_dialog -{ - flags = EEikDialogFlagWait | EEikDialogFlagCbaButtons; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = { - DLG_LINE - { - type = EAknCtNote; - id = EGeneralNote; - control = AVKON_NOTE - { - layout = EGeneralLayout; - }; - } - }; -} - -RESOURCE DIALOG r_perlui_text_query_dialog -{ - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_OK_CANCEL; - items = { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_DATA_QUERY - { - layout = EDataLayout; - control = EDWIN {}; - }; - } - }; -} - -RESOURCE AVKON_LIST_QUERY r_perlui_list_query_dialog -{ - flags = EGeneralQueryFlags; - softkeys = R_AVKON_SOFTKEYS_OK_CANCEL; - items = { - DLG_LINE - { - type = EAknCtListQueryControl; - id = EListQueryControl; - control = AVKON_LIST_QUERY_CONTROL - { - listtype = EAknCtSinglePopupMenuListBox; - }; - } - }; -} - -#include <CommonDialogs.hrh> -#include <CommonDialogs.rh> - -RESOURCE MEMORYSELECTIONDIALOG r_perlui_file_selection_dialog -{ -} - diff --git a/symbian/PerlUiS80.rss b/symbian/PerlUiS80.rss deleted file mode 100644 index 8028311f35..0000000000 --- a/symbian/PerlUiS80.rss +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -/* The S80 definitions. */ - -NAME PERL - -#include <eikon.rh> -#include <eikon.rsg> - -#include "PerlUi.hrh" -#include "PerlApp.hrh" - -RESOURCE RSS_SIGNATURE -{ -} - -RESOURCE TBUF r_default_document_name -{ - buf = ""; -} - -RESOURCE EIK_APP_INFO -{ - menubar = r_perlui_menubar; - cba = r_perlui_cba; -} - -RESOURCE CBA r_perlui_cba -{ - buttons = { - CBA_BUTTON { id = EPerlAppCommandRunFile; txt = "Run"; }, - CBA_BUTTON { id = EPerlAppCommandOneLiner; txt = "Oneliner"; }, - CBA_BUTTON { id = EPerlAppCommandAboutCopyright; txt = "About"; }, - CBA_BUTTON { id = EEikCmdExit; txt = "Exit"; } - }; -} - - -RESOURCE MENU_BAR r_perlui_menubar -{ - titles = { - MENU_TITLE - { - menu_pane = r_perlui_menu; txt = "Options"; - } - }; -} - - -RESOURCE MENU_PANE r_perlui_menu -{ - items = { - MENU_ITEM { - command = EPerlAppCommandAbout; - txt = "About"; - }, - MENU_ITEM { - command = EPerlAppCommandTime; - txt = "Time"; - }, - MENU_ITEM { - command = EPerlAppCommandRunFile; - txt = "Run"; - }, - MENU_ITEM { - command = EPerlAppCommandOneLiner; - txt = "Oneliner"; - }, - MENU_ITEM { - command = EPerlAppCommandCopyright; - txt = "Copyright"; - } - }; -} - -RESOURCE DIALOG r_perlui_oneliner_dialog -{ - title = "Title"; - buttons = R_EIK_BUTTONS_CANCEL_OK; - flags = EEikDialogFlagWait; - items = { - DLG_LINE { - type = EEikCtEdwin; - prompt = "Prompt"; - id = EPerlUiTextQueryInputField; - control = EDWIN { - width = 10; - maxlength = 128; - }; - } - }; -} - diff --git a/symbian/PerlUiS90.rss b/symbian/PerlUiS90.rss deleted file mode 100644 index 28f71dd109..0000000000 --- a/symbian/PerlUiS90.rss +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (c) 2006 Alexander Smishlajev. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -/* The S90 definitions. */ - -NAME PERL - -#include <eikon.rh> -#include <eikon.rsg> - -#include "PerlUi.hrh" -#include "PerlApp.hrh" - -RESOURCE RSS_SIGNATURE -{ -} - -RESOURCE TBUF r_default_document_name -{ - buf = ""; -} - -RESOURCE EIK_APP_INFO -{ - menubar = r_perlui_menubar; - cba = r_perlui_cba; -} - -RESOURCE CBA r_perlui_cba -{ - buttons = { - CBA_BUTTON { id = EPerlAppCommandRunFile; txt = "Run"; }, - CBA_BUTTON { id = EPerlAppCommandOneLiner; txt = "Oneliner"; }, - CBA_BUTTON { id = EPerlAppCommandAboutCopyright; txt = "About"; }, - CBA_BUTTON { id = EEikCmdExit; txt = "Exit"; } - }; -} - - -RESOURCE MENU_BAR r_perlui_menubar -{ - titles = { - MENU_TITLE - { - menu_pane = r_perlui_menu; txt = "Options"; - } - }; -} - - -RESOURCE MENU_PANE r_perlui_menu -{ - items = { - MENU_ITEM { - command = EPerlAppCommandAbout; - txt = "About"; - }, - MENU_ITEM { - command = EPerlAppCommandTime; - txt = "Time"; - }, - MENU_ITEM { - command = EPerlAppCommandRunFile; - txt = "Run"; - }, - MENU_ITEM { - command = EPerlAppCommandOneLiner; - txt = "Oneliner"; - }, - MENU_ITEM { - command = EPerlAppCommandCopyright; - txt = "Copyright"; - } - }; -} - -RESOURCE DIALOG r_perlui_oneliner_dialog -{ - title = "Title"; - buttons = R_EIK_BUTTONS_CANCEL_OK; - flags = EEikDialogFlagWait; - items = { - DLG_LINE { - type = EEikCtEdwin; - prompt = "Prompt"; - id = EPerlUiTextQueryInputField; - control = EDWIN { - width = 10; - maxlength = 128; - }; - } - }; -} - diff --git a/symbian/PerlUiUIQ.rss b/symbian/PerlUiUIQ.rss deleted file mode 100644 index 55362a99f7..0000000000 --- a/symbian/PerlUiUIQ.rss +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright (c) 200-2005 Nokia. All rights reserved. */ - -/* The PerlUi class is licensed under the same terms as Perl itself. */ - -/* The UIQ definitions. */ - -NAME PERL - -#include <eikon.rh> -#include <eikcore.rsg> -#include <qikon.rh> - -#include "PerlUi.hrh" -#include "PerlApp.hrh" - -RESOURCE RSS_SIGNATURE -{ -} - -RESOURCE TBUF r_default_document_name -{ - buf = ""; -} - -RESOURCE EIK_APP_INFO -{ - menubar = r_perlui_menubar; - toolbar = r_perlui_menubar; -} - - -RESOURCE MENU_BAR r_perlui_menubar -{ - titles = { - MENU_TITLE - { - menu_pane = r_perlui_menu; txt = "Options"; - } - }; -} - - -RESOURCE MENU_PANE r_perlui_menu -{ - items = { - MENU_ITEM { - command = EPerlAppCommandAbout; - txt = "About"; - }, - MENU_ITEM { - command = EPerlAppCommandTime; - txt = "Time"; - }, - MENU_ITEM { - command = EPerlAppCommandOneLiner; - txt = "Oneliner"; - }, - MENU_ITEM { - command = EPerlAppCommandCopyright; - txt = "Copyright"; - } - }; -} - -RESOURCE DIALOG r_perlui_oneliner_dialog -{ - title = "Title"; - buttons = R_EIK_BUTTONS_CANCEL_OK; - flags = EEikDialogFlagWait; - items = { - DLG_LINE { - type = EEikCtEdwin; - prompt = "Prompt"; - id = EPerlUiTextQueryInputField; - control = EDWIN { - width = 10; - maxlength = 128; - }; - } - }; -} - -RESOURCE DIALOG r_perlui_ok_cancel_dialog -{ - title = "OK / Cancel ?"; - buttons = r_perlui_ok_cancel_buttons; -} - -RESOURCE DLG_BUTTONS r_perlui_ok_cancel_buttons -{ - buttons = { - DLG_BUTTON { - id = EEikBidOk; - button = CMBUT { txt = "Ok"; }; - }, - DLG_BUTTON { - id = EEikBidCancel; - button = CMBUT { txt = "Cancel"; }; - } - }; -} - -RESOURCE DIALOG r_perlui_yes_no_dialog -{ - title = "Yes / No ?"; - buttons = r_perlui_yes_no_buttons; -} - -RESOURCE DLG_BUTTONS r_perlui_yes_no_buttons -{ - buttons = { - DLG_BUTTON { - id = EEikBidOk; - button = CMBUT { txt = "Yes"; }; - }, - DLG_BUTTON { - id = EEikBidCancel; - button = CMBUT { txt = "No"; }; - } - }; -} - - - diff --git a/symbian/PerlUtil.cpp b/symbian/PerlUtil.cpp deleted file mode 100644 index b979072749..0000000000 --- a/symbian/PerlUtil.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlUtil class is licensed under the same terms as Perl itself. */ - -/* See PerlUtil.pod for documentation. */ - -#define PERLUTIL_CPP - -#include "PerlUtil.h" - -#include <utf.h> - -#undef Copy -#undef New - -EXPORT_C SV* PerlUtil::newSvPVfromTDesC8(const TDesC8& aDesC8) { - dTHX; - return newSVpvn((const char *)aDesC8.Ptr(), aDesC8.Size()); -} - -EXPORT_C void PerlUtil::setSvPVfromTDesC8(SV* sv, const TDesC8& aDesC8) { - dTHX; - sv_setpvn(sv, (const char *)aDesC8.Ptr(), aDesC8.Size()); -} - -EXPORT_C HBufC8* PerlUtil::newHBufC8fromSvPV(SV* sv) { - dTHX; - return PerlUtil::newHBufC8fromPVn((const U8 *)SvPV_nolen(sv), SvLEN(sv)); -} - -EXPORT_C void PerlUtil::setTDes8fromSvPV(TDes8& aDes8, SV* sv) { - dTHX; - PerlUtil::setTDes8fromPVn(aDes8, (const U8 *)SvPV_nolen(sv), SvLEN(sv)); -} - -EXPORT_C SV* PerlUtil::newSvPVfromTDesC16(const TDesC16& aDesC16) { - dTHX; - SV* sv = NULL; - HBufC8* hBuf8 = HBufC8::New(aDesC16.Length() * 3); - - if (hBuf8) { - TPtr8 aPtr8(hBuf8->Des()); - CnvUtfConverter::ConvertFromUnicodeToUtf8(aPtr8, aDesC16); - sv = newSVpvn((const char *)(hBuf8->Ptr()), hBuf8->Size()); - delete hBuf8; - hBuf8 = NULL; - SvUTF8_on(sv); - } - - return sv; -} - -EXPORT_C void PerlUtil::setSvPVfromTDesC16(SV* sv, const TDesC16& aDesC16) { - dTHX; - HBufC8* hBuf8 = HBufC8::New(aDesC16.Length() * 3); - - if (hBuf8) { - TPtr8 aPtr8(hBuf8->Des()); - CnvUtfConverter::ConvertFromUnicodeToUtf8(aPtr8, aDesC16); - sv_setpvn(sv, (const char *)(hBuf8->Ptr()), hBuf8->Size()); - delete hBuf8; - hBuf8 = NULL; - SvUTF8_on(sv); - } -} - -EXPORT_C HBufC16* PerlUtil::newHBufC16fromSvPV(SV* sv) { - dTHX; - return PerlUtil::newHBufC16fromPVn((const U8 *)SvPV_nolen(sv), SvLEN(sv), SvUTF8(sv)); -} - -void PerlUtil::setTDes16fromSvPV(TDes16& aDes16, SV* sv) { - dTHX; - PerlUtil::setTDes16fromPVn(aDes16, (const U8 *)SvPV_nolen(sv), SvLEN(sv), SvUTF8(sv)); -} - -EXPORT_C HBufC8* PerlUtil::newHBufC8fromPVn(const U8* s, STRLEN n) { - HBufC8* aBuf8 = HBufC8::New(n); - if (aBuf8) { - TPtr8 ptr8 = aBuf8->Des(); - ptr8.Copy(s, n); - } - return aBuf8; -} - -EXPORT_C void PerlUtil::setTDes8fromPVn(TDes8& aDes8, const U8* s, STRLEN n) { - // TODO: grow aDes8 if needed - aDes8.Copy(s, n); -} - -EXPORT_C HBufC16* PerlUtil::newHBufC16fromPVn(const U8 *s, STRLEN n, bool utf8) { - HBufC16 *hBuf16 = HBufC16::New(n); // overallocate - - if (hBuf16) { - if (utf8) { - TPtr16 aPtr16(hBuf16->Des()); - TPtrC8 aPtrC8(s, n); - CnvUtfConverter::ConvertToUnicodeFromUtf8(aPtr16, aPtrC8); - } else { - TPtrC8 aPtrC8(s, n); - hBuf16->Des().Copy(aPtrC8); - } - } - - return hBuf16; -} - -EXPORT_C void PerlUtil::setTDes16fromPVn(TDes16& aDes16, const U8 *s, STRLEN n, bool utf8) { - // TODO: grow aDes16 if needed - if (utf8) { - TPtrC8 aPtrC8(s, n); - CnvUtfConverter::ConvertToUnicodeFromUtf8(aDes16, aPtrC8); - } else { - TPtrC8 aPtrC8(s, n); - aDes16.Copy(aPtrC8); - } -} diff --git a/symbian/PerlUtil.h b/symbian/PerlUtil.h deleted file mode 100644 index 1e7d2929b4..0000000000 --- a/symbian/PerlUtil.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (c) 2004-2005 Nokia. All rights reserved. */ - -/* The PerlUtil class is licensed under the same terms as Perl itself. */ - -/* See PerlUtil.pod for documentation. */ - -#ifndef __PerlUtil_h__ -#define __PerlUtil_h__ - -#include <e32base.h> - -#include "EXTERN.h" -#include "perl.h" - -class PerlUtil { - public: - - IMPORT_C static SV* newSvPVfromTDesC8(const TDesC8& aDes); - IMPORT_C static void setSvPVfromTDesC8(SV* sv, const TDesC8& aDes); - IMPORT_C static HBufC8* newHBufC8fromSvPV(SV* sv); - IMPORT_C static void setTDes8fromSvPV(TDes8& aDes8, SV* sv); - - IMPORT_C static SV* newSvPVfromTDesC16(const TDesC16& aDes); - IMPORT_C static void setSvPVfromTDesC16(SV* sv, const TDesC16& aDes); - IMPORT_C static HBufC16* newHBufC16fromSvPV(SV* sv); - IMPORT_C static void setTDes16fromSvPV(TDes16& aDes16, SV* sv); - - IMPORT_C static HBufC8* newHBufC8fromPVn(const U8* s, STRLEN n); - IMPORT_C static void setTDes8fromPVn(TDes8& aDes8, const U8* s, STRLEN n); - IMPORT_C static HBufC16* newHBufC16fromPVn(const U8* s, STRLEN n, bool utf8); - IMPORT_C static void setTDes16fromPVn(TDes16& aDes16, const U8* s, STRLEN n, bool utf8); -}; - -#endif /* #ifndef __PerlUtil_h__ */ - - diff --git a/symbian/PerlUtil.pod b/symbian/PerlUtil.pod deleted file mode 100644 index 3215d194ea..0000000000 --- a/symbian/PerlUtil.pod +++ /dev/null @@ -1,42 +0,0 @@ -=head1 NAME - -PerlUtil - a C++ utility class for Perl/Symbian - -=head1 SYNOPSIS - - // in your App.mmp - USERINCLUDE \symbian\perl\x.y.z\include - LIBRARY perlXYZ.lib - - // in your App - #include "PerlUtil.h" // includes also EXTERN.h and perl.h - - // Static methods for moving between Perl strings (SvPV) - // and Symbian strings (HBufC and TDes). - - static SV* newSvPVfromTDesC8(const TDesC8& aDes); - static void setSvPVfromTDesC8(SV* sv, const TDesC8& aDes); - static HBufC8* newHBufC8fromSvPV(SV* sv); - static void setTDes8fromSvPV(TDes8* aDes8, SV* sv); - - static SV* newSvPVfromTDesC16(const TDesC16& aDes); - static void setSvPVfromTDesC16(SV* sv, const TDesC16& aDes); - static HBufC16* newHBufC16fromSvPV(SV* sv); - static void setTDes16fromSvPV(TDes16* aDes16, SV* sv); - - static HBufC8* newHBufC8fromPVn(const U8* s, STRLEN n); - static void setTDes8fromPVn(TDes8* aDes8, const U8* s, STRLEN n); - static HBufC16* newHBufC16fromPVn(const U8* s, STRLEN n, bool utf8); - static void setTDes16fromPVn(TDes16* aDes16, const U8* s, STRLEN n); - - // An example - - const U8* s = (const U8 *)"foo"; - HBufC16* b = PerlUtil::newHBufC16fromPVn(s, 3, 0); - someCallWithConstTDesCRefArgument(*b); - delete b; - -=cut - - - diff --git a/symbian/README b/symbian/README deleted file mode 100644 index 95ed303851..0000000000 --- a/symbian/README +++ /dev/null @@ -1,20 +0,0 @@ -The PerlApp* files are a demonstration application for the CPerlBase -class, which is defined and implemented by the PerlBase* files. -The rest of the files are part of the Symbian base port. - -All files are Copyright (c) Nokia, 2004-2005, all rights reserved, -and licensed under the same terms as Perl itself. - -Once the 'sdkinstall' make target has been run in the top level, -the PerlApp can be built using the standard Symbian way: - - bldmake bldfiles - abld build wins udeb - abld build thumb urel - -and then packaged into a SIS by: - - makesis PerlApp.pkg - --- - diff --git a/symbian/TODO b/symbian/TODO deleted file mode 100644 index ac8ee3d2d0..0000000000 --- a/symbian/TODO +++ /dev/null @@ -1,198 +0,0 @@ -=encoding utf8 - -=head1 BASE PORT - -=head2 Console - -- The Console only does "ASCII" input: e.g. pressing the "2" - key five times, "aaaaa", does not produce "ä" ("a diaeresis"), - but instead the "2" key rotates through "abc2abc2...". - This is a pity because the Console is actually capable of full - Unicode input and output (if you have the fonts, that is). You - can verify this by entering e.g. the euro character, which is - U+20AC, well beyond U+00FF. I don't know why the full repertoire - of the keyboard is not available. -- Enhance the console? (line editing, full x-y movement, history) -- The role of the console needs to be rethought: the best way - would be to have the console visible in the same screen as - the GUI elements (an "embedded console"?) - -=head2 Core Language - -- the $^E does not work -- select() does not work (not our fault) -- starting external application: what now (0.1.0) works is: - - system("app"); - - system("app&"); - - and those with arguments: - - system("app arg1 arg2") - - system("app arg1 arg2 &") - but remember that a Symbian process does get only argv[0] - and argv[1]: all the arguments of the application are passed - in as a single argument, the second one ("arg1 arg2" in the above) - What does not work: - - I/O redirection - - piped open, in either direction - - qx/backtick/` - - fork/wait (these unlikely to ever work as in POSIX) - - IO redirection or filename globbing in system() - (since there is no POSIX shell beneath) - What might work in future: - - some I/O redirection - - exec() might be made to work - - Symbian::spawn("cmd args") returning a process id (what does Win32 do?) - - Symbian::waitpid($spawned_pid) - -=head2 Platform - -- in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is - fragile (see Symbian FAQ-0929), intensive debugging and fix needed - -=head2 Unicode - -- Symbian has Unicode filenames, and Unicode all over the place. -- Encode and the use of Symbian Unicode in general - tie into the overall usefulness of PerlIO. - -=head2 Portability - -- Slash versus Backslash: where does one need to use "\\"? - writing Perl applications, where can one get away with using "/" ? - -=head2 Build - -- make xsbuild.pl much more robust (for building external extensions) - (see symbian\ext\README and symbian\ext\Moped\Msg\README) -- now the .mmp functions both as input and as output - bad -- MakeMaker? Pure PM, PM + XS? -- currently the PerlApp UID is in both config.pl (hardwired) and - in makesis.pl (computed), this is quite error prone -- Enable building also under Cygwin? (could be really hard, - the Symbian SDKs pretty much assume cmd.exe) - -=head1 PACKAGING - -- subdivide perlext.sis? -- pm-stripper: strip pod and comments, while inserting the appropriate - #line commands to keep linenumbers in sync. Shaves off easily 50% - of the code, making install packages smaller. -- Get MakeMaker to create SIS packages? In non-Win32? -- Symbian has APIs for opening .zip files -- Investigate Autrijus Tang's PAR format - http://www.autrijus.org/par-intro/ - -=head1 PerlBase - -- review for proper Symbian coding practices - -=head1 PerlApp - -- In "Run" see how one could show also the file extensions. -- How to allow passing command line options to scripts being run? -- Terminate/Pause menu entries (to be used while the script is running)? -- review for proper Symbian coding practices - -=head2 All UIs - -- Make it possible to call UI elements (or any other Symbianic - asynchronous services) from Perl. - - There is now a sample of enabling calling CPerlUi::TextQueryDialogL() - from Perl as PerlApp::TextQuery(), see symbian_utils.c. This, however, - does not work: calling the dialog code blocks so that the screen is not - redrawn at all. Perl should do both: "yield" so that the GUI framework - can redraw, but in the meanwhile Perl should wait for the completion - (OK or Cancel) of the dialog, but Perl must not exit the current PL_op. - Welcome to the wonderful world of cooperative multitasking. The right - solution surely involves Active Objects. The problem may require having - a different Perl op dispatch loop than the standard and debug ones in - run.c and dump.c. - -- menu/toolbar support -- selection lists (single cf multi cf radio) -- on/off (special case of two-item radio selection list) -- forms (multicontrols) -- "secret editor" (special case of text query) - -=head2 Series 60 - -- in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via - FExplorer does not open up the console - -=head2 Series 80 - -- On exit "PerlApp" gets Symbian USER Panic 44: "This panic is raised - by the Free() and FreeZ() member functions of an RHeap. It is caused - when the cell being freed overlaps the next cell on the free list - (i.e. the first cell on the free list with an address higher than the - one being freed)." Reason unknown. -- Hotkey Newline so that it functions as 'OK' in dialogs - -=head2 UIQ - -- UIQ 3.0? UIQ 2.0? (now only tried in UIQ 2.1) -- UIQ, at least UIQ 2.1, does not have "file select dialogs" since - "files" are supposed to be hidden from the user. Therefore, no - "Run" in PerlApp. (For similar stylistic reasons there is no "Exit".) -- Long notes (e.g. the EPerlAppCommandAbout) are shown badly truncated. - -=head1 CPAN LIBRARIES - -- Include/Package more modules (or work harder on getting CPAN.pm working?) - (but note that lib/**/*.pm is 3.5 megabytes, probably not worth including - all of it, even after pm-stripping): - - libnet - - Bundle::CPAN - - Archive::Tar (now included in 5.9.x) - - Term::ReadKey (useless?) - - Term::ReadLine (useless?) - - Bundle::LWP - - URI - - HTML::TagSet - - HTML::Parser - - HTML::Entities - - HTML::HeadParser - - LWP - - Crypt::SSLeay? (ssl?) - - IMAP? - - Net::Telnet? - - Archive::Zip? - - Mail::Send? - - Date::Calc? - - XML? XML::Simple? (expat?) (there is builtin xml support) - - RSS? - - DBI (DBD::???) - - DBD::SQLite? (sqlite?) - - SOAP? XML-RPC? - -=head1 CORE LIBRARIES - -- Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now) -- Fix Encode to not to have writeable data: seems to be tricky indeed - because of copious global non-const data. -- Verify that the modified File::Spec::Win32 does work in Symbian. - (File::Spec::Epoc does not seem to be relevant?) -- What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian. -- What should Sys::Hostname return? GPRS? BT? WLAN? -- ByteLoader problem: byterun.c does not see VERSION and XS_VERSION. -- POSIX problem: STDLIB POSIX is not that POSIX. - -=head1 REGRESSION SUITE - -- how to run the standard test suite on a Symbian device? - -=head1 FUTURE POSSIBILITIES - -- GUI support (problematic that the MVC model enforces an "application") - (name suggestion: Moped::Gui) - (see above for the need of sorting out the Active Objectedness) -- Messaging support (sms:, mms:, mailto:, irdaobex:, btobex:, - cell location, WLAN) - (name suggestion: Moped::Msg) -- PDA support (address book) - (name suggestion: Moped::PDA) -- Device support (memory, camera) - (name suggestion: Moped::Dev::Memory, Moped::Dev::Drives, Moped::Dev::Camera) -- Phone APIs (e.g. how to catch an incoming call: BIO messaging) -- Remote console (Bluetooth/IR/USB?) - diff --git a/symbian/bld.inf b/symbian/bld.inf deleted file mode 100644 index c4489677f0..0000000000 --- a/symbian/bld.inf +++ /dev/null @@ -1,4 +0,0 @@ -PRJ_MMPFILES -PerlApp.mmp -PerlRecog.mmp - diff --git a/symbian/config.pl b/symbian/config.pl deleted file mode 100644 index 2671df6d8f..0000000000 --- a/symbian/config.pl +++ /dev/null @@ -1,994 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (c) 2004-2005 Nokia. All rights reserved. -# This utility is licensed under the same terms as Perl itself. - -use strict; -use lib "symbian"; - -print "Configuring...\n"; -print "Configuring with: Perl version $] ($^X)\n"; - -do "sanity.pl" or die $@; - -my %VERSION = %{ do "version.pl" or die $@ }; - -printf "Configuring for: Perl version $VERSION{REVISION}.%03d%03d\n", - $VERSION{VERSION}, $VERSION{SUBVERSION}; - -my $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}"; -my $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}"; - -my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) = - @{ do "sdk.pl" or die $@ }; -my %PORT = %{ do "port.pl" or die $@ }; - -if ($SYMBIAN_ROOT eq 'C:\Symbian\Series60_1_2_CW') { - ( $SYMBIAN_VERSION, $SDK_VERSION ) = qw(6.1 1.2); -} - -my $WIN = $ENV{WIN} ; # 'wins', 'winscw' (from sdk.pl) -my $ARM = 'thumb'; # 'thumb', 'armv5' -my $S60SDK = $ENV{S60SDK}; # qw(1.2 2.0 2.1 2.6) (from sdk.pl) - if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) { - $ARM = 'armv5'; # 'thumb', 'armv5' # Configuration for S60 5th Edition SDK v1.0 - } -my $S80SDK = $ENV{S80SDK}; # qw(2.0) (from sdk.pl) -my $S90SDK = $ENV{S90SDK}; # qw(1.1) (from sdk.pl) -my $UIQSDK = $ENV{UIQSDK}; # qw(2.0 2.1) (from sdk.pl) - -my $UREL = $ENV{UREL}; # from sdk.pl -$UREL =~ s/-ARM-/$ARM/; -my $UARM = $ENV{UARM}; # from sdk.pl - -die "$0: SDK not recognized\n" - if !defined($SYMBIAN_VERSION) || - !defined($SDK_VERSION) || - (!defined($S60SDK) && !defined($S80SDK) && !defined($S90SDK) && !defined($UIQSDK)); - -die "$0: does not know which Windows compiler to use\n" - unless defined $WIN; - -print "Symbian $SYMBIAN_VERSION SDK $SDK_VARIANT $SDK_VERSION ($WIN) installed at $SYMBIAN_ROOT\n"; - -my $CWD = do "cwd.pl" or die $@; -print "Build directory $CWD\n"; - -die "$0: '+' in cwd does not work with Series 60 SDK 1.2\n" - if defined $S60SDK && $S60SDK eq '1.2' && $CWD =~ /\+/; - -my @unclean; -my @mmp; - -sub create_mmp { - my ( $target, $type, @x ) = @_; - my $miniperl = $target eq 'miniperl'; - my $perl = $target eq 'perl'; - my $mmp = "$target.mmp"; - my $targetpath = $miniperl - || $perl ? "TARGETPATH\t\\System\\Apps\\Perl" : ""; - if ( open( my $fh, '>', $mmp ) ) { - print "\t$mmp\n"; - push @mmp, $mmp; - push @unclean, $mmp; - print $fh <<__EOF__; -TARGET $target.$type -TARGETTYPE $type -__EOF__ - if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) { - print $fh "UID\t0 0xEA3E9181\n" if $miniperl; - print $fh "UID\t0 0xED04DD86\n" if $perl; - print $fh "UID\t0x1000008d 0xE8667302\n" unless $miniperl || $perl; - print $fh "CAPABILITY\tNONE\n"; - } else { - print $targetpath; - print $fh "EPOCHEAPSIZE\t1024 8388608"; - print $fh "EPOCSTACKSIZE\t65536"; - } - print $fh <<__EOF__; -EXPORTUNFROZEN -SRCDBG -__EOF__ - if ($SDK_VARIANT eq 'S60') { - print $fh "MACRO\t__SERIES60__\n"; - print $fh "MACRO\t__SERIES60_1X__\n" if $S60SDK =~ /^1\./; - print $fh "MACRO\t__SERIES60_2X__\n" if $S60SDK =~ /^2\./; - print $fh "MACRO\t__SERIES60_3X__\n" if $S60SDK =~ /^5\./; - } - if ($SDK_VARIANT eq 'S80') { - print $fh "MACRO\t__SERIES80__\n"; - print $fh "MACRO\t__SERIES80_1X__\n" if $S80SDK =~ /^1\./; - print $fh "MACRO\t__SERIES80_2X__\n" if $S80SDK =~ /^2\./; - } - if ($SDK_VARIANT eq 'S90') { - print $fh "MACRO\t__SERIES90__\n"; - } - if ($SDK_VARIANT eq 'UIQ') { - print $fh "MACRO\t__UIQ__\n"; - print $fh "MACRO\t__UIQ_1X__\n" if $UIQSDK =~ /^1\./; - print $fh "MACRO\t__UIQ_2X__\n" if $UIQSDK =~ /^2\./; - } - my ( @c, %c ); - @c = map { glob } qw(*.c); # Find the .c files. - @c = map { lc } @c; # Lowercase the names. - @c = grep { !/malloc\.c/ } @c; # Use the system malloc. - @c = grep { !/main\.c/ } @c; # main.c must be explicit. - push @c, map { lc } @x; - @c = map { s:^\.\./::; $_ } @c; # Remove the leading ../ - @c = map { $c{$_}++ } @c; # Uniquefy. - @c = sort keys %c; # Beautify. - - for (@c) { - print $fh "SOURCE\t\t$_\n"; - } - print $fh <<__EOF__; -SOURCEPATH $CWD -USERINCLUDE $CWD -USERINCLUDE $CWD\\ext\\DynaLoader -USERINCLUDE $CWD\\symbian -SYSTEMINCLUDE \\epoc32\\include\\libc -SYSTEMINCLUDE \\epoc32\\include -LIBRARY euser.lib -LIBRARY estlib.lib -LIBRARY eikcore.lib -LIBRARY cone.lib -LIBRARY efsrv.lib -__EOF__ - if ( $miniperl || $perl || $type eq 'dll' ) { - print $fh <<__EOF__; -LIBRARY charconv.lib -LIBRARY hal.lib -LIBRARY estor.lib -__EOF__ - } - if ($SDK_VARIANT =~ /^S[689]0$/) { - print $fh <<__EOF__; -LIBRARY commonengine.lib -__EOF__ - } - if (defined $S60SDK) { - print $fh <<__EOF__; -LIBRARY avkon.lib -LIBRARY commondialogs.lib -__EOF__ - } - if ((defined $S80SDK) or (defined $S90SDK)) { - print $fh <<__EOF__; -LIBRARY eikctl.lib -LIBRARY eikcoctl.lib -LIBRARY eikdlg.lib -LIBRARY ckndlg.lib -__EOF__ - } - if (defined $UIQSDK) { - print $fh <<__EOF__; -LIBRARY eikctl.lib -LIBRARY eikcoctl.lib -LIBRARY eikdlg.lib -LIBRARY qikctl.lib -__EOF__ - } - if ( $type eq 'exe' ) { - print $fh <<__EOF__; -STATICLIBRARY ecrt0.lib -__EOF__ - } - if ($miniperl) { - print $fh <<__EOF__; -MACRO PERL_MINIPERL -__EOF__ - } - if ($perl) { - print $fh <<__EOF__; -MACRO PERL_PERL -__EOF__ - } - print $fh <<__EOF__; -MACRO PERL_CORE -MACRO MULTIPLICITY -MACRO PERL_IMPLICIT_CONTEXT -__EOF__ - unless ( $miniperl || $perl ) { - print $fh <<__EOF__; -MACRO PERL_GLOBAL_STRUCT -MACRO PERL_GLOBAL_STRUCT_PRIVATE -__EOF__ - } - unless ($miniperl || $perl ) { - if ($SDK_VARIANT eq 'S60' && $S60SDK =~ /^5\./) { - print $fh "START RESOURCE\tsymbian\\PerlUi.rss\nEND\n"; - } else { - print $fh "RESOURCE\tsymbian\\PerlUi.rss"; - } - } - close $fh; - } - else { - warn "$0: failed to open $mmp for writing: $!\n"; - } -} - -sub create_bld_inf { - if ( open( BLD_INF, '>', 'bld.inf' ) ) { - print "\tbld.inf\n"; - push @unclean, "bld.inf"; - print BLD_INF <<__EOF__; -PRJ_PLATFORMS -${WIN} ${ARM} -PRJ_MMPFILES -__EOF__ - for (@mmp) { print BLD_INF $_, "\n" } - close BLD_INF; - } - else { - warn "$0: failed to open bld.inf for writing: $!\n"; - } -} - -my %config; - -sub load_config_sh { - if ( open( CONFIG_SH, '<', 'symbian/config.sh' ) ) { - while (<CONFIG_SH>) { - if (/^(\w+)=['"]?(.*?)["']?$/) { - my ( $var, $val ) = ( $1, $2 ); - $val =~ s/x.y.z/$R_V_SV/gi; - $val =~ s/thumb/$ARM/gi; - $val = "C:$val" if (defined($S90SDK) and ($val =~ /^(\/|\\\\)system[\/\\]/i)); - $val = "'$SYMBIAN_VERSION'" if $var eq 'osvers'; - $val = "'$SDK_VERSION'" if $var eq 'sdkvers'; - $config{$var} = $val; - } - } - close CONFIG_SH; - } - else { - warn "$0: failed to open symbian\\config.sh for reading: $!\n"; - } -} - -sub create_config_h { - load_config_sh(); - if ( open( CONFIG_H, '>', 'config.h' ) ) { - print "\tconfig.h\n"; - push @unclean, "config.h"; - if ( open( CONFIG_H_SH, '<', 'config_h.SH' ) ) { - while (<CONFIG_H_SH>) { - last if /\#ifndef _config_h_/; - } - print CONFIG_H <<__EOF__; -/* - * Package name : perl - * Source directory : . - * Configuration time: - * Configured by : - * Target system : symbian - */ - -#ifndef _config_h_ -__EOF__ - while (<CONFIG_H_SH>) { - last if /!GROK!THIS/; - s/\$(\w+)/exists $config{$1} ? $config{$1} : (warn "$0: config.sh missing '$1'\n", "")/eg; - s/^#undef\s+(\S+).+/#undef $1/g; - s:\Q/**/::; - print CONFIG_H; - } - close CONFIG_H_SH; - } - else { - warn "$0: failed to open ../config_h.SH for reading: $!\n"; - } - close CONFIG_H; - } - else { - warn "$0: failed to open config.h for writing: $!\n"; - } -} - -sub create_DynaLoader_cpp { - print "\text\\DynaLoader\\DynaLoader.cpp\n"; - system( -q[xsubpp ext\DynaLoader\dl_symbian.xs >ext\DynaLoader\DynaLoader.cpp] - ) == 0 - or die "$0: creating DynaLoader.cpp failed: $!\n"; - push @unclean, 'ext\DynaLoader\DynaLoader.cpp'; - -} - -sub create_symbian_port_h { - print "\tsymbian\\symbian_port.h\n"; - if ( open( SYMBIAN_PORT_H, '>', 'symbian/symbian_port.h' ) ) { - my ($sdkmajor, $sdkminor); - if ($SDK_VARIANT eq 'S60') { - $S60SDK =~ /^(\d+)\.(\d+)$/; - ($sdkmajor, $sdkminor) = ($1, $2); - } - if ($SDK_VARIANT eq 'S80') { - $S80SDK =~ /^(\d+)\.(\d+)$/; - ($sdkmajor, $sdkminor) = ($1, $2); - } - if ($SDK_VARIANT eq 'S90') { - $S90SDK =~ /^(\d+)\.(\d+)$/; - ($sdkmajor, $sdkminor) = ($1, $2); - } - if ($SDK_VARIANT eq 'UIQ') { - $UIQSDK =~ /^(\d+)\.(\d+)$/; - ($sdkmajor, $sdkminor) = ($1, $2); - } - print SYMBIAN_PORT_H <<__EOF__; -/* Copyright (c) 2004-2005, Nokia. All rights reserved. */ - -#ifndef __symbian_port_h__ -#define __symbian_port_h__ - -#define PERL_SYMBIANPORT_MAJOR $PORT{dll}->{MAJOR} -#define PERL_SYMBIANPORT_MINOR $PORT{dll}->{MINOR} -#define PERL_SYMBIANPORT_PATCH $PORT{dll}->{PATCH} - -#define PERL_SYMBIANSDK_FLAVOR L"$SDK_VARIANT" -#define PERL_SYMBIANSDK_MAJOR $sdkmajor -#define PERL_SYMBIANSDK_MINOR $sdkminor - -#endif /* #ifndef __symbian_port_h__ */ -__EOF__ - close(SYMBIAN_PORT_H); - push @unclean, 'symbian\symbian_port.h'; - } - else { - warn "$0: failed to open symbian/symbian_port.h for writing: $!\n"; - } -} - -sub create_perlmain_c { - print "\tperlmain.c\n"; - system( -q[perl -ne "print qq[ char *file = __FILE__;\n] if /dXSUB_SYS/;print unless /PERL_UNUSED_CONTEXT/;print qq[ newXS(\"DynaLoader::boot_DynaLoader\", boot_DynaLoader, file);\n] if /dXSUB_SYS/;print qq[EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);\n] if /Do not delete this line/" miniperlmain.c > perlmain.c] - ) == 0 - or die "$0: Creating perlmain.c failed: $!\n"; - push @unclean, 'perlmain.c'; -} - -sub create_PerlApp_pkg { - print "\tsymbian\\PerlApp.pkg\n"; - if ( open( PERLAPP_PKG, '>', 'symbian\\PerlApp.pkg' ) ) { - my $ProductId = - defined $S60SDK ? -qq[;Supports Series 60 v0.9\n(0x101F6F88), 0, 0, 0, {"Series60ProductID"}\n] : - defined $S80SDK ? -qq[;Supports Series 80 v2.0\n(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}\n] : - defined $S90SDK ? -qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] : - defined $UIQSDK && $SDK_VERSION =~ /^(\d)\.(\d)$/ ? -qq[;Supports UIQ v2.1\n(0x101F617B), $1, $2, 0, {"UIQ21ProductID"}\n] : - ";Supports Series NN"; - my $APPS = $UREL; - if (($SDK_VARIANT eq 'S60' && $SDK_VERSION ne '1.2' || $WIN eq 'winscw') || defined $S80SDK || defined $S90SDK) { # Do only if not in S60 1.2 VC. - $APPS =~ s!\\epoc32\\release\\(.+)\\$UARM$!\\epoc32\\data\\z\\system\\apps\\PerlApp!i; - } - # TODO: in S60 3.0 there will be no more recognizers. - my $mdl = qq["$UREL\\PerlRecog.mdl"-"!:\\system\\recogs\\PerlRecog.mdl";]; - my $AIF = $SDK_VARIANT =~ /^S[689]0/ ? qq["$APPS\\PerlApp.aif"-"!:\\system\\apps\\PerlApp\\PerlApp.aif"] : ""; - print PERLAPP_PKG <<__EOF__; -; !!!!!! DO NOT EDIT THIS FILE !!!!!! -; This file is built by symbian\\config.pl. -; Any changes made here will be lost! -; -; PerlApp.pkg -; -; Note that the demo_pl needs to be run to create the demo .pl scripts. -; -; Languages -&EN; - -; Standard SIS file header -#{"PerlApp"},(0x102015F6),0,2,0 - -$ProductId - -; Files -"$UREL\\PerlApp.APP"-"!:\\system\\apps\\PerlApp\\PerlApp.app" -$mdl -"$APPS\\PerlApp.rsc"-"!:\\system\\apps\\PerlApp\\PerlApp.rsc" -$AIF -__EOF__ - if ( open( DEMOS, '-|', "perl symbian\\demo_pl list" ) ) { - while (<DEMOS>) { - chomp; - if (defined $S90SDK) { - print PERLAPP_PKG qq["$_"-"!:\\Mydocs\\Perl\\$_"\n]; - } else { - print PERLAPP_PKG qq["$_"-"!:\\Perl\\$_"\n]; - } - } - close(DEMOS); - } - close(PERLAPP_PKG); - } - else { - die "$0: symbian\\PerlApp.pkg: $!\n"; - } - push @unclean, 'symbian\PerlApp.pkg'; -} - -print "Creating...\n"; -create_mmp( - 'miniperl', 'exe', - 'miniperlmain.c', 'symbian\symbian_stubs.c', - 'symbian\PerlBase.cpp', - 'symbian\PerlUi.cpp', - 'symbian\PerlUtil.cpp', - 'symbian\symbian_utils.cpp', -); -create_mmp( - "perl", 'exe', - 'perlmain.c', 'symbian\symbian_stubs.c', - 'symbian\symbian_utils.cpp', - 'symbian\PerlBase.cpp', - 'symbian\PerlUi.cpp', - 'symbian\PerlUtil.cpp', - 'ext\DynaLoader\DynaLoader.cpp', -); - -create_mmp( - "perl$VERSION", 'dll', - 'symbian\symbian_dll.cpp', 'symbian\symbian_stubs.c', - 'symbian\symbian_utils.cpp', - 'symbian\PerlBase.cpp', - 'symbian\PerlUi.cpp', - 'symbian\PerlUtil.cpp', - 'ext\DynaLoader\DynaLoader.cpp', -); - -create_bld_inf(); -create_config_h(); -create_perlmain_c(); -create_symbian_port_h(); -create_DynaLoader_cpp(); -create_PerlApp_pkg(); - -if ( open( PERLAPP_MMP, '>', 'symbian/PerlApp.mmp' ) ) { - my @MACRO; - my @LIB; - push @MACRO, 'PERL_IMPLICIT_CONTEXT'; - push @MACRO, 'MULTIPLICITY'; - if (defined $S60SDK) { - push @MACRO, '__SERIES60__'; - push @MACRO, '__SERIES60_1X__' if $S60SDK =~ /^1\./; - push @MACRO, '__SERIES60_2X__' if $S60SDK =~ /^2\./; - push @LIB, <<__EOF__; -LIBRARY avkon.lib -LIBRARY commondialogs.lib -__EOF__ - } - if (defined $S80SDK) { - push @MACRO, '__SERIES80__'; - push @MACRO, '__SERIES80_1X__' if $S80SDK =~ /^1\./; - push @MACRO, '__SERIES80_2X__' if $S80SDK =~ /^2\./; - push @LIB, <<__EOF__; -LIBRARY eikctl.lib -LIBRARY eikcoctl.lib -LIBRARY eikdlg.lib -LIBRARY ckndlg.lib -__EOF__ - } - if (defined $S90SDK) { - push @MACRO, '__SERIES90__'; - push @LIB, <<__EOF__; -LIBRARY eikctl.lib -LIBRARY eikcoctl.lib -LIBRARY eikdlg.lib -LIBRARY ckndlg.lib -__EOF__ - } - if (defined $UIQSDK) { - push @MACRO, '__UIQ__'; - push @MACRO, '__UIQ_1X__' if $UIQSDK =~ /^1\./; - push @MACRO, '__UIQ_2X__' if $UIQSDK =~ /^2\./; - push @LIB, <<__EOF__; -LIBRARY eikctl.lib -LIBRARY eikcoctl.lib -LIBRARY eikdlg.lib -LIBRARY qikctl.lib -__EOF__ - } - print PERLAPP_MMP <<__EOF__; -// !!!!!! DO NOT EDIT THIS FILE !!!!!! -// This file is built by symbian\\config.pl. -// Any changes made here will be lost! -TARGET PerlApp.app -TARGETTYPE app -UID 0x100039CE 0x102015F6 -TARGETPATH \\system\\apps\\PerlApp -SRCDBG -EXPORTUNFROZEN -SOURCEPATH . -SOURCE PerlApp.cpp - -USERINCLUDE . -USERINCLUDE .. -USERINCLUDE \\symbian\\perl\\$R_V_SV\\include - -SYSTEMINCLUDE \\epoc32\\include -SYSTEMINCLUDE \\epoc32\\include\\libc - -LIBRARY apparc.lib -LIBRARY bafl.lib -LIBRARY charconv.lib -LIBRARY cone.lib -LIBRARY efsrv.lib -LIBRARY eikcore.lib -LIBRARY estlib.lib -LIBRARY euser.lib -LIBRARY perl$VERSION.lib -@LIB -RESOURCE perlapp.rss -__EOF__ - if (@MACRO) { - for my $macro (@MACRO) { - print PERLAPP_MMP <<__EOF__; -MACRO $macro -__EOF__ - } - } - if ($SDK_VARIANT =~ /^S[689]0$/) { - print PERLAPP_MMP <<__EOF__; -AIF PerlApp.aif . PerlAppAif.rss -__EOF__ - } - close(PERLAPP_MMP); - push @unclean, 'symbian\PerlApp.mmp'; -} -else { - warn "$0: failed to create symbian\\PerlApp.mmp"; -} - -if ( open( MAKEFILE, '>', 'Makefile' ) ) { - my $perl = "perl$VERSION"; - my $windef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$WIN\\$perl.def"; - my $windef2 = "..\\BWINS\\${perl}u.def"; - my $armdef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$perl\\$ARM\\$perl.def"; - my $armdef2 = "..\\BMARM\\${perl}u.def"; - my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN"; - print "\tMakefile\n"; - print MAKEFILE <<__EOF__; -help: - \@echo === Perl for Symbian === - \@echo Useful targets: - \@echo all win arm clean - \@echo perldll.sis perlext.sis perlsdk.zip - -WIN = ${WIN} -ARM = ${ARM} - -all: build - -build: rename_makedef build_${WIN} build_arm - -@unclean: symbian\\config.pl - perl symbian\\config.pl - -build_${WIN}: abld.bat perldll_${WIN} - -build_vc6: abld.bat perldll_wins - -build_vc7: abld.bat perldll_wins - -build_cw: abld.bat perldll_winscw - -build_arm: abld.bat perl_arm miniperl_arm perldll_arm - -miniperl_win miniperl_${WIN}: miniperl.mmp abld.bat rename_makedef - abld build ${WIN} udeb miniperl - -miniperl_arm: miniperl.mmp abld.bat rename_makedef - abld build \$(ARM) $UARM miniperl - -miniperl: miniperl_${WIN} miniperl_arm - -perl: perl_${WIN} perl_arm - -perl_win perl_${WIN}: perl.mmp abld.bat rename_makedef - abld build ${WIN} perl - -perl_arm: perl.mmp abld.bat rename_makedef - abld build \$(ARM) $UARM perl - -perldll_win perldll_${WIN}: perl${VERSION}_${WIN} freeze_${WIN} perl${VERSION}_${WIN} - -perl${VERSION}_win perl${VERSION}_${WIN}: perl$VERSION.mmp abld.bat rename_makedef - abld build ${WIN} perl$VERSION - -perldll_arm: perl${VERSION}_arm freeze_arm perl${VERSION}_arm - -perl${VERSION}_arm: perl$VERSION.mmp abld.bat rename_makedef - abld build \$(ARM) $UARM perl$VERSION - -perldll perl$VERSION: perldll_${WIN} perldll_arm - -win ${WIN}: miniperl_${WIN} perl_${WIN} perldll_${WIN} - -thumb arm: miniperl_arm perl_arm perldll_arm - -rename_makedef: - -ren makedef.pl nomakedef.pl - -# Symbian SDK has a makedef.pl of its own, -# and we don't need Perl's. -rerename_makedef: - -ren nomakedef.pl makedef.pl - -symbian\\PerlUi.rss: symbian\\PerlUi$SDK_VARIANT.rss - copy symbian\\PerlUi$SDK_VARIANT.rss symbian\\PerlUi.rss - -abld.bat abld: bld.inf symbian\\PerlUi.rss - bldmake bldfiles - -vc6: win.mf vc6.mf build_vc6 - -vc7: win.mf vc7.mf build_vc7 - -cw: win.mf cw.mf build_cw - -${WIN}_miniperl.mf: abld.bat symbian\\config.pl - abld makefile ${MF} miniperl - echo > ${WIN}_miniperl.mf - -${WIN}_perl.mf: abld.bat symbian\\config.pl - abld makefile ${MF} perl - echo > ${WIN}_perl.mf - -${WIN}_${VERSION}.mf: abld.bat symbian\\config.pl - abld makefile ${MF} perl${VERSION} - echo > ${WIN}_${VERSION}.mf - -symbian\\${WIN}.mf: - cd symbian; make ${WIN}.mf - -${WIN}.mf: ${WIN}_miniperl.mf ${WIN}_perl.mf ${WIN}_${VERSION}.mf symbian\\${WIN}.mf - -arm_miniperl.mf: abld.bat symbian\\config.pl - echo > arm_miniperl.mf - -arm_perl.mf: abld.bat symbian\\config.pl - echo > arm_perl.mf - -arm_${VERSION}.mf: abld.bat symbian\\config.pl - echo > arm_${VERSION}.mf - -arm.mf: arm_miniperl.mf arm_perl.mf arm_${VERSION}.mf - -win.mf: vc6.mf cw.mf - echo > win.mf - -vc6.mf: abld.bat symbian\\config.pl - abld makefile vc6 - echo > vc6.mf - -vc7.mf: abld.bat symbian\\config.pl - abld makefile vc7 - echo > vc7.mf - -cw.mf: abld.bat symbian\\config.pl - abld makefile cw_ide - echo > cw.mf - -PM = lib\\Config.pm lib\\Cross.pm lib\\lib.pm ext\\DynaLoader\\DynaLoader.pm ext\\DynaLoader\\XSLoader.pm ext\\Errno\\Errno.pm -POD = lib\\Config.pod - -pm: \$(PM) - -XLIB = -Ixlib\\symbian - -XSBOPT = --win=\$(WIN) --arm=\$(ARM) - -lib\\Config.pm: - copy symbian\\config.sh config.sh -__EOF__ - if (defined $S90SDK) { - print MAKEFILE <<__EOF__; - perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g; s!='(\\\\\\\\system)!='C:\\1!" config.sh -__EOF__ - } else { - print MAKEFILE <<__EOF__; - perl -pi.bak -e "s:x\\.y\\.z+:$R_V_SV:g" config.sh -__EOF__ - }; - print MAKEFILE <<__EOF__; - perl \$(XLIB) configpm --cross=symbian - copy xlib\\symbian\\Config.pm lib\\Config.pm - perl -pi.bak -e "s:x\\.y\\.z:$R_V_SV:g" lib\\Config.pm - perl -pi.bak -e "s:5\\.\\d+\\.\\d+:$R_V_SV:g" lib\\Config.pm - -perl -pi.bak -e "s:x\\.y\\.z:$R_V_SV:g" xlib\\symbian\\Config_heavy.pl - -lib\\lib.pm: - perl lib\\lib_pm.PL - -ext\\DynaLoader\\DynaLoader.pm: - -del /f ext\\DynaLoader\\DynaLoader.pm - perl -Ixlib\\symbian ext\\DynaLoader\\DynaLoader_pm.PL - perl -pi.bak -e "s/__END__//" DynaLoader.pm - copy /y DynaLoader.pm ext\\DynaLoader\\DynaLoader.pm - -del /f DynaLoader.pm DynaLoader.pm.bak - -ext\\DynaLoader\\XSLoader.pm: - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) XSLoader - -ext\\Errno\\Errno.pm: - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) Errno - -miniperlexe.sis: miniperl_arm symbian\\makesis.pl - perl \$(XLIB) symbian\\makesis.pl miniperl - -perlexe.sis: perl_arm symbian\\makesis.pl - perl \$(XLIB) symbian\\makesis.pl perl - - -allsis: all miniperlexe.sis perlexe.sis perldll.sis perllib.sis perlext.sis perlapp.sis - -perldll.sis perl$VERSION.sis: perldll_arm pm symbian\\makesis.pl - perl \$(XLIB) symbian\\makesis.pl perl${VERSION}dll - -perl${VERSION}lib.sis perllib.sis: \$(PM) - perl \$(XLIB) symbian\\makesis.pl perl${VERSION}lib - -perl${VERSION}ext.sis perlext.sis: perldll_arm buildext_sis - perl symbian\\makesis.pl perl${VERSION}ext - -EXT = Compress::Raw::Zlib Cwd Data::Dumper Devel::Peek Digest::MD5 Errno Fcntl File::Glob Filter::Util::Call IO List::Util MIME::Base64 PerlIO::scalar PerlIO::via SDBM_File Socket Storable Time::HiRes XSLoader attributes - -buildext: perldll symbian\\xsbuild.pl lib\\Config.pm - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) \$(EXT) - -buildextcpp: perldll symbian\\xsbuild.pl lib\\Config.pm - perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) \$(EXT) - -buildext_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --sis \$(EXT) - -buildextcpp_sis: perldll.sis symbian\\xsbuild.pl lib\\Config.pm - perl \$(XLIB) symbian\\xsbuild.pl --csuffix .cpp \$(XSBOPT) --sis \$(EXT) - -cleanext: symbian\\xsbuild.pl - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT) - -distcleanext: symbian\\xsbuild.pl - perl \$(XLIB) symbian\\xsbuild.pl \$(XSBOPT) --distclean \$(EXT) - -sis makesis: miniperl perl perldll pm buildext perlapp.sis - perl \$(XLIB) symbian\\makesis.pl - -APIDIR = \\Symbian\\perl\\$R_V_SV - -sdkinstall: - -mkdir \\Symbian\\perl - -mkdir \\Symbian\\perl\\$R_V_SV - -mkdir \$(APIDIR)\\include - -mkdir \$(APIDIR)\\include\\symbian - -mkdir \$(APIDIR)\\lib - -mkdir \$(APIDIR)\\lib\\ExtUtils - -mkdir \$(APIDIR)\\pod - -mkdir \$(APIDIR)\\bin - -mkdir \$(BINDIR) - copy /y *.h \$(APIDIR)\\include - -copy /y *.inc \$(APIDIR)\\include - copy /y lib\\ExtUtils\\xsubpp \$(APIDIR)\\lib\\ExtUtils - copy /y lib\\ExtUtils\\typemap \$(APIDIR)\\lib\\ExtUtils - copy /y lib\\ExtUtils\\ParseXS.pm \$(APIDIR)\\lib\\ExtUtils - copy /y symbian\\xsbuild.pl \$(APIDIR)\\bin - copy /y symbian\\sisify.pl \$(APIDIR)\\bin - copy /y symbian\\PerlBase.h \$(APIDIR)\\include - copy /y symbian\\PerlUi.h \$(APIDIR)\\include - copy /y symbian\\PerlUtil.h \$(APIDIR)\\include - copy /y symbian\\symbian*.h \$(APIDIR)\\include\\symbian - copy /y symbian\\PerlBase.pod \$(APIDIR)\\pod - copy /y symbian\\PerlUtil.pod \$(APIDIR)\\pod - -RELDIR = $SYMBIAN_ROOT\\epoc32\\release -RELWIN = \$(RELDIR)\\\$(WIN)\\udeb -RELARM = \$(RELDIR)\\\$(ARM)\\$UARM -SDKZIP = perl${VERSION}sdk.zip - - -\$(SDKZIP) perlsdk.zip: perldll sdkinstall - -del /f perl${VERSION}sdk.zip - zip -r perl${VERSION}sdk.zip \$(RELWIN)\\perl$VERSION.* \$(RELARM)\\perl$VERSION.* \$(APIDIR) - \@echo perl${VERSION}sdk.zip created. - -PERLSIS = perl${VERSION}.SIS perl${VERSION}lib.SIS perl${VERSION}ext.SIS -ALLSIS = \$(PERLSIS) perlapp.sis -ETC = README.symbian symbian\\PerlBase.pod symbian\\PerlUtil.pod symbian\\sisify.pl symbian\\TODO - -perl${VERSION}dist.zip perldist.zip: \$(ALLSIS) \$(SDKZIP) \$(ETC) - -del /f perl${VERSION}dist.zip - zip -r perl${VERSION}dist.zip \$(ALLSIS) \$(SDKZIP) \$(ETC) - -perlapp: sdkinstall perlapp_${WIN} perlapp_arm - -perlapp_arm_minimal sisify_hex perlappmin.hex perlrscmin.hex: sdkinstall config.h - cd symbian; make perlapp_arm USERDEFS=-DCreatePerlAppMinimal - perl symbian\\hexdump.pl - -perlapp_win perlapp_${WIN}: config.h - cd symbian; make perlapp_${WIN} - -perlapp_arm: config.h - cd symbian; make perlapp_arm - -perlapp_arm_clean: - cd symbian; make clean - -perlapp_demo_extract: - cd symbian; make perlapp_demo_extract - -perlapp.sis: perlapp_arm - cd symbian; make perlapp.sis - -perlapp.zip: - cd symbian; zip perlapp.zip PerlApp.* PerlRecog.* PerlBase.* PerlUtil.* demo_pl - -zip: perlsdk.zip perlapp.zip - -freeze: freeze_${WIN} freeze_arm - -freeze_${WIN}: - abld freeze ${WIN} perl$VERSION - -freeze_arm: - abld freeze \$(ARM) perl$VERSION - -defrost: defrost_${WIN} defrost_arm - -defrost_${WIN}: - -del /f $windef1 - -del /f $windef2 - -defrost_arm: - -del /f $armdef1 - -del /f $armdef2 - -clean_${WIN}: abld.bat - abld clean ${WIN} - -clean_arm: abld.bat - abld clean \$(ARM) - -clean: clean_${WIN} clean_arm rerename_makedef - -del /f \$(PM) - -del /f \$(POD) - -del /f lib\\Config.pm.bak - -del /f xlib\\symbian\\Config_heavy.pl - -rmdir /s /q xlib - -del /f config.sh - -del /f DynaLoader.pm ext\\DynaLoader\\DynaLoader.pm - -del /f ext\\DynaLoader\\Makefile - -del /f ext\\SDBM_File\\sdbm\\Makefile - -del /f symbian\\*.lst - -del /f abld.bat @unclean *.pkg *.sis *.zip - -del /f symbian\\abld.bat symbian\\*.sis symbian\\*.zip - -del /f symbian\\perl5*.pkg symbian\\miniperl.pkg - -del arm_*.mf ${WIN}_*.mf vc*.mf cw*.mf - -del symbian\\Makefile - -del symbian\\PerlUi.rss symbian\\PerlApp.rss - -del perlappmin.hex perlrscmin.hex - -perl symbian\\xsbuild.pl \$(XSBOPT) --clean \$(EXT) - -rmdir /s /q perl${VERSION}_Data - -cd symbian; make clean - -reallyclean: abld.bat - abld reallyclean - -distclean: defrost reallyclean clean - -perl symbian\\xsbuild.pl \$(XSBOPT) --distclean \$(EXT) - -del /f config.h config.sh.bak symbian\\symbian_port.h - -del /f Makefile symbian\\PerlApp.mmp - -del /f BMARM\\*.def - -del /f *.cwlink *.resources *.pref - -del /f perl${VERSION}.xml perl${VERSION}.mcp uid.cpp - -rmdir /s /q BMARM - cd symbian; make distclean - -del /f symbian\\Makefile -__EOF__ - close MAKEFILE; -} -else { - warn "$0: failed to create Makefile: $!\n"; -} - -if ( open( MAKEFILE, '>', 'symbian/Makefile')) { - my $wrap = defined $S60SDK && $S60SDK eq '1.2' && $WIN ne '${WIN}cw'; - my $ABLD = $wrap ? 'perl b.pl': 'abld'; - print "\tsymbian/Makefile\n"; - my $MF = $WIN eq 'wins' ? 'vc6' : $WIN eq 'winscw' ? 'cw_ide' : "UNKNOWN"; - print MAKEFILE <<__EOF__; -WIN = $WIN -ARM = $ARM -ABLD = $ABLD -MF = $MF - -abld.bat: - bldmake bldfiles - -perlapp_${WIN}: abld.bat ..\\config.h PerlApp.h PerlApp.cpp - copy PerlUi$SDK_VARIANT.rss PerlApp.rss - bldmake bldfiles - \$(ABLD) build ${WIN} udeb - -perlapp_arm: ..\\config.h PerlApp.h PerlApp.cpp - copy PerlUi$SDK_VARIANT.rss PerlApp.rss - bldmake bldfiles - \$(ABLD) build ${ARM} $UARM - -$MF: - abld makefile $MF - -win.mf: - bldmake bldfiles - abld makefile $MF - -perlapp_demo_extract: - perl demo_pl extract - -perlapp.sis: perlapp_arm perlapp_demo_extract - -del /f perlapp.SIS - makesis perlapp.pkg - copy /y perlapp.SIS ..\\perlapp.SIS - -clean: - -perl demo_pl cleanup - -del /f perlapp.sis - -del /f b.pl - -del PerlApp.rss - abld clean $WIN - abld clean thumb - -del Makefile - -distclean: clean - -del /f *.cwlink *.resources *.pref - -del /f PerlApp.xml PerlApp.mcp uid.cpp - -rmdir /s /q PerlApp_Data - -del /f abld.bat -__EOF__ - close(MAKEFILE); - if ($wrap) { - if ( open( B_PL, '>', 'symbian/b.pl')) { - print B_PL <<'__EOF__'; -# abld.pl wrapper. - -# nmake doesn't like MFLAGS and MAKEFLAGS being set to -w and w. -delete $ENV{MFLAGS}; -delete $ENV{MAKEFLAGS}; - -system("abld @ARGV"); -__EOF__ - close(B_PL); - } else { - warn "$0: failed to create symbian/b.pl: $!\n"; - } - } -} else { - warn "$0: failed to create symbian/Makefile: $!\n"; -} - -print "Deleting...\n"; -for my $config ( - # Do not delete config.h here. - "config.sh", - "lib\\Config.pm", - "xlib\\symbian\\Config.pm", - "xlib\\symbian\\Config_heavy.pl", - "symbian\\PerlUi.rss", - "symbian\\PerlApp.rss", - ) { - print "\t$config\n"; - unlink($config); -} - -print <<__EOM__; -Configuring done. -Now you can run: - make all - make allsis -__EOM__ - -1; # Happy End. diff --git a/symbian/config.sh b/symbian/config.sh deleted file mode 100644 index b5260d7f34..0000000000 --- a/symbian/config.sh +++ /dev/null @@ -1,961 +0,0 @@ -#!\\bin\\sh -Author='' -_a='.a' -_o='.o' -afs='false' -afsroot='/afs' -alignbytes='4' -aphostname='localhost' -apiversion='5.005' -ar=':' -archlib='\\system\\libs\\perl\\x.y.z\\thumb-symbian' -archlibexp='\\system\\libs\\perl\\x.y.z\\thumb-symbian' -archname='thumb-symbian' -asctime_r_proto='0' -bin='\\system\\apps\\perl' -bincompat5005='n' -binexp='\\system\\apps\\perl' -bootstrap_charset='undef' -byteorder='1234' -castflags='0' -cc='gcc' -cccdlflags='' -ccdlflags='' -cf_by='root@localhost' -cf_time='Thu Jan 1 00:00:00 GMT 1970' -charbits='8' -clocktype='clock_t' -cpp_stuff='42' -cpplast='' -cppminus='-' -cpprun='gcc -E' -cppstdin='gcc -E' -crypt_r_proto='0' -ctermid_r_proto='0' -ctime_r_proto='0' -d_Gconvert='sprintf((b),"%.*g",(n),(x))' -d_PRIEUldbl='undef' -d_PRIFUldbl='undef' -d_PRIGUldbl='undef' -d_PRIXU64='undef' -d_PRId64='undef' -d_PRIeldbl='undef' -d_PRIfldbl='undef' -d_PRIgldbl='undef' -d_PRIi64='undef' -d_PRIo64='undef' -d_PRIu64='undef' -d_PRIx64='undef' -d_SCNfldbl='undef' -d__fwalk='undef' -d_accept4='undef' -d_access='undef' -d_accessx='undef' -d_acosh='undef' -d_aintl='undef' -d_alarm='undef' -d_archlib='define' -d_asctime64='undef' -d_asctime_r='undef' -d_asinh='undef' -d_atanh='undef' -d_atolf='undef' -d_atoll='undef' -d_attribute_always_inline='undef' -d_attribute_deprecated='undef' -d_attribute_format='undef' -d_attribute_malloc='undef' -d_attribute_nonnull='undef' -d_attribute_noreturn='undef' -d_attribute_pure='undef' -d_attribute_unused='undef' -d_attribute_warn_unused_result='undef' -d_backtrace='undef' -d_bsd='undef' -d_bsdgetpgrp='undef' -d_bsdsetpgrp='undef' -d_builtin_add_overflow='undef' -d_builtin_choose_expr='undef' -d_builtin_expect='undef' -d_builtin_mul_overflow='undef' -d_builtin_sub_overflow='undef' -d_c99_variadic_macros='undef' -d_casti32='undef' -d_castneg='undef' -d_cbrt='undef' -d_chown='undef' -d_chroot='undef' -d_chsize='undef' -d_class='undef' -d_clearenv='undef' -d_closedir='undef' -d_cmsghdr_s='undef' -d_copysign='undef' -d_copysignl='undef' -d_cplusplus='undef' -d_crypt='undef' -d_crypt_r='undef' -d_csh='undef' -d_ctermid='undef' -d_ctermid_r='undef' -d_ctime64='undef' -d_ctime_r='undef' -d_cuserid='undef' -d_dbl_dig='undef' -d_dbminitproto='undef' -d_difftime64='undef' -d_difftime='undef' -d_dir_dd_fd='undef' -d_dirfd='undef' -d_dirnamlen='define' -d_dladdr='undef' -d_dlerror='undef' -d_dlopen='undef' -d_dlsymun='undef' -d_dosuid='undef' -d_double_has_inf='define' -d_double_has_nan='define' -d_double_has_negative_zero='define' -d_double_has_subnormals='define' -d_double_style_cray='undef' -d_double_style_ibm='undef' -d_double_style_ieee='define' -d_double_style_vax='undef' -d_drand48_r='undef' -d_drand48proto='undef' -d_dup2='undef' -d_dup3='undef' -d_duplocale='undef' -d_eaccess='undef' -d_endgrent='undef' -d_endgrent_r='undef' -d_endhent='undef' -d_endhostent_r='undef' -d_endnent='undef' -d_endnetent_r='undef' -d_endpent='undef' -d_endprotoent_r='undef' -d_endpwent='undef' -d_endpwent_r='undef' -d_endsent='undef' -d_endservent_r='undef' -d_eofnblk='undef' -d_erf='undef' -d_erfc='undef' -d_eunice='undef' -d_exp2='undef' -d_expm1='undef' -d_faststdio='undef' -d_fchdir='undef' -d_fchmod='undef' -d_fchmodat='undef' -d_fchown='undef' -d_fcntl='undef' -d_fcntl_can_lock='undef' -d_fd_macros='undef' -d_fd_set='undef' -d_fdclose='undef' -d_fdim='undef' -d_fds_bits='undef' -d_fegetround='undef' -d_fgetpos='undef' -d_finite='undef' -d_finitel='undef' -d_flexfnam='define' -d_flock='undef' -d_flockproto='undef' -d_fma='undef' -d_fmax='undef' -d_fmin='undef' -d_fork='undef' -d_fp_class='undef' -d_fp_classify='undef' -d_fp_classl='undef' -d_fpathconf='undef' -d_fpclass='undef' -d_fpclassify='undef' -d_fpclassl='undef' -d_fpgetround='undef' -d_fpos64_t='undef' -d_freelocale='undef' -d_frexpl='undef' -d_fs_data_s='undef' -d_fseeko='undef' -d_fsetpos='define' -d_fstatfs='undef' -d_fstatvfs='undef' -d_fsync='undef' -d_ftello='undef' -d_ftime='undef' -d_futimes='undef' -d_futimesat='undef' -d_gai_strerror='undef' -d_gdbm_ndbm_h_uses_prototypes='undef' -d_gdbmndbm_h_uses_prototypes='undef' -d_getaddrinfo='undef' -d_getcwd='define' -d_getespwnam='undef' -d_getfsstat='undef' -d_getgrent='undef' -d_getgrent_r='undef' -d_getgrgid_r='undef' -d_getgrnam_r='undef' -d_getgrps='undef' -d_gethbyaddr='define' -d_gethbyname='define' -d_gethent='undef' -d_gethname='define' -d_gethostbyaddr_r='undef' -d_gethostbyname_r='undef' -d_gethostent_r='undef' -d_gethostprotos='define' -d_getitimer='undef' -d_getlogin='undef' -d_getlogin_r='undef' -d_getmnt='undef' -d_getmntent='undef' -d_getnameinfo='undef' -d_getnbyaddr='undef' -d_getnbyname='undef' -d_getnent='undef' -d_getnetbyaddr_r='undef' -d_getnetbyname_r='undef' -d_getnetent_r='undef' -d_getnetprotos='undef' -d_getpagsz='undef' -d_getpbyname='define' -d_getpbynumber='define' -d_getpent='undef' -d_getpgid='undef' -d_getpgrp2='undef' -d_getpgrp='undef' -d_getppid='undef' -d_getprior='undef' -d_getprotobyname_r='undef' -d_getprotobynumber_r='undef' -d_getprotoent_r='undef' -d_getprotoprotos='define' -d_getprpwnam='undef' -d_getpwent='undef' -d_getpwent_r='undef' -d_getpwnam_r='undef' -d_getpwuid_r='undef' -d_getsbyname='define' -d_getsbyport='define' -d_getsent='undef' -d_getservbyname_r='undef' -d_getservbyport_r='undef' -d_getservent_r='undef' -d_getservprotos='define' -d_getspent='undef' -d_getspnam='undef' -d_getspnam_r='undef' -d_gettimeod='define' -d_gmtime64='undef' -d_gmtime_r='undef' -d_gnulibc='undef' -d_grpasswd='undef' -d_hasmntopt='undef' -d_htonl='define' -d_hypot='undef' -d_ilogb='undef' -d_ilogbl='undef' -d_inc_version_list='undef' -d_index='undef' -d_inetaton='undef' -d_inetntop='undef' -d_inetpton='undef' -d_int64_t='undef' -d_ip_mreq='undef' -d_ip_mreq_source='undef' -d_ipv6_mreq='undef' -d_ipv6_mreq_source='undef' -d_isascii='undef' -d_isblank='undef' -d_isfinite='undef' -d_isfinitel='undef' -d_isinf='undef' -d_isinfl='undef' -d_isless='undef' -d_isnan='undef' -d_isnanl='undef' -d_isnormal='undef' -d_j0='undef' -d_j0l='undef' -d_killpg='undef' -d_lc_monetary_2008='undef' -d_lchown='undef' -d_ldbl_dig='undef' -d_ldexpl='undef' -d_lgamma='undef' -d_lgamma_r='undef' -d_libm_lib_version='undef' -d_link='undef' -d_linkat='undef' -d_llrint='undef' -d_llrintl='undef' -d_llround='undef' -d_llroundl='undef' -d_localeconv_l='undef' -d_localtime64='undef' -d_localtime_r='undef' -d_localtime_r_needs_tzset='undef' -d_locconv='undef' -d_lockf='undef' -d_log1p='undef' -d_log2='undef' -d_logb='undef' -d_long_double_style_ieee='undef' -d_long_double_style_ieee_doubledouble='undef' -d_long_double_style_ieee_extended='undef' -d_long_double_style_ieee_std='undef' -d_long_double_style_vax='undef' -d_longdbl='undef' -d_longlong='undef' -d_lrint='undef' -d_lrintl='undef' -d_lround='undef' -d_lroundl='undef' -d_lseekproto='undef' -d_lstat='undef' -d_madvise='undef' -d_malloc_good_size='undef' -d_malloc_size='undef' -d_mblen='undef' -d_mbrlen='undef' -d_mbrtowc='undef' -d_mbstowcs='undef' -d_mbtowc='undef' -d_memmem='undef' -d_memrchr='undef' -d_mkdir='define' -d_mkdtemp='undef' -d_mkfifo='undef' -d_mkostemp='undef' -d_mkstemp='undef' -d_mkstemps='undef' -d_mktime64='undef' -d_mktime='undef' -d_mmap='undef' -d_modfl='undef' -d_modfl_pow32_bug='undef' -d_modflproto='undef' -d_mprotect='undef' -d_msg='undef' -d_msg_ctrunc='undef' -d_msg_dontroute='undef' -d_msg_oob='undef' -d_msg_peek='undef' -d_msg_proxy='undef' -d_msgctl='undef' -d_msgget='undef' -d_msghdr_s='undef' -d_msgrcv='undef' -d_msgsnd='undef' -d_msync='undef' -d_munmap='undef' -d_mymalloc='undef' -d_nan='undef' -d_nanosleep='undef' -d_ndbm_h_uses_prototypes='undef' -d_nearbyint='undef' -d_newlocale='undef' -d_nextafter='undef' -d_nexttoward='undef' -d_nice='undef' -d_nl_langinfo='undef' -d_nv_preserves_uv='undef' -d_nv_zero_is_allbits_zero='define' -d_off64_t='undef' -d_old_pthread_create_joinable='undef' -d_oldpthreads='undef' -d_oldsock='undef' -d_open3='undef' -d_openat='undef' -d_pathconf='undef' -d_pause='undef' -d_perl_otherlibdirs='undef' -d_phostname='undef' -d_pipe2='undef' -d_pipe='undef' -d_poll='undef' -d_portable='undef' -d_prctl='undef' -d_prctl_set_name='undef' -d_printf_format_null='undef' -d_procselfexe='undef' -d_pseudofork='undef' -d_pthread_atfork='undef' -d_pthread_attr_setscope='undef' -d_pthread_yield='undef' -d_ptrdiff_t='define' -d_pwage='undef' -d_pwchange='undef' -d_pwclass='undef' -d_pwcomment='undef' -d_pwexpire='undef' -d_pwgecos='undef' -d_pwpasswd='undef' -d_pwquota='undef' -d_qgcvt='undef' -d_quad='undef' -d_querylocale='undef' -d_random_r='undef' -d_readdir64_r='undef' -d_readdir='define' -d_readdir_r='undef' -d_readlink='undef' -d_readv='undef' -d_recvmsg='undef' -d_regcomp='undef' -d_remainder='undef' -d_remquo='undef' -d_rename='define' -d_renameat='undef' -d_rewinddir='define' -d_rint='undef' -d_rmdir='define' -d_round='undef' -d_sbrkproto='undef' -d_scalbn='undef' -d_scalbnl='undef' -d_sched_yield='undef' -d_scm_rights='undef' -d_seekdir='define' -d_select='undef' -d_sem='undef' -d_semctl='undef' -d_semctl_semid_ds='undef' -d_semctl_semun='undef' -d_semget='undef' -d_semop='undef' -d_sendmsg='undef' -d_setegid='undef' -d_seteuid='undef' -d_setgrent='undef' -d_setgrent_r='undef' -d_setgrps='undef' -d_sethent='undef' -d_sethostent_r='undef' -d_setitimer='undef' -d_setlinebuf='undef' -d_setlocale='undef' -d_setlocale_accepts_any_locale_name='undef' -d_setlocale_r='undef' -d_setnent='undef' -d_setnetent_r='undef' -d_setpent='undef' -d_setpgid='undef' -d_setpgrp2='undef' -d_setpgrp='undef' -d_setprior='undef' -d_setproctitle='undef' -d_setprotoent_r='undef' -d_setpwent='undef' -d_setpwent_r='undef' -d_setregid='undef' -d_setresgid='undef' -d_setresuid='undef' -d_setreuid='undef' -d_setrgid='undef' -d_setruid='undef' -d_setsent='undef' -d_setservent_r='undef' -d_setsid='undef' -d_setvbuf='define' -d_shm='undef' -d_shmat='undef' -d_shmatprototype='undef' -d_shmctl='undef' -d_shmdt='undef' -d_shmget='undef' -d_sigaction='undef' -d_siginfo_si_addr='undef' -d_siginfo_si_band='undef' -d_siginfo_si_errno='undef' -d_siginfo_si_pid='undef' -d_siginfo_si_status='undef' -d_siginfo_si_uid='undef' -d_siginfo_si_value='undef' -d_signbit='undef' -d_sigprocmask='undef' -d_sigsetjmp='undef' -d_sin6_scope_id='undef' -d_sitearch='define' -d_sitecustomize='undef' -d_sitecustomize='undef' -d_snprintf='undef' -d_sockaddr_in6='undef' -d_sockaddr_sa_len='undef' -d_sockaddr_storage='undef' -d_sockatmark='undef' -d_sockatmarkproto='undef' -d_socket='define' -d_socklen_t='undef' -d_sockpair='undef' -d_socks5_init='undef' -d_sqrtl='undef' -d_srand48_r='undef' -d_srandom_r='undef' -d_sresgproto='undef' -d_sresuproto='undef' -d_stat='define' -d_statblks='undef' -d_statfs_f_flags='undef' -d_statfs_s='undef' -d_static_inline='undef' -d_statvfs='undef' -d_stdio_cnt_lval='undef' -d_stdio_ptr_lval='undef' -d_stdio_ptr_lval_nochange_cnt='undef' -d_stdio_ptr_lval_sets_cnt='undef' -d_stdio_stream_array='undef' -d_stdiobase='undef' -d_stdstdio='undef' -d_strcoll='undef' -d_strerror_l='undef' -d_strerror_r='undef' -d_strftime='undef' -d_strlcat='undef' -d_strlcpy='undef' -d_strnlen='undef' -d_strtod='define' -d_strtod_l='undef' -d_strtol='define' -d_strtold='undef' -d_strtold_l='undef' -d_strtoll='undef' -d_strtoq='undef' -d_strtoul='define' -d_strtoull='undef' -d_strtouq='undef' -d_strxfrm='undef' -d_suidsafe='undef' -d_symlink='undef' -d_syscall='undef' -d_syscallproto='undef' -d_sysconf='undef' -d_sysernlst='' -d_syserrlst='undef' -d_system='define' -d_tcgetpgrp='undef' -d_tcsetpgrp='undef' -d_telldir='define' -d_telldirproto='define' -d_tgamma='undef' -d_thread_safe_nl_langinfo_l='undef' -d_time='define' -d_timegm='undef' -d_times='define' -d_tm_tm_gmtoff='undef' -d_tm_tm_zone='undef' -d_tmpnam_r='undef' -d_towlower='undef' -d_towupper='undef' -d_trunc='undef' -d_truncate='undef' -d_truncl='undef' -d_ttyname_r='undef' -d_tzname='undef' -d_u32align='define' -d_ualarm='undef' -d_umask='undef' -d_uname='undef' -d_union_semun='undef' -d_unlinkat='undef' -d_unordered='undef' -d_unsetenv='undef' -d_uselocale='undef' -d_usleep='define' -d_usleepproto='undef' -d_ustat='undef' -d_vendorarch='undef' -d_vendorbin='undef' -d_vendorlib='undef' -d_vfork='undef' -d_void_closedir='undef' -d_voidsig='undef' -d_voidtty='' -d_vsnprintf='undef' -d_wait4='undef' -d_waitpid='undef' -d_wcrtomb='undef' -d_wcscmp='undef' -d_wcstombs='undef' -d_wcsxfrm='undef' -d_wctomb='undef' -d_writev='undef' -d_xenix='undef' -db_hashtype='u_int32_t' -db_prefixtype='size_t' -db_version_major='0' -db_version_minor='0' -db_version_patch='0' -default_inc_excludes_dot='undef' -direntrytype='struct dirent' -dlext='dll' -dlsrc='dl_symbian.xs' -doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f' -doublekind='4' -doublemantbits='52' -doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f' -doublesize='8' -drand01="((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15))" -drand48_r_proto='0' -dtrace='' -eagain='EAGAIN' -ebcdic='undef' -endgrent_r_proto='0' -endhostent_r_proto='0' -endnetent_r_proto='0' -endprotoent_r_proto='0' -endpwent_r_proto='0' -endservent_r_proto='0' -eunicefix=':' -exe_ext='.exe' -fflushNULL='undef' -fflushall='undef' -firstmakefile='makefile' -fpossize='4' -fpostype=fpos_t -freetype=void -full_ar=':' -full_csh=':' -full_sed=':' -getgrent_r_proto='0' -getgrgid_r_proto='0' -getgrnam_r_proto='0' -gethostbyaddr_r_proto='0' -gethostbyname_r_proto='0' -gethostent_r_proto='0' -getlogin_r_proto='0' -getnetbyaddr_r_proto='0' -getnetbyname_r_proto='0' -getnetent_r_proto='0' -getprotobyname_r_proto='0' -getprotobynumber_r_proto='0' -getprotoent_r_proto='0' -getpwent_r_proto='0' -getpwnam_r_proto='0' -getpwuid_r_proto='0' -getservbyname_r_proto='0' -getservbyport_r_proto='0' -getservent_r_proto='0' -getspnam_r_proto='0' -gidformat='"lu"' -gidsign='1' -gidsize='4' -gidtype=int -gmtime_r_proto='0' -groupstype=int -h_fcntl='false' -h_sysfile='true' -i16size='2' -i16type='short' -i32size='4' -i32type='long' -i64size='8' -i64type='int64_t' -i8size='1' -i8type='char' -i_arpainet='undef' -i_bfd='undef' -i_bsdioctl='' -i_crypt='undef' -i_db='undef' -i_dbm='undef' -i_dirent='define' -i_dlfcn='undef' -i_execinfo='undef' -i_fcntl='define' -i_fenv='undef' -i_fp='undef' -i_fp_class='undef' -i_gdbm='undef' -i_gdbm_ndbm='undef' -i_gdbmndbm='undef' -i_grp='undef' -i_ieeefp='undef' -i_inttypes='undef' -i_langinfo='undef' -i_libutil='undef' -i_locale='define' -i_machcthr='undef' -i_malloc='undef' -i_mallocmalloc='undef' -i_mntent='undef' -i_ndbm='undef' -i_netdb='define' -i_neterrno='undef' -i_netinettcp='undef' -i_niin='define' -i_poll='undef' -i_prot='undef' -i_pthread='undef' -i_pwd='define' -i_quadmath='undef' -i_rpcsvcdbm='undef' -i_sgtty='undef' -i_shadow='undef' -i_socks='undef' -i_stdarg='define' -i_stdbool='undef' -i_stdint='undef' -i_stdlib='define' -i_sunmath='undef' -i_sysaccess='undef' -i_sysdir='undef' -i_sysfile='undef' -i_sysfilio='undef' -i_sysin='undef' -i_sysioctl='define' -i_syslog='undef' -i_sysmman='undef' -i_sysmode='undef' -i_sysmount='undef' -i_sysndir='undef' -i_sysparam='undef' -i_syspoll='undef' -i_sysresrc='undef' -i_syssecrt='undef' -i_sysselct='undef' -i_syssockio='undef' -i_sysstat='define' -i_sysstatfs='undef' -i_sysstatvfs='undef' -i_systime='define' -i_systimek='undef' -i_systimes='define' -i_systypes='define' -i_sysuio='undef' -i_sysun='undef' -i_sysutsname='undef' -i_sysvfs='undef' -i_syswait='undef' -i_termio='undef' -i_termios='undef' -i_time='define' -i_unistd='define' -i_ustat='undef' -i_utime='undef' -i_varargs='undef' -i_varhdr='stdarg.h' -i_vfork='undef' -i_wchar='undef' -i_wctype='undef' -i_xlocale='undef' -ignore_versioned_solibs='y' -inc_version_list='' -inc_version_list_init='0' -installprefix='\\system' -installprefixexp='\\system' -installsitearch='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian' -installsitelib='\\system\\libs\\perl\\siteperl\\x.y.z' -installstyle='lib\\perl5' -installusrbinperl='undef' -intsize='4' -ivdformat='"ld"' -ivsize='4' -ivtype='long' -ld=':' -lddlflags='' -ldflags='' -lib_ext='.a' -libc='stdlib' -libm_lib_version='0' -libperl='libperl.a' -localtime_r_proto='0' -longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00' -longdblkind=0 -longdblmantbits='64' -longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00' -longdblsize=8 -longlongsize=8 -longsize='4' -lseeksize=4 -lseektype=int -mad='undef' -make='make' -malloctype='int*' -malloctype='void *' -mmaptype='void *' -modetype='mode_t' -modetype=int -multiarch='undef' -myarchname='thumb-symbian' -myuname='symbian' -need_va_copy='undef' -netdb_hlen_type='int' -netdb_host_type='const char *' -netdb_name_type='const char *' -netdb_net_type='unsigned long' -nroff='nroff' -nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' -nv_preserves_uv_bits='0' -nveformat='"e"' -nvfformat='"f"' -nvgformat='"g"' -nvmantbits='52' -nvsize='8' -nvtype='double' -o_nonblock='O_NONBLOCK' -obj_ext='.o' -old_pthread_create_joinable='' -optimize='-O2' -orderlib='false' -osname='symbian' -osvers='7.0s' -otherlibdirs='' -package='' -path_sep=';' -perl_static_inline='static' -phostname='hostname' -pidtype='int' -pm_apiversion='5.005' -privlib='\\system\\libs\\perl\\x.y.z' -privlibexp='\\system\\libs\\perl\\x.y.z' -procselfexe='' -prototype='define' -ptrsize='4' -quadkind='4' -quadtype='int64_t' -randbits='48' -randfunc='drand48' -random_r_proto='0' -randseedtype='int' -ranlib=':' -rd_nodata='-1' -readdir64_r_proto='0' -readdir_r_proto='0' -sGMTIME_max='2147483647' -sGMTIME_min='0' -sLOCALTIME_max='2147483647' -sLOCALTIME_min='0' -sPRIEUldbl='"llE"' -sPRIFUldbl='"llF"' -sPRIGUldbl='"llG"' -sPRIXU64='"LX"' -sPRId64='"Ld"' -sPRIeldbl='' -sPRIfldbl='' -sPRIgldbl='' -sPRIi64='"Li"' -sPRIo64='"Lo"' -sPRIu64='"Lu"' -sPRIx64='"Lx"' -sSCNfldbl='' -sched_yield='sched_yield()' -scriptdir='\\system\\apps\\perl' -scriptdirexp='\\system\\apps\\perl' -sdkvers='' -seedfunc='srand' -selectminbits='32' -selecttype=int -setgrent_r_proto='0' -sethostent_r_proto='0' -setlocale_r_proto='0' -setnetent_r_proto='0' -setprotoent_r_proto='0' -setpwent_r_proto='0' -setservent_r_proto='0' -sh=':' -shmattype='void *' -shortsize=2 -sig_name_init='0' -sig_num_init='0' -sig_size='1' -signal_t=void -sitearch='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian' -sitearchexp='\\system\\libs\\perl\\siteperl\\x.y.z\\thumb-symbian' -sitelib='\\system\\libs\\perl\\siteperl\\x.y.z' -sitelib_stem='\\system\\libs\\perl' -sitelibexp='\\system\\libs\\perl\\siteperl\\x.y.z' -siteprefix='\\system' -siteprefixexp='\\system' -sizesize=4 -sizetype=size_t -so='o' -socksizetype='unsigned int' -srand48_r_proto='0' -srandom_r_proto='0' -src='' -ssizetype=int -st_ino_sign='1' -st_ino_size='4' -startperl='' -stdchar=char -stdio_base='((fp)->_IO_read_base)' -stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)' -stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' -stdio_filbuf='' -stdio_ptr='((fp)->_IO_read_ptr)' -stdio_stream_array='' -strerror_r_proto='0' -targetarch='thumb-symbian' -targetsh=':' -timetype=time_t -tmpnam_r_proto='0' -touch='touch' -ttyname_r_proto='0' -u16size='2' -u16type='unsigned short' -u32size='4' -u32type='unsigned long' -u64size='8' -u64type='uint64_t' -u8size='1' -u8type='unsigned char' -uidformat='"lu"' -uidsign='1' -uidsize='4' -uidtype=int -uquadtype='uint64_t' -use5005threads='undef' -use64bitall='undef' -use64bitint='undef' -usecbacktrace='undef' -usecrosscompile='undef' -usedevel='undef' -usedl='undef' -usedtrace='undef' -usefaststdio='undef' -useithreads='undef' -usekernprocpathname='undef' -uselargefiles='undef' -uselongdouble='undef' -usemallocwrap='define' -usemorebits='undef' -usemultiplicity='undef' -usemymalloc='n' -usenm='false' -usensgetexecutablepath='undef' -useopcode='true' -useperlio='define' -useposix='true' -usequadmath='undef' -usereentrant='undef' -userelocatableinc='undef' -useshrplib='false' -usesitecustomize='undef' -usesocks='undef' -usethreads='undef' -usevendorprefix='n' -usevfork='false' -uvXUformat='"lX"' -uvoformat='"lo"' -uvsize='4' -uvtype='unsigned long' -uvuformat='"lu"' -uvxformat='"lx"' -vendorarch='' -vendorarchexp='' -vendorlib='' -vendorlib_stem='' -vendorlibexp='' -vendorprefix='' -vendorprefixexp='' -version='x.y.z' -versiononly='undef' -xs_apiversion='5.008' -zip='' -PERL_CONFIG_SH='true' diff --git a/symbian/cwd.pl b/symbian/cwd.pl deleted file mode 100644 index 3ee402be8d..0000000000 --- a/symbian/cwd.pl +++ /dev/null @@ -1,6 +0,0 @@ -use strict; -use Cwd; -my $CWD = getcwd(); -$CWD =~ s!^[a-z]:!!i; -$CWD =~ s!/!\\!g; -$CWD; diff --git a/symbian/demo_pl b/symbian/demo_pl deleted file mode 100644 index 9759347a97..0000000000 --- a/symbian/demo_pl +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/perl -w - -# -# demo_pl -# -# A "self-extracting archive" for some demo scripts. -# -# hello - the classic -# helloyou - advanced classic -# httpget1 - simple sockets -# httpget2 - simple sockets done complex -# md5 - core extension -# time - system call -# times - more system calls -# - -use strict; - -unless (@ARGV && $ARGV[0] =~ /^(?:list|extract|cleanup)$/) { - die "$0: Usage: $0 [list|extract|cleanup]\n"; -} - -my $action = shift; -my $list = $action eq 'list'; -my $extract = $action eq 'extract'; -my $cleanup = $action eq 'cleanup'; - -my $fh; -while (<DATA>) { - if (/^-- (.+\.pl)$/) { - if ($cleanup) { - print "Deleting $1\n"; - unlink $1 or warn "$0: $1: $!\n"; - } elsif ($extract) { - defined $fh && close($fh); - open($fh, ">", $1) or die "$0: '$1': $!\n"; - print "Extracting $1\n"; - } elsif ($list) { - print "$1\n"; - } - } else { - print $fh $_ if $extract; - } -} -defined $fh && close($fh); -exit(0); -__END__ --- hello.pl -print "hello world!\n"; --- helloyou.pl -print "What is your name?\n"; -chomp(my $name = <STDIN>); -print "Hello, $name!\n"; -print "Amazing fact #1:\n"; -printf "Your name has\n%d character%s!\n", - length($name), length($name) == 1 ? "" : "s"; -print "Amazing fact #2:\n"; -printf "Your name is\n%s backwards!\n", scalar reverse $name; --- httpget1.pl -print "(Using plain sockets)\n"; -use Socket; -print "Host? "; -my $host = <STDIN>; -chomp($host); -$host = 'www.nokia.com' unless length $host; -my $port = 80; -my $iaddr = inet_aton($host) || die "no host: $host"; -my $paddr = sockaddr_in($port, $iaddr); -my $proto = getprotobyname("tcp"); -socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; -connect(S, $paddr) || die "connect: $!"; -print "$host:$port:\nConnected.\n"; -select(S); $| = 1; select(STDOUT); -print S "GET / HTTP/1.0\012\012" || die "GET /: $!"; -my @line; -print "Receiving...\n"; -while (my $line = <S>) { - push @line, $line; -} -close(S) || die "close: $!"; -printf "Got %d lines.\n", scalar @line; --- httpget2.pl -use IO::Socket; -print "(Using IO::Socket)\n"; -print "Host? "; -my $host = <STDIN>; -chomp($host); -$host = 'www.nokia.com' unless length $host; -my $port = 80; -my $remote = - IO::Socket::INET->new(Proto => "tcp", - PeerAddr => $host, - PeerPort => $port); -print "$host:$port:\nConnected.\n"; -select($remote); $| = 1; select(STDOUT); -print $remote "GET / HTTP/1.0\012\012" || die "GET /: $!"; -my @line; -print "Receiving...\n"; -while (my $line = <$remote>) { - push @line, $line; -} -close($remote) || die "close: $!"; -printf "Got %d lines.\n", scalar @line; --- md5.pl -use Digest::MD5 'md5_hex'; -print "(Using Digest::MD5)\nMD5 of 'Perl' is:\n"; -print md5_hex('Perl'), "\n"; --- time.pl -print "Running in $^O\n"; -print scalar localtime, "\n"; --- times.pl -use Time::HiRes qw(time sleep); -print CORE::time(), "\n"; -print "Hires\n"; -print time(), "\n"; -print "Sleep 1.5 s...\n"; -sleep(1.5); -print time(), "\n"; -print "To one million...\n"; -my $t0 = time(); -print $t0, "\n"; -print "Cpu ", scalar times(), "\n"; -for(my $i = 0; $i < 1e6; $i++) {} -print "Cpu ", scalar times(), "\n"; -my $t1 = time(); -print $t1, "\n"; -print "Wall ", $t1 - $t0, "\n"; - diff --git a/symbian/ext/Moped/Msg/Msg.mmp b/symbian/ext/Moped/Msg/Msg.mmp deleted file mode 100644 index 7736d2ab57..0000000000 --- a/symbian/ext/Moped/Msg/Msg.mmp +++ /dev/null @@ -1 +0,0 @@ -LIBRARY etel.lib gsmbas.lib
diff --git a/symbian/ext/Moped/Msg/Msg.pkg b/symbian/ext/Moped/Msg/Msg.pkg deleted file mode 100644 index eb7aed02f5..0000000000 --- a/symbian/ext/Moped/Msg/Msg.pkg +++ /dev/null @@ -1,16 +0,0 @@ -; MoDev::Msg installation script
-;
-; The supported languages
-&EN;
-;
-; The installation name and header data
-;
-#{"MoDev::Msg"},(0x0FFFFFFF),0,1,0
-;
-; Platform supported is Series 60
-;
-(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
-; The files to install
-;
-"Msg.pm"-"!:\System\Libs\Perl\5.9.3\MoDev\Msg.pm"
-"\epoc32\release\thumb\urel\Msg.dll"-"!:\System\Libs\Perl\5.9.3\thumb-symbian\Msg.dll"
diff --git a/symbian/ext/Moped/Msg/Msg.pm b/symbian/ext/Moped/Msg/Msg.pm deleted file mode 100644 index e1aaef8344..0000000000 --- a/symbian/ext/Moped/Msg/Msg.pm +++ /dev/null @@ -1,9 +0,0 @@ -package Moped::Msg; -use strict; -use vars qw(@ISA $VERSION); -require DynaLoader; -@ISA = qw(DynaLoader); -$VERSION = '0.01'; -bootstrap Moped::Msg; -1; - diff --git a/symbian/ext/Moped/Msg/Msg.xs b/symbian/ext/Moped/Msg/Msg.xs deleted file mode 100644 index ae47e0a556..0000000000 --- a/symbian/ext/Moped/Msg/Msg.xs +++ /dev/null @@ -1,51 +0,0 @@ -#include <eikenv.h> -#include <e32std.h> - -#include "etelbgsm.h" // From Symbian 6.1 SDK (the Communicator SDK) - -#ifdef __cplusplus -extern "C" { -#endif -#include "PerlBase.h" -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" -#ifdef __cplusplus -} -#endif - -_LIT(KTsyName, "phonetsy.tsy"); - -#define XS_SYMBIAN_OR_EMPTY(e, c) errno = (e) = (c); if ((e) != KErrNone) XSRETURN_EMPTY - -MODULE = Moped::Msg PACKAGE = Moped::Msg - -PROTOTYPES: ENABLE - -extern "C" void -get_gsm_network_info() - PREINIT: - TInt error; - TInt enumphone; - RTelServer server; - RBasicGsmPhone phone; - RTelServer::TPhoneInfo info; - MBasicGsmPhoneNetwork::TCurrentNetworkInfo networkinfo; - PPCODE: - if (GIMME != G_ARRAY) - XSRETURN_UNDEF; - XS_SYMBIAN_OR_EMPTY(error, server.Connect()); - XS_SYMBIAN_OR_EMPTY(error, server.LoadPhoneModule(KTsyName)); - XS_SYMBIAN_OR_EMPTY(error, server.EnumeratePhones(enumphone)); - if (enumphone < 1) - XSRETURN_EMPTY; - XS_SYMBIAN_OR_EMPTY(error, server.GetPhoneInfo(0, info)); - XS_SYMBIAN_OR_EMPTY(error, phone.Open(server, info.iName)); - XS_SYMBIAN_OR_EMPTY(error, phone.GetCurrentNetworkInfo(networkinfo)); - EXTEND(SP, 4); - PUSHs(sv_2mortal(newSViv(networkinfo.iNetworkInfo.iId.iMCC))); - PUSHs(sv_2mortal(newSViv(networkinfo.iNetworkInfo.iId.iMNC))); - PUSHs(sv_2mortal(newSViv(networkinfo.iLocationAreaCode))); - PUSHs(sv_2mortal(newSViv(networkinfo.iCellId))); - - diff --git a/symbian/ext/Moped/Msg/README b/symbian/ext/Moped/Msg/README deleted file mode 100644 index 2d31c298a0..0000000000 --- a/symbian/ext/Moped/Msg/README +++ /dev/null @@ -1,49 +0,0 @@ -NOTE: this is just a sample of how building Symbian specific -extensions COULD work. This is most probably far from the best -or final way of doing things. - -The Moped::Msg currently defines just a single static method, -get_gsm_network_info(), which returns the GSM network and cell id. - -The extension code is in Msg.xs (which gets translated by xsubpp into -Msg.cpp), the Perl glue code is in Msg.pm. To understand the .xs -syntax studying perlxstut and perlxs is recommended. - -The prerequisites for compiling this extension are: - -(1) The Perl for Symbian SDK installed (either done "make sdkinstall", - or separately installed the perlXYZsdk.zip). - -(2) The etelbgsm.h header, which is available for example from - the Symbian 6.1 SDK (the Communicator SDK). This must be - copied to ...\epoc32\include. - -(3) The etel.lib and the gsmbas.lib, they should come both - with the 6.1 and 7.0s SDK. The WINS udeb and THUMB urel - versions of these must be copied to the directories - ...\epoc32\release\wins\udeb and ...\epoc32\release\thumb\urel, - respectively. - -To compile (assuming Perl 5.9.3 and Series 60 SDK 2.6 for Visual C): - - perl \symbian\perl\5.9.3\bin\xsbuild.pl --cpp --extversion=0.1 ext\symbian\Moped\Msg - -The --symbian indicates the Symbian and SDK version, the --cplusplus -indicates that one should generate a .cpp file instead of a .c file. - -The xsbuild.pl both configures and builds the extension. -To clean do "make clean" or "make distclean". - -The location.pl demonstrates using the extension. - -To create a SIS: - - makesis -d%EPOCROOT% ext\Moped\Msg\Msg.pkg - -TODO: automate the determination of the EXTVERSION (from .pkg?) -and of creation of .pkg (the location of the .dll in the build -and in the target). - - - - diff --git a/symbian/ext/Moped/Msg/bld.inf b/symbian/ext/Moped/Msg/bld.inf deleted file mode 100644 index 121a66a720..0000000000 --- a/symbian/ext/Moped/Msg/bld.inf +++ /dev/null @@ -1,4 +0,0 @@ -PRJ_MMPFILES
-Msg.mmp
-PRJ_PLATFORMS
-wins thumb
diff --git a/symbian/ext/Moped/Msg/location.pl b/symbian/ext/Moped/Msg/location.pl deleted file mode 100644 index 50df335041..0000000000 --- a/symbian/ext/Moped/Msg/location.pl +++ /dev/null @@ -1,8 +0,0 @@ -use Moped::Msg; -my ($MCC, $MNC, $LAC, $Cell) = - Moped::Msg::get_gsm_network_info(); -print "MCC = $MCC\n"; -print "MNC = $MNC\n"; -print "LAC = $LAC\n"; -print "Cell = $Cell\n"; - diff --git a/symbian/find_writeable_data.pl b/symbian/find_writeable_data.pl deleted file mode 100644 index bdb579086d..0000000000 --- a/symbian/find_writeable_data.pl +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/perl -w - -# -# find_writeable_data - find non-const data in Symbian object files -# -# Use this when PETRAN tells you "dll has (un)initialised data". -# Expects to find the Symbian (GNU) nm in the executable path. -# -# Copyright (c) 2004-2005 Nokia. All rights reserved. -# -# This utility is licensed under the same terms as Perl itself. -# - -use strict; - -BEGIN { - unless (exists $ENV{EPOCROOT}) { - die "$0: EPOCROOT unset\n"; - } - if (open(my $fh, "nm --version |")) { - unless (<$fh> =~ /^GNU nm .*-psion-.*/) { - die "$0: Cannot find the GNU nm from Symbian\n"; - } - close($fh); - } else { - die "$0: Cannot find any nm in the executable path: $!\n"; - } - unless (@ARGV && $ARGV[0] =~ /\.mmp$/i) { - die "$0: Must specify target mmp as the first argument\n"; - } -} - -use Cwd; -use File::Basename; - -my $dir = lc(getcwd()); -my $tgt = basename(shift(@ARGV), ".mmp"); - -$dir =~ s!/!\\!g; -$dir =~ s!^c:!c:$ENV{EPOCROOT}epoc32\\build!; -$dir .= "\\$tgt\\thumb\\urel"; - -print $dir, "\n"; - -unless (-d $dir) { - die "$0: No directory $dir\n"; -} - -my @o = glob("$dir\\*.o"); - -unless (@o) { - die "$0: No objects in $dir\n"; -} - -for my $o (@o) { - if (open(my $fh, "nm $o |")) { - my @d; - while (<$fh>) { - next if / [TURtr] /; - push @d, $_; - } - close($fh); - if (@d) { - $o =~ s!^\Q$dir\E\\!!; - print "$o:\n"; - print @d; - } - } else { - warn "$0: nm $o failed: $!\n"; - } -} - -exit(0); diff --git a/symbian/hexdump.pl b/symbian/hexdump.pl deleted file mode 100644 index d1741f80b9..0000000000 --- a/symbian/hexdump.pl +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -die "$0: EPOCROOT unset\n" unless exists $ENV{EPOCROOT}; -die "$0: EPOCROOT directory does exists\n" unless -d $ENV{EPOCROOT}; - -my $EPOC32 = "$ENV{EPOCROOT}epoc32"; -my $EXE = "$EPOC32\\release\\thumb\\urel\\perlapp.app"; -my $RSC = "$EPOC32\\data\\z\\system\\apps\\perlapp\\perlapp.rsc"; - -use Fcntl qw(O_RDONLY); - -my %new = ($EXE => 'perlappmin.hex', - $RSC => 'perlrscmin.hex'); - -for my $fn ($EXE, $RSC) { - if (sysopen(my $fh, $fn, O_RDONLY)) { - my $buffer; - my $size = -s $fn; - my $read; - my $newfn = $new{$fn}; - unlink($newfn); - if (($read = sysread($fh, $buffer, $size)) == $size) { - if (open(my $newfh, '>', $newfn)) { - binmode($newfh); - print $newfh unpack("H*", $buffer); - close($newfh); - print "Created $newfn\n"; - } else { - die qq[$0: open ">$newfn" failed: $!\n]; - } - } else { - die qq[$0: sysread $size returned $read\n]; - } - close($fh); - } else { - die qq[$0: sysopen "$fn": $!\n]; - } -} - diff --git a/symbian/install.cfg b/symbian/install.cfg deleted file mode 100644 index 918d300826..0000000000 --- a/symbian/install.cfg +++ /dev/null @@ -1,119 +0,0 @@ -# install.cfg -# -# Copyright (c) 2004-2005 Nokia. All Rights Reserved. -# -# This file details what library files to include in the perlXYZlib.sis, -# and what extensions to build for the perlXYZext.sis. -# The lines beginning with "lib" are # included as-is from the lib/. -# The lines beginning with "ext" tell either how to build and package -# the extensions - or not. - -# -# Libraries. -# -lib AnyDBM_File.pm -lib AutoLoader.pm -lib base.pm -lib Benchmark.pm -lib Carp.pm -lib Carp/Heavy.pm -lib Cwd.pm -lib constant.pm -lib DBM_Filter.pm -lib Digest/base.pm -lib DirHandle.pm -lib Exporter.pm -lib Exporter/Heavy.pm -lib File/Basename.pm -lib File/Compare.pm -lib File/Copy.pm -lib File/DosGlob.pm -lib File/Find.pm -lib File/Path.pm -lib File/Spec.pm -lib File/Spec/Unix.pm -lib File/Spec/Win32.pm -lib File/Temp.pm -lib FileHandle.pm -lib Filter/Simple.pm -lib if.pm -lib integer.pm -lib IO/Zlib.pm -lib lib.pm -lib Net/Cmd.pm -lib Net/Config.pm -lib Net/Domain.pm -lib Net/FTP.pm -lib Net/FTP/A.pm -lib Net/FTP/E.pm -lib Net/FTP/I.pm -lib Net/FTP/L.pm -lib Net/FTP/dataconn.pm -lib Net/NNTP.pm -lib Net/Netrc.pm -lib Net/Ping.pm -lib Net/POP3.pm -lib Net/SMTP.pm -lib Net/Time.pm -lib NEXT.pm -lib overload.pm -lib SelectSaver.pm -lib strict.pm -lib Symbol.pm -lib UNIVERSAL.pm -# lib utf8.pm -# lib utf8_heavy.pl -lib vars.pm -lib warnings.pm -lib warnings/register.pm -# -# Extensions. -# -ext attributes -ext Compress/Raw/Zlib -zlib-src -ext Cwd -ext Data/Dumper -ext Devel/Peek -ext Digest/MD5 -ext Digest/SHA -ext Errno -ext Fcntl CONST -ext File/Glob CONST -ext Filter/Util/Call -ext Hash/Util -ext IO -ext List/Util -ext Math/BigInt/FastCalc -ext MIME/Base64 -ext PerlIO/scalar -ext PerlIO/via -ext SDBM_File -sdbm/db?.c -sdbm/util.c -ext Socket CONST -ext Storable -ext Text/Soundex -ext Time/HiRes CONST -ext Time/Piece -ext XSLoader -# ext B ERROR -# ext ByteLoader byterun.c ERROR VERSION -# ext Devel/DProf nonconst -# ext Devel/PPPort PORT -# ext Encode nonconst Encode/encode.h def_t.c encengine.c -ext I18N/Langinfo PORT -# ext IPC/SysV PORT -# ext NDBM_File PORT -# ext ODBM_File PORT -# ext Opcode ERROR -# ext PerlIO/encoding Encode -# ext POSIX CONST USELESS -# ext re ERROR -# ext Sys/Hostname PORT -# ext Sys/Syslog PORT -# ext threads PORT -# ext threads/shared PORT -# ext Unicode/Normalize nonconst -# ext Unicode/Collate nonconst -# ext Win32 USELESS -# ext XS/APItest USELESS -# ext XS/Typemap nonconst USELESS - diff --git a/symbian/makesis.pl b/symbian/makesis.pl deleted file mode 100644 index 58199cec77..0000000000 --- a/symbian/makesis.pl +++ /dev/null @@ -1,203 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (c) 2004-2005 Nokia. All rights reserved. - -use strict; -use lib "symbian"; - -do "sanity.pl" or die $@; - -my %VERSION = %{ do "version.pl" or die $@ }; -my $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}"; -my $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}"; - -my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) = - @{ do "sdk.pl" or die $@ }; -my $UID = do "uid.pl" or die $@; -my %PORT = %{ do "port.pl" or die $@ }; - -my $ARM = 'armv5';#'thumb'; # TODO -my $S60SDK = $ENV{S60SDK}; # from sdk.pl -my $S80SDK = $ENV{S80SDK}; # from sdk.pl -my $S90SDK = $ENV{S90SDK}; # from sdk.pl - -my $UREL = $ENV{UREL}; # from sdk.pl -$UREL =~ s/-ARM-/$ARM/; - -my $app = '!:\System\Apps\Perl'; -my $lib = '!:\System\Libs'; - -my @target = @ARGV - ? @ARGV - : ( - "miniperl", "perl", - "perl${VERSION}dll", "perl${VERSION}lib", - "perl${VERSION}ext" - ); - -my %suffix; -@suffix{ "miniperl", "perl", "perl$VERSION" } = ( "exe", "exe", "dll", ); - -for my $target (@target) { - $target = "perl${VERSION}" if $target eq "perl${VERSION}dll"; - - my %copy; - my $pkg = "$target.pkg"; - print "\nCreating $pkg...\n"; - - my $suffix = $suffix{$target} || ""; - my $dst = $suffix eq "dll" ? $lib : $app; - - my $srctarget = "$UREL\\$target.$suffix"; - - if ( $target =~ /^(miniperl|perl|perl${VERSION}(?:dll)?)$/ ) { - $copy{$srctarget} = "$dst\\$target.$suffix"; - print "\t$target.$suffix\n"; - } - if ( $target eq "perl${VERSION}lib" ) { - print "Libraries...\n"; - - print "\tConfig.pm\n"; - $copy{"lib\\Config.pm"} = - "$lib\\Perl\\$R_V_SV\\thumb-symbian\\Config.pm"; - - print "\tConfig_heavy.pl\n"; - $copy{"xlib\\symbian\\Config_heavy.pl"} = - "$lib\\Perl\\$R_V_SV\\thumb-symbian\\Config_heavy.pl"; - - print "\tDynaLoader.pm\n"; - $copy{"ext\\DynaLoader\\DynaLoader.pm"} = - "$lib\\Perl\\$R_V_SV\\DynaLoader.pm"; - - print "\tErrno.pm\n"; - $copy{"ext\\Errno\\Errno.pm"} = "$lib\\Perl\\$R_V_SV\\Errno.pm"; - - open( my $cfg, '<', "symbian/install.cfg" ) - or die "$!: symbian/install.cfg: $!\n"; - while (<$cfg>) { - next unless /^lib\s+(.+)/; - chomp; - my $f = $1; - unless (-f "lib/$f") { - warn qq[$0: No "lib/$f", skipping...\n]; - next; - } - $f =~ s:/:\\:g; - $copy{"lib\\$f"} = "$lib\\Perl\\$R_V_SV\\$f"; - print "\t$f\n"; - } - close($cfg); - } - - if ( $target eq "perl${VERSION}ext" ) { - my @lst = glob("symbian/*.lst"); - print "Extensions...\n"; - print "\t(none found)\n" unless @lst; - for my $lst (@lst) { - $lst =~ m:^symbian/(.+)\.:; - my $ext = $1; - $ext =~ s!-!::!g; - print "\t$ext\n"; - if ( open( my $pkg, '<', $lst ) ) { - while (<$pkg>) { - if (m!^"(.+)"-"(.+)"$!) { - my ( $src, $dst ) = ( $1, $2 ); - $copy{$src} = $dst; - } - else { - warn "$0: $lst: $.: unknown syntax\n"; - } - } - close($pkg); - } - else { - warn "$0: $lst: $!\n"; - } - } - } - - for my $file ( keys %copy ) { - warn "$0: $file does not exist\n" unless -f $file; - } - - my @copy = map { qq["$_"-"$copy{$_}"] } sort keys %copy; - my $copy = join( "\n", @copy ); - - my %UID = ( - "miniperl" => 0, - "perl" => 0, - "perl${VERSION}" => $UID + 0, - "perl${VERSION}dll" => $UID + 0, - "perl${VERSION}ext" => $UID + 1, - "perl${VERSION}lib" => $UID + 2, - "perlapp" => $UID + 3, - "perlrecog" => $UID + 4, - "perlappmin" => $UID + 5, - ); - - die "$0: target has no UID\n" unless defined $UID{$target}; - - my $uid = sprintf( "0x%08X", $UID{$target} ); - - my ( $MAJOR, $MINOR, $PATCH ) = ( 0, 0, 0 ); - - if ( $target =~ m:^perl$VERSION(dll|ext|lib)?$: ) { - my $pkg = defined $1 ? $1 : "dll"; - $MAJOR = $PORT{$pkg}->{MAJOR}; - $MINOR = $PORT{$pkg}->{MINOR}; - $PATCH = $PORT{$pkg}->{PATCH}; - } - - die "$0: Bad version for $target\n" - unless defined $MAJOR - && ( $MAJOR eq 0 || $MAJOR > 0 ) - && defined $MINOR - && ( $MINOR eq 0 || $MINOR > 0 ) - && defined $PATCH - && ( $PATCH eq 0 || $PATCH > 0 ); - - my $ProductId = - defined $S60SDK ? -qq[;Supports Series 60 v0.9\n(0x101F6F88), 0, 0, 0, {"Series60ProductID"}\n] : - defined $S80SDK ? -qq[;Supports Series 80 v2.0\n(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}\n] : - defined $S90SDK ? -qq[;Supports Series 90 v1.1\n(0x101FBE05), 0, 0, 0, {"Series90ProductID"}\n] : - ";Supports Series NN"; - - open PKG, '>', $pkg or die "$0: failed to create $pkg: $!\n"; - print PKG <<__EOF__; -; \u$target installation script -; -; The supported languages -&EN; -; -; The installation name and header data -; -#{"\u$target"},($uid),$MAJOR,$MINOR,$PATCH -; -;Localised Vendor name -%{"Vendor-EN"} -; -; Private key and certificate (unused) -; -;* "\u$target.key", "\u$target.cer" -; -$ProductId -; The files to install -; -$copy -__EOF__ - close PKG; - - print "Created $pkg\n"; - - print "Running makesis...\n"; - - unlink("$target.sis"); - - system("makesis $pkg") == 0 - || die "$0: makesis $pkg failed: $!\n"; -} - -exit(0); diff --git a/symbian/port.pl b/symbian/port.pl deleted file mode 100644 index 599321dfb1..0000000000 --- a/symbian/port.pl +++ /dev/null @@ -1,6 +0,0 @@ -{ - dll => { MAJOR => 0, MINOR => 4, PATCH => 2 }, - ext => { MAJOR => 0, MINOR => 4, PATCH => 2 }, - lib => { MAJOR => 0, MINOR => 4, PATCH => 2 }, -} - diff --git a/symbian/sanity.pl b/symbian/sanity.pl deleted file mode 100644 index 6487c575c3..0000000000 --- a/symbian/sanity.pl +++ /dev/null @@ -1,36 +0,0 @@ -use strict; - -if (exists $ENV{'!C:'}) { - print "You are running this under Cygwin, aren't you? (found '!C' in %ENV)\n"; - print "Are you perhaps using Cygwin Perl? (\$^O is '$^O')\n" if $^O =~ /cygwin/; - print "I'm sorry but only cmd.exe with e.g. the ActivePerl will work.\n"; - exit(1); -} - -unless(# S60 2.x - $ENV{PATH} =~ m!\\program files\\common files\\symbian\\tools!i - || - # S60 1.2 - $ENV{PATH} =~ m!\\symbian\\6.1\\shared\\epoc32\\tools!i - || - # S80 - $ENV{PATH} =~ m!\\s80_.+?\\epoc32\\!i - || - # UIQ - $ENV{PATH} =~ m!\\uiq_.+?\\epoc32\\!i - ) { - print "I do not think you have installed a Symbian SDK, your PATH is:\n$ENV{PATH}\n"; - exit(1); -} - -unless (-f "symbian/symbianish.h") { - print "You must run this in the top level directory.\n"; - exit(1); -} - -if ($] < 5.008) { - print "You must configure with Perl 5.8 or later.\n"; - exit(1); -} - -1; diff --git a/symbian/sdk.pl b/symbian/sdk.pl deleted file mode 100644 index c8845e8108..0000000000 --- a/symbian/sdk.pl +++ /dev/null @@ -1,216 +0,0 @@ -use strict; - -my $SYMBIAN_VERSION; -my $SYMBIAN_ROOT; -my $SDK_NAME; -my $SDK_VARIANT; -my $SDK_VERSION; -my $WIN; - -if ($ENV{PATH} =~ m!\\Symbian\\(.+?)\\(.+?)\\Epoc32\\gcc\\bin!i) { - $SYMBIAN_VERSION = $1; - $SDK_NAME = $2; - $WIN = ($SDK_NAME =~ m!_CW!i || $SDK_NAME eq '8.1a') ? - 'winscw' : 'wins'; - $ENV{WIN} = $WIN; - if ($SDK_NAME =~ m!Series60_v20!) { - $SDK_VARIANT = 'S60'; - $SDK_VERSION = $ENV{S60SDK} = '2.0'; - } elsif ($SDK_NAME =~ m!Series60_v21!) { - $SDK_VARIANT = 'S60'; - $SDK_VERSION = $ENV{S60SDK} = '2.1'; - } elsif ($SDK_NAME =~ m!S60_2nd_FP2!) { - $SDK_VARIANT = 'S60'; - $SDK_VERSION = $ENV{S60SDK} = '2.6'; - } elsif ($SDK_NAME =~ m!S60_2nd_FP3!) { - $SDK_VARIANT = 'S60'; - $SDK_VERSION = $ENV{S60SDK} = '2.8'; - } elsif ($SDK_NAME =~ m!S80_DP2_0_SDK!) { - $SDK_VARIANT = 'S80'; - $SDK_VERSION = $ENV{S80SDK} = '2.0'; - } elsif ($SDK_NAME =~ m!Nokia_7710_SDK!) { - $SDK_VARIANT = 'S90'; - $SDK_VERSION = $ENV{S90SDK} = '1.1'; - } -} elsif ($ENV{PATH} =~ m!\\S60\\devices\\(.+?)\\epoc32\\gcc\\bin!i) { - $SDK_VARIANT = 'S60'; - $SDK_NAME = $1; - $WIN = $ENV{WIN} = 'winscw'; - $SYMBIAN_VERSION = '9.4'; - $SDK_VERSION = $ENV{S60SDK} = '5.0'; - $SYMBIAN_ROOT = $ENV{EPOCROOT}; -} elsif ($ENV{PATH} =~ m!\\Symbian\\UIQ_(\d)(\d)\\Epoc32\\gcc\\bin!i) { - $SDK_NAME = 'UIQ'; - $SDK_VARIANT = 'UIQ'; - $SDK_VERSION = $ENV{UIQSDK} = "$1.$2"; - if ($SDK_VERSION =~ /^2\./) { - $SYMBIAN_VERSION = '7.0s'; - } else { - die "$0: Unknown UIQ version '$SDK_VERSION'\n"; - } - $WIN = 'winscw'; # This is CodeWarrior, how about Borland? - $ENV{WIN} = $WIN; -} - -if (open(GCC, "gcc -v 2>&1 |")) { - while (<GCC>) { - # print; - if (/Reading specs from (.+?)\\Epoc32\\/i) { - $SYMBIAN_ROOT = $1; - # The S60SDK tells the Series 60 SDK version. - if ($ENV{S60SDK}) { - if ($SYMBIAN_ROOT eq 'C:\Symbian\6.1\Shared') { # Visual C. - $SYMBIAN_ROOT = 'C:\Symbian\6.1\Series60'; - $SDK_VERSION = $ENV{S60SDK} = '1.2'; - } elsif ($SYMBIAN_ROOT eq 'C:\Symbian\Series60_1_2_CW') { # CodeWarrior. - $SDK_VERSION = $ENV{S60SDK} = '1.2'; - } - } - last; - } - } - close GCC; -} else { - die "$0: failed to run gcc: $!\n"; -} - -die "$0: failed to locate the Symbian SDK\n" unless defined $SYMBIAN_ROOT; - -my $UARM = $ENV{UARM} ? $ENV{UARM} : "urel"; -my $UREL = "$SYMBIAN_ROOT\\epoc32\\release\\-ARM-\\$UARM"; -if ($SYMBIAN_ROOT 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; - -[ $SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION ]; - -# The following is a cheat sheet for the right S60/S80 SDK settings. -# -# symbiancommon.bat: -# set EPOC_BIN=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\Tools -# set MWCW=C:\Program Files\Metrowerks\CodeWarrior for Symbian OEM v2.8 -# set MSVC=C:\Program Files\Microsoft Visual Studio -# set MSVC_BIN=%MSVC%\VC98\Bin;%MSVC%\Aux\MSDev98\Bin -# 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;%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;%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__ -# -# s60-2.0-cw: -# -# 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;%PATH% -# set USERDEFS=%USERDEFS% -D__SERIES60_20__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=0 -D__SERIES60_2X__ -# -# s60-2.0-vc: -# -# 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;%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__ -# -# s60-2.1-cw: -# -# 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;%PATH% -# set USERDEFS=%USERDEFS% -D__SERIES60_21__ -D__SERIES60_MAJOR__=2 -D__SERIES60_MINOR__=1 -D__SERIES60_2X__ -# -# s60-2.6-cw: -# -# 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;%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: -# -# 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;%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__ -# -# s60-2.8-cw: -# -# 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;%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__ -# -# s60-5.0 - S60 5th Edition SDK v1.0: -# -# set EPOCROOT=\S60\devices\S60_5th_Edition_SDK_v1.0\ -# set PATH=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\tools;%PATH% -# -# 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;%PATH% -# set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__ -# -# s80-2.0-vc: -# -# 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;%PATH% -# set USERDEFS=%USERDEFS% -D__SERIES80_20__ -D__SERIES80_MAJOR__=2 -D__SERIES80_MINOR__=0 -D__SERIES80_2X__ -# -# UIQ-2.1-vc: -# set EPOCROOT=\Symbian\UIQ_21\ -# set EPOCDEVICE= -# set EPOC_BIN=%EPOCROOT%Epoc32\gcc\bin;%EPOCROOT%Epoc32\Tools -# set MWCW=C:\APPS\codewarrior_3.0 -# set MSVC=C:\Program Files\Microsoft Visual Studio -# 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;%PATH% -# set USERDEFS=%USERDEFS% -D__UIQ_21__ -D__UIQ_MAJOR__=2 -D__UIQ_MINOR__=1 -D__UIQ_2X__ -# -# EOF diff --git a/symbian/sisify.pl b/symbian/sisify.pl deleted file mode 100644 index 7b5506c13f..0000000000 --- a/symbian/sisify.pl +++ /dev/null @@ -1,410 +0,0 @@ -#!/usr/bin/perl -w - -# -# sisify.pl - package Perl scripts or Perl libraries into SIS files -# -# Copyright (c) 2004-2005 Nokia. All rights reserved. -# The sisify.pl utility is licensed under the same terms as Perl itself. -# - -require 5.008; - -use strict; - -use vars qw($VERSION); - -$VERSION = '0.2'; - -use Getopt::Long; -use File::Temp qw/tempdir/; -use File::Find; -use File::Basename qw/basename dirname/; -use Cwd qw/getcwd/; - -BEGIN { - # This utility has been developed in Windows under cmd.exe with - # the Series 60 2.6 SDK installed, but for the makesis utility - # in UNIX/Linux, try e.g. one of the following: - # http://gnupoc.sourceforge.net/ - # http://symbianos.org/~andreh/ You - # will also need the 'uidcrc' utility. - die "$0: Looks like Cygwin, aborting.\n" if exists $ENV{'!C:'}; -} - -sub die_with_usage { - if (@_) { - warn "$0: $_\n" for @_; - } - die <<__USAGE__; -$0: Usage: -$0 [--variant=S60|S80|UIQ] [ --uid=hhhhhhhh ] [ --version=a.b.c ] [ --library=x.y.z ] [ some.pl | Some.pm | somefile | dir ... ] -The uid is the Symbian app uid for the SIS. -The version is the version of the SIS. -The library is the version of Perl under which to install. If using this, -only specify directories for packaging. -__USAGE__ -} - -my $SisUid; -my $SisVersion; -my $Library; -my @SisPl; -my @SisPm; -my @SisDir; -my @SisOther; -my $AppName; -my $Debug; -my $ShowPkg; -my $Variant; - -my $SisUidDefault = 0x0acebabe; -my $SisVersionDefault = '0.0.0'; -my $VariantDefault = 'S60'; - -my %Variant = qw(S60 1 S80 1 UIQ 1); - -die_with_usage() - unless GetOptions( - 'variant=s' => \$Variant, - 'uid=s' => \$SisUid, - 'version=s' => \$SisVersion, - 'debug' => \$Debug, - 'showpkg' => \$ShowPkg, - 'library=s' => \$Library, - 'appname=s' => \$AppName, - ); -die_with_usage("Need to specify what to sisify") - unless @ARGV; - -unless (defined $Variant) { - warn "$0: Defaulting to $VariantDefault\n"; - $Variant = $VariantDefault; -} - -unless (exists $Variant{$Variant}) { - die "$0: Unknown variant '$Variant'\n"; -} - -for my $i (@ARGV) { - if ($i =~ /\.pl$/i) { - push @SisPl, $i; - } elsif ($i =~ /\.pm$/i) { - push @SisPm, $i; - } elsif (-f $i) { - push @SisOther, $i; - } elsif (-d $i) { - push @SisDir, $i; - } else { - die_with_usage("Unknown sisifiable '$i'"); - } -} - -sub do_system { - my $cwd = getcwd(); - print qq{\# system("@_") [cwd "$cwd"]\n}; - return system("@_") == 0; -} - -die_with_usage("Must specify something to sisify") - unless @SisPl || @SisPm || @SisOther || @SisDir; - -die_with_usage("With the lib option set, specify only directories") - if defined $Library && ((@SisPl || @SisPm || @SisOther) || @SisDir == 0); - -die_with_usage("Lib must define the Perl 5 version as 5.x.y") - if defined $Library && $Library !~ /^5.\d+\.\d+$/; - -die_with_usage("With the lib option unset, specify at least one .pl file") - if (! defined $Library && @SisPl == 0); - -if (!defined $AppName) { - if (defined $Library) { - $AppName = $SisDir[0]; - $AppName =~ tr!/!-!; - } elsif (@SisPl > 0 && $SisPl[0] =~ /^(.+)\.pl$/i) { - $AppName = basename($1); - } -} - -die_with_usage("Must either specify appname or at least one .pl file or the lib option") - unless defined $AppName || defined $Library; - -print "[app name '$AppName']\n" if $Debug; - -unless (defined $SisUid) { - $SisUid = $SisUidDefault; - printf "[default app uid '0x%08x']\n", $SisUid; -} elsif ($SisUid =~ /^(?:0x)?([0-9a-f]{8})$/i) { - $SisUid = hex($1); -} else { - die_with_usage("Bad uid '$SisUid'"); -} -$SisUid = sprintf "0x%08x", $SisUid; - -die_with_usage("Bad uid '$SisUid'") - if $SisUid !~ /^0x[0-9a-f]{8}$/i; - -unless (defined $SisVersion) { - $SisVersion = $SisVersionDefault; - print "[default app version '$SisVersionDefault']\n"; -} elsif ($SisVersion !~ /^\d+\.\d+\.\d+$/) { - die_with_usage("Bad version '$SisVersion'") -} - -my $tempdir = tempdir( CLEANUP => 1 ); - -print "[temp directory '$tempdir']\n" if $Debug; - -for my $file (@SisPl, @SisPm, @SisOther) { - print "[copying file '$file']\n" if $Debug; - die_with_usage("$0: File '$file': $!") unless -f $file; - my $dir = dirname($file); - do_system("mkdir $tempdir\\$dir") unless $dir eq '.'; - do_system("copy $file $tempdir"); -} -if (@SisPl) { - do_system("copy $SisPl[0] $tempdir\\default.pl") - unless $SisPl[0] eq "default.pl"; -} -for my $dir (@SisDir) { - print "[copying directory '$dir']\n" if $Debug; - do_system("copy $dir $tempdir"); -} - -my $SisVersionCommas = $SisVersion; - -$SisVersionCommas =~ s/\./\,/g; - -my @pkg; - -push @pkg, qq[&EN;]; -push @pkg, qq[#{"$AppName"},($SisUid),$SisVersionCommas]; -push @pkg, qq[(0x101F6F88), 0, 0, 0, {"Series60ProductID"}]; - -my $OWD = getcwd(); - -$OWD =~ s!/!\\!g; - -chdir($tempdir) or die "$0: chdir('$tempdir')\n"; - -if (@SisPl) { - if (open(my $fi, "<", "default.pl")) { - my $fn = "default.pl.new"; - if (open(my $fo, ">", $fn)) { - while (<$fi>) { - last unless /^\#/; - print $fo $_; - } - print $fo "use lib qw(\\system\\apps\\$AppName \\system\\apps\\$AppName\\lib);\n"; - printf $fo qq[# %d "$SisPl[0]"\n], $.; - print $fo $_; - while (<$fi>) { - print $fo $_; - } - close($fo); - } else { - die "$0: open '>$fn': $!\n"; - } - close($fi); - rename($fn, "default.pl") or die "$0: rename $fn default.pl: $!\n"; - # system("cat -nvet default.pl"); - } else { - die "$0: open 'default.pl': $!\n"; - } -} - - -my @c; -find( - sub { - if (-f $_) { - $File::Find::name =~ s!^\./!!; - push @c, $File::Find::name; - } - } - , - "."); - -for my $i (sort @c) { - my $j = $i; - $j =~ s!/!\\!g; - push @pkg, defined $Library ? qq["$j"-"!:\\System\\Libs\\Perl\\siteperl\\$Library\\$j"] : qq["$j"-"!:\\system\\apps\\$AppName\\$j"]; -} - -sub hex2data { - pack("H*", shift); # symbian\hexdump.pl to create the hexdumps. -} - -my $APPHEX; -my $RSCHEX; - -unless ($Library) { - # If we package an application we will need both a launching native - # Symbian application and a resource file for it. The resource file - # we can get easily from a stub but for the native app we need to - # patch in the right Symbian app uids and executable checksums. - - &init_hex; # Initialized $APPHEX and $RSCHEX. - - die "$0: No app template found\n" unless defined $APPHEX && defined $RSCHEX; - - my $app = hex2data($APPHEX); - my $uidcrc; - my $uids = "0x10000079 0x100039CE $SisUid"; - - my $cmd = "uidcrc $uids |"; - - if (open(my $fh, '<', $cmd)) { - my $line = <$fh>; - close($fh); - # 0x10000079 0x100039ce 0x0acebabe 0xc82b1900 - $line =~ s/\r?\n$//; - if ($line =~ /^$uids (0x[0-9a-f]{8})$/i) { - $uidcrc = hex($1); - } else { - die "$0: uidcrc returned '$line'\n"; - } - } else { - die qq[$0: open '$cmd' failed: $!\n]; - } - - my $uid = hex($SisUid); - - my $oldchk = unpack('V', substr($app, 24, 4)); - my $newchk = ($uid + $oldchk) & 0xFFFFFFFF; - - # printf "# uid = 0x%08x\n", $uid; - # printf "# uidcrc = 0x%08x\n", $uidcrc; - # printf "# oldchk = 0x%08x\n", $oldchk; - # printf "# newchk = 0x%08x\n", $newchk; - - substr($app, 8, 4) = pack('V', $uid); - substr($app, 12, 4) = pack('V', $uidcrc); - substr($app, 24, 4) = pack('V', $newchk); - - my $UID_OFFSET = 0x0C7C; # This is where the uid is in the $app. - substr($app, $UID_OFFSET, 4) = substr($app, 8, 4); # Copy the uid also here. - - if (open(my $fh, '>', "$AppName.app")) { - binmode($fh); - print $fh $app; - close($fh); - } else { - die qq[$0: open '>$AppName.app' failed: $!\n]; - } - - push @pkg, qq["$AppName.app"-"!:\\system\\apps\\$AppName\\$AppName.app"]; - - if (open(my $fh, '>', "$AppName.rsc")) { - binmode($fh); - print $fh hex2data($RSCHEX); - close($fh); - } else { - die qq[$0: open '>$AppName.rsc' failed: $!\n]; - } - push @pkg, qq["$AppName.rsc"-"!:\\system\\apps\\$AppName\\$AppName.rsc"]; -} - -if ($ShowPkg) { - for my $l (@pkg) { - print $l, "\r\n"; - } -} else { - my $fn = "$AppName.pkg"; - if (open(my $fh, '>', $fn)) { - for my $l (@pkg) { - print $fh "$l\r\n"; # Note CRLF! - } - close($fh); - } else { - die qq[$0: Failed to open "$fn" for writing: $!\n]; - } - my $sis = "$AppName.SIS"; - unlink($sis); - do_system("dir"); - do_system("makesis $fn"); - unless (-f $sis) { - die qq[$0: failed to create "$sis"\n]; - } - do_system("copy $AppName.sis $OWD"); - chdir($OWD); - system("dir $sis"); - print "\n=== Now transfer $sis to your device ===\n"; -} - -exit(0); - -# To create the hex: print unpack("H*", $data); - -sub init_hex { - # This is Symbian application executable skeleton. - # You can create the ...\epoc32\release\thumb\urel\foo.app - # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h. - # The following executable has been compiled using the Series 60 SDK 2.6 - # for Visual C. - # 'make sisify_hex' to create the perlappmin.hex for this hexdump. - if ($Variant eq 'S60') { - $APPHEX = <<__APP__; -79000010ce390010f61520108581107645504f4300200000b6b005db000000000100bf00c025ed22d7e2e000030000019828000000000000001000000000100000200000000000000100000000000010000000000a0000001029000001000000402600007c0000000000000014290000802c0000000000005e01000000b501f0bbfa02bc0847000001480068704700004421001000b5011c024801f0f5fc01bc004700006421001084b030b50390049105920693204903a801f0ecfc041c0025002c06d103a8002101f0eafc00885c282bd0022c2ad103a8002101f0e1fc0088402806d903a8002101f0dafc00885a280dd903a8002101f0d3fc0088602815d903a8002101f0ccfc00887a280ed803a8012101f0c5fc00883a2807d103a8022101f0befc00885c2800d10125281c30bc08bc04b018470000cc22001084b030b50390049105920693204903a801f0a2fc041c0025002c06d103a8002101f0a0fc00885c282bd0022c2ad103a8002101f097fc0088402806d903a8002101f090fc00885a280dd903a8002101f089fc0088602815d903a8002101f082fc00887a280ed803a8012101f07bfc00883a2807d103a8022101f074fc00885c2800d10125281c30bc08bc04b018470000ac22001030b584b001f096fa009001916d4602ac0849201c01f062fc281c211c01f064fc0021002800d10121081c04b030bc02bc08470000d81d001030b584b001f07afa009001916d4602ac0849201c01f046fc281c211c01f048fc0021002800d10121081c04b030bc02bc08470000e41d0010f0b52c4ca54486ab18600f1c151c012668468021490001f035fc82ac2649201c01f024fc6846211c2a1c01f031fc684601f0d4fc002855d084ac2049201c01f015fc6846211c2a1c01f022fc684601f0c5fc002846d086a8291c01f0e3f900280fd087ac1649201c01f000fc6846211c2a1c01f00dfc684601f0b0fc002800d10026002e2ed086a8391c2a1c012301f0cff9061c002e17d189ac0a49201c01f0e5fb6846211c2a1c01f0f2fb684601f09bfc17e0ccfdfffff01d00105c1e00107c1e00109c1e00108bac0949201c01f0cdfb6846211c321c2b1c01f0d9fb684601f088fc8d239b009d44f0bc01bc0047b81e001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f0c3fb4c466468a0460c980001070900264e9c0294484601f0b7fbbc4200dbc1e10ca8029901f0b6fb007820281cd00ca8029901f0affb0078092815d00ca8029901f0a8fb00780a280ed00ca8029901f0a1fb00780d2807d00ca8029901f09afb00780c2800d09de1029cbc4200db99e10ca8211c01f08efb007820281bd00ca8029901f087fb0078092814d00ca8029901f080fb00780a280dd00ca8029901f079fb00780d2806d00ca8029901f072fb00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f063fb0078402806d90ca8029901f05cfb00785a280fd90ca8029901f055fb0078602800d858e10ca8029901f04dfb00787a2800d950e1029cbc4200db04e10ca8211c01f041fb0078402806d90ca8029901f03afb00785a2823d90ca8029901f033fb0078602806d90ca8029901f02cfb00787a2815d90ca8029901f025fb00782f2806d90ca8029901f01efb0078392807d90ca8029901f017fb00785f2800d0d2e0029cbc4243da0ca8211c01f00cfb0078402806d90ca8029901f005fb00785a2822d90ca8029901f0fefa0078602806d90ca8029901f0f7fa00787a2814d90ca8029901f0f0fa00782f2806d90ca8029901f0e9fa0078392806d90ca8029901f0e2fa00785f2812d1464510da311c0136484601f0b2fa039002990c1c013402940ca801f0d0fa0078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f0c2fa00783a2800d074e70ca8514601f0bafa00783a2800d06ce7464500db69e7311c0136484601f088fa5c210180029c02340294bc4266da0ca8211c01f0a3fa0078402806d90ca8029901f09cfa00785a280fd90ca8029901f095fa0078602800d847e70ca8029901f08dfa00787a2800d93fe7029cbc4245da0ca8211c01f082fa0078402806d90ca8029901f07bfa00785a2823d90ca8029901f074fa0078602806d90ca8029901f06dfa00787a2815d90ca8029901f066fa00782f2806d90ca8029901f05ffa0078392807d90ca8029901f058fa00785f2800d00ae7464500db07e7311c0136484601f026fa039002990c1c013402940ca801f044fa0078039c2080b6e7029cbc4244da0ca8211c01f039fa007820281bd00ca8029901f032fa0078092814d00ca8029901f02bfa00780a280dd00ca8029901f024fa00780d2806d00ca8029901f01dfa00780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f00ffa00783b2813d1f01c404510da4846311c01f00bfa6c460449201c01f0e0f94846211c01f008fa012002e0d81d0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0def98820c00068448424e4006c44216801f0dbf9814601204c46c44200d1a1e040a88021490001f0a4f9c224a4006c44a0468422520040468821c900694401f0caf9484607303e9040ac3f94c6a96846f82201f0c0f944462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f0b5f9301c00f0a0ff8322d2006a44106051608321c9006944404601f0adf91d49404601f0aff9381c01f076f9216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f03af98424e4006c442060c2a8494601f058f900788424e4006c44256828800124a144e3e70000dcfbffff44040000041f0010e0220010311c0136381c01f01bf95c2101800024a146409800010009814515da311c0136381c01f00df98424e4006c44206040a8494601f005f900888424e4006c44256828800124a144e4e7381c311c01e0381c002101f021f9044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f03af9009001916d4602ac0e49201c01f00ef9281c211c01f034f900280cd104ac0a49201c01f003f90aa8211c01f005f90121c84200d00126301c06b070bc08bc04b018470000141f0010181f001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490001f0b0f8301c00f0d3fecb22d2006a4410605160cd24e4006c44206800f0cefecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206801f086f84c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216801f088f80024a146c225ad006d44cd24e4006c442560206840a900f0a7fecd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694401f096f8cea96846f82201f091f82068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002101f064f8c2ac201c40a900f077fe201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920001f04ff8c2ac84225200201cd121c900694401f046f88620c00068443f90c5a96846fc2201f03df82168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffff281f0010cc220010082300103404000040250010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0f6ff82a96846fc22520000f0f0ff7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f0e0fd4046fff74dfb00282ad14046291c00f0d7fd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f0c6ff8621c90069446846f82200f0bfff20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f075ff002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c040000481f0010e724e4006c441749201c00f051ff7ea8211c2a1c00f05eff7ea801f013f800281dd0a524e4006c4482229200201c291c00f07cffa721c90069446846fc22520000f074ff2068084969440968a622d2006a441268054b6b441b6800f01ffa012007e00000741f00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f050fd8320c000684400f04bfdc720c00068448021490000f00cff7ea8391c0022002300f044fd381c002100f0f0fe0088402806d9381c002100f0e9fe00885a280dd9381c002100f0e2fe008860281cd9381c002100f0dbfe00887a2815d8381c012100f0d4fe00883a280ed1381c022100f0cdfe00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f0b3fc806900f04afd011c0a68201c126a00f066fc8320c0006844211c0022002300f0fcfcb6256d0045442868002803d100f09afc1c302860574d6d4400215648684401606960b620400040440168281c3a1c002300f0eafc061c002e00d0fde08420000168448021490000f0d1fe842109016944281c00f0e1fc061c281c00f0e3fc002e00d0dde0444c6c4482229200201c391c00f0b6fe414969446846fc22520000f0affe20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f07efee7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f05bfec5252d016d44e72636016e44842109016944194c6c4484225200201c00f04bfeb620400040440068006841901449694468468222520000f03efe2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000008230010540c00001c04000040250010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f00ffe134969446846fc2200f009fe2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f0b0fd201c291c3a1c00f0bdfd22e05c0c0000540c0000580c00008c1f0010c724e4006c44024d6d4402490ae00000a8110000b41f0010c724e4006c440f4d6d440f49281c00f08dfd201c291c321c3b1c00f099fd201c00f048fe4446a06a00280fd000f06efb816900290dd008688268081c032100f021fb06e0b0110000dc1f0010404600f0fdfb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c244878612448b8612448f8612448b8642448f86424483860b42464003d192968002910d0786800f0e2fb2968002905d008688268081c032100f0effab4246400391900200860b62464003d192868002803d000f098fd00202860b96a002905d008688268081c032100f0d7fa094878610948b8610948f8610948b8640948f8640a483860381c311c00f01bfef0bc01bc0047c82500102c2600101c260010fc25001008260010942300101823001084b030b51d4ca5449c909d919e929f9301200021002200f0cdfd041c96a901a800f060fd002808d10090201c9ca90222002300f0c5fd00f05bfd96a80068002813d014a88021490000f0f0fc14ad97ac0b49201c00f0defc96a80268281c211c00f0eafc281c00f09ffd00f047fd99239b009d4430bc08bc04b018479cfdffff3420001010b5094ca544041c68468022520000f039fd201c6946fff7a5fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f031fb011c0a687ea8126a00f04dfa8026f6006e44301c00f0dffa2949301c7eaa002300f0dffac425ed006d44281c00f0f5fa244c6c440021224868440160201c042100f0f1fa301c00f0f4fa011c201c2a1c00f0f5fa002824d1301c00f0eafa011c8420000168448022520000f0eafc8521090169446846fc22520000f0a6fc84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f0e6fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff48210010480a000044080000480800004c0800004c0a000010b5b62464000019016010bc01bc0047f0b50b4ca5440b4c6c4421607ea88021490000f035fc074c6c442468064d6019052800d92ce180000449401800688746c8f7ffff3408000000fcffff0812001020120010501200107c12001000130010b8130010cc13001009490a4b0320009000220192042002900392049302200590062006907ea80522092300f007fcbbe0842100107821001001200021002200f0bbfc8022d2006a44131c054970c970c30321002300f0befc00f052fcebe00000882000101a4868448021490000f0e0fb174f6f44174c6c441749201c00f0ccfb381c211c00f048fc381c00f0abfc002800d1d0e0114c6c4482229200201c391c00f0f8fb0e4969446846fc22520000f0f1fb2068c321c90069440968094a6a441268c423db006b441b68fff79bfeb2e00c0400001c0800009420001014060000240600001c06000000f086f98569254c6c442549201c00f08ffb24492f1c6037201c3a1c802300f073fc002800d192e08020c0006844c021490000f0c1fb8025ed006d44281c391c00f060f901200021002200f041fc061c0c2000f055fb041c00f0f0fb124a6a44124911486844016054600f4868444168006800f0e9fb0e4820600e486060281c00f0eafba060301c0321221c002300f02dfc022000f0e6fb59e0000024080000b42000109c2000102c080000f5190010181f00105020001003497ea800f04afb7ea800f0f3fb42e0042200108020c00068448021490000f037fbc120c00068448021490000f030fb1349144b8024e4006c44032000900022019204200290039204930220059006200690201c0522092300f020fb201c00f0c9fb094800f0a8fbc124e4006c440749201c00f013fb201c00f0bcfb0be00000842100107821001040420f00042200100120fef7e5fd024b9d44f0bc01bc00473808000030b5051c242000f08bfb041c002c04d0291c00f0e5fb03482060201c30bc02bc084700004c240010f0b54f464646c0b4b820400000f074fb071c002f2ad000f065f91848b8641848f864184ca1467c61174ca046bc61174efe61174dbd64174cfc64174838604c467c614446bc61134cfc6414483860381c6030802100f0b6fa4c467c614446bc61fe61bd640b4cfc640d483860381c18bc9846a146f0bc02bc08470000202500102c250010c82500102c2600101c260010fc25001008260010502500101823001094230010f0b50d1c171c1c1c00f06ef88669301c211cfff73dfe002d05d03068426d301c391c00f01df80020f0bc02bc0847000010b58b20800000f013fb041c002c03d000f004f902482060201c10bc02bc0847e4240010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04640260010014b1b681847c04648260010014b1b681847c0464c260010014b1b681847c04644260010014b1b681847c0468c26001040b4024e3668b44640bc604788260010014b1b681847c04690260010014b1b681847c046a8260010014b1b681847c046a0260010014b1b681847c04694260010014b1b681847c04698260010014b1b681847c046a4260010014b1b681847c0469c260010014b1b681847c046b4260010014b1b681847c046b8260010014b1b681847c046ac260010014b1b681847c046b0260010014b1b681847c046cc260010014b1b681847c046c4260010014b1b681847c046d4260010014b1b681847c046ec260010014b1b681847c046f426001040b4024e3668b44640bc6047e826001040b4024e3668b44640bc6047e0260010014b1b681847c046e4260010014b1b681847c046bc260010014b1b681847c046f0260010014b1b681847c046c0260010014b1b681847c046d0260010014b1b681847c046c8260010014b1b681847c046dc260010014b1b681847c046d8260010014b1b681847c046f8260010014b1b681847c04628270010014b1b681847c04674270010014b1b681847c046c0270010014b1b681847c046bc270010014b1b681847c046d4270010014b1b681847c04684270010014b1b681847c04634270010014b1b681847c04644270010014b1b681847c046a4270010014b1b681847c04670270010014b1b681847c04614270010014b1b681847c04648270010014b1b681847c046b0270010014b1b681847c04688270010014b1b681847c0468c270010014b1b681847c04610270010014b1b681847c04660270010014b1b681847c04600270010014b1b681847c0467c270010014b1b681847c04630270010014b1b681847c046fc260010014b1b681847c04690270010014b1b681847c04658270010014b1b681847c04618270010014b1b681847c04624270010014b1b681847c04668270010014b1b681847c0469c270010014b1b681847c046a8270010014b1b681847c04694270010014b1b681847c0462c270010014b1b681847c04654270010014b1b681847c04650270010014b1b681847c04678270010014b1b681847c04680270010014b1b681847c046ac270010014b1b681847c046c827001040b4024e3668b44640bc60476c270010014b1b681847c0466427001040b4024e3668b44640bc60474c270010014b1b681847c046a0270010014b1b681847c0460c270010014b1b681847c04638270010014b1b681847c0460427001040b4024e3668b44640bc604798270010014b1b681847c04620270010014b1b681847c0461c270010014b1b681847c0465c270010014b1b681847c046c4270010014b1b681847c04608270010014b1b681847c0463c270010014b1b681847c046cc270010014b1b681847c046d027001040b4024e3668b44640bc604740270010014b1b681847c046b8270010014b1b681847c046b4270010014b1b681847c046dc270010014b1b681847c046d8270010014b1b681847c04620280010014b1b681847c0460c280010014b1b681847c046f8270010014b1b681847c04650280010014b1b681847c046fc270010014b1b681847c0464828001040b4024e3668b44640bc604714280010014b1b681847c04638280010014b1b681847c046f4270010014b1b681847c04634280010014b1b681847c046f0270010014b1b681847c0464c280010014b1b681847c04610280010014b1b681847c046e0270010014b1b681847c04654280010014b1b681847c04604280010014b1b681847c046ec270010014b1b681847c0461c280010014b1b681847c04600280010014b1b681847c04658280010014b1b681847c0463c280010014b1b681847c04640280010014b1b681847c04624280010014b1b681847c04644280010014b1b681847c04608280010014b1b681847c0461828001040b4024e3668b44640bc604730280010014b1b681847c0462c280010014b1b681847c04628280010014b1b681847c046e8270010014b1b681847c046e4270010014b1b681847c0465c280010014b1b681847c04660280010014b1b681847c04674280010014b1b681847c0466c280010014b1b681847c04684280010014b1b681847c04688280010014b1b681847c0467028001040b4024e3668b44640bc60477c28001040b4024e3668b44640bc604778280010014b1b681847c0466428001040b4024e3668b44640bc604780280010014b1b681847c0468c280010014b1b681847c04668280010014b1b681847c04680260010014b1b681847c04684260010014b1b681847c04664260010014b1b681847c04670260010014b1b681847c04654260010014b1b681847c0465c26001040b4024e3668b44640bc604750260010014b1b681847c0467c260010014b1b681847c04678260010014b1b681847c0466c260010014b1b681847c04668260010014b1b681847c04658260010014b1b681847c04660260010014b1b681847c046742600107047000000b5084a4261084a8261084ac261084a8264084ac264084a0260fff799ff01bc00470000c82500102c2600101c260010fc250010082600101823001000b5fff75dfe01bc0047000000b5fff75dfe01bc0047000000b5fff751fe01bc0047000000b5fff74bfe01bc0047000010b581b0039c14380094fff7e1fd01b010bc01bc0047000000b51438fff7b2ff01bc004700b51438fff7dafd01bc004700b51838fff724fe02bc084700b51c38fff718fe02bc084700b51c38fff70cfe02bc084700b54838fff788ff01bc004700b54c38fff788ff01bc0047ffffffff00000000ffffffff000000004421001064210010cc220010ac2200102e0070006d000000d81d00102e0070006c000000e41d001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000f01d00105c1e00107c1e00109c1e0010b81e0010d81d00107061636b61676500041f0010e0220010232100007065726c00000000141f0010181f001025005300250053002500530000000000281f0010cc22001008230010402500105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f000000481f0010741f00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e006700200025005300000008230010402500108c1f0010b41f0010dc1f0010c82500102c2600101c260010fc2500100826001018230010942300104500720072006f0072002000250064000000000034200010482100102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d6500000000181f0010502000105420001043003a005c000000090000004f006e0065006c0069006e00650072003a0000004f006e0065006c0069006e00650072000000000084210010782100108820001094200010b42000109c200010f5190010181f00105020001004220010081200104c240010202500102c250010c82500102c2600101c260010fc2500100826001050250010182300109423001010240010a8240010e4240010c82500102c2600101c260010fc2500100826001018230010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000053003600300000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e33000000000000000000000000951b0010951b00100000000000000000e11c0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d160010191c0010a517001001190010b1170010251c0010bd17001011190010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010951b00100000000000000000690f0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d160010191c0010a5170010cd100010b1170010251c0010bd170010a1100010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010c911001000000000000000001d1d0010a11c001005180010951b0010ad1c001011180010b91500101d1800102918001035180010411800104d180010951b00100000000000000000291d00105918001065180010c5150010711800107d1800108918001095180010a1180010dd1c0010ad180010b9180010d1150010dd150010c5180010d1180010dd1800108514001029150010e9180010f51800100000000000000000351d0010a11c001005180010951b0010ad1c001011180010b91500101d1800102918001035180010411800104d180010951b00100000000000000000411d0010a11c0010051800100d000010ad1c001011180010b91500101d1800102918001035180010411800104d1800105d1400100000000000000000951b00100000000000000000951b0010591600106516001000000000000000002d170010391700100000000000000000311c0010491c0010551c0010811700108d1700101d16001029160010611c0010351600106d1c001099170010411600104d1600109d190010a517001001190010b1170010a9190010bd17001011190010c9170010791c0010d5170010e1170010ed170010f9170010891c0010951c0010ecffffff00000000651d00103919001045190010511900105d1900106d190010791900104d1d001085190010711d001091190010b8ffffff00000000a11d0010b4ffffff00000000ad1d00105916001065160010e4ffffff00000000951d0010891d0010e8ffffff000000007d1d0010711600107d16001003000000060000001b00000047000000ee020000f502000022030000230300002503000028030000b6040000d2040000e6040000f304000044050000480500000008000005080000110000002900000004000000520000005a0000006000000065000000bb000000df000000ff0000000001000024010000250100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e600000011000000140000001e0000001f00000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd0000000801000022010000280100000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000040000000600000007000000080000000a0000004b0000007f0500008205000083050000af050000d005000000000000591500006c030000a40200000400000003000000060000001b00000047000000b90200000e000000ee020000f502000022030000230300002503000028030000b6040000d2040000e6040000f304000044050000480500000008000005080000cd020000020000001100000029000000e00200000100000004000000f70200000a000000520000005a0000006000000065000000bb000000df000000ff0000000001000024010000250100000a0300000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e60000001e0300003800000011000000140000001e0000001f00000028000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004c00000050000000510000005200000054000000560000006400000074000000790000007a0000007c0000008200000085000000860000008c0000008e0000008f00000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c6000000c8000000cc000000ce000000d5000000d6000000de000000e0000000e2000000fd000000080100002201000028010000340300000200000003000000060000004903000021000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600005d0300000b000000040000000600000007000000080000000a0000004b0000007f0500008205000083050000af050000d00500004150504152435b31303030336133645d2e444c4c0041564b4f4e5b31303030353663365d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c00000000c0030000d2010000000000004000000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3f000000100000bc0100000030043008300c301030143018309c30a031043208320c321032143218321c3248324c327832f032a033a433ac33b033b433c83338343c34443480340035043508350c351035143518351c35203524357835c035cc35d835e435f03500360c361836243630363c364836543660366c367836843690369c36a836b436c036d036e036ec36f836043710371c372837343740374c375837643770377c3788379437a037ac37b837c437d037dc37e837f43700380c381838243830383c384838543860386c387838843890389c38a838b438c038cc38d838e438f038fc380c3918392839343940394c3958396839743980398c399839a439b039bc39c839d839e439f039fc39083a143a203a2c3a383a443a503a603a6c3a783a843a903a9c3aa83ab43ac03acc3ad83ae43af03afc3a083b143b203b2c3b383b443b543b603b6c3b783b843b903b9c3ba83bb43bc03bcc3bd83be83bf83b043c143c203c2c3c383c443c503c5c3c683c743c843c903c9c3ca83cb43cc03ccc3cd83c043d083d0c3d103d143d183dc83dcc3dd03dd43de03dec3dec3ef03ef43ef83efc3e003f0c3f103f203f243f383f3c3f403f443f843f883f000000200000c4010000043008300c301030143018301c302030243028302c30303048304c3088308c309030c830cc30d030d430d830dc30e030e430e830ec30f030f430f830fc300031043108310c311031143118311c312031243128312c313031343138313c314031103314332033243328332c333033343338333c334033443348334c335033543358335c336033643368336c337033743378337c338033843388338c3390339c33a033a433a833ac33b033b433b833bc33c033c433c833cc33d033d433d833dc33e033e433e833ec33f033f433f833fc330034043408340c3418341c342034243428342c343034343438343c34403444344834543458345c346034643468346c347034743478347c348034843488348c349034943498349c34a034a434b034b434b834bc34c034c434c834cc34d034d434d834dc34e034ec34f034f434f834fc340035043508350c351035143518351c352835343538353c3548354c3558355c356035643568356c357035743578357c358035843588358c359035943598359c35a035a435a835ac35b035b435b835bc35c035c435d035d435d835dc35e035e435e835ec35f035f435f835043610361436183624362836343638363c36 -__APP__ - } - - # This is Symbian application resource skeleton. - # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc - # by compiling the PerlApp.cpp. - # The following resource has been compiled using the Series 60 SDK 2.6 - # for Visual C. - # 'make sisify_hex' to create the perlrscmin.hex for this hexdump. - if ($Variant eq 'S60') { - $RSCHEX = <<__RSC__; -6b4a1f10000000005fde04001ca360de01b80010000400000001f0e54d0000000004f0e54d00000000000000001a00cc0800000000010005f0e54d000000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000120000000000000001400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000000120000000000000002400cc0801006816000100000000000100000000ffffffff00ffffffff0000000000000000ffff000000000000004122000000000000001400cc08010069160000050000000001000000000000000001000000040007000800ff020100ffffffff00000000000000000000ffff000000000000004122000000000000001400cc08010074160007000000000054160000ffffffff000000000000ffff00000000000000000000000015001d001d0035004d00ef0026015d01a301d201d701 -__RSC__ - } - - # This is Symbian application executable skeleton. - # You can create the ...\epoc32\release\thumb\urel\foo.app - # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h. - # The following executable has been compiled using the Series 80 SDK 2.0 - # for Visual C. - # 'make sisify_hex' to create the perlappmin.hex for this hexdump. - if ($Variant eq 'S80') { - $APPHEX = <<__APP__; -79000010ce390010f61520108581107645504f4300200000b088df82000000000100bb00806c8dc7d6e2e00003000001bc2500000000000000100000000010000020000000000000010000000000001000000000090000003426000001000000902300007c00000000000000382600005c290000000000005e01000000b501f07bfa02bc084700000148006870470000b01f001000b5011c024801f0c9fc01bc00470000d01f001084b030b50390049105920693204903a801f0c0fc041c0025002c06d103a8002101f0befc00885c282bd0022c2ad103a8002101f0b5fc0088402806d903a8002101f0aefc00885a280dd903a8002101f0a7fc0088602815d903a8002101f0a0fc00887a280ed803a8012101f099fc00883a2807d103a8022101f092fc00885c2800d10125281c30bc08bc04b0184700003821001084b030b50390049105920693204903a801f076fc041c0025002c06d103a8002101f074fc00885c282bd0022c2ad103a8002101f06bfc0088402806d903a8002101f064fc00885a280dd903a8002101f05dfc0088602815d903a8002101f056fc00887a280ed803a8012101f04ffc00883a2807d103a8022101f048fc00885c2800d10125281c30bc08bc04b0184700001821001030b584b001f04afa009001916d4602ac0849201c01f036fc281c211c01f038fc0021002800d10121081c04b030bc02bc08470000801c001030b584b001f02efa009001916d4602ac0849201c01f01afc281c211c01f01cfc0021002800d10121081c04b030bc02bc084700008c1c0010f0b52c4ca54486ab18600f1c151c012668468021490001f009fc82ac2649201c01f0f8fb6846211c2a1c01f005fc684601f0a8fc002855d084ac2049201c01f0e9fb6846211c2a1c01f0f6fb684601f099fc002846d086a8291c01f0a3f900280fd087ac1649201c01f0d4fb6846211c2a1c01f0e1fb684601f084fc002800d10026002e2ed086a8391c2a1c012301f08ff9061c002e17d189ac0a49201c01f0b9fb6846211c2a1c01f0c6fb684601f06ffc17e0ccfdffff981c0010041d0010241d0010441d00108bac0949201c01f0a1fb6846211c321c2b1c01f0adfb684601f05cfc8d239b009d44f0bc01bc0047601d001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f097fb4c466468a0460c980001070900264e9c0294484601f08bfbbc4200dbc1e10ca8029901f08afb007820281cd00ca8029901f083fb0078092815d00ca8029901f07cfb00780a280ed00ca8029901f075fb00780d2807d00ca8029901f06efb00780c2800d09de1029cbc4200db99e10ca8211c01f062fb007820281bd00ca8029901f05bfb0078092814d00ca8029901f054fb00780a280dd00ca8029901f04dfb00780d2806d00ca8029901f046fb00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f037fb0078402806d90ca8029901f030fb00785a280fd90ca8029901f029fb0078602800d858e10ca8029901f021fb00787a2800d950e1029cbc4200db04e10ca8211c01f015fb0078402806d90ca8029901f00efb00785a2823d90ca8029901f007fb0078602806d90ca8029901f000fb00787a2815d90ca8029901f0f9fa00782f2806d90ca8029901f0f2fa0078392807d90ca8029901f0ebfa00785f2800d0d2e0029cbc4243da0ca8211c01f0e0fa0078402806d90ca8029901f0d9fa00785a2822d90ca8029901f0d2fa0078602806d90ca8029901f0cbfa00787a2814d90ca8029901f0c4fa00782f2806d90ca8029901f0bdfa0078392806d90ca8029901f0b6fa00785f2812d1464510da311c0136484601f086fa039002990c1c013402940ca801f0a4fa0078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f096fa00783a2800d074e70ca8514601f08efa00783a2800d06ce7464500db69e7311c0136484601f05cfa5c210180029c02340294bc4266da0ca8211c01f077fa0078402806d90ca8029901f070fa00785a280fd90ca8029901f069fa0078602800d847e70ca8029901f061fa00787a2800d93fe7029cbc4245da0ca8211c01f056fa0078402806d90ca8029901f04ffa00785a2823d90ca8029901f048fa0078602806d90ca8029901f041fa00787a2815d90ca8029901f03afa00782f2806d90ca8029901f033fa0078392807d90ca8029901f02cfa00785f2800d00ae7464500db07e7311c0136484601f0faf9039002990c1c013402940ca801f018fa0078039c2080b6e7029cbc4244da0ca8211c01f00dfa007820281bd00ca8029901f006fa0078092814d00ca8029901f0fff900780a280dd00ca8029901f0f8f900780d2806d00ca8029901f0f1f900780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f0e3f900783b2813d1f01c404510da4846311c01f0dff96c460449201c01f0b4f94846211c01f0dcf9012002e0801c0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0b2f98820c00068448424e4006c44216801f0aff9814601204c46c44200d1a1e040a88021490001f078f9c224a4006c44a0468422520040468821c900694401f09ef9484607303e9040ac3f94c6a96846f82201f094f944462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f089f9301c00f054ff8322d2006a44106051608321c9006944404601f081f91d49404601f083f9381c01f04af9216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f00ef98424e4006c442060c2a8494601f02cf900788424e4006c44256828800124a144e3e70000dcfbffff44040000ac1d00104c210010311c0136381c01f0eff85c2101800024a146409800010009814515da311c0136381c01f0e1f88424e4006c44206040a8494601f0d9f800888424e4006c44256828800124a144e4e7381c311c01e0381c002101f0f5f8044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f00ef9009001916d4602ac0e49201c01f0e2f8281c211c01f008f900280cd104ac0a49201c01f0d7f80aa8211c01f0d9f80121c84200d00126301c06b070bc08bc04b018470000bc1d0010c01d001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490001f084f8301c00f087fecb22d2006a4410605160cd24e4006c44206800f082fecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206801f05af84c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216801f05cf80024a146c225ad006d44cd24e4006c442560206840a900f05bfecd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694401f06af8cea96846f82201f065f82068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002101f038f8c2ac201c40a900f02bfe201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920001f023f8c2ac84225200201cd121c900694401f01af88620c00068443f90c5a96846fc2201f011f82168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffffd01d001038210010742100103404000038230010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0caff82a96846fc22520000f0c4ff7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f094fd4046fff74dfb00282ad14046291c00f08bfd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f09aff8621c90069446846f82200f093ff20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f049ff002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c040000f01d0010e724e4006c441749201c00f025ff7ea8211c2a1c00f032ff7ea800f0e7ff00281dd0a524e4006c4482229200201c291c00f050ffa721c90069446846fc22520000f048ff2068084969440968a622d2006a441268054b6b441b6800f00dfa012007e000001c1e00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f004fd8320c000684400f0fffcc720c00068448021490000f0e0fe7ea8391c0022002300f0f8fc381c002100f0c4fe0088402806d9381c002100f0bdfe00885a280dd9381c002100f0b6fe008860281cd9381c002100f0affe00887a2815d8381c012100f0a8fe00883a280ed1381c022100f0a1fe00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f073fc806900f0fefc011c0a68201c126a00f026fc8320c0006844211c0022002300f0b0fca0256d0045442868002803d100f05afc1c302860574d6d4400215648684401606960a020400040440168281c3a1c002300f09efc061c002e00d0fde08420000168448021490000f0a5fe842109016944281c00f095fc061c281c00f097fc002e00d0dde0444c6c4482229200201c391c00f08afe414969446846fc22520000f083fe20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f052fee7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f02ffec5252d016d44e72636016e44842109016944194c6c4484225200201c00f01ffea020400040440068006841901449694468468222520000f012fe2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000074210010540c00001c04000038230010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f0e3fd134969446846fc2200f0ddfd2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f084fd201c291c3a1c00f091fd22e05c0c0000540c0000580c0000341e0010c724e4006c44024d6d4402490ae00000a81100005c1e0010c724e4006c440f4d6d440f49281c00f061fd201c291c321c3b1c00f06dfd201c00f01cfe4446606a00280fd000f02efb816900290dd008688268081c032100f0e1fa06e0b0110000841e0010404600f0b1fb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c1e4878611e48b8611e4838609e2464003d192968002910d0786800f09cfb2968002905d008688268081c032100f0b5fa9e246400391900200860a02464003d192868002803d000f072fd00202860796a002905d008688268081c032100f09dfa064878610648b86107483860381c311c00f077fbf0bc01bc0047482300107c230010f42100108421001084b030b51d4ca5449c909d919e929f9301200021002200f0b3fd041c96a901a800f046fd002808d10090201c9ca90222002300f0abfd00f041fd96a80068002813d014a88021490000f0d6fc14ad97ac0b49201c00f0c4fc96a80268281c211c00f0d0fc281c00f085fd00f02dfd99239b009d4430bc08bc04b018479cfdffffd01e001010b5094ca544041c68468022520000f01ffd201c6946fff7b7fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f0f7fa011c0a687ea8126a00f01ffa8026f6006e44301c00f0a5fa2949301c7eaa002300f0a5fac425ed006d44281c00f0bbfa244c6c440021224868440160201c042100f0b7fa301c00f0bafa011c201c2a1c00f0bbfa002824d1301c00f0b0fa011c8420000168448022520000f0d0fc8521090169446846fc22520000f08cfc84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f0acfa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffffb41f0010480a000044080000480800004c0800004c0a000010b5a02464000019016010bc01bc0047f0b50b4ca5440b4c6c4421607ea88021490000f01bfc074c6c442468064d6019052800d92ae180000449401800688746c8f7ffff3408000000fcffffe4110010fc1100102c12001058120010dc12001094130010a813001009490a4b032000900022019204200290039204930220059006927ea80522092300f0eefbbce00000f01f0010e41f001001200021002200f0a1fc8022d2006a44131c054970c970c30321002300f0a4fc00f038fce9e00000241f00101a4868448021490000f0c6fb174f6f44174c6c441749201c00f0b2fb381c211c00f02efc381c00f091fc002800d1cee0114c6c4482229200201c391c00f0defb0e4969446846fc22520000f0d7fb2068c321c90069440968094a6a441268c423db006b441b68fff79bfeb0e00c0400001c080000301f001014060000240600001c06000000f058f98569254c6c442549201c00f075fb24492f1c3437201c3a1c802300f059fc002800d190e08020c0006844c021490000f0a7fb8025ed006d44281c391c00f032f901200021002200f027fc061c0c2000f03bfb041c00f0d6fb124a6a44124911486844016054600f4868444168006800f0cffb0e4820600e486060281c00f0d0fba060301c0321221c002300f013fc022000f0ccfb57e0000024080000481f0010381f00102c0800009d190010c01d0010ec1e001003497ea800f030fb7ea800f0d9fb40e0702000108020c00068448021490000f01dfbc120c00068448021490000f016fb1249134b8024e4006c4403200090002201920420029003920493022005900692201c0522092300f007fb201c00f0b0fb084800f08ffbc124e4006c440649201c00f0fafa201c00f0a3fb0ae0f01f0010e41f001040420f00702000100120fef7f9fd024b9d44f0bc01bc00473808000030b5051c242000f073fb041c002c04d0291c00f049f903482060201c30bc02bc084700006422001070b5a220400000f05ffb061c002e10d000f03cf9094d7561094cb46109483060301c3430802100f0b5fa7561b46106483060301c70bc02bc08470000482300107c23001084210010f4210010f0b50d1c171c1c1c00f06ef88669301c211cfff76bfe002d05d03068026d301c391c00f01df80020f0bc02bc0847000010b58b20800000f027fb041c002c03d000f004f902482060201c10bc02bc0847fc220010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04690230010014b1b681847c04698230010014b1b681847c0469c230010014b1b681847c04694230010014b1b681847c046a423001040b4024e3668b44640bc6047a0230010014b1b681847c046a8230010014b1b681847c046c0230010014b1b681847c046b8230010014b1b681847c046ac230010014b1b681847c046b0230010014b1b681847c046bc230010014b1b681847c046b4230010014b1b681847c046c4230010014b1b681847c046c8230010014b1b681847c046dc230010014b1b681847c046d4230010014b1b681847c046e4230010014b1b681847c046fc230010014b1b681847c0460424001040b4024e3668b44640bc6047f823001040b4024e3668b44640bc6047f0230010014b1b681847c046f4230010014b1b681847c046cc230010014b1b681847c04600240010014b1b681847c046d0230010014b1b681847c046e0230010014b1b681847c046d8230010014b1b681847c046ec230010014b1b681847c046e8230010014b1b681847c04608240010014b1b681847c04634240010014b1b681847c04690240010014b1b681847c046d8240010014b1b681847c046dc240010014b1b681847c046e4240010014b1b681847c046e0240010014b1b681847c046f0240010014b1b681847c046f8240010014b1b681847c0469c240010014b1b681847c046a4240010014b1b681847c046ec240010014b1b681847c0465c240010014b1b681847c04640240010014b1b681847c04650240010014b1b681847c0468c240010014b1b681847c0462024001040b4024e3668b44640bc604748240010014b1b681847c04654240010014b1b681847c046cc240010014b1b681847c046a8240010014b1b681847c046ac240010014b1b681847c0467c240010014b1b681847c0461c240010014b1b681847c04678240010014b1b681847c04670240010014b1b681847c04610240010014b1b681847c04698240010014b1b681847c0463c240010014b1b681847c0460c240010014b1b681847c046b0240010014b1b681847c04668240010014b1b681847c04624240010014b1b681847c04630240010014b1b681847c04680240010014b1b681847c046bc240010014b1b681847c046c4240010014b1b681847c046b4240010014b1b681847c04638240010014b1b681847c04664240010014b1b681847c04660240010014b1b681847c04694240010014b1b681847c046a0240010014b1b681847c046c8240010014b1b681847c046f424001040b4024e3668b44640bc604788240010014b1b681847c0467424001040b4024e3668b44640bc60474c240010014b1b681847c0468424001040b4024e3668b44640bc604758240010014b1b681847c046c0240010014b1b681847c04618240010014b1b681847c04644240010014b1b681847c0461424001040b4024e3668b44640bc6047b8240010014b1b681847c0462c240010014b1b681847c04628240010014b1b681847c0466c240010014b1b681847c046e8240010014b1b681847c046d4240010014b1b681847c046d0240010014b1b681847c04600250010014b1b681847c046fc240010014b1b681847c04644250010014b1b681847c04630250010014b1b681847c0461c250010014b1b681847c04674250010014b1b681847c04620250010014b1b681847c0466c25001040b4024e3668b44640bc604738250010014b1b681847c0465c250010014b1b681847c04618250010014b1b681847c04658250010014b1b681847c04614250010014b1b681847c04670250010014b1b681847c04634250010014b1b681847c04604250010014b1b681847c04678250010014b1b681847c04628250010014b1b681847c04610250010014b1b681847c04640250010014b1b681847c04624250010014b1b681847c0467c250010014b1b681847c04660250010014b1b681847c04664250010014b1b681847c04648250010014b1b681847c04668250010014b1b681847c0462c250010014b1b681847c0463c25001040b4024e3668b44640bc604754250010014b1b681847c04650250010014b1b681847c0464c250010014b1b681847c0460c250010014b1b681847c04608250010014b1b681847c04680250010014b1b681847c04684250010014b1b681847c04698250010014b1b681847c04690250010014b1b681847c046a8250010014b1b681847c046ac250010014b1b681847c0469425001040b4024e3668b44640bc6047a025001040b4024e3668b44640bc60479c250010014b1b681847c0468825001040b4024e3668b44640bc6047a4250010014b1b681847c046b0250010014b1b681847c0468c2500107047000000b5054a4261054a8261054a0260fff771fd01bc00470000482300107c2300108421001000b5fff7c5fe01bc0047000000b5fff7b9fe01bc0047000000b5fff7b3fe01bc0047000010b581b0039c14380094fff769fe01b010bc01bc0047000000b51438fff75afe01bc004700b51438fff762fe01bc004700b51838fff746fe02bc0847ffffffff00000000ffffffff00000000b01f0010d01f001038210010182100102e0070006d000000801c00102e0070006c0000008c1c001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000981c0010041d0010241d0010441d0010601d0010801c00107061636b61676500ac1d00104c210010232100007065726c00000000bc1d0010c01d001025005300250053002500530000000000d01d00103821001074210010382300105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f000000f01d00101c1e00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e00670020002500530000007421001038230010341e00105c1e0010841e0010482300107c23001084210010f42100104500720072006f00720020002500640000000000d01e0010b41f00102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d6500000000c01d0010ec1e0010f01e001043003a005c0000000500000043006f00640065003a0000004f006e0065006c0069006e006500720000000000f01f0010e41f0010241f0010301f0010481f0010381f00109d190010c01d0010ec1e001070200010e411001064220010482300107c23001084210010f4210010c0220010fc220010482300107c23001084210010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000053003800300000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e330000000000000000000000003d1b00103d1b00100000000000000000dd1b0010011700100d17001019170010251700109d150010a915001031170010b51500103d17001049170010c1150010cd150010c11b001055170010cd180010cd1b001061170010dd1800106d170010791700108917001095170010a1170010ad1700103d1b00100000000000000000690f0010011700100d17001019170010251700109d150010a915001031170010b51500103d17001049170010c1150010cd150010c11b001055170010a9100010cd1b0010611700107d1000106d170010791700108917001095170010a1170010ad170010a51100100000000000000000011c00102518001031180010451500103d1800104918001055180010611800106d180010d91b00107918001085180010511500105d150010911800109d180010a91800105d140010a9140010b5180010c118001000000000000000000d1c0010b9170010c51700103d1b0010d1170010dd17001039150010e9170010f5170010011800100d180010191800103d1b00100000000000000000191c0010b9170010c51700100d000010d1170010dd17001039150010e9170010f5170010011800100d1800101918001035140010000000000000000095160010a1160010ecffffff000000003d1c0010211900102d19001039190010451900105519001061190010251c00106d190010491c001079190010e8ffffff00000000551c0010d9150010e515001003000000060000001b00000047000000110000002900000004000000520000005a0000006000000065000000bb000000df000000ff000000000100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e600000011000000140000001e0000001f000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007c0000007d0000007f000000820000008300000085000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe0000000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000040000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d105000000000000d914000024030000700200000400000003000000060000001b0000004700000085020000020000001100000029000000980200000100000004000000af02000008000000520000005a0000006000000065000000bb000000df000000ff00000000010000c20200000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000d60200003d00000011000000140000001e0000001f000000300000003100000033000000340000004000000041000000420000004300000044000000470000004a0000004b0000004e0000005000000051000000520000005400000055000000560000006400000074000000790000007a0000007c0000007d0000007f000000820000008300000085000000860000008c0000008e0000008f0000009000000092000000930000009500000096000000970000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000d6000000d9000000db000000de000000e0000000e2000000e5000000fb000000fd000000fe000000ec0200000200000003000000060000000103000021000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000fb000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b060000150300000b000000040000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d10500004150504152435b31303030336133645d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c000000000803000075010000000000004800000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3fe83fec3ff03ff43f000000100000cc01000078307c31e031e431e831ec31f031f431f831243228325432cc327c33803388338c339033a433103414341c34583498349c34a034a434f83440354c3558356435703580358c359835a435b035bc35c835d435e035ec35f835043610361c36283638364836543660366c367836843690369c36a836b436c036cc36d836e436f036fc360837143720372c373837443750375c3768377437843790379c37a837b437c037cc37d837e437f037fc370838143820382c383838443850385c386838743880388c389838a438b038bc38c838d838e438f438003910391c3928393439403950395c396839743980398c399839a439b039bc39c839d439e039ec39f839083a143a203a2c3a383a443a503a5c3a683a743a803a8c3a983aa43ab03abc3ac83ad43ae03aec3afc3a083b143b203b2c3b383b443b503b5c3b683b743b803b903ba03bac3bbc3bc83bd43bf43bf83bfc3b703c743c783c7c3c883c943c943d983d9c3da03da43da83db43db83dc83dcc3de03de43de83dec3d2c3e303eac3eb03eb43eb83ebc3ec03ec43ec83ecc3ee43ee83e243f283f2c3f5c3f603f643f683f6c3f703f743f783f7c3f803f843f883f8c3f903f943f983f9c3fa03fa43fa83fac3f000000200000f40000007c3180318c319031943198319c31a031a431a831ac31b031b431b831bc31c031c431c831cc31d031d431d831dc31e031e431e831ec31f031fc310032043208320c321032143218321c322032243228322c323032343238323c324032443248324c325032543258325c3260326c327032743278327c328032843288328c329032943298329c32a032a432a832ac32b032b432b832bc32c832cc32d032d432d832dc32e032e432e832ec32f032f432f832043308330c331033143318331c332033243328332c3330333433403344335033543358335c336033643368336c33703374337833843388338c330000__APP__ - } - - # This is Symbian application resource skeleton. - # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc - # by compiling the PerlApp.cpp. - # The following resource has been compiled using the Series 80 SDK 2.0 - # for Visual C. - # 'make sisify_hex' to create the perlrscmin.hex for this hexdump. - if ($Variant eq 'S80') { - $RSCHEX = <<__RSC__; -6b4a1f10000000005fde04001ca360de01b800780400000001f0e54d0000000005f0e54d000000000000000004f0e54d000000000010010000005000000000000400000204030352756e0900ffffffff00030408084f6e656c696e65720900ffffffff000504050541626f75740900ffffffff0000010404457869740500ffffffff0007010006f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0500000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff00000000020400000000000000000000030352756e170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff00000000000000000003010005055469746c65110000000064b0f3000000000001000200060650726f6d70740f00080000000000000a00010080000014001c001c0034008200a50047017b01 -__RSC__ - } - - # This is Symbian application executable skeleton. - # You can create the ...\epoc32\release\thumb\urel\foo.app - # by compiling the PerlApp.cpp with PerlMinSample defined in PerlApp.h. - # The following executable has been compiled using the UIQ SDK 2.1 - # for CodeWarrior. - # 'make sisify_hex' to create the perlappmin.hex for this hexdump. - if ($Variant eq 'UIQ') { - $APPHEX = <<__APP__; -79000010ce390010f61520108581107645504f4300200000cb7c2694000000000100af004044957dd6e2e000030000008c25000000000000001000000000100000200000000000000100000000000010000000000a0000000426000001000000502300007c000000000000000826000058290000000000005e01000000b501f031fa02bc084700000148006870470000401f001000b5011c024801f0c7fb01bc00470000601f001084b030b50390049105920693204903a801f0befb041c0025002c06d103a8002101f0bcfb00885c282bd0022c2ad103a8002101f0b3fb0088402806d903a8002101f0acfb00885a280dd903a8002101f0a5fb0088602815d903a8002101f09efb00887a280ed803a8012101f097fb00883a2807d103a8022101f090fb00885c2800d10125281c30bc08bc04b018470000c820001084b030b50390049105920693204903a801f074fb041c0025002c06d103a8002101f072fb00885c282bd0022c2ad103a8002101f069fb0088402806d903a8002101f062fb00885a280dd903a8002101f05bfb0088602815d903a8002101f054fb00887a280ed803a8012101f04dfb00883a2807d103a8022101f046fb00885c2800d10125281c30bc08bc04b018470000a820001030b584b001f0eef9009001916d4602ac0849201c01f034fb281c211c01f036fb0021002800d10121081c04b030bc02bc084700001c1c001030b584b001f0d2f9009001916d4602ac0849201c01f018fb281c211c01f01afb0021002800d10121081c04b030bc02bc08470000281c0010f0b52c4ca54486ab18600f1c151c012668468021490001f007fb82ac2649201c01f0f6fa6846211c2a1c01f003fb684601f0a0fb002855d084ac2049201c01f0e7fa6846211c2a1c01f0f4fa684601f091fb002846d086a8291c01f053f900280fd087ac1649201c01f0d2fa6846211c2a1c01f0dffa684601f07cfb002800d10026002e2ed086a8391c2a1c012301f03ff9061c002e17d189ac0a49201c01f0b7fa6846211c2a1c01f0c4fa684601f067fb17e0ccfdffff341c0010a01c0010c01c0010e01c00108bac0949201c01f09ffa6846211c321c2b1c01f0abfa684601f054fb8d239b009d44f0bc01bc0047fc1c001084b0f0b557464e464546e0b484b00c900d910e920f934ea800684e904fa80068814601f095fa4c466468a0460c980001070900264e9c0294484601f089fabc4200dbc1e10ca8029901f088fa007820281cd00ca8029901f081fa0078092815d00ca8029901f07afa00780a280ed00ca8029901f073fa00780d2807d00ca8029901f06cfa00780c2800d09de1029cbc4200db99e10ca8211c01f060fa007820281bd00ca8029901f059fa0078092814d00ca8029901f052fa00780a280dd00ca8029901f04bfa00780d2806d00ca8029901f044fa00780c2803d1029c01340294d4e7029cbc4200db6ee10ca8211c01f035fa0078402806d90ca8029901f02efa00785a280fd90ca8029901f027fa0078602800d858e10ca8029901f01ffa00787a2800d950e1029cbc4200db04e10ca8211c01f013fa0078402806d90ca8029901f00cfa00785a2823d90ca8029901f005fa0078602806d90ca8029901f0fef900787a2815d90ca8029901f0f7f900782f2806d90ca8029901f0f0f90078392807d90ca8029901f0e9f900785f2800d0d2e0029cbc4243da0ca8211c01f0def90078402806d90ca8029901f0d7f900785a2822d90ca8029901f0d0f90078602806d90ca8029901f0c9f900787a2814d90ca8029901f0c2f900782f2806d90ca8029901f0bbf90078392806d90ca8029901f0b4f900785f2812d1464510da311c0136484601f084f9039002990c1c013402940ca801f0a2f90078039c2080b8e7029c0134a246ba4500db7ce70ca8029901f094f900783a2800d074e70ca8514601f08cf900783a2800d06ce7464500db69e7311c0136484601f05af95c210180029c02340294bc4266da0ca8211c01f075f90078402806d90ca8029901f06ef900785a280fd90ca8029901f067f90078602800d847e70ca8029901f05ff900787a2800d93fe7029cbc4245da0ca8211c01f054f90078402806d90ca8029901f04df900785a2823d90ca8029901f046f90078602806d90ca8029901f03ff900787a2815d90ca8029901f038f900782f2806d90ca8029901f031f90078392807d90ca8029901f02af900785f2800d00ae7464500db07e7311c0136484601f0f8f8039002990c1c013402940ca801f016f90078039c2080b6e7029cbc4244da0ca8211c01f00bf9007820281bd00ca8029901f004f90078092814d00ca8029901f0fdf800780a280dd00ca8029901f0f6f800780d2806d00ca8029901f0eff800780c2803d1029c01340294d5e7029cbc421ada0ca8211c01f0e1f800783b2813d1f01c404510da4846311c01f0ddf86c460449201c01f0b2f84846211c01f0daf8012002e01c1c0010002004b038bc9846a146aa46f0bc08bc04b0184783b0f0b54f464646c0b44d4ca544071c8824e4006c4421604a4c6c4422608924e4006c442360a920c000684406688225ed006d448424e4006c4425604249206801f0b0f88820c00068448424e4006c44216801f0adf8814601204c46c44200d1a1e040a88021490001f076f8c224a4006c44a0468422520040468821c900694401f09cf8484607303e9040ac3f94c6a96846f82201f092f844462068c3a90968c4aa1268c5ab1b68fff7bcfd00287ad040468021490001f087f8301c00f0f8fe8322d2006a44106051608321c9006944404601f07ff81d49404601f081f8381c01f048f8216809010909409800010009013009187868814251da0026b146c224a4006c44a046444620680001000981451eda311c0136381c01f00cf88424e4006c442060c2a8494601f02af800788424e4006c44256828800124a144e3e70000dcfbffff44040000481d0010dc200010311c0136381c00f0edff5c2101800024a146409800010009814515da311c0136381c00f0dfff8424e4006c44206040a8494600f0d7ff00888424e4006c44256828800124a144e4e7381c311c01e0381c002100f0f3ff044b9d4418bc9846a146f0bc08bc03b018472404000084b070b586b00a900b910c920d9300260aa8022101f00cf8009001916d4602ac0e49201c00f0e0ff281c211c01f006f800280cd104ac0a49201c00f0d5ff0aa8211c00f0d7ff0121c84200d00126301c06b070bc08bc04b018470000581d00105c1d001081b0f0b54f464646c0b4644ca54480460e1ccd24e4006c442260d124e4006c442360f220c0006844076840a88021490000f082ff301c00f02bfecb22d2006a4410605160cd24e4006c44206800f026fecc22d2006a4410605160ca25ed006d44cd24e4006c4425604d49206800f058ff4c4bcd24e4006c442568cb22d2006a44cc20c0006844009040a8216800f05aff0024a146c225ad006d44cd24e4006c442560206840a900f0fffdcd24e4006c442068fff711fc00281ad1caac84225200201cd121c900694400f068ffcea96846f82200f063ff2068cba90968ccaa1268cdab1b68fff75aff002801d10124a1464c46200600284ad040a8002100f036ffc2ac201c40a900f0cffd201cfff7c8fb00283cd08623db006b4423485861321c01ca1860214c6c44a446032101246442a14601ca64460434a446043c206001394945f6d11a485861311c18318920c00068448222920000f021ffc2ac84225200201cd121c900694400f018ff8620c00068443f90c5a96846fc2200f00fff2168c3a80268c4a8036840a8fff729fe4098000100280ed1002012e0000094f9ffff6c1d0010c82000100421001034040000f8220010381c414640aafff7a9fb0120044b9d4418bc9846a146f0bc08bc01b0184700006c06000083b0f0b5474680b4354ca544051ceb24e4006c442160334c6c442260ec24e4006c44236000260027822292007ea8291c00f0c8fe82a96846fc22520000f0c2fe7e987f99809a819bfff7aafa002838d08024e4006c44a0464046291c00f038fd4046fff74dfb00282ad14046291c00f02ffd4046fff728fb061c002e20d18424e4006c4484225200201ceb21c900694400f098fe8621c90069446846f82200f091fe20681049694409688522d2006a4412680e4b6b441b68fff784fe002800d00127380600284dd07ea88021490000f047fe002e0ed0e624e4006c4404490de0c0f8ffff5c070000240400002c0400008c1d0010e724e4006c441749201c00f023fe7ea8211c2a1c00f030fe7ea800f0dffe00281dd0a524e4006c4482229200201c291c00f04efea721c90069446846fc22520000f046fe2068084969440968a622d2006a441268054b6b441b6800f00dfa012007e00000b81d00102c050000340500000020e823db009d4408bc9846f0bc08bc03b01847f0b5474680b4244ca54480460f1c7ea800f0a8fc8320c000684400f0a3fcc720c00068448021490000f0defd7ea8391c0022002300f09cfc381c002100f0c2fd0088402806d9381c002100f0bbfd00885a280dd9381c002100f0b4fd008860281cd9381c002100f0adfd00887a2815d8381c012100f0a6fd00883a280ed1381c022100f09ffd00885c2807d18320c0006844391c14e0000048eeffff842424016c4400f023fc806900f0a2fc011c0a68201c126a00f0dcfb8320c0006844211c0022002300f054fca6256d0045442868002803d100f00afc1c302860574d6d4400215648684401606960a620400040440168281c3a1c002300f042fc061c002e00d0fde08420000168448021490000f0a3fd842109016944281c00f039fc061c281c00f03bfc002e00d0dde0444c6c4482229200201c391c00f088fd414969446846fc22520000f081fd20683e4969440968a52212016a4412683c4b6b441b68fff7acf9002800d184e0c52212016a448320c00068443649516100681060354e6e440321344b6b4401256d4201cb01c60139a942fad131485061314868448621c90069448222920000f050fde7231b016b447ea9264858617e981860294d6d440322fe2464006c44a4460126764264460434a446043c206801c5013ab242f6d11e4858611831204868448222920000f02dfdc5252d016d44e72636016e44842109016944194c6c4484225200201c00f01dfda620400040440068006841901449694468468222520000f010fd2368381c291c321cfff73cfd37e0000098110000480a0000580a00004c0a0000540a000004210010540c00001c040000f8220010680c0000740e0000880e00009010000094100000842109016944c52424016c4484225200201c00f0e1fc134969446846fc2200f0dbfc2168104868440268104868440368381cfff7effd0021002800d101210806002835d0c724e4006c448d256d016d440749281c00f082fc201c291c3a1c00f08ffc22e05c0c0000540c0000580c0000d01d0010c724e4006c44024d6d4402490ae00000a8110000f81d0010c724e4006c440f4d6d440f49281c00f05ffc201c291c321c3b1c00f06bfc201c00f014fd4446606a00280fd000f0defa816900290dd008688268081c032100f097fa06e0b0110000201e0010404600f055fb034b9d4408bc9846f0bc01bc0047b8110000f0b5071c0e1c1e4878611e48b8611e483860a42464003d192968002910d0786800f040fb2968002905d008688268081c032100f06bfaa4246400391900200860a62464003d192868002803d000f070fc00202860796a002905d008688268081c032100f053fa064878610648b86107483860381c311c00f0edfcf0bc01bc0047082300103c230010942100101421001084b030b51d4ca5449c909d919e929f9301200021002200f0abfc041c96a901a800f044fc002808d10090201c9ca90222002300f0a3fc00f03ffc96a80068002813d014a88021490000f0d4fb14ad97ac0b49201c00f0c2fb96a80268281c211c00f0cefb281c00f07dfc00f02bfc99239b009d4430bc08bc04b018479cfdffff6c1e001010b5094ca544041c68468022520000f01dfc201c6946fff7b7fd82239b009d4410bc01bc00470000f8fdfffff0b5474680b4324ca544071c8846022952d100f09bfa011c0a687ea8126a00f0d5f98026f6006e44301c00f049fa2949301c7eaa002300f049fac425ed006d44281c00f05ffa244c6c440021224868440160201c042100f05bfa301c00f05efa011c201c2a1c00f05ffa002824d1301c00f054fa011c8420000168448022520000f0cefb8521090169446846fc22520000f08afb84200001684400680f49694409680f4a6a4412680e4b6b441b68fff74fff381c00f050fa00204446002c00d10120094b9d4408bc9846f0bc02bc0847b4f5ffff441f0010480a000044080000480800004c0800004c0a000010b5a62464000019016010bc01bc0047f0b50c4ca544fb24e4006c44216007a88021490000f018fbfb24e4006c442468054d6019052800d9dee08000034940180068874624f8ffff00fcffffe4110010fc1100102c1200108c13001054120010041300101813001009490a4b03200090002201920420029003920493022005900120069007a80522092300f0ebfa73e0801f0010741f001001200021002200f099fb89aa131c054970c970c30321002300f09efb00f038fba1e00000c01e001000f04cf98569f924e4006c442349201c00f0b6fa22492f1c4037201c3a1c802300f08efb002800d189e08ca8c021490000f0eafa8cad281c391c00f029f901200021002200f066fb061c0c2000f080fa041c00f015fbfa22d2006a441149fa20c000684401605460fa20c00068444168006800f00bfb0c4820600c486060281c00f00cfba060301c0321221c002300f04ffb022000f008fb51e00000dc1e0010cc1e0010991700105c1d0010881e0010034907a800f076fa07a800f019fb3ee000200010eea88021490000f065fab820c00068448021490000f05efa1249134beeac032000900022019204200290039204930220059001200690201c0522092300f050fa201c00f0f3fa094800f0d2fab824e4006c440749201c00f043fa201c00f0e6fa0be00000801f0010741f001040420f00002000100120fef743fe024b9d44f0bc01bc0047dc07000030b5051c242000f0b5fa041c002c04d0291c00f031f903482060201c30bc02bc084700001422001070b5a820400000f0a1fa061c002e10d000f0f6fa094d7561094cb46109483060301c4030802100f0fdf97561b46106483060301c70bc02bc08470000082300103c2300101421001094210010f0b50d1c171c1c1c00f068f88669301c211cfff7b5fe002d05d03068026d301c391c00f01df80020f0bc02bc0847000010b58c20800000f069fa041c002c03d000f0befa02482060201c10bc02bc0847b4220010002070470047704708477047104770471847704720477047284770473047704738477047404770474847704750477047584770476047704770477047014b1b681847c04654230010014b1b681847c04658230010014b1b681847c04650230010014b1b681847c0466023001040b4024e3668b44640bc60475c230010014b1b681847c04664230010014b1b681847c04674230010014b1b681847c04670230010014b1b681847c04668230010014b1b681847c0466c230010014b1b681847c04678230010014b1b681847c0467c230010014b1b681847c04690230010014b1b681847c04688230010014b1b681847c04698230010014b1b681847c046b0230010014b1b681847c046b823001040b4024e3668b44640bc6047ac23001040b4024e3668b44640bc6047a4230010014b1b681847c046a8230010014b1b681847c04680230010014b1b681847c046b4230010014b1b681847c04684230010014b1b681847c04694230010014b1b681847c0468c230010014b1b681847c046a0230010014b1b681847c0469c230010014b1b681847c046bc230010014b1b681847c046dc230010014b1b681847c0460c240010014b1b681847c04638240010014b1b681847c046e8230010014b1b681847c046c8230010014b1b681847c04630240010014b1b681847c046f8230010014b1b681847c046cc230010014b1b681847c046d8230010014b1b681847c04604240010014b1b681847c04620240010014b1b681847c04628240010014b1b681847c04618240010014b1b681847c046e0230010014b1b681847c046f4230010014b1b681847c046f0230010014b1b681847c04610240010014b1b681847c04614240010014b1b681847c0462c240010014b1b681847c0464024001040b4024e3668b44640bc604708240010014b1b681847c0460024001040b4024e3668b44640bc6047ec230010014b1b681847c04624240010014b1b681847c046c4230010014b1b681847c046e4230010014b1b681847c046c023001040b4024e3668b44640bc60471c240010014b1b681847c046d4230010014b1b681847c046d0230010014b1b681847c046fc230010014b1b681847c0463c240010014b1b681847c04634240010014b1b681847c04648240010014b1b681847c04644240010014b1b681847c04688240010014b1b681847c04674240010014b1b681847c04664240010014b1b681847c046b8240010014b1b681847c04668240010014b1b681847c046b024001040b4024e3668b44640bc60477c240010014b1b681847c046a0240010014b1b681847c04660240010014b1b681847c0469c240010014b1b681847c0465c240010014b1b681847c046b4240010014b1b681847c04678240010014b1b681847c0464c240010014b1b681847c046bc240010014b1b681847c04670240010014b1b681847c04658240010014b1b681847c04684240010014b1b681847c0466c240010014b1b681847c046c0240010014b1b681847c046a4240010014b1b681847c046a8240010014b1b681847c0468c240010014b1b681847c046ac240010014b1b681847c0468024001040b4024e3668b44640bc604798240010014b1b681847c04694240010014b1b681847c04690240010014b1b681847c04654240010014b1b681847c04650240010014b1b681847c046c4240010014b1b681847c046c8240010014b1b681847c046d8240010014b1b681847c046d0240010014b1b681847c046e8240010014b1b681847c046ec240010014b1b681847c046d424001040b4024e3668b44640bc6047e024001040b4024e3668b44640bc6047dc24001040b4024e3668b44640bc6047e4240010014b1b681847c046f0240010014b1b681847c046cc240010014b1b681847c0464c250010014b1b681847c046f4240010014b1b681847c04604250010014b1b681847c04628250010014b1b681847c04634250010014b1b681847c0463c250010014b1b681847c04640250010014b1b681847c04618250010014b1b681847c04608250010014b1b681847c04624250010014b1b681847c04610250010014b1b681847c04630250010014b1b681847c0462c25001040b4024e3668b44640bc604720250010014b1b681847c0461c250010014b1b681847c04644250010014b1b681847c04648250010014b1b681847c04614250010014b1b681847c046f8240010014b1b681847c046fc240010014b1b681847c04600250010014b1b681847c04674250010014b1b681847c04664250010014b1b681847c04670250010014b1b681847c0466c250010014b1b681847c04650250010014b1b681847c04660250010014b1b681847c04678250010014b1b681847c04668250010014b1b681847c04654250010014b1b681847c0467c250010014b1b681847c04658250010014b1b681847c0465c250010014b1b681847c0463825001040b4024e3668b44640bc60470c250010014b1b681847c046802500107047000000b5054a4261054a8261054a0260fff719ff01bc00470000082300103c2300101421001000b5fff7f5fd01bc0047000000b5fff7ddff01bc0047000000b5fff7d7ff01bc0047000010b581b0039c14380094fff79ffd01b010bc01bc0047000000b51438fff7b6ff01bc004700b51438fff798fd01bc004700b51838fff7b0ff02bc0847ffffffff00000000ffffffff00000000401f0010601f0010c8200010a82000102e0070006d0000001c1c00102e0070006c000000281c001025005300200069007300200075006e0074007200750073007400650064002e00200049006e007300740061006c006c0020006f006e006c007900200069006600200079006f0075002000740072007500730074002000700072006f00760069006400650072002e000000000049006e007300740061006c006c002000610073002000250053003f00000000005200650070006c0061006300650020006f006c0064002000250053003f00000049006e007300740061006c006c0065006400200025005300000000004600610069006c00750072006500200025006400200069006e007300740061006c006c0069006e00670020002500530000000000341c0010a01c0010c01c0010e01c0010fc1c00101c1c00107061636b61676500481d0010dc200010232100007065726c00000000581d00105c1d0010250053002500530025005300000000006c1d0010c820001004210010f82200105200650061006c006c0079002000720075006e0020006d006f00640075006c0065002000250053003f000000520075006e002000250053003f0000008c1d0010b81d00104600610069006c0065006400200066006f0072002000660069006c006500200025005300000000004500720072006f0072002000250064002000720065006100640069006e00670020002500530000004500720072006f00720020002500640020006f00700065006e0069006e006700200025005300000004210010f8220010d01d0010f81d0010201e0010082300103c23001014210010942100104500720072006f007200200025006400000000006c1e0010441f00102d6c65007072696e74202752756e6e696e6720696e20272c20245e4f2c20225c6e222c207363616c6172206c6f63616c74696d65000000005c1d0010881e00108c1e00100500000043006f00640065003a0000004f006e0065006c0069006e006500720000000000801f0010741f0010c01e0010dc1e0010cc1e0010991700105c1d0010881e001000200010e411001014220010082300103c230010142100109421001070220010b4220010082300103c23001014210010f61520100a000000640065006600610075006c0074002e0070006c0000000000070000005000650072006c0041007000700000000300000055004900510000003c0000005000650072006c002000250064002e00250064002e00250064002c002000530079006d006200690061006e00200070006f00720074002000250064002e00250064002e00250064002c0020006200750069006c007400200066006f0072002000250053002000530044004b002000250064002e0025006400000000005100000043006f007000790072006900670068007400200031003900380037002d00320030003000350020004c0061007200720079002000570061006c006c00200061006e00640020006f00740068006500720073002c002000530079006d006200690061006e00200070006f0072007400200043006f00700079007200690067006800740020004e006f006b0069006100200032003000300034002d00320030003000350000000d0000005c00530079007300740065006d005c004d00610069006c005c000000060000005c005000650072006c005c0000000000200000005c73797374656d5c6c6962735c7065726c5c736974657065726c5c352e392e330000000000000000000000002d1900102d1900100000000000000000791b0010e1190010ed190010f9190010051a0010fd14001009150010111a00101d1a0010291a0010351a0010411a001015150010a519001025160010f1160010b11900104d1a00100117001031160010591a0010691a00103d160010751a0010811a00108d1a0010991a0010a51a0010b11a00102d1900100000000000000000690f0010e1190010ed190010f9190010051a0010fd14001009150010111a00101d1a0010291a0010351a0010411a001015150010a519001025160010a9100010b11900104d1a00107d10001031160010591a0010691a00103d160010751a0010811a00108d1a0010991a0010a51a0010b11a0010a511001000000000000000009d1b00104916001055160010a5140010611600106d160010791600108516001091160010751b00109d160010a9160010b1140010bd140010b5160010c1160010cd160010c913001015140010d9160010e51600100000000000000000a91b0010bd1a0010c91a00102d190010d51a0010e11a0010ed1a0010f91a0010051b0010111b00101d1b0010291b00102d190010351b0010411b00100000000000000000b51b0010bd1a0010c91a00100d000010d51a0010e11a0010ed1a0010f91a0010051b0010111b00101d1b0010291b0010a1130010351b0010411b00100000000000000000dd150010e9150010ecffffff00000000d91b00102917001035170010411700104d1700105d17001069170010c11b001075170010e51b001081170010e8ffffff00000000f11b0010211500102d150010060000001b00000047000000110000002900000004000000520000006000000065000000df000000ff000000000100000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000110000001f00000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000006400000074000000790000007c00000082000000850000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd0000000300000006000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600000600000008000000090000000b0000004c000000800500008305000084050000b0050000d1050000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a80100000000000045140000500300008802000003000000060000001b000000470000009d020000020000001100000029000000b00200000100000004000000c702000006000000520000006000000065000000df000000ff00000000010000da0200000f0000000f00000012000000250000002700000029000000330000005c0000005e000000610000007900000088000000b7000000d2000000e3000000e6000000ee02000022000000110000001f00000030000000330000003400000040000000410000004200000043000000440000004b0000005100000054000000560000006400000074000000790000007c00000082000000850000008c0000008e000000920000009b0000009d000000a1000000b3000000c8000000cc000000ce000000d5000000db000000e2000000fd000000040300000200000003000000060000001903000020000000020000000300000015000000570000005b0000006200000063000000c9000000cd000000f7000000ae010000c1010000d301000074020000770200002903000038030000390300005303000059030000e7030000ea0300007c0400008c0400000205000003050000690500007f05000097050000e00500002e0600004b0600002d0300000a0000000600000008000000090000000b0000004c000000800500008305000084050000b0050000d10500003903000024000000010000000d0000000e0000000f00000010000000750000007a0000008600000087000000900000009d000000a6000000b2000000b3000000bd000000d4000000e3000000e4000000020100001701000021010000220100008d0100009c0100009d0100009e0100009f010000a0010000a1010000a2010000a3010000a4010000a5010000a6010000a7010000a80100004150504152435b31303030336133645d2e444c4c004241464c5b31303030336130665d2e444c4c0043484152434f4e565b31303030336231315d2e444c4c00434f4e455b31303030336134315d2e444c4c0045465352565b31303030333965345d2e444c4c0045494b434f52455b31303030343839325d2e444c4c004553544c49425b31303030336230625d2e444c4c0045555345525b31303030333965355d2e444c4c005045524c3539332e444c4c0051494b43544c5b31303030356663395d2e444c4c0000002403000083010000000000004800000014302830bc3050318831c0317c32803284328832b4327c36dc37e037ac38b038543a583a5c3a643a7c3be43b543e603ee83e003f4c3fe83fec3ff03ff43f000000100000d001000078307c31e031e431e831ec31f031f431f831243228325032f032f432f832fc32003314337c3380338833c433043408340c3410346434ac34b834c434d034e034ec34f834043510351c352835343540354c35583564357035803590359c35a835b435c035cc35d835e435f035fc350836143620362c363836443650365c366836743680368c369836a436b036bc36c836d436e036ec36fc3608371837243730373c3748375837643770377c3788379437a037ac37b837c437d037dc37e837f437043810381c382838343840384c385838643870387c3888389438a038ac38b838c438d038dc38ec38f838043910391c392839343940394c3958396439703980399039a039ac39b839c439d039dc39e839f439003a0c3a183a243a303a3c3a483a543a643a703a7c3a883a943aa03aac3ab83ac43ad03adc3ae83af43a003b0c3b183b243b303b3c3b483b543b643b703b903b943b983b0c3c103c143c183c243c303c303d343d383d3c3d403d443d503d543d643d683d7c3d803d843d883dc83dcc3d483e4c3e503e543e583e5c3e603e643e683e803e843ec03ec43ec83ef03ef43ef83efc3e003f043f083f0c3f103f143f183f1c3f203f243f283f2c3f303f343f383f3c3f0000002000000c0100000c3110311c312031243128312c313031343138313c314031443148314c315031543158315c316031643168316c317031743178317c318031843188318c3190319c31a031a431a831ac31b031b431b831bc31c031c431c831cc31d031d431d831dc31e031e431e831ec31f031f431f831fc310032043208320c3210321c322032243228322c323032343238323c324032443248324c325032543258325c326032643268326c3278327c328032843288328c329032943298329c32a032a432a832ac32b032bc32c032c432c832cc32d032d432d832dc32e032e432e832ec32f032f432003304331033143318331c332033243328332c33303334333833443348334c330000 -__APP__ - } - - # This is Symbian application resource skeleton. - # You can create the ...\epoc32\data\z\system\apps\PerlApp\PerlApp.rsc - # by compiling the PerlApp.cpp. - # The following resource has been compiled using the UIQ 2.1 SDK - # for CodeWarrior. - # 'make sisify_hex' to create the perlrscmin.hex for this hexdump. - if ($Variant eq 'UIQ') { - $RSCHEX = <<__RSC__; -6b4a1f10000000005fde04001ca360de019a00f8030400000001f0e54d0000000004f0e54d04f0e54d0000000000000000000000000007010005f0e54d07074f7074696f6e73110000000000ffffffff0000000000000000000f0400000400000000000000000000050541626f7574170000ffffffff00000000010400000000000000000000040454696d65170000ffffffff0000000003040000000000000000000008084f6e656c696e6572170000ffffffff000000000404000000000000000000000909436f707972696768740e0000ffffffff000000000000000000050100000005055469746c6511460014000000000064b0f30001000200060650726f6d707411000800000000000000000a0001008000000005000000000d0d4f4b202f2043616e63656c203f0e460014000000000008f0e54d00000015010000000200feff00000000000000000000000002024f6b1a00ffffffff000000000101ffff000000000000000000000000060643616e63656c0b00ffffffff0000000001010005000000000a0a596573202f204e6f203f0e46001400000000000af0e54d00000015010000000200feff00000000000000000000000003035965732900ffffffff000000000101ffff000000000000000000000000024e006f0000ffffffff00000000010115001d001d0035005800de0016013a018201a301e801 -__RSC__ - } -} diff --git a/symbian/symbian_dll.cpp b/symbian/symbian_dll.cpp deleted file mode 100644 index a1e61a4603..0000000000 --- a/symbian/symbian_dll.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * symbian_dll.cpp - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#define SYMBIAN_DLL_CPP -#include <e32base.h> -#include "PerlBase.h" - -#ifdef __SERIES60_3X__ -EXPORT_C GLDEF_C TInt E32Dll(/*TDllReason aReason*/) { return KErrNone; } -#else -EXPORT_C GLDEF_C TInt E32Dll(TDllReason /*aReason*/) { return KErrNone; } -#endif - -extern "C" { - EXPORT_C void* symbian_get_vars(void) { return Dll::Tls(); } - EXPORT_C void symbian_set_vars(const void *p) { Dll::SetTls((TAny*)p); } - EXPORT_C void symbian_unset_vars(void) { Dll::SetTls(0); } -} - diff --git a/symbian/symbian_proto.h b/symbian/symbian_proto.h deleted file mode 100644 index 7226663de0..0000000000 --- a/symbian/symbian_proto.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * symbian_proto.h - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#ifndef SYMBIAN_PROTO_H -#define SYMBIAN_PROTO_H - -#include <sys/types.h> -#include <sys/times.h> - -#if defined(PERL_CORE) || defined(PERL_EXT) - -/* We can't include the <string.h> unconditionally - * since it has prototypes conflicting with the gcc builtins. */ -extern void *memchr(const void *s, int c, size_t n); -#ifndef PERL_IN_DL_SYMBIAN_XS -/* dl_symbian.xs needs to see the C++ prototype of memset() instead */ -extern void *memset(void *s, int c, size_t n); -extern size_t strlen(const char *s); -#endif -extern void *memmove(void *dst, const void *src, size_t n); -extern char *strcat(char *dst, const char *src); -extern char *strchr(const char *s, int c); -extern char *strerror(int errnum); -extern int strncmp(const char *s1, const char *s2, size_t n); -extern char *strrchr(const char *s, int c); - -extern int setmode(int fd, long flags); - -#ifndef __GNUC__ -#define memcpy _e32memcpy /* GCC intrinsic */ -extern void *memcpy(const void *s1, const void *s2, size_t n); -extern int strcmp(const char *s1, const char *s2); -extern char* strcpy(char *dst, const char *src); -extern char* strncpy(char *dst, const char *src, size_t n); -#endif - -#endif /* PERL_CORE || PERL_EXT */ - -#if defined(SYMBIAN_DLL_CPP) || defined(SYMBIAN_UTILS_CPP) || defined(PERLBASE_CPP) || defined(PERLUTIL_CPP) -# define PERL_SYMBIAN_START_EXTERN_C extern "C" { -# define PERL_SYMBIAN_IMPORT_C IMPORT_C /* Declarations have IMPORT_C, definitions have EXPORT_C. */ -# define PERL_SYMBIAN_END_EXTERN_C } -#else -# define PERL_SYMBIAN_START_EXTERN_C -# define PERL_SYMBIAN_IMPORT_C -# define PERL_SYMBIAN_END_EXTERN_C -#endif - -PERL_SYMBIAN_START_EXTERN_C -PERL_SYMBIAN_IMPORT_C int symbian_sys_init(int *argcp, char ***argvp); -PERL_SYMBIAN_IMPORT_C void init_os_extras(void); -PERL_SYMBIAN_IMPORT_C void* symbian_get_vars(void); -PERL_SYMBIAN_IMPORT_C void symbian_set_vars(const void *); -PERL_SYMBIAN_IMPORT_C void symbian_unset_vars(void); -PERL_SYMBIAN_IMPORT_C SSize_t symbian_read_stdin(const int fd, char *b, int n); -PERL_SYMBIAN_IMPORT_C SSize_t symbian_write_stdout(const int fd, const char *b, int n); -PERL_SYMBIAN_IMPORT_C char* symbian_get_error_string(const int error); -PERL_SYMBIAN_IMPORT_C void symbian_sleep_usec(const long usec); -PERL_SYMBIAN_IMPORT_C int symbian_get_cpu_time(long* sec, long* usec); -PERL_SYMBIAN_IMPORT_C clock_t symbian_times(struct tms* buf); -PERL_SYMBIAN_IMPORT_C int symbian_usleep(unsigned int usec); -PERL_SYMBIAN_IMPORT_C int symbian_do_aspawn(void* vreally, void *vmark, void* sp); -PERL_SYMBIAN_IMPORT_C int symbian_do_spawn(const char* command); -PERL_SYMBIAN_IMPORT_C int symbian_do_spawn_nowait(const char* command); -PERL_SYMBIAN_END_EXTERN_C - -#endif /* !SYMBIAN_PROTO_H */ - diff --git a/symbian/symbian_stubs.c b/symbian/symbian_stubs.c deleted file mode 100644 index 314bd5772c..0000000000 --- a/symbian/symbian_stubs.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * symbian_stubs.c - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#include "EXTERN.h" -#include "perl.h" -#include "symbian_stubs.h" - -static int setENOSYS(void) { errno = ENOSYS; return -1; } - -uid_t getuid(void) { return setENOSYS(); } -gid_t getgid(void) { return setENOSYS(); } -uid_t geteuid(void) { return setENOSYS(); } -gid_t getegid(void) { return setENOSYS(); } - -int setuid(uid_t uid) { return setENOSYS(); } -int setgid(gid_t gid) { return setENOSYS(); } -int seteuid(uid_t uid) { return setENOSYS(); } -int setegid(gid_t gid) { return setENOSYS(); } - -int execv(const char* path, char* const argv []) { return setENOSYS(); } -int execvp(const char* path, char* const argv []) { return setENOSYS(); } - -#ifndef USE_PERLIO -FILE *popen(const char *command, const char *mode) { return 0; } -int pclose(FILE *stream) { return setENOSYS(); } -#endif -int pipe(int fd[2]) { return setENOSYS(); } - -int setmode(int fd, long flags) { return -1; } - -_sig_func_ptr signal(int signum, _sig_func_ptr handler) { return (_sig_func_ptr)setENOSYS(); } -int kill(pid_t pid, int signum) { return setENOSYS(); } -pid_t wait(int *status) { return setENOSYS(); } - -#if PERL_VERSION <= 8 -void Perl_my_setenv(pTHX_ char *var, char *val) { } -#else -void Perl_my_setenv(pTHX_ const char *var, const char *val) { } -#endif - -bool Perl_do_exec(pTHX_ const char *cmd) { return FALSE; } -bool Perl_do_exec3(pTHX_ const char *cmd, int fd, int flag) { return FALSE; } - -int Perl_do_spawn(pTHX_ char *cmd) { return symbian_do_spawn(cmd); } -int Perl_do_aspawn(pTHX_ SV *really, SV** mark, SV **sp) { return symbian_do_aspawn(really, mark, sp); } - -static const struct protoent protocols[] = { - { "tcp", 0, 6 }, - { "udp", 0, 17 } -}; - -/* The protocol field (the last) is left empty to save both space - * and time because practically all services have both tcp and udp - * allocations in IANA. */ -static const struct servent services[] = { - { "http", 0, 80, 0 }, /* Optimization. */ - { "https", 0, 443, 0 }, - { "imap", 0, 143, 0 }, - { "imaps", 0, 993, 0 }, - { "smtp", 0, 25, 0 }, - { "irc", 0, 194, 0 }, - - { "ftp", 0, 21, 0 }, - { "ssh", 0, 22, 0 }, - { "tftp", 0, 69, 0 }, - { "pop3", 0, 110, 0 }, - { "sftp", 0, 115, 0 }, - { "nntp", 0, 119, 0 }, - { "ntp", 0, 123, 0 }, - { "snmp", 0, 161, 0 }, - { "ldap", 0, 389, 0 }, - { "rsync", 0, 873, 0 }, - { "socks", 0, 1080, 0 } -}; - -struct protoent* getprotobynumber(int number) { - int i; - for (i = 0; i < sizeof(protocols)/sizeof(struct protoent); i++) - if (protocols[i].p_proto == number) - return (struct protoent*)(&(protocols[i])); - return 0; -} - -struct protoent* getprotobyname(const char* name) { - int i; - for (i = 0; i < sizeof(protocols)/sizeof(struct protoent); i++) - if (strEQ(name, protocols[i].p_name)) - return (struct protoent*)(&(protocols[i])); - return 0; -} - -struct servent* getservbyname(const char* name, const char* proto) { - int i; - for (i = 0; i < sizeof(services)/sizeof(struct servent); i++) - if (strEQ(name, services[i].s_name)) - return (struct servent*)(&(services[i])); - return 0; -} - -struct servent* getservbyport(int port, const char* proto) { - int i; - for (i = 0; i < sizeof(services)/sizeof(struct servent); i++) - if (services[i].s_port == port) - return (struct servent*)(&(services[i])); - return 0; -} - diff --git a/symbian/symbian_stubs.h b/symbian/symbian_stubs.h deleted file mode 100644 index ab6b9616cd..0000000000 --- a/symbian/symbian_stubs.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * symbian_stubs.h - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#ifndef PERL_SYMBIAN_STUBS_H -#define PERL_SYMBIAN_STUBS_H - -int execv(const char* path, char* const argv []); -int execvp(const char* path, char* const argv []); - -#ifndef USE_PERLIO -FILE *popen(const char *command, const char *mode); -int pclose(FILE *stream); -#endif -int pipe(int fd[2]); - -#endif /* PERL_SYMBIAN_STUBS_H */ - diff --git a/symbian/symbian_utils.cpp b/symbian/symbian_utils.cpp deleted file mode 100644 index 9749361ed0..0000000000 --- a/symbian/symbian_utils.cpp +++ /dev/null @@ -1,422 +0,0 @@ -/* - * symbian_utils.cpp - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#define SYMBIAN_UTILS_CPP -#include <e32base.h> -#include <e32std.h> -#include <utf.h> -#include <hal.h> - -#include <eikenv.h> - -#include <string.h> -#include <ctype.h> - -#include "PerlUi.h" -#include "PerlBase.h" -#include "PerlUtil.h" - -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -extern "C" { - EXPORT_C int symbian_sys_init(int *argcp, char ***argvp) - { -#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */ - dVAR; -#endif - (void)times(&PL_timesbase); - return 0; - } - XS(XS_PerlApp_TextQuery) // Can't be made static because of XS(). - { - dXSARGS; - if (items != 0) - Perl_croak(aTHX_ "PerlApp::TextQuery: no arguments, please"); - SP -= items; - // TODO: parse arguments for title, prompt, and maxsize. - // Suggested syntax: - // TextQuery(title => ..., prompt => ..., maxsize => ...) - // For an example see e.g. universal.c:XS_PerlIO_get_layers(). - _LIT(KTitle, "Title"); - _LIT(KPrompt, "Prompt"); - HBufC* cData = HBufC::New(KPerlUiOneLinerSize); - TBool cSuccess = EFalse; - if (cData) { - TPtr cPtr(cData->Des()); - if (CPerlUi::TextQueryDialogL(KTitle, - KPrompt, - cPtr, - KPerlUiOneLinerSize)) { - ST(0) = sv_2mortal(PerlUtil::newSvPVfromTDesC16(*cData)); - cSuccess = ETrue; - } - delete cData; - } - if (cSuccess) - XSRETURN(1); - else - XSRETURN_UNDEF; - } - EXPORT_C void init_os_extras(void) - { - dTHX; - char *file = __FILE__; - dXSUB_SYS; - newXS("PerlApp::TextQuery", XS_PerlApp_TextQuery, file); - } - EXPORT_C SSize_t symbian_read_stdin(const int fd, char *b, int n) - { -#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */ - dVAR; -#endif - if(!PL_appctx) - ((CPerlBase*)PL_appctx) = CPerlBase::NewInterpreter(); - return ((CPerlBase*)PL_appctx)->ConsoleRead(fd, b, n); - } - EXPORT_C SSize_t symbian_write_stdout(const int fd, const char *b, int n) - { -#ifdef PERL_GLOBAL_STRUCT /* Avoid unused variable warning. */ - dVAR; -#endif - if(!PL_appctx) - ((CPerlBase*)PL_appctx) = CPerlBase::NewInterpreter(); - return ((CPerlBase*)PL_appctx)->ConsoleWrite(fd, b, n); - } - static const char NullErr[] = ""; - EXPORT_C char* symbian_get_error_string(TInt error) - { - // CTextResolver seems to be unreliable, so we roll our own - // at least for the basic Symbian errors (this does not cover - // the various subsystems). - dTHX; - if (error >= 0) - return strerror(error); - error = -error; // flip - const TInt KErrStringMax = 256; - typedef struct { - const char* kerr; - const char* desc; - } kerritem; - static const kerritem kerrtable[] = { - { "None", /* 0 */ "No error"}, - { "NotFound", /* -1 */ "Unable to find the specified object"}, - { "General", /* -2 */ "General (unspecified) error"}, - { "Cancel", /* -3 */ "The operation was cancelled"}, - { "NoMemory", /* -4 */ "Not enough memory"}, - { "NotSupported", /* -5 */ "The operation requested is not supported"}, - { "Argument", /* -6 */ "Bad request"}, - { "TotalLossOfPrecision", - /* -7 */ "Total loss of precision"}, - { "BadHandle", /* -8 */ "Bad object"}, - { "Overflow", /* -9 */ "Overflow"}, - { "Underflow", /* -10 */ "Underflow"}, - { "AlreadyExists", /* -11 */ "Already exists"}, - { "PathNotFound", /* -12 */ "Unable to find the specified folder"}, - { "Died", /* -13 */ "Closed"}, - { "InUse", /* -14 */ - "The specified object is currently in use by another program"}, - { "ServerTerminated", /* -15 */ "Server has closed"}, - { "ServerBusy", /* -16 */ "Server busy"}, - { "Completion", /* -17 */ "Completion error"}, - { "NotReady", /* -18 */ "Not ready"}, - { "Unknown", /* -19 */ "Unknown error"}, - { "Corrupt", /* -20 */ "Corrupt"}, - { "AccessDenied", /* -21 */ "Access denied"}, - { "Locked", /* -22 */ "Locked"}, - { "Write", /* -23 */ "Failed to write"}, - { "DisMounted", /* -24 */ "Wrong disk present"}, - { "Eof", /* -25 */ "Unexpected end of file"}, - { "DiskFull", /* -26 */ "Disk full"}, - { "BadDriver", /* -27 */ "Bad device driver"}, - { "BadName", /* -28 */ "Bad name"}, - { "CommsLineFail", /* -29 */ "Comms line failed"}, - { "CommsFrame", /* -30 */ "Comms frame error"}, - { "CommsOverrun", /* -31 */ "Comms overrun error"}, - { "CommsParity", /* -32 */ "Comms parity error"}, - { "TimedOut", /* -33 */ "Timed out"}, - { "CouldNotConnect",/* -34 */ "Failed to connect"}, - { "CouldNotDisconnect", - /* -35 */ "Failed to disconnect"}, - { "Disconnected", /* -36 */ "Disconnected"}, - { "BadLibraryEntryPoint", - /* -37 */ "Bad library entry point"}, - { "BadDescriptor", /* -38 */ "Bad descriptor"}, - { "Abort", /* -39 */ "Interrupted"}, - { "TooBig", /* -40 */ "Too big"}, - { "DivideByZero", /* -41 */ "Divide by zero"}, - { "BadPower", /* -42 */ "Batteries too low"}, - { "DirFull", /* -43 */ "Folder full"}, - { "KErrHardwareNotAvailable", - /* -44 */ "Hardware is not available"}, - { "SessionClosed", /* -45 */ "Session was closed"}, - { "PermissionDenied", - /* -46 */ "Permission denied"} - }; - const TInt n = sizeof(kerrtable) / sizeof(kerritem *); - TBuf8<KErrStringMax> buf8; - if (error >= 0 && error < n) { - const char *kerr = kerrtable[error].kerr; - const char *desc = kerrtable[error].desc; - const TPtrC8 kerrp((const unsigned char *)kerr, strlen(kerr)); - const TPtrC8 descp((const unsigned char *)desc, strlen(desc)); - TBuf8<KErrStringMax> ckerr; - TBuf8<KErrStringMax> cdesc; - ckerr.Copy(kerrp); - cdesc.Copy(descp); - buf8.Format(_L8("K%S (%d) %S"), &ckerr, error, &cdesc); - - } else { - buf8.Format(_L8("Symbian error %d"), error); - } - SV* sv = Perl_get_sv(aTHX_ "\005", TRUE); /* $^E or ${^OS_ERROR} */ - if (!sv) - return (char*)NullErr; - sv_setpv(sv, (const char *)buf8.PtrZ()); - return SvPV_nolen(sv); - } - EXPORT_C void symbian_sleep_usec(const long usec) - { - User::After((TTimeIntervalMicroSeconds32) usec); - } -#define PERL_SYMBIAN_CLK_TCK 100 - EXPORT_C int symbian_get_cpu_time(long* sec, long* usec) - { - // The RThread().GetCpuTime() does not seem to work? - // (it always returns KErrNotSupported) - // TTimeIntervalMicroSeconds ti; - // TInt err = me.GetCpuTime(ti); - dTHX; - TInt periodus; /* tick period in microseconds */ - if (HAL::Get(HALData::ESystemTickPeriod, periodus) != KErrNone) - return -1; - TUint tick = User::TickCount(); - if (PL_timesbase.tms_utime == 0) { - PL_timesbase.tms_utime = tick; - PL_clocktick = PERL_SYMBIAN_CLK_TCK; - } - tick -= PL_timesbase.tms_utime; - TInt64 tickus = TInt64(tick) * TInt64(periodus); - TInt64 tmps = tickus / 1000000; -#ifdef __SERIES60_3X__ - if (sec) *sec = I64LOW(tmps); - if (usec) *usec = I64LOW(tickus) - I64LOW(tmps) * 1000000; -#else - if (sec) *sec = tmps.Low(); - if (usec) *usec = tickus.Low() - tmps.Low() * 1000000; -#endif //__SERIES60_3X__ - return 0; - } - EXPORT_C int symbian_usleep(unsigned int usec) - { - if (usec >= 1000000) { - errno = EINVAL; - return -1; - } - symbian_sleep_usec((const long) usec); - return 0; - } -#define SEC_USEC_TO_CLK_TCK(s, u) \ - (((s) * PERL_SYMBIAN_CLK_TCK) + (u / (1000000 / PERL_SYMBIAN_CLK_TCK))) - EXPORT_C clock_t symbian_times(struct tms *tmsbuf) - { - long s, u; - if (symbian_get_cpu_time(&s, &u) == -1) { - errno = EINVAL; - return -1; - } else { - tmsbuf->tms_utime = SEC_USEC_TO_CLK_TCK(s, u); - tmsbuf->tms_stime = 0; - tmsbuf->tms_cutime = 0; - tmsbuf->tms_cstime = 0; - return tmsbuf->tms_utime; - } - } - class CProcessWait : public CActive - { - public: - CProcessWait() : CActive(EPriorityStandard) { - CActiveScheduler::Add(this); - } -#ifdef __WINS__ - TInt Wait(RThread& aProcess) -#else - TInt Wait(RProcess& aProcess) -#endif - { - aProcess.Logon(iStatus); - aProcess.Resume(); - SetActive(); - CActiveScheduler::Start(); - return iStatus.Int(); - } - private: - void DoCancel() {;} - void RunL() { - CActiveScheduler::Stop(); - } - }; - class CSpawnIoRedirect : public CBase - { - public: - CSpawnIoRedirect(); - // NOTE: there is no real implementation of I/O redirection yet. - protected: - private: - }; - CSpawnIoRedirect::CSpawnIoRedirect() - { - } - typedef enum { - ESpawnNone = 0x00000000, - ESpawnWait = 0x00000001 - } TSpawnFlag; - static int symbian_spawn(const TDesC& aFilename, - const TDesC& aCommand, - const TSpawnFlag aFlag, - const CSpawnIoRedirect& aIoRedirect) { - TInt error = KErrNone; -#ifdef __WINS__ - const TInt KStackSize = 0x1000; - const TInt KHeapMin = 0x1000; - const TInt KHeapMax = 0x100000; - RThread proc; - RLibrary lib; - HBufC* command = aCommand.Alloc(); - error = lib.Load(aFilename); - if (error == KErrNone) { - TThreadFunction func = (TThreadFunction)(lib.Lookup(1)); - if (func) - error = proc.Create(aFilename, - func, - KStackSize, -#ifdef __SERIES60_3X__ - KHeapMin, - KHeapMax, - (TAny*)command, -#else - (TAny*)command, - &lib, - RThread().Heap(), - KHeapMin, - KHeapMax, -#endif - EOwnerProcess); - else - error = KErrNotFound; - lib.Close(); - } - else - delete command; -#else - RProcess proc; - error = proc.Create(aFilename, aCommand); -#endif - if (error == KErrNone) { - if ((TInt)aFlag & (TInt)ESpawnWait) { - CProcessWait* w = new CProcessWait(); - if (w) { - error = w->Wait(proc); - delete w; - } else - error = KErrNoMemory; - } else - proc.Resume(); - proc.Close(); - } - return error; - } - static int symbian_spawner(const char *command, TSpawnFlag aFlags) - { - TBuf<KMaxFileName> aFilename; - TBuf<KMaxFileName> aCommand; - TSpawnFlag aSpawnFlags = ESpawnWait; - CSpawnIoRedirect iord; - char *p = (char*)command; - - // The recognized syntax is: "cmd [args] [&]". Since one - // cannot pass more than (an argv[0] and) an argv[1] to a - // Symbian process anyway, not much is done to the cmd or - // the args, only backslash quoting. - - // Strip leading whitespace. - while (*p && isspace(*p)) p++; - if (*p) { - // Build argv[0]. - while (*p && !isspace(*p) && *p != '&') { - if (*p == '\\') { - if (p[1]) { - aFilename.Append(p[1]); - p++; - } - - } - else - aFilename.Append(*p); - p++; - } - - if (*p) { - // Skip whitespace between argv[0] and argv[1]. - while(*p && isspace(*p)) p++; - // Build argv[1]. - if (*p) { - char *a = p; - char *b = p + 1; - - while (*b) b++; - if (isspace(b[-1])) { - b--; - while (b > a && isspace(*b)) b--; - b++; - } - if (b > a && b[-1] == '&') { - // Parse backgrounding in any case, - // but turn it off only if wanted. - if ((aFlags & ESpawnWait)) - aSpawnFlags = - (TSpawnFlag) (aSpawnFlags & ~ESpawnWait); - b--; - if (isspace(b[-1])) { - b--; - while (b > a && isspace(*b)) b--; - b++; - } - } - for (p = a; p < b; p++) { - if (*p == '\\') { - if (p[1]) - aCommand.Append(p[1]); - p++; - } - else - aCommand.Append(*p); - } - } - // NOTE: I/O redirection is not yet done. - // Implementing that may require a separate server. - } - } - int spawned = symbian_spawn(aFilename, aCommand, aSpawnFlags, iord); - return spawned == KErrNone ? 0 : -1; - } - EXPORT_C int symbian_do_spawn(const char *command) - { - return symbian_spawner(command, ESpawnWait); - } - EXPORT_C int symbian_do_spawn_nowait(const char *command) - { - return symbian_spawner(command, ESpawnNone); - } - EXPORT_C int symbian_do_aspawn(void* vreally, void* vmark, void* sp) - { - return -1; - } -} - diff --git a/symbian/symbianish.h b/symbian/symbianish.h deleted file mode 100644 index 3b0ddb3f3c..0000000000 --- a/symbian/symbianish.h +++ /dev/null @@ -1,218 +0,0 @@ -/* - * symbianish.h - * - * Copyright (c) Nokia 2004-2005. All rights reserved. - * This code is licensed under the same terms as Perl itself. - * - */ - -#include "symbian/symbian_port.h" - -/* - * The following symbols are defined if your operating system supports - * functions by that name. All Unixes I know of support them, thus they - * are not checked by the configuration script, but are directly defined - * here. - */ - -#ifndef PERL_MICRO - -/* HAS_IOCTL: - * This symbol, if defined, indicates that the ioctl() routine is - * available to set I/O characteristics - */ -#define HAS_IOCTL / **/ - -/* HAS_UTIME: - * This symbol, if defined, indicates that the routine utime() is - * available to update the access and modification times of files. - */ -/* #define HAS_UTIME / **/ - -/* HAS_GROUP - * This symbol, if defined, indicates that the getgrnam() and - * getgrgid() routines are available to get group entries. - * The getgrent() has a separate definition, HAS_GETGRENT. - */ -#undef HAS_GROUP /**/ - -/* HAS_PASSWD - * This symbol, if defined, indicates that the getpwnam() and - * getpwuid() routines are available to get password entries. - * The getpwent() has a separate definition, HAS_GETPWENT. - */ -#undef HAS_PASSWD /**/ - -#undef HAS_KILL -#undef HAS_WAIT - -#endif /* !PERL_MICRO */ - -/* USEMYBINMODE - * This symbol, if defined, indicates that the program should - * use the routine my_binmode(FILE *fp, char iotype) to insure - * that a file is in "binary" mode -- that is, that no translation - * of bytes occurs on read or write operations. - */ -#undef USEMYBINMODE - -/* Stat_t: - * This symbol holds the type used to declare buffers for information - * returned by stat(). It's usually just struct stat. It may be necessary - * to include <sys/stat.h> and <sys/types.h> to get any typedef'ed - * information. - */ -#define Stat_t struct stat - -/* USE_STAT_RDEV: - * This symbol is defined if this system has a stat structure declaring - * st_rdev - */ -#define USE_STAT_RDEV /**/ - -/* ACME_MESS: - * This symbol, if defined, indicates that error messages should be - * should be generated in a format that allows the use of the Acme - * GUI/editor's autofind feature. - */ -#undef ACME_MESS /**/ - -/* UNLINK_ALL_VERSIONS: - * This symbol, if defined, indicates that the program should arrange - * to remove all versions of a file if unlink() is called. This is - * probably only relevant for VMS. - */ -/* #define UNLINK_ALL_VERSIONS / **/ - -/* VMS: - * This symbol, if defined, indicates that the program is running under - * VMS. It is currently automatically set by cpps running under VMS, - * and is included here for completeness only. - */ -/* #define VMS / **/ - -/* ALTERNATE_SHEBANG: - * This symbol, if defined, contains a "magic" string which may be used - * as the first line of a Perl program designed to be executed directly - * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG - * begins with a character other then #, then Perl will only treat - * it as a command line if it finds the string "perl" in the first - * word; otherwise it's treated as the first line of code in the script. - * (IOW, Perl won't hand off to another interpreter via an alternate - * shebang sequence that might be legal Perl code.) - */ -/* #define ALTERNATE_SHEBANG "#!" / **/ - -#include <signal.h> -#define ABORT() abort() - -/* - * fwrite1() should be a routine with the same calling sequence as fwrite(), - * but which outputs all of the bytes requested as a single stream (unlike - * fwrite() itself, which on some systems outputs several distinct records - * if the number_of_items parameter is >1). - */ -#define fwrite1 fwrite - -#define Stat(fname,bufptr) stat((fname),(bufptr)) -#define Fstat(fd,bufptr) fstat((fd),(bufptr)) -#define Fflush(fp) fflush(fp) -#define Mkdir(path,mode) mkdir((path),(mode)) - -#ifndef PERL_SYS_TERM_BODY -#define PERL_SYS_TERM_BODY() HINTS_REFCNT_TERM; OP_REFCNT_TERM; \ - PERLIO_TERM; MALLOC_TERM; CloseSTDLIB(); \ - LOCALE_TERM; ENV_TERM; - -#endif - -#define BIT_BUCKET "NUL:" - -#define dXSUB_SYS dNOOP - -#define NO_ENVIRON_ARRAY - -int kill(pid_t pid, int signo); -pid_t wait(int *status); - -#ifdef PERL_GLOBAL_STRUCT_PRIVATE -# undef PERL_GET_VARS -# undef PERL_SET_VARS -# undef PERL_UNSET_VARS -# define PERL_GET_VARS() symbian_get_vars() -# define PERL_SET_VARS(v) symbian_set_vars(v) -# define PERL_UNSET_VARS(v) symbian_unset_vars() -#endif /* #ifdef PERL_GLOBAL_STRUCT_PRIVATE */ - -#define PERL_CALLCONV EXPORT_C /* for proto.h */ - -#ifndef PERL_CORE -#define PERL_CORE /* for WINS builds under VC */ -#endif - -#ifdef USE_PERLIO -#define PERL_NEED_APPCTX /* need storing the PerlBase* */ -#define PERLIO_STD_SPECIAL -#define PERLIO_STD_IN(f, b, n) symbian_read_stdin(f, b, n) -#define PERLIO_STD_OUT(f, b, n) symbian_write_stdout(f, b, n) -/* The console (the STD*) streams are seen by Perl in UTF-8. */ -#define PERL_SYMBIAN_CONSOLE_UTF8 - -#endif - -#undef Strerror -#undef strerror -#define Strerror(eno) ((eno) < 0 ? symbian_get_error_string(eno) : strerror(eno)) - -#define PERL_NEED_TIMESBASE - -#define times(b) symbian_times(b) -#define usleep(u) symbian_usleep(u) - -#define PERL_SYS_INIT_BODY(c, v) symbian_sys_init(c, v) - -#ifdef __SERIES60_1X__ -# error "Unfortunately Perl does not work in S60 1.2 (see FAQ-0929)" -#endif - -#ifdef _MSC_VER - -/* The Symbian SDK insists on the /W4 flag for Visual C. - * The Perl sources are not _that_ clean (Perl builds for Win32 use - * the /W3 flag, and gcc builds always use -Wall, so the sources are - * quite clean). To avoid a flood of warnings let's shut up most - * (for VC 6.0 SP 5). */ - -#pragma warning(disable: 4054) /* function pointer to data pointer */ -#pragma warning(disable: 4055) /* data pointer to function pointer */ -#pragma warning(disable: 4100) /* unreferenced formal parameter */ -#pragma warning(disable: 4101) /* unreferenced local variable */ -#pragma warning(disable: 4102) /* unreferenced label */ -#pragma warning(disable: 4113) /* prototype difference */ -#pragma warning(disable: 4127) /* conditional expression is constant */ -#pragma warning(disable: 4132) /* const object should be initialized */ -#pragma warning(disable: 4133) /* incompatible types */ -#pragma warning(disable: 4189) /* initialized but not referenced */ -#pragma warning(disable: 4244) /* conversion from ... possible loss ... */ -#pragma warning(disable: 4245) /* signed/unsigned char */ -#pragma warning(disable: 4310) /* cast truncates constant value */ -#pragma warning(disable: 4505) /* function has been removed */ -#pragma warning(disable: 4510) /* default constructor could not ... */ -#pragma warning(disable: 4610) /* struct ... can never be instantiated */ -#pragma warning(disable: 4701) /* used without having been initialized */ -#pragma warning(disable: 4702) /* unreachable code */ -#pragma warning(disable: 4706) /* assignment within conditional */ -#pragma warning(disable: 4761) /* integral size mismatch */ - -#endif /* _MSC_VER */ - -#ifdef __MWERKS__ -/* No good way of using the CodeWarrior #pragma unused(varname) with Perl - * source code (e.g. PERL_UNUSED_DECL doesn't work with the pragma syntax). - * Therefore we brutally turn off these particular warnings since there - * is a lot of this in Perl code (pTHX, for example). TOther compilers - * will have to detect these naughty bits. */ -#pragma warn_unusedarg off -#pragma warn_unusedvar off -#pragma warn_emptydecl off -#endif diff --git a/symbian/uid.pl b/symbian/uid.pl deleted file mode 100644 index 6eae8a9bcb..0000000000 --- a/symbian/uid.pl +++ /dev/null @@ -1 +0,0 @@ -0x102015F3 diff --git a/symbian/version.pl b/symbian/version.pl deleted file mode 100644 index f4208f873f..0000000000 --- a/symbian/version.pl +++ /dev/null @@ -1,22 +0,0 @@ -use strict; - -my %VERSION; - -if (open(PATCHLEVEL_H, "<", "patchlevel.h")) { - while (<PATCHLEVEL_H>) { - if (/#define\s+PERL_(REVISION|VERSION|SUBVERSION)\s+(\d+)/) { - $VERSION{$1} = $2; - } - } - close PATCHLEVEL_H; -} else { - die "$0: patchlevel.h: $!\n"; -} - -die "$0: Perl release looks funny.\n" - unless (defined $VERSION{REVISION} && $VERSION{REVISION} == 5 && - defined $VERSION{VERSION} && $VERSION{VERSION} >= 8 && - defined $VERSION{SUBVERSION}); - - -\%VERSION; diff --git a/symbian/xsbuild.pl b/symbian/xsbuild.pl deleted file mode 100644 index 5ccd7c379e..0000000000 --- a/symbian/xsbuild.pl +++ /dev/null @@ -1,976 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -use Getopt::Long; -use File::Basename; -use Cwd; - -unshift @INC, dirname $0 || '.'; -do "sanity.pl" or die $@; - -my $CoreBuild = -d "ext" && -f "perl.h" && -d "symbian" && -f "perl.c"; - -my $SymbianVersion; - -if (exists $ENV{EPOCROOT}) { - if ($ENV{EPOCROOT} =~ m!\\Symbian\\UIQ_21\\$!i) { - $SymbianVersion = '7.0s'; # TODO: other UIQ versions - } elsif ($ENV{EPOCROOT} =~ m!\\Symbian\\(.+?)\\!i) { - $SymbianVersion = $1; - } -} - -$SymbianVersion = $ENV{XSBUILD_SYMBIAN_VERSION} - if exists $ENV{XSBUILD_SYMBIAN_VERSION}; - -my $PerlVersion = $ENV{XSBUILD_PERL_VERSION}; -my $CSuffix = '.c'; -my $CPlusPlus; -my $Config; -my $Build; -my $Clean; -my $DistClean; -my $Sis; - -sub usage { - die <<__EOF__; -$0: Usage: $0 [--symbian=version] [--perl=version] - [--extversion=x.y] - [--csuffix=csuffix] [--cplusplus|--cpp] - [--win=win] [--arm=arm] - [--config|--build|--clean|--distclean|--sis] ext -__EOF__ -} - -my $CWD; -my $SDK; -my $VERSION; -my $R_V_SV; -my $PERLSDK; -my $WIN = 'wins'; -my $ARM = 'thumb'; -my $BUILDROOT = getcwd(); - -if ( !defined $PerlVersion && $0 =~ m:\\symbian\\perl\\(.+)\\bin\\xsbuild.pl:i ) -{ - $PerlVersion = $1; -} - -if ( !defined $SymbianVersion) { - ($SymbianVersion) = ($ENV{PATH} =~ m!\\Symbian\\(.+?)\\!i); -} - -my ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION); - -if ($CoreBuild) { - do "sanity.pl" or die $@; - my %VERSION = %{ do "version.pl" or die $@ }; - ($SYMBIAN_ROOT, $SYMBIAN_VERSION, $SDK_NAME, $SDK_VARIANT, $SDK_VERSION) = - @{ do "sdk.pl" or die $@ }; - $VERSION = "$VERSION{REVISION}$VERSION{VERSION}$VERSION{SUBVERSION}"; - $R_V_SV = "$VERSION{REVISION}.$VERSION{VERSION}.$VERSION{SUBVERSION}"; - $BUILDROOT = do "cwd.pl" or die $@; - $PerlVersion = $R_V_SV; -} - -my %CONF; - -usage() - unless GetOptions( - 'symbian=s' => \$SymbianVersion, - 'perl=s' => \$PerlVersion, - 'extversion=s' => \$CONF{EXTVERSION}, - 'csuffix=s' => \$CSuffix, - 'cplusplus|cpp' => \$CPlusPlus, - 'win=s' => \$WIN, - 'arm=s' => \$ARM, - 'config' => \$Config, - 'build' => \$Build, - 'clean' => \$Clean, - 'distclean' => \$DistClean, - 'sis' => \$Sis - ); - -usage() unless @ARGV; - -$CSuffix = '.cpp' if $CPlusPlus; -$Build = !( $Config || $Clean || $DistClean ) || $Sis unless defined $Build; - -die "$0: Symbian version undefined\n" unless defined $SymbianVersion; - -$SymbianVersion =~ s:/:\\:g; - -#die "$0: Symbian version '$SymbianVersion' not found\n" -# unless -d "\\Symbian\\$SymbianVersion"; - -die "$0: Perl version undefined\n" unless defined $PerlVersion; - -$PERLSDK = "$SYMBIAN_ROOT\\Perl\\$PerlVersion"; - -die "$0: Perl version '$PerlVersion' not found\n" - if !$CoreBuild && !-d $PERLSDK; - -print "Configuring with Symbian $SymbianVersion and Perl $PerlVersion...\n"; - -$R_V_SV = $PerlVersion; - -$VERSION = $PerlVersion unless defined $VERSION; - -$VERSION =~ tr/.//d if defined $VERSION; - -$ENV{SDK} = $SYMBIAN_ROOT; # For the Errno extension -$ENV{CROSS} = 1; # For the Encode extension (unbuilt now) - -my $UARM = 'urel'; -my $UREL = "$SYMBIAN_ROOT\\epoc32\\release\\-ARM-\\$UARM"; -my $SRCDBG; -if (exists $ENV{UREL}) { - $UREL = $ENV{UREL}; # from sdk.pl - $UREL =~ s/-ARM-/$ARM/; - $UARM = $ENV{UARM}; # from sdk.pl - $SRCDBG = $UARM eq 'udeb' ? "SRCDBG" : ""; -} - -my %EXTCFG; - -sub write_bld_inf { - my ($base) = @_; - print "\tbld.inf\n"; - open( BLD_INF, '>', 'bld.inf' ) or die "$0: bld.inf: $!\n"; - print BLD_INF <<__EOF__; -PRJ_MMPFILES -$base.mmp -PRJ_PLATFORMS -$WIN $ARM -__EOF__ - close(BLD_INF); -} - -sub system_echo { - my $cmd = shift; - print "xsbuild: ", $cmd, "\n"; - return system($cmd); -} - -sub run_PL { - my ( $PL, $dir, $file ) = @_; - if ( defined $file ) { - print "\t(Running $dir\\$PL to create $file)\n"; - unlink($file); - } - else { - print "\t(Running $dir\\$PL)\n"; - } - my $cmd; - $ENV{PERL_CORE} = 1 if $CoreBuild; - system_echo("perl -I$BUILDROOT\\lib -I$BUILDROOT\\xlib\\symbian -I$BUILDROOT\\t\\lib $PL") == 0 - or warn "$0: $PL failed.\n"; - if ( defined $file ) { -s $file or die "$0: No $file created.\n" } -} - -sub read_old_multi { - my ( $conf, $k ) = @_; - push @{ $conf->{$k} }, split( ' ', $1 ) if /^$k\s(.+)$/; -} - -sub uniquefy_filenames { - my $b = []; - my %c = (); - for my $i (@{$_[0]}) { - $i =~ s!/!\\!g; - $i = lc $i if $i =~ m!\\!; - $i =~ s!^c:!!; - push @$b, $i unless $c{$i}++; - } - return $b; -} - -sub read_mmp { - my ( $conf, $mmp ) = @_; - if ( -r $mmp && open( MMP, '<', $mmp ) ) { - print "\tReading $mmp...\n"; - while (<MMP>) { - chomp; - $conf->{TARGET} = $1 if /^TARGET\s+(.+)$/; - $conf->{TARGETPATH} = $1 if /^TARGETPATH\s+(.+)$/; - $conf->{EXTVERSION} = $1 if /^EXTVERSION\s+(.+)$/; - read_old_multi( $conf, "SOURCE" ); - read_old_multi( $conf, "SOURCEPATH" ); - read_old_multi( $conf, "USERINCLUDE" ); - read_old_multi( $conf, "SYSTEMINCLUDE" ); - read_old_multi( $conf, "LIBRARY" ); - read_old_multi( $conf, "MACRO" ); - } - close(MMP); - } -} - -sub write_mmp { - my ( $ext, $base, $userinclude, @src ) = @_; - - my $extdash = $ext; $extdash =~ s!\\!-!g; - - print "\t$base.mmp\n"; - $CONF{TARGET} = "perl$VERSION-$extdash.dll"; - $CONF{TARGETPATH} = "\\System\\Libs\\Perl\\$R_V_SV"; - $CONF{SOURCE} = [@src]; - $CONF{SOURCEPATH} = [ $CWD, $BUILDROOT ]; - $CONF{USERINCLUDE} = [ $CWD, $BUILDROOT ]; - $CONF{SYSTEMINCLUDE} = ["$PERLSDK\\include"] unless $CoreBuild; - $CONF{SYSTEMINCLUDE} = [ $BUILDROOT, "$BUILDROOT\\symbian" ] if $CoreBuild; - $CONF{LIBRARY} = []; - $CONF{MACRO} = []; - read_mmp( \%CONF, "_init.mmp" ); - read_mmp( \%CONF, "$base.mmp" ); - - if ($base eq 'Zlib') { - push @{$CONF{USERINCLUDE}}, "$CWD\\zlib-src"; - } - - for my $ui ( @{$userinclude} ) { - $ui =~ s!/!\\!g; - if ( $ui =~ m!^(?:[CD]:)?\\! ) { - push @{ $CONF{USERINCLUDE} }, $ui; - } - else { - push @{ $CONF{USERINCLUDE} }, "$BUILDROOT\\$ui"; - } - } - push @{ $CONF{SYSTEMINCLUDE} }, "\\epoc32\\include"; - push @{ $CONF{SYSTEMINCLUDE} }, "\\epoc32\\include\\libc"; - push @{ $CONF{LIBRARY} }, "euser.lib"; - push @{ $CONF{LIBRARY} }, "estlib.lib"; - push @{ $CONF{LIBRARY} }, "perl$VERSION.lib"; - push @{ $CONF{MACRO} }, "SYMBIAN" unless $CoreBuild; - push @{ $CONF{MACRO} }, "PERL_EXT" if $CoreBuild; - push @{ $CONF{MACRO} }, "MULTIPLICITY"; - push @{ $CONF{MACRO} }, "PERL_IMPLICIT_CONTEXT"; - push @{ $CONF{MACRO} }, "PERL_GLOBAL_STRUCT"; - push @{ $CONF{MACRO} }, "PERL_GLOBAL_STRUCT_PRIVATE"; - - if ($SDK_VARIANT eq 'S60') { - push @{ $CONF{MACRO} }, '__SERIES60__' - unless grep { $_ eq '__SERIES60__' } @{ $CONF{MACRO} }; - } - if ($SDK_VARIANT eq 'S80') { - push @{ $CONF{MACRO} }, '__SERIES80__' - unless grep { $_ eq '__SERIES80__' } @{ $CONF{MACRO} }; - } - if ($SDK_VARIANT eq 'S90') { - push @{ $CONF{MACRO} }, '__SERIES90__' - unless grep { $_ eq '__SERIES90__' } @{ $CONF{MACRO} }; - } - if ($SDK_VARIANT eq 'UIQ') { - push @{ $CONF{MACRO} }, '__UIQ__' - unless grep { $_ eq '__UIQ__' } @{ $CONF{MACRO} }; - } - - for my $u (qw(SOURCE SOURCEPATH SYSTEMINCLUDE USERINCLUDE LIBRARY MACRO)) { - $CONF{$u} = uniquefy_filenames( $CONF{$u} ); - } - open( BASE_MMP, '>', "$base.mmp" ) or die "$0: $base.mmp: $!\n"; - - print BASE_MMP <<__EOF__; -TARGET $CONF{TARGET} -TARGETTYPE dll -TARGETPATH $CONF{TARGETPATH} -SOURCE @{$CONF{SOURCE}} -$SRCDBG -__EOF__ - for my $u (qw(SOURCEPATH SYSTEMINCLUDE USERINCLUDE)) { - for my $v ( @{ $CONF{$u} } ) { - print BASE_MMP "$u\t$v\n"; - } - } - # OPTION does not work in MMPs for pre-2.0 SDKs? - print BASE_MMP <<__EOF__; -LIBRARY @{$CONF{LIBRARY}} -MACRO @{$CONF{MACRO}} -// OPTION MSVC /P // Uncomment for creating .i (cpp'ed .cpp) -// OPTION GCC -E // Uncomment for creating .i (cpp'ed .cpp) -__EOF__ -# if (-f "$base.rss") { -# print BASE_MMP "RESOURCE\t$base.rss\n"; -# } - close(BASE_MMP); - -} - -sub write_makefile { - my ( $base, $build ) = @_; - - print "\tMakefile\n"; - - my $windef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$base\\$WIN\\$base.def"; - my $windef2 = "..\\BWINS\\${base}u.def"; - my $armdef1 = "$SYMBIAN_ROOT\\Epoc32\\Build$CWD\\$base\\$ARM\\$base.def"; - my $armdef2 = "..\\BMARM\\${base}u.def"; - - my $wrap = $SYMBIAN_ROOT && defined $SDK_VARIANT eq 'S60' && $SDK_VERSION eq '1.2' && $SYMBIAN_ROOT !~ /_CW$/; - my $ABLD = $wrap ? 'perl b.pl' : 'abld'; - - open( MAKEFILE, '>', 'Makefile' ) or die "$0: Makefile: $!\n"; - print MAKEFILE <<__EOF__; -WIN = $WIN -ARM = $ARM -ABLD = $ABLD - -all: build freeze - -sis: build_arm freeze_arm - -build: abld.bat build_win build_arm - -abld.bat: - bldmake bldfiles - -build_win: abld.bat - bldmake bldfiles - \$(ABLD) build \$(WIN) udeb - -build_arm: abld.bat - bldmake bldfiles - \$(ABLD) build \$(ARM) $UARM - -win: build_win freeze_win - -arm: build_arm freeze_arm - -freeze: freeze_win freeze_arm - -freeze_win: - bldmake bldfiles - \$(ABLD) freeze \$(WIN) $base - -freeze_arm: - bldmake bldfiles - \$(ABLD) freeze \$(ARM) $base - -defrost: defrost_win defrost_arm - -defrost_win: - -del /f $windef1 - -del /f $windef2 - -defrost_arm: - -del /f $armdef1 - -del /f $armdef2 - -clean: clean_win clean_arm - -clean_win: - \$(ABLD) clean \$(WIN) - -clean_arm: - \$(ABLD) clean \$(ARM) - -realclean: clean realclean_win realclean_arm - -del /f _init.c b.pl - -del /f $base.c $base.mmp - -realclean_win: - \$(ABLD) reallyclean \$(WIN) - -realclean_arm: - \$(ABLD) reallyclean \$(ARM) - -distclean: defrost realclean - -rmdir ..\\BWINS ..\\BMARM - -del /f const-c.inc const-xs.inc - -del /f Makefile abld.bat bld.inf -__EOF__ - close(MAKEFILE); - if ($wrap) { - if(open(B, '>', 'b.pl')) { - print B <<'__EOF__'; -# abld.pl wrapper. - -# nmake doesn't like MFLAGS and MAKEFLAGS being set to -w and w. -delete $ENV{MFLAGS}; -delete $ENV{MAKEFLAGS}; - -print "abld @ARGV\n"; -system_echo("abld @ARGV"); -__EOF__ - close(B); - } else { - warn "$0: failed to create b.pl: $!\n"; - } - } -} - -sub update_dir { - print "[chdir from ", getcwd(), " to "; - chdir(shift) or return; - update_cwd(); - print getcwd(), "]\n"; -} - -sub patch_config { - # Problem: the Config.pm we have in $BUILDROOT\\lib carries the - # version number of the Perl we are building, while the Perl - # we are running might have some other version. Solution: - # temporarily replace the Config.pm with a patched version. - # - # Reverse patch will be done with this special script - my $config_restore_script = "$BUILDROOT\\lib\\symbian_config_restore.pl"; - # make sure the patch script was not left from previous run - unlink $config_restore_script; - return unless $CoreBuild; - my $V = sprintf "%vd", $^V; - # create reverse patch script - if (open(RSCRIPT, '>', $config_restore_script)) { - print RSCRIPT <<__EOF__; -#!perl -pi.bak -s:\\Q$V:$R_V_SV: -__EOF__ - close RSCRIPT; - } else { - die "$0: Cannot create $config_restore_script: $!"; - } - # patch the config - unlink("$BUILDROOT\\lib\\Config.pm.bak"); - print "(patching $BUILDROOT\\lib\\Config.pm)\n"; - system_echo("perl -pi.bak -e \"s:\\Q$R_V_SV:$V:\" $BUILDROOT\\lib\\Config.pm"); -} - -sub restore_config { - my $config_restore_script = "$BUILDROOT\\lib\\symbian_config_restore.pl"; - # this function should always return True - # because it's commonly used in error handling blocks as - # &restore_config and die - return 1 unless -f $config_restore_script; - unlink("$BUILDROOT\\lib\\Config.pm.bak"); - print "(restoring $BUILDROOT\\lib\\Config.pm)\n"; - system_echo("perl -pi.bak $config_restore_script $BUILDROOT\\lib\\Config.pm"); - unlink "$BUILDROOT\\lib\\Config.pm.bak", $config_restore_script; - # above command should always return 2 already, - # but i want to be absolutely sure that return value is True - return 1; -} - -sub xsconfig { - my ( $ext, $dir ) = @_; - print "Configuring for $ext, directory '$dir'...\n"; - my $extu = $CoreBuild ? "$BUILDROOT\\lib\\ExtUtils" : "$PERLSDK\\lib\\ExtUtils"; - update_dir($dir) or die "$0: chdir '$dir': $!\n"; - &patch_config; - - my $build = dirname($ext); - my $base = basename($ext); - my $basexs = "$base.xs"; - my $basepm = "$base.pm"; - my $basec = "$base$CSuffix"; - my $extdir = "."; - if ( $dir =~ m:^ext\\(.+): ) { - $extdir = $1; - } - elsif ( $dir ne "." ) { - $extdir = $dir; - } - my $extdirdir = dirname($extdir); - my $targetroot = "\\System\\Libs\\Perl\\$R_V_SV"; - write_bld_inf($base) if -f $basexs; - - my %src; - $src{$basec}++; - - $extdirdir = $extdirdir eq "." ? "" : "$extdirdir\\"; - - my $extdash = $ext; $extdash =~ s!\\!-!g; - - my %lst; - $lst{"$UREL\\perl$VERSION-$extdash.dll"} = - "$targetroot\\$ARM-symbian\\$base.dll" - if -f $basexs; - $lst{"$dir\\$base.pm"} = "$targetroot\\$extdirdir$base.pm" - if -f $basepm && $base ne 'XSLoader'; - - my %incdir; - my $ran_PL; - if ( -d 'lib' ) { - use File::Find; - 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; - $lst{"$dir\\$found"} = "$targetroot\\$short"; - } - } - if ( my @pm = glob("*.pm */*.pm") ) { - for my $pm (@pm) { - next if $pm =~ m:^t/:; - $pm =~ s:/:\\:g; - $lst{"$dir\\$pm"} = "$targetroot\\$extdirdir$pm"; - } - } - if ( my @c = glob("*.c *.cpp */*.c */*.cpp") ) { - map { s:^zlib-src/:: } @c if $ext eq 'ext\Compress\Raw\Zlib'; - for my $c (@c) { - $c =~ s:/:\\:g; - $src{$c}++; - } - } - if ( my @h = glob("*.h */*.h") ) { - map { s:^zlib-src/:: } @h if $ext eq 'ext\Compress\Raw\Zlib'; - for my $h (@h) { - $h =~ s:/:\\:g; - $h = dirname($h); - $incdir{"$dir\\$h"}++ unless $h eq "."; - } - } - if ( exists $EXTCFG{$ext} ) { - for my $cfg ( @{ $EXTCFG{$ext} } ) { - if ( $cfg =~ /^([-+])?(.+\.(c|cpp|h))$/ ) { - my $o = defined $1 ? $1 : '+'; - my $f = $2; - $f =~ s:/:\\:g; - for my $f ( glob($f) ) { - if ( $o eq '+' ) { - warn "$0: no source file $dir\\$f\n" unless -f $f; - $src{$f}++ unless $cfg =~ /\.h$/; - if ( $f =~ m:^(.+)\\[^\\]+$: ) { - $incdir{$1}++; - } - } - elsif ( $o eq '-' ) { - delete $src{$f}; - } - } - } - if ( $cfg =~ /^([-+])?(.+\.(pm|pl|inc))$/ ) { - my $o = defined $1 ? $1 : '+'; - my $f = $2; - $f =~ s:/:\\:g; - for my $f ( glob($f) ) { - if ( $o eq '+' ) { - warn "$0: no Perl file $dir\\$f\n" unless -f $f; - $lst{"$dir\\$f"} = "$targetroot\\$extdir\\$f"; - } - elsif ( $o eq '-' ) { - delete $lst{"$dir\\$f"}; - } - } - } - if ( $cfg eq 'CONST' && !$ran_PL++ ) { - run_PL( "Makefile.PL", $dir, "const-xs.inc" ); - } - } - } - unless ( $ran_PL++ ) { - run_PL( "Makefile.PL", $dir ) if -f "Makefile.PL"; - } - if ( $dir eq "ext\\Errno" ) { - run_PL( "Errno_pm.PL", $dir, "Errno.pm" ); - $lst{"$dir\\Errno.pm"} = "$targetroot\\Errno.pm"; - } - elsif ( $dir eq "ext\\Devel\\PPPort" ) { - run_PL( "ppport_h.PL", $dir, "ppport.h" ); - } - elsif ( $dir eq "ext\\DynaLoader" ) { - run_PL( "XSLoader_pm.PL", $dir, "XSLoader.pm" ); - $lst{"ext\\DynaLoader\\XSLoader.pm"} = "$targetroot\\XSLoader.pm"; - } - elsif ( $dir eq "ext\\Encode" ) { - system_echo("perl bin\\enc2xs -Q -O -o def_t.c -f def_t.fnm") == 0 - or &restore_config and die "$0: running enc2xs failed: $!\n"; - } - - my @lst = sort keys %lst; - - read_mmp( \%CONF, "_init.mmp" ); - read_mmp( \%CONF, "$base.mmp" ); - - if ( -f $basexs ) { - my %MM; # MakeMaker results - my @MM = qw(VERSION XS_VERSION); - if ( -f "Makefile" ) { - print "\tReading MakeMaker Makefile...\n"; - if ( open( MAKEFILE, '<', 'Makefile' ) ) { - while (<MAKEFILE>) { - for my $m (@MM) { - if (m!^$m = (.+)!) { - $MM{$m} = $1; - print "\t$m = $1\n"; - } - } - } - close(MAKEFILE); - } - else { - warn "$0: Makefile: $!"; - } - print "\tDeleting MakeMaker Makefile.\n"; - unlink("Makefile"); - } - - unlink($basec); - print "\t$basec\n"; - if ( defined $CONF{EXTVERSION} ) { - my $EXTVERSION = $CONF{EXTVERSION}; - print "\tUsing $EXTVERSION for version...\n"; - $MM{VERSION} = $MM{XS_VERSION} = $EXTVERSION; - } - (&restore_config and die "$0: VERSION or XS_VERSION undefined\n") - unless defined $MM{VERSION} && defined $MM{XS_VERSION}; - if ( open( BASE_C, '>', $basec ) ) { - print BASE_C <<__EOF__; -#ifndef VERSION -#define VERSION "$MM{VERSION}" -#endif -#ifndef XS_VERSION -#define XS_VERSION "$MM{XS_VERSION}" -#endif -__EOF__ - close(BASE_C); - } - else { - warn "$0: $basec: $!"; - } - unless ( - system_echo( -"perl -I$BUILDROOT\\lib -I$PERLSDK\\lib $extu\\xsubpp -csuffix .cpp -typemap $extu\\typemap -noprototypes $basexs >> $basec" - ) == 0 - && -s $basec - ) - { - &restore_config; - die "$0: perl xsubpp failed: $!\n"; - } - - print "\t_init.c\n"; - open( _INIT_C, '>', '_init.c' ) - or &restore_config and die "$!: _init.c: $!\n"; - print _INIT_C <<__EOF__; - #include "EXTERN.h" - #include "perl.h" - EXPORT_C void _init(void *handle) { - } -__EOF__ - close(_INIT_C); - - my @src = ( "_init.c", sort keys %src ); - - if ( $base eq "Encode" ) { # Currently unused. - for my $submf ( glob("*/Makefile") ) { - my $d = dirname($submf); - print "Configuring Encode::$d...\n"; - if ( open( SUBMF, '<', $submf ) ) { - if ( update_dir($d) ) { - my @subsrc; - while (<SUBMF>) { - next if 1 .. /postamble/; - if (m!^(\w+_t)\.c : !) { - system_echo( - "perl ..\\bin\\enc2xs -Q -o $1.c -f $1.fnm") - == 0 - or warn "$0: enc2xs: $!\n"; - push @subsrc, "$1.c"; - } - } - close(SUBMF); - unlink($submf); - my $subbase = $d; - $subbase =~ s!/!::!g; - write_mmp( $ext, $subbase, ["..\\Encode"], "$subbase.c", - @subsrc ); - write_makefile( $subbase, $build ); - write_bld_inf($subbase); - - unless ( - system_echo( -"perl -I$BUILDROOT\\lib ..\\$extu\\xsubpp -csuffix .cpp -typemap ..\\$extu\\typemap -noprototypes $subbase.xs > $subbase.c" - ) == 0 - && -s "$subbase.c" - ) - { - &restore_config; - die "$0: perl xsubpp failed: $!\n"; - } - update_dir(".."); - } - else { - warn "$0: chdir $d: $!\n"; - } - } - else { - warn "$0: $submf: $!"; - } - } - print "Configuring Encode...\n"; - } - - write_mmp( $ext, $base, [ keys %incdir ], @src ); - write_makefile( $base, $build ); - } - &restore_config; - - my $lstname = $ext; - $lstname =~ s:^ext\\::; - $lstname =~ s:\\:-:g; - print "\t$lstname.lst\n"; - my $lstout = - $CoreBuild ? "$BUILDROOT/symbian/$lstname.lst" : "$BUILDROOT/$lstname.lst"; - if ( open( my $lst, '>', $lstout ) ) { - for my $f (@lst) { print $lst qq["$f"-"!:$lst{$f}"\n] } - close($lst); - } - else { - die "$0: $lstout: $!\n"; - } - update_dir($BUILDROOT); -} - -sub update_cwd { - $CWD = getcwd(); - $CWD =~ s!^[A-Z]:!!i; - $CWD =~ s!/!\\!g; -} - -if (grep /^(Compress::Raw::Zlib|Cwd|Data::Dumper|Digest::SHA|Sys::Syslog|Time::HiRes)$/, @ARGV) { - &patch_config; - system_echo("perl -I$BUILDROOT\\lib -I$PERLSDK\\lib $BUILDROOT\\mkppport"); - &restore_config; -} - -for my $ext (@ARGV) { - - $ext =~ s!::!\\!g; - my $extdash = $ext =~ /ext\\/ ? $ext : "ext\\$ext"; $extdash =~ s!\\!-!g; - $ext =~ s!/!\\!g; - - my $cfg; - - $cfg = $2 if $ext =~ s/(.+?),(.+)/$1/; - - my $dir; - - unless ( -e $ext ) { - if ( $ext =~ /\.xs$/ && !-f $ext ) { - if ( -f "ext\\$ext" ) { - $ext = "ext\\$ext"; - $dir = dirname($ext); - } - } - elsif ( !-d $ext ) { - if ( -d "ext\\$ext" ) { - $ext = "ext\\$ext"; - $dir = $ext; - } - } - $dir = "." unless defined $dir; - } - else { - if ( $ext =~ /\.xs$/ && -f $ext ) { - $ext = dirname($ext); - $dir = $ext; - } - elsif ( -d $ext ) { - $dir = $ext; - } - } - - if ( $ext eq "XSLoader" ) { - $ext = "ext\\XSLoader"; - } - if ( $ext eq "ext\\XSLoader" ) { - $dir = "ext\\DynaLoader"; - } - - $EXTCFG{$ext} = [ split( /,/, $cfg ) ] if defined $cfg; - - die "$0: no lib\\Config.pm\n" - if $CoreBuild && $Build && !-f "lib\\Config.pm"; - - if ($CoreBuild) { - open( my $cfg, '<', 'symbian/install.cfg' ) - or die "$0: symbian/install.cfg: $!\n"; - my $extdir = $dir; - $extdir =~ s:^ext\\::; - while (<$cfg>) { - next unless /^ext\s+(.+)/; - chomp; - my $ext = $1; - my @ext = split( ' ', $ext ); - $EXTCFG{"ext\\$ext[0]"} = [@ext]; - } - close($cfg); - } - - if ( $Config || $Build ) { - xsconfig( $ext, $dir ) or die "$0: xsconfig '$ext' failed\n"; - next if $Config; - } - - if ($dir eq ".") { - warn "$0: No directory for $ext, skipping...\n"; - next; - } - - my $chdir = $ext eq "ext\\XSLoader" ? "ext\\DynaLoader" : $dir; - die "$0: no directory '$chdir'\n" unless -d $chdir; - update_dir($chdir) or die "$0: chdir '$chdir' failed: $!\n"; - - my %CONF; - - my @ext = split( /\\/, $ext ); - my $base = $ext[-1]; - - if ( $Clean || $DistClean ) { - print "Cleaning $ext...\n"; - unlink("bld.inf"); - unlink("$base.mmp"); - unlink("_init.c"); - unlink("const-c.inc"); - unlink("const-xs.inc"); - rmdir("..\\bmarm"); - } - - if ( $Build && $ext ne "ext\\XSLoader" && $ext ne "ext\\Errno" ) { - - # We compile the extension three (3) times. - # (1) Only the _init.c to get _init() as the ordinal 1 function in the DLL. - # (2) With the rest and the _init.c to get ordinals for the rest. - # (3) With an updated _init.c that carries the symbols from step (2). - - system_echo("make clean"); - system_echo("make defrost") == 0 or warn "$0: make defrost failed\n"; - - my @TARGET; - - push @TARGET, 'sis' if $Sis; - - # Compile #1. - # Hide all but the _init.c. - print "\n*** $ext - Compile 1 of 3.\n\n"; - print "(patching $base.mmp)\n"; - system( -"perl -pi.bak -e \"s:^SOURCE\\s+_init.c:SOURCE\\t_init.c // :\" $base.mmp" - ); - system_echo("bldmake bldfiles"); - system_echo("make @TARGET") == 0 or die "$0: make #1 failed\n"; - - # Compile #2. - # Reveal the rest again. - print "\n*** $ext - Compile 2 of 3.\n\n"; - print "(patching $base.mmp)\n"; - system( -"perl -pi.bak -e \"s:^SOURCE\\t_init.c // :SOURCE\\t_init.c :\" $base.mmp" - ); - system_echo("make @TARGET") == 0 or die "$0: make #2 failed\n"; - unlink("$base.mmp.bak"); - - open( _INIT_C, '>', '_init.c' ) or die "$0: _init.c: $!\n"; - print _INIT_C <<'__EOF__'; -#include "EXTERN.h" -#include "perl.h" - -/* This is a different but matching definition from in dl_symbian.xs. */ -typedef struct { - void* handle; - int error; - HV* symbols; -} PerlSymbianLibHandle; - -EXPORT_C void _init(void* handle) { -__EOF__ - - my %symbol; - my $def; - my $basef; - for my $f ("$SYMBIAN_ROOT\\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"; - $basef = $f; - last; - } else { - print "no)\n"; - } - } - unless (defined $basef) { - die "$0: failed to find .def for $base\n"; - } - while (<$def>) { - next while 1 .. /^EXPORTS/; - if (/^\s*(\w+) \@ (\d+) /) { - $symbol{$1} = $2; - } - } - close($def); - - my @symbol = sort keys %symbol; - if (@symbol) { - print _INIT_C <<'__EOF__'; - dTHX; - PerlSymbianLibHandle* h = (PerlSymbianLibHandle*)handle; - if (!h->symbols) - h->symbols = newHV(); - if (h->symbols) { -__EOF__ - for my $sym (@symbol) { - my $len = length($sym); - print _INIT_C <<__EOF__; - hv_store(h->symbols, "$sym", $len, newSViv($symbol{$sym}), 0); -__EOF__ - } - } - else { - die "$0: $basef: no exports found\n"; - } - - print _INIT_C <<'__EOF__'; - } -} -__EOF__ - close(_INIT_C); - - # Compile #3. This is for real. - print "\n*** $ext - Compile 3 of 3.\n\n"; - system_echo("make @TARGET") == 0 or die "$0: make #3 failed\n"; - - } - elsif ( $Clean || $DistClean ) { - if ( $ext eq "ext\\Errno" ) { - unlink( "Errno.pm", "Makefile" ); - } - else { - if ( -f "Makefile" ) { - if ($Clean) { - system_echo("make clean") == 0 or die "$0: make clean failed\n"; - } - elsif ($DistClean) { - system_echo("make distclean") == 0 - or die "$0: make distclean failed\n"; - } - } - if ( $ext eq "ext\\Compress\\Raw\\Zlib" ) { - my @bak; - find( sub { push @bak, $File::Find::name if /\.bak$/ }, "." ); - unlink(@bak) if @bak; - my @src; - find( sub { push @src, $_ if -f $_ }, "zlib-src" ); - unlink(@src) if @src; - unlink("constants.xs"); - } - if ( $ext eq "ext\\Devel\\PPPort" ) { - unlink("ppport.h"); - } - } - my @D = glob("../BMARM/*.def ../BWINS/*.def"); - unlink(@D) if @D; - my @B = glob("ext/BWINS ext/BMARM ext/*/BWINS ext/*/BMARM Makefile"); - rmdir(@B) if @B; - } - - update_dir($BUILDROOT); - -} # for my $ext - -exit(0); - diff --git a/t/op/local.t b/t/op/local.t index 32142e3d07..00dd31af10 100644 --- a/t/op/local.t +++ b/t/op/local.t @@ -9,7 +9,7 @@ plan tests => 319; my $list_assignment_supported = 1; -#mg.c says list assignment not supported on VMS and SYMBIAN. +#mg.c says list assignment not supported on VMS $list_assignment_supported = 0 if ($^O eq 'VMS'); diff --git a/t/op/magic.t b/t/op/magic.t index e0dfcf93a1..6283df5ac2 100644 --- a/t/op/magic.t +++ b/t/op/magic.t @@ -541,7 +541,7 @@ is "@+", "10 1 6 10"; } # Test for bug [perl #36434] -# Can not do this test on VMS, and SYMBIAN according to comments +# Can not do this test on VMS according to comments # in mg.c/Perl_magic_clear_all_env() SKIP: { skip('Can\'t make assignment to \%ENV on this system', 3) if $Is_VMS; @@ -2083,7 +2083,7 @@ Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, * For Solaris, setenv() and unsetenv() were introduced in Solaris 9, so * testing for HAS UNSETENV is sufficient. */ -# if defined(__CYGWIN__)|| defined(__SYMBIAN32__) || defined(__riscos__) || (defined(__sun) && defined(HAS_UNSETENV)) || defined(PERL_DARWIN) +# if defined(__CYGWIN__)|| defined(__riscos__) || (defined(__sun) && defined(HAS_UNSETENV)) || defined(PERL_DARWIN) # define MY_HAS_SETENV # endif @@ -4338,7 +4338,7 @@ Perl_my_socketpair (int family, int type, int protocol, int fd[2]) { #ifdef ECONNABORTED errno = ECONNABORTED; /* This would be the standard thing to do. */ #elif defined(ECONNREFUSED) - errno = ECONNREFUSED; /* E.g. Symbian does not have ECONNABORTED. */ + errno = ECONNREFUSED; /* some OSes might not have ECONNABORTED. */ #else errno = ETIMEDOUT; /* Desperation time. */ #endif @@ -28,11 +28,11 @@ (((f)[0] && (f)[1] == ':') /* drive name */ \ || ((f)[0] == '\\' && (f)[1] == '\\') /* UNC path */ \ || ((f)[3] == ':')) /* volume name, currently only sys */ -#elif defined(DOSISH) || defined(__SYMBIAN32__) +#elif defined(DOSISH) # define PERL_FILE_IS_ABSOLUTE(f) \ (*(f) == '/' \ || ((f)[0] && (f)[1] == ':')) /* drive name */ -#else /* NEITHER DOSISH NOR SYMBIANISH */ +#else /* NOT DOSISH */ # define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/') #endif diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 6b5d85d60f..193fdf71ce 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -1739,7 +1739,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.qnx ..\pod\perlqnx.pod copy ..\README.riscos ..\pod\perlriscos.pod copy ..\README.solaris ..\pod\perlsolaris.pod - copy ..\README.symbian ..\pod\perlsymbian.pod copy ..\README.synology ..\pod\perlsynology.pod copy ..\README.tru64 ..\pod\perltru64.pod copy ..\README.tw ..\pod\perltw.pod @@ -1850,9 +1849,8 @@ distclean: realclean perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \ perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \ - perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \ - perltru64.pod perltw.pod perluniprops.pod perlvos.pod \ - perlwin32.pod + perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \ + perltw.pod perluniprops.pod perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \ perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails diff --git a/win32/Makefile b/win32/Makefile index 46299d39ee..42a0bef4fe 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -1259,7 +1259,6 @@ utils: $(PERLEXE) ..\utils\Makefile copy ..\README.qnx ..\pod\perlqnx.pod copy ..\README.riscos ..\pod\perlriscos.pod copy ..\README.solaris ..\pod\perlsolaris.pod - copy ..\README.symbian ..\pod\perlsymbian.pod copy ..\README.synology ..\pod\perlsynology.pod copy ..\README.tru64 ..\pod\perltru64.pod copy ..\README.tw ..\pod\perltw.pod @@ -1371,9 +1370,8 @@ distclean: realclean perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \ perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \ - perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \ - perltru64.pod perltw.pod perluniprops.pod perlvos.pod \ - perlwin32.pod + perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \ + perltw.pod perluniprops.pod perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \ perldoc perlivp libnetcfg enc2xs encguess piconv cpan streamzip *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails diff --git a/win32/makefile.mk b/win32/makefile.mk index 66888ecb5b..abdc674e34 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1658,7 +1658,6 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile copy ..\README.qnx ..\pod\perlqnx.pod copy ..\README.riscos ..\pod\perlriscos.pod copy ..\README.solaris ..\pod\perlsolaris.pod - copy ..\README.symbian ..\pod\perlsymbian.pod copy ..\README.synology ..\pod\perlsynology.pod copy ..\README.tru64 ..\pod\perltru64.pod copy ..\README.tw ..\pod\perltw.pod @@ -1769,9 +1768,8 @@ distclean: realclean perllinux.pod perlmacos.pod perlmacosx.pod perlmodlib.pod \ perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \ perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \ - perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \ - perltru64.pod perltw.pod perluniprops.pod perlvos.pod \ - perlwin32.pod + perlsolaris.pod perlsynology.pod perltoc.pod perltru64.pod \ + perltw.pod perluniprops.pod perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm h2xs \ perldoc perlivp libnetcfg enc2xs encguess piconv cpan streamzip *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails |