diff options
Diffstat (limited to 'gnu/usr.bin/perl/README.ce')
-rw-r--r-- | gnu/usr.bin/perl/README.ce | 512 |
1 files changed, 59 insertions, 453 deletions
diff --git a/gnu/usr.bin/perl/README.ce b/gnu/usr.bin/perl/README.ce index 3559f1ff3ba..d02acf8e846 100644 --- a/gnu/usr.bin/perl/README.ce +++ b/gnu/usr.bin/perl/README.ce @@ -1,453 +1,59 @@ -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 -specifically designed to be readable as is. - -=head1 NAME - -perlce - Perl for WinCE - -=head1 Building Perl for WinCE - -=head2 WARNING - -B<< Much of this document has become very out of date and needs updating, -rewriting or deleting. The build process was overhauled during the 5.19 -development track and the current instructions as of that time are given -in L</CURRENT BUILD INSTRUCTIONS>; the previous build instructions, which -are largely superseded but may still contain some useful information, are -left in L</OLD BUILD INSTRUCTIONS> but really need removing after anything -of use has been extracted from them. >> - -=head2 DESCRIPTION - -This file gives the instructions for building Perl5.8 and above for -WinCE. Please read and understand the terms under which this -software is distributed. - -=head2 General explanations on cross-compiling WinCE - -=over - -=item * - -F<miniperl> is built. This is a single executable (without DLL), intended -to run on Win32, and it will facilitate remaining build process; all binaries -built after it are foreign and should not run locally. - -F<miniperl> is built using F<./win32/Makefile>; this is part of normal -build process invoked as dependency from wince/Makefile.ce - -=item * - -After F<miniperl> is built, F<configpm> is invoked to create right F<Config.pm> -in right place and its corresponding Cross.pm. - -Unlike Win32 build, miniperl will not have F<Config.pm> of host within reach; -it rather will use F<Config.pm> from within cross-compilation directories. - -File F<Cross.pm> is dead simple: for given cross-architecture places in @INC -a path where perl modules are, and right F<Config.pm> in that place. - -That said, C<miniperl -Ilib -MConfig -we 1> should report an error, because -it can not find F<Config.pm>. If it does not give an error -- wrong F<Config.pm> -is substituted, and resulting binaries will be a mess. - -C<miniperl -MCross -MConfig -we 1> should run okay, and it will provide right -F<Config.pm> for further compilations. - -=item * - -During extensions build phase, a script F<./win32/buldext.pl> is invoked, -which in turn steps in F<./ext> subdirectories and performs a build of -each extension in turn. - -All invokes of F<Makefile.PL> are provided with C<-MCross> so to enable cross- -compile. - -=back - -=head2 CURRENT BUILD INSTRUCTIONS - -(These instructions assume the host is 32-bit Windows. If you're on 64-bit -Windows then change "C:\Program Files" to "C:\Program Files (x86)" throughout.) - -1. Install EVC4 from - - http://download.microsoft.com/download/c/3/f/c3f8b58b-9753-4c2e-8b96-2dfe3476a2f7/eVC4.exe - -Use the key mentioned at - - http://download.cnet.com/Microsoft-eMbedded-Visual-C/3000-2212_4-10108490.html?tag=bc - -The installer is ancient and has a few bugs on the paths it uses. You -will have to fix them later. Basically, some things go into "C:/Program -Files/Windows CE Tools", others go into "C:/Windows CE Tools" regardless -of the path you gave to the installer (the default will be "C:/Windows -CE Tools"). Reboots will be required for the installer to proceed. Also -.c and .h associations with Visual Studio might get overridden when -installing EVC4. You have been warned. - -2. Download celib from GitHub (using "Download ZIP") at - - https://github.com/bulk88/celib - -Extract it to a spaceless path but not into the perl build source. -I call this directory "celib-palm-3.0" but in the GitHub -snapshot it will be called "celib-master". Make a copy of the -"wince-arm-pocket-wce300-release" folder and rename the copy to -"wince-arm-pocket-wce400". This is a hack so we can build a CE 4.0 -binary by linking in CE 3.0 ARM asm; the linker doesn't care. Windows -Mobile/WinCE are backwards compatible with machine code like Desktop Windows. - -3. Download console-1.3-src.tar.gz from - - http://sourceforge.net/projects/perlce/files/PerlCE%20support%20files/console/ - -Extract it to a spaceless path but not into the perl build source. -Don't extract it into the same directory as celib. Make a copy of the -"wince-arm-pocket-wce300" folder and rename the copy to -"wince-arm-pocket-wce400". This is a hack so we can build a CE 4.0 -binary by linking in CE 3.0 ARM asm; the linker doesn't care. Windows -Mobile/WinCE are backwards compatible with machine code like Desktop Windows. - -4. Open a command prompt, run your regular batch file to set the environment -for desktop Visual C building, goto the perl source directory, cd into win32/, -fill out Makefile, and do a "nmake all" to build a Desktop Perl. - -5. Open win32/Makefile.ce in a text editor and do something similar to the -following patch. - - -CELIBDLLDIR = h:\src\wince\celib-palm-3.0 - -CECONSOLEDIR = h:\src\wince\w32console - +CELIBDLLDIR = C:\sources\celib-palm-3.0 - +CECONSOLEDIR = C:\sources\w32console - -Also change - - !if "$(MACHINE)" == "" - MACHINE=wince-arm-hpc-wce300 - #MACHINE=wince-arm-hpc-wce211 - #MACHINE=wince-sh3-hpc-wce211 - #MACHINE=wince-mips-hpc-wce211 - #MACHINE=wince-sh3-hpc-wce200 - #MACHINE=wince-mips-hpc-wce200 - #MACHINE=wince-arm-pocket-wce300 - #MACHINE=wince-mips-pocket-wce300 - #MACHINE=wince-sh3-pocket-wce300 - #MACHINE=wince-x86em-pocket-wce300 - #MACHINE=wince-mips-palm-wce211 - #MACHINE=wince-sh3-palm-wce211 - #MACHINE=wince-x86em-palm-wce211 - #MACHINE=wince-x86-hpc-wce300 - #MACHINE=wince-arm-pocket-wce400 - !endif - -to - - !if "$(MACHINE)" == "" - #MACHINE=wince-arm-hpc-wce300 - #MACHINE=wince-arm-hpc-wce211 - #MACHINE=wince-sh3-hpc-wce211 - #MACHINE=wince-mips-hpc-wce211 - #MACHINE=wince-sh3-hpc-wce200 - #MACHINE=wince-mips-hpc-wce200 - #MACHINE=wince-arm-pocket-wce300 - #MACHINE=wince-mips-pocket-wce300 - #MACHINE=wince-sh3-pocket-wce300 - #MACHINE=wince-x86em-pocket-wce300 - #MACHINE=wince-mips-palm-wce211 - #MACHINE=wince-sh3-palm-wce211 - #MACHINE=wince-x86em-palm-wce211 - #MACHINE=wince-x86-hpc-wce300 - MACHINE=wince-arm-pocket-wce400 - !endif - -so wince-arm-pocket-wce400 is the MACHINE type. - -6. Use a text editor to open "C:\Program Files\Microsoft eMbedded C++ -4.0\EVC\WCE400\BIN\WCEARMV4.BAT". Look for - - if "%SDKROOT%"=="" set SDKROOT=... - -On a new install it is "C:\Windows CE Tools". Goto -"C:\Windows CE Tools" in a file manager and see if "C:\Windows CE -Tools\wce400\STANDARDSDK\Include\Armv4" exists on your disk. If not -the SDKROOT need to be changed to "C:\Program Files\Windows CE Tools". - -Goto celib-palm-3.0\inc\cewin32.h, search for - - typedef struct _ABC { - -and uncomment the struct. - -7. Open another command prompt, ensure PLATFORM is not set to anything -already unless you know what you're doing (so that the correct default -value is set by the next command), and run "C:\Program Files\Microsoft -eMbedded C++ 4.0\EVC\WCE400\BIN\WCEARMV4.BAT" - -8. In the WinCE command prompt you made with WCEARMV4.BAT, goto the perl -source directory, cd into win32/ and run "nmake -f Makefile.ce". - -9. The ARM perl interpreter (perl519.dll and perl.exe) will be in something -like "C:\perl519\src\win32\wince-arm-pocket-wce400", with the XS DLLs in -"C:\perl519\src\xlib\wince-arm-hpc-wce400\auto". - -To prove success on the host machine, run -"dumpbin /headers wince-arm-pocket-wce400\perl.exe" from the win32/ folder -and look for "machine (ARM)" in the FILE HEADER VALUES and -"subsystem (Windows CE GUI)" in the OPTIONAL HEADER VALUES. - -=head2 OLD BUILD INSTRUCTIONS - -This section describes the steps to be performed to build PerlCE. -You may find additional information about building perl for WinCE -at L<http://perlce.sourceforge.net> and some pre-built binaries. - -=head3 Tools & SDK - -For compiling, you need following: - -=over 4 - -=item * Microsoft Embedded Visual Tools - -=item * Microsoft Visual C++ - -=item * Rainer Keuchel's celib-sources - -=item * Rainer Keuchel's console-sources - -=back - -Needed source files can be downloaded at -L<http://perlce.sourceforge.net> - -=head3 Make - -Normally you only need to edit F<./win32/ce-helpers/compile.bat> -to reflect your system and run it. - -File F<./win32/ce-helpers/compile.bat> is actually a wrapper to call -C<nmake -f makefile.ce> with appropriate parameters and it accepts extra -parameters and forwards them to C<nmake> command as additional -arguments. You should pass target this way. - -To prepare distribution you need to do following: - -=over 4 - -=item * go to F<./win32> subdirectory - -=item * edit file F<./win32/ce-helpers/compile.bat> - -=item * run - compile.bat - -=item * run - compile.bat dist - -=back - -F<Makefile.ce> has C<CROSS_NAME> macro, and it is used further to refer to -your cross-compilation scheme. You could assign a name to it, but this -is not necessary, because by default it is assigned after your machine -configuration name, such as "wince-sh3-hpc-wce211", and this is enough -to distinguish different builds at the same time. This option could be -handy for several different builds on same platform to perform, say, -threaded build. In a following example we assume that all required -environment variables are set properly for C cross-compiler (a special -*.bat file could fit perfectly to this purpose) and your F<compile.bat> -has proper "MACHINE" parameter set, to, say, C<wince-mips-pocket-wce300>. - - compile.bat - compile.bat dist - compile.bat CROSS_NAME=mips-wce300-thr "USE_ITHREADS=define" ^ - "USE_IMP_SYS=define" "USE_MULTI=define" - compile.bat CROSS_NAME=mips-wce300-thr "USE_ITHREADS=define" ^ - "USE_IMP_SYS=define" "USE_MULTI=define" dist - -If all goes okay and no errors during a build, you'll get two independent -distributions: C<wince-mips-pocket-wce300> and C<mips-wce300-thr>. - -Target C<dist> prepares distribution file set. Target C<zipdist> performs -same as C<dist> but additionally compresses distribution files into zip -archive. - -NOTE: during a build there could be created a number (or one) of F<Config.pm> -for cross-compilation ("foreign" F<Config.pm>) and those are hidden inside -F<../xlib/$(CROSS_NAME)> with other auxiliary files, but, and this is important to -note, there should be B<no> F<Config.pm> for host miniperl. -If you'll get an error that perl could not find Config.pm somewhere in building -process this means something went wrong. Most probably you forgot to -specify a cross-compilation when invoking miniperl.exe to Makefile.PL -When building an extension for cross-compilation your command line should -look like - - ..\miniperl.exe -I..\lib -MCross=mips-wce300-thr Makefile.PL - -or just - - ..\miniperl.exe -I..\lib -MCross Makefile.PL - -to refer a cross-compilation that was created last time. - -All questions related to building for WinCE devices could be asked in -F<perlce-user@lists.sourceforge.net> mailing list. - -=head1 Using Perl on WinCE - -=head2 DESCRIPTION - -PerlCE is currently linked with a simple console window, so it also -works on non-hpc devices. - -The simple stdio implementation creates the files F<stdin.txt>, -F<stdout.txt> and F<stderr.txt>, so you might examine them if your -console has only a limited number of cols. - -When exitcode is non-zero, a message box appears, otherwise the -console closes, so you might have to catch an exit with -status 0 in your program to see any output. - -stdout/stderr now go into the files F</perl-stdout.txt> and -F</perl-stderr.txt.> - -PerlIDE is handy to deal with perlce. - -=head2 LIMITATIONS - -No fork(), pipe(), popen() etc. - -=head2 ENVIRONMENT - -All environment vars must be stored in HKLM\Environment as -strings. They are read at process startup. - -=over - -=item PERL5LIB - -Usual perl lib path (semi-list). - -=item PATH - -Semi-list for executables. - -=item TMP - -- Tempdir. - -=item UNIXROOTPATH - -- Root for accessing some special files, i.e. F</dev/null>, F</etc/services>. - -=item ROWS/COLS - -- Rows/cols for console. - -=item HOME - -- Home directory. - -=item CONSOLEFONTSIZE - -- Size for console font. - -=back - -You can set these with cereg.exe, a (remote) registry editor -or via the PerlIDE. - -=head2 REGISTRY - -To start perl by clicking on a perl source file, you have -to make the according entries in HKCR (see F<ce-helpers/wince-reg.bat>). -cereg.exe (which must be executed on a desktop pc with -ActiveSync) is reported not to work on some devices. -You have to create the registry entries by hand using a -registry editor. - -=head2 XS - -The following Win32-Methods are built-in: - - newXS("Win32::GetCwd", w32_GetCwd, file); - newXS("Win32::SetCwd", w32_SetCwd, file); - newXS("Win32::GetTickCount", w32_GetTickCount, file); - newXS("Win32::GetOSVersion", w32_GetOSVersion, file); - newXS("Win32::IsWinNT", w32_IsWinNT, file); - newXS("Win32::IsWin95", w32_IsWin95, file); - newXS("Win32::IsWinCE", w32_IsWinCE, file); - newXS("Win32::CopyFile", w32_CopyFile, file); - newXS("Win32::Sleep", w32_Sleep, file); - newXS("Win32::MessageBox", w32_MessageBox, file); - newXS("Win32::GetPowerStatus", w32_GetPowerStatus, file); - newXS("Win32::GetOemInfo", w32_GetOemInfo, file); - newXS("Win32::ShellEx", w32_ShellEx, file); - -=head2 BUGS - -Opening files for read-write is currently not supported if -they use stdio (normal perl file handles). - -If you find bugs or if it does not work at all on your -device, send mail to the address below. Please report -the details of your device (processor, ceversion, -devicetype (hpc/palm/pocket)) and the date of the downloaded -files. - -=head2 INSTALLATION - -Currently installation instructions are at L<http://perlce.sourceforge.net/>. - -After installation & testing processes will stabilize, information will -be more precise. - -=head1 ACKNOWLEDGEMENTS - -The port for Win32 was used as a reference. - -=head1 History of WinCE port - -=over - -=item 5.6.0 - -Initial port of perl to WinCE. It was performed in separate directory -named F<wince>. This port was based on contents of F<./win32> directory. -F<miniperl> was not built, user must have HOST perl and properly edit -F<makefile.ce> to reflect this. - -=item 5.8.0 - -wince port was kept in the same F<./wince> directory, and F<wince/Makefile.ce> -was used to invoke native compiler to create HOST miniperl, which then -facilitates cross-compiling process. -Extension building support was added. - -=item 5.9.4 - -Two directories F<./win32> and F<./wince> were merged, so perlce build -process comes in F<./win32> directory. - -=back - -=head1 AUTHORS - -=over - -=item Rainer Keuchel <coyxc@rainer-keuchel.de> - -provided initial port of Perl, which appears to be most essential work, as -it was a breakthrough on having Perl ported at all. -Many thanks and obligations to Rainer! - -=item Vadim Konovalov - -made further support of WinCE port. - -=item Daniel Dragan - -updated the build process during the 5.19 development track. - -=back +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
+specifically designed to be readable as is.
+
+=head1 Name
+
+Perl for WinCE
+
+=head1 Description
+
+This file gives the instructions for building Perl5.6 and above for
+WinCE. Please read and understand the terms under which this
+software is distributed.
+
+=head1 Build
+
+This section describes the steps to be performed to build PerlCE.
+
+=head2 Tools & SDK
+
+For compiling, you need Microsoft Embedded Visual Tools, my
+celib-sources, my console-sources and a perl for win32.
+
+Needed source files can be downloaded via:
+www.rainer-keuchel.de/wince/dirlist.html
+
+Some portions of the makefile need a shell for win32, rm, cp, mv,
+xmkdir (mkdir with a -p option). It also uses my cecopy program for
+copying files to the ce device.
+
+=head2 Make
+
+Miniperl is not built. A pre-existent win32 perl is used.
+
+The paths for tools and additional libraries have to be changed in
+wince/makefile.ce.
+
+Different ce targets can be specified with the TARGET macro.
+
+Before you start, you need to build celib.dll and w32console.
+See instructions in these packages for building.
+
+In the wince directory, type "nmake -f makefile.ce". This should
+build perl.exe and perl.dll. For building extension dlls,
+type "nmake -f makefile.ce dlls"
+
+When building ext dlls, you get lots of macro redefinition
+errors. Just ignore them.
+
+For further information, look in the text files in the wince
+sub-directory.
+
+=head1 Acknowledgements
+
+The port for Win32 was used as a reference.
+
+=head1 Author
+
+Rainer Keuchel (keuchel@netwave.de)
|