| 1 | If you read this file _as_is_, just ignore the funny characters you\r |
| 2 | see. It is written in the POD format (see pod/perlpod.pod) which is\r |
| 3 | specifically designed to be readable as is.\r |
| 4 | \r |
| 5 | =head1 NAME\r |
| 6 | \r |
| 7 | perlce - Perl for WinCE\r |
| 8 | \r |
| 9 | =head1 DESCRIPTION\r |
| 10 | \r |
| 11 | This file gives the instructions for building Perl5.8 and above for\r |
| 12 | WinCE. Please read and understand the terms under which this\r |
| 13 | software is distributed.\r |
| 14 | \r |
| 15 | =head1 BUILD\r |
| 16 | \r |
| 17 | This section describes the steps to be performed to build PerlCE.\r |
| 18 | You may find additional and newer information about building perl\r |
| 19 | for WinCE using following URL:\r |
| 20 | \r |
| 21 | http://perlce.sourceforge.net\r |
| 22 | \r |
| 23 | There should also be pre-built binaries there.\r |
| 24 | \r |
| 25 | Don't be confused by large size of downloaded distribution or constructed\r |
| 26 | binaries: entire distribution could be large for WinCE ideology, but\r |
| 27 | you may strip it at your wish and use only required parts.\r |
| 28 | \r |
| 29 | =head2 Tools & SDK\r |
| 30 | \r |
| 31 | For compiling, you need following:\r |
| 32 | \r |
| 33 | =over 4\r |
| 34 | \r |
| 35 | =item * Microsoft Embedded Visual Tools\r |
| 36 | \r |
| 37 | =item * Microsoft Visual C++\r |
| 38 | \r |
| 39 | =item * Rainer Keuchel's celib-sources\r |
| 40 | \r |
| 41 | =item * Rainer Keuchel's console-sources\r |
| 42 | \r |
| 43 | =back\r |
| 44 | \r |
| 45 | Needed source files can be downloaded via:\r |
| 46 | www.rainer-keuchel.de/wince/dirlist.html\r |
| 47 | \r |
| 48 | =head2 Make\r |
| 49 | \r |
| 50 | Please pay attention that starting from 5.8.0 miniperl *is* built\r |
| 51 | and it facilitates in further building process. This means that\r |
| 52 | in addition to compiler installation for mobile device you also need\r |
| 53 | to have Microsoft Visual C++ installed as well.\r |
| 54 | \r |
| 55 | On the bright side, you do not need to edit any files from ./win32\r |
| 56 | subdirectory. Normally you only need to edit ./wince/compile.bat\r |
| 57 | to reflect your system and run it.\r |
| 58 | \r |
| 59 | File ./wince/compile.bat is actually a wrapper to call\r |
| 60 | nmake -f makefile.ce with appropriate parameters and it accepts extra\r |
| 61 | parameters and forwards them to "nmake" command as additional\r |
| 62 | arguments. You should pass target this way.\r |
| 63 | \r |
| 64 | To prepare distribution you need to do following:\r |
| 65 | \r |
| 66 | =over 4\r |
| 67 | \r |
| 68 | =item * go to ./wince subdirectory\r |
| 69 | \r |
| 70 | =item * edit file compile.bat\r |
| 71 | \r |
| 72 | =item * run \r |
| 73 | compile.bat\r |
| 74 | \r |
| 75 | =item * run \r |
| 76 | compile.bat dist\r |
| 77 | \r |
| 78 | =back\r |
| 79 | \r |
| 80 | makefile.ce has CROSS_NAME macro, and it is used further to refer to\r |
| 81 | your cross-compilation scheme. You could assign a name to it, but this\r |
| 82 | is not necessary, because by default it is assigned after your machine\r |
| 83 | configuration name, such as "wince-sh3-hpc-wce211", and this is enough\r |
| 84 | to distinguish different builds at the same time. This option could be\r |
| 85 | handy for several different builds on same platform to perform, say,\r |
| 86 | threaded build. In a following example we assume that all required\r |
| 87 | environment variables are set properly for C cross-compiler (a special\r |
| 88 | *.bat file could fit perfectly to this purpose) and your compile.bat\r |
| 89 | has proper "MACHINE" parameter set, to, say, "wince-mips-pocket-wce300".\r |
| 90 | \r |
| 91 | compile.bat\r |
| 92 | compile.bat dist\r |
| 93 | compile.bat CROSS_NAME=mips-wce300-thr "USE_ITHREADS=define" "USE_IMP_SYS=define" "USE_MULTI=define"\r |
| 94 | compile.bat CROSS_NAME=mips-wce300-thr "USE_ITHREADS=define" "USE_IMP_SYS=define" "USE_MULTI=define" dist\r |
| 95 | \r |
| 96 | If all goes okay and no errors during a build, you'll get two independent\r |
| 97 | distributions: "wince-mips-pocket-wce300" and "mips-wce300-thr".\r |
| 98 | \r |
| 99 | Target 'dist' prepares distribution file set. Target 'zipdist' performs\r |
| 100 | same as 'dist' but additionally compresses distribution files into zip\r |
| 101 | archive.\r |
| 102 | \r |
| 103 | NOTE: during a build there could be created a number (or one) of Config.pm\r |
| 104 | for cross-compilation ("foreign" Config.pm) and those are hidden inside\r |
| 105 | ../xlib/$(CROSS_NAME) with other auxilary files, but, and this is important to\r |
| 106 | note, there should be *no* Config.pm for host miniperl.\r |
| 107 | If you'll get an error that perl could not find Config.pm somewhere in building\r |
| 108 | process this means something went wrong. Most probably you forgot to\r |
| 109 | specify a cross-compilation when invoking miniperl.exe to Makefile.PL\r |
| 110 | When building an extension for cross-compilation your command line should\r |
| 111 | look like\r |
| 112 | \r |
| 113 | ..\miniperl.exe -I..\lib -MCross=mips-wce300-thr Makefile.PL\r |
| 114 | \r |
| 115 | or just\r |
| 116 | \r |
| 117 | ..\miniperl.exe -I..\lib -MCross Makefile.PL\r |
| 118 | \r |
| 119 | to refer a cross-compilation that was created last time.\r |
| 120 | \r |
| 121 | \r |
| 122 | If you decided to build with fcrypt.c file, please refer to README.win32\r |
| 123 | file, as long as all legal considerations and steps to do are exactly same \r |
| 124 | in this case.\r |
| 125 | \r |
| 126 | All questions related to building for WinCE devices could be asked in\r |
| 127 | perlce-users@lists.sourceforge.net mailing list.\r |
| 128 | \r |
| 129 | =head1 ACKNOWLEDGEMENTS\r |
| 130 | \r |
| 131 | The port for Win32 was used as a reference.\r |
| 132 | \r |
| 133 | =head1 AUTHORS\r |
| 134 | \r |
| 135 | Rainer Keuchel (keuchel@netwave.de)\r |
| 136 | Vadim Konovalov (vkonovalov@spb.lucent.com)\r |
| 137 | \r |