diff options
author | Vadim Konovalov <vkonovalov@lucent.com> | 2002-04-29 01:54:31 +0400 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-04-28 18:23:52 +0000 |
commit | 42165d2726b8a0b9ded4dc56d733154af8784b90 (patch) | |
tree | f8f97761be1750e2b255e51aa49d6eca14bdbc55 /wince | |
parent | b5135157c621a585113d0c5008db555122aa49b3 (diff) | |
download | perl-42165d2726b8a0b9ded4dc56d733154af8784b90.tar.gz |
WinCE many fixes
Message-ID: <00bf01c1eedd$c0c62a00$d25cc3d9@vad>
p4raw-id: //depot/perl@16251
Diffstat (limited to 'wince')
-rw-r--r-- | wince/Makefile.ce | 93 | ||||
-rw-r--r-- | wince/cecopy-lib.pl | 217 | ||||
-rw-r--r-- | wince/comp.pl | 111 | ||||
-rw-r--r-- | wince/perldll.def | 23 | ||||
-rw-r--r-- | wince/win32.h | 10 | ||||
-rw-r--r-- | wince/wince.c | 28 |
6 files changed, 418 insertions, 64 deletions
diff --git a/wince/Makefile.ce b/wince/Makefile.ce index 60f02e8514..a4b4bf4b66 100644 --- a/wince/Makefile.ce +++ b/wince/Makefile.ce @@ -5,7 +5,12 @@ SRCDIR = .. PV = 57 INST_VER = 5.7.3 + +INSTALL_ROOT=/netzwerk/sprache/perl + +# PERLCEDIR shoud be set to current directory PERLCEDIR = H:\src\wince\perl\wince + WCEROOT = N:\Windows CE Tools WCEROOT = D:\Windows CE Tools NTPERL = N:\Programme\perl\bin\perl.exe @@ -19,10 +24,15 @@ CECONSOLEDIR = h:\src\wince\w32console COPY = copy $(YES) XCOPY = xcopy $(YES) /f /r /i /d RCOPY = xcopy $(YES) /f /r /i /e /d + +# cecopy program. Make shure it is in your path, as well as cemkdir, cedel +CECOPY = cecopy + NOOP = @echo # keep this untouched! NULL = + CFG=DEBUG #CFG=RELEASE @@ -532,7 +542,7 @@ EXTRACORE_SRC = $(EXTRACORE_SRC) perllib.c EXTRACORE_SRC = $(EXTRACORE_SRC) ..\malloc.c !ENDIF -EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c +EXTRACORE_SRC = $(EXTRACORE_SRC) ..\perlio.c .\win32io.c WIN32_SRC = \ .\wince.c \ @@ -861,81 +871,79 @@ clean: -rm -f ../config.sh ../lib/Config.pm -rm -f config.h perl.res -!if "$(MACHINE)" == "wince-sh3-hpc" +!IF "$(MACHINE)" == "wince-sh3-hpc" + install_perlexe: $(PERLEXE) cedel /speicherkarte2/bin/perl.exe - cecopy pc:../perl.exe ce:/speicherkarte2/bin + $(CECOPY) pc:../perl.exe ce:/speicherkarte2/bin install_perldll: $(PERLDLL) cedel /speicherkarte2/bin/perl$(PV).dll - cecopy pc:../perl$(PV).dll ce:/speicherkarte2/bin + $(CECOPY) pc:../perl$(PV).dll ce:/speicherkarte2/bin install_perl: install_perlexe install_perldll test_perl: - cecopy pc:test.pl ce:/speicherkarte2/bin + $(CECOPY) pc:test.pl ce:/speicherkarte2/bin ceexec /speicherkarte2/bin/perl.exe /speicherkarte2/bin/test.pl -# ceexec /speicherkarte2/bin/perl.exe -V install_lib: ../lib/Config.pm - cecopy pc:../lib/Config.pm ce:/speicherkarte2/usr/lib/perl5 -!endif + $(CECOPY) pc:../lib/Config.pm ce:/speicherkarte2/usr/lib/perl5 + +!ELSEIF "$(MACHINE)" == "wince-arm-hpc" -!if "$(MACHINE)" == "wince-arm-hpc" install_perlexe: $(PERLEXE) -cedel /speicherkarte/bin/perl.exe - cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin install_perldll: $(PERLDLL) -cedel /speicherkarte/bin/perl$(PV).dll - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin install_perl: install_perlexe install_perldll test_perl: - cecopy pc:test.pl ce:/speicherkarte/bin + $(CECOPY) pc:test.pl ce:/speicherkarte/bin ceexec /speicherkarte/bin/perl.exe /speicherkarte/bin/test.pl -# ceexec /speicherkarte2/bin/perl.exe -V install_lib: ../lib/Config.pm - cecopy pc:../lib/Config.pm ce:/speicherkarte/usr/lib/perl5 -!endif + $(CECOPY) pc:../lib/Config.pm ce:/speicherkarte/usr/lib/perl5 + +!ELSEIF "$(MACHINE)" == "wince-mips-hpc" -!if "$(MACHINE)" == "wince-mips-hpc" install_perlexe: $(PERLEXE) - cecopy pc:../perl.exe ce:/netzwerk/compaq/bin + $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin install_perldll: $(PERLDLL) - cecopy pc:../perl$(PV).dll ce:/netzwerk/compaq/bin + $(CECOPY) pc:../perl$(PV).dll ce:$(INSTALL_ROOT)/bin install_perl: install_perlexe install_perldll test_perl: - cecopy pc:test.pl ce:/netzwerk/compaq/bin - ceexec /netzwerk/compaq/bin/perl.exe /netzwerk/compaq/bin/test.pl -# ceexec /netzwerk/compaq/bin/perl.exe -V + $(CECOPY) pc:test.pl ce:/netzwerk/compaq/bin + ceexec /netzwerk/compaq/bin/perl.exe $(INSTALL_ROOT)/test.pl install_lib: ../lib/Config.pm - cecopy pc:../lib/Config.pm ce:/netzwerk/compaq/usr/lib/perl5 -!endif + $(CECOPY) pc:../lib/Config.pm ce:/netzwerk/compaq/usr/lib/perl5 + +!ELSEIF "$(MACHINE)" == "wince-x86em-pocket" -!if "$(MACHINE)" == "wince-x86em-pocket" install_lib: ftpcopy ../lib/Config.pm ftp!ftp@localhost:/perl/lib ftpcopy ../lib/Exporter.pm ftp!ftp@localhost:/perl/lib ftpcopy ../lib/Exporter/Heavy.pm ftp!ftp@localhost:/perl/lib/Exporter install_perlexe: $(PERLEXE) - cecopy pc:../perl.exe ce:/netzwerk/compaq/bin + $(CECOPY) pc:../perl.exe ce:/netzwerk/compaq/bin install_perldll: $(PERLDLL) - cecopy pc:../perl$(PV).dll ce:/netzwerk/compaq/bin + $(CECOPY) pc:../perl$(PV).dll ce:/netzwerk/compaq/bin install_perl: install_perlexe install_perldll test_perl: echo Not yet -!endif +!ENDIF XDLLOBJS = \ @@ -974,6 +982,7 @@ $(DLLDIR)\utf8.obj \ $(DLLDIR)\util.obj \ $(DLLDIR)\win32thread.obj \ $(DLLDIR)\wince.obj \ +$(DLLDIR)\win32io.obj \ $(DLLDIR)\wincesck.obj \ $(DLLDIR)\xsutils.obj \ $(DLLDIR)\perllib.obj \ @@ -1040,34 +1049,42 @@ makedist: all dlls !if "$(MACHINE)" == "wince-arm-hpc-wce300" install: all - cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin install_dlls: dlls - cecopy pc:../lib/auto/IO/io.dll ce:/speicherkarte/usr/lib/perl5/auto/IO/io.dll + $(CECOPY) pc:../lib/auto/IO/io.dll ce:/speicherkarte/usr/lib/perl5/auto/IO/io.dll +!else +install: all + -cemkdir "$(INSTALL_ROOT)" + -cemkdir "$(INSTALL_ROOT)\bin" + -cemkdir "$(INSTALL_ROOT)\lib" + $(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin" + $(CECOPY) "pc:$(MACHINE)/perl.dll" "ce:$(INSTALL_ROOT)/bin" + $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib" !endif !if "$(MACHINE)" == "wince-arm-hpc-wce211" install: all - cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin !endif !if "$(MACHINE)" == "wince-mips-hpc-wce211" install: - cecopy pc:$(MACHINE)/perl.exe ce:/bin - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin !endif !if "$(MACHINE)" == "wince-mips-hpc-wce200" install: - cecopy pc:$(MACHINE)/perl.exe ce:/bin - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin !endif !if "$(MACHINE)" == "wince-sh3-hpc-wce211" install: - cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte2/bin - cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte2/bin + $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin + $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin !endif perl.ico: diff --git a/wince/cecopy-lib.pl b/wince/cecopy-lib.pl new file mode 100644 index 0000000000..8281b0c20c --- /dev/null +++ b/wince/cecopy-lib.pl @@ -0,0 +1,217 @@ +# just copy modules +# TODO: copy tests and try to run them... +# this file may be used as example on how to use comp.pl + +my @files; + +my %dirs; +sub mk { + my $r = shift; + return if exists $dirs{$r}; + if ($r=~/\//) { + $r=~/^(.*)\/[^\/]*?$/; + mk($1); + } + system("$^X comp.pl --do cemkdir [p]\\lib\\$r"); + print STDERR "$^X comp.pl --do cemkpath [p]\\lib\\$r\n"; + $dirs{$r}++; +} +for (@files) { + if (/\//) { + /^(.*)\/[^\/]*?$/; + mk($1); + } + # currently no stripping POD + system("$^X comp.pl --do cecopy pc:..\\lib\\$_ ce:[p]\\lib\\$_"); +} + +sub BEGIN { + @files = qw( + attributes.pm + AutoLoader.pm + AutoSplit.pm + autouse.pm + base.pm + Benchmark.pm + bigint.pm + bignum.pm + bigrat.pm + blib.pm + bytes.pm + Carp.pm + charnames.pm + Config.pm + constant.pm + Cwd.pm + DB.pm + diagnostics.pm + Digest.pm + DirHandle.pm + Dumpvalue.pm + DynaLoader.pm + English.pm + Env.pm + Exporter.pm + Fatal.pm + fields.pm + FileCache.pm + FileHandle.pm + filetest.pm + FindBin.pm + if.pm + integer.pm + less.pm + locale.pm + Memoize.pm + NEXT.pm + open.pm + overload.pm + PerlIO.pm + re.pm + SelectSaver.pm + SelfLoader.pm + Shell.pm + sigtrap.pm + sort.pm + strict.pm + subs.pm + Switch.pm + Symbol.pm + Test.pm + Thread.pm + UNIVERSAL.pm + utf8.pm + vars.pm + vmsish.pm + warnings.pm + XSLoader.pm + warnings/register.pm + Unicode/Collate.pm + Unicode/UCD.pm + Time/gmtime.pm + Time/Local.pm + Time/localtime.pm + Time/tm.pm + Tie/Array.pm + Tie/File.pm + Tie/Handle.pm + Tie/Hash.pm + Tie/Memoize.pm + Tie/RefHash.pm + Tie/Scalar.pm + Tie/SubstrHash.pm + Text/Abbrev.pm + Text/Balanced.pm + Text/ParseWords.pm + Text/Soundex.pm + Text/Tabs.pm + Text/Wrap.pm + Test/Builder.pm + Test/Harness.pm + Test/More.pm + Test/Simple.pm + Test/Harness/Assert.pm + Test/Harness/Iterator.pm + Test/Harness/Straps.pm + Term/ANSIColor.pm + Term/Cap.pm + Term/Complete.pm + Term/ReadLine.pm + Search/Dict.pm + Pod/Checker.pm + Pod/Find.pm + Pod/Functions.pm + Pod/Html.pm + Pod/InputObjects.pm + Pod/LaTeX.pm + Pod/Man.pm + Pod/ParseLink.pm + Pod/Parser.pm + Pod/ParseUtils.pm + Pod/Plainer.pm + Pod/Select.pm + Pod/Text.pm + Pod/Usage.pm + Pod/Text/Color.pm + Pod/Text/Overstrike.pm + Pod/Text/Termcap.pm + Math/BigFloat.pm + Math/BigInt.pm + Math/BigRat.pm + Math/Complex.pm + Math/Trig.pm + Math/BigInt/Calc.pm + Math/BigInt/Trace.pm + Math/BigFloat/Trace.pm + Locale/Constants.pm + Locale/Country.pm + Locale/Currency.pm + Locale/Language.pm + Locale/Maketext.pm + Locale/Script.pm + IPC/Open2.pm + IPC/Open3.pm + I18N/Collate.pm + I18N/LangTags.pm + I18N/LangTags/List.pm + Hash/Util.pm + Getopt/Long.pm + Getopt/Std.pm + Filter/Simple.pm + File/Basename.pm + File/CheckTree.pm + File/Compare.pm + File/Copy.pm + File/DosGlob.pm + File/Find.pm + File/Path.pm + File/Spec.pm + File/stat.pm + File/Temp.pm + File/Spec/Cygwin.pm + File/Spec/Epoc.pm + File/Spec/Functions.pm + File/Spec/Mac.pm + File/Spec/OS2.pm + File/Spec/Unix.pm + File/Spec/VMS.pm + File/Spec/Win32.pm + ExtUtils/Command.pm + ExtUtils/Constant.pm + ExtUtils/Embed.pm + ExtUtils/Install.pm + ExtUtils/Installed.pm + ExtUtils/Liblist.pm + ExtUtils/MakeMaker.pm + ExtUtils/Manifest.pm + ExtUtils/Miniperl.pm + ExtUtils/Mkbootstrap.pm + ExtUtils/Mksymlists.pm + ExtUtils/MM.pm + ExtUtils/MM_Any.pm + ExtUtils/MM_BeOS.pm + ExtUtils/MM_Cygwin.pm + ExtUtils/MM_DOS.pm + ExtUtils/MM_NW5.pm + ExtUtils/MM_OS2.pm + ExtUtils/MM_Unix.pm + ExtUtils/MM_UWIN.pm + ExtUtils/MM_VMS.pm + ExtUtils/MM_Win32.pm + ExtUtils/MM_Win95.pm + ExtUtils/MY.pm + ExtUtils/Packlist.pm + ExtUtils/testlib.pm + ExtUtils/Liblist/Kid.pm + ExtUtils/Command/MM.pm + Exporter/Heavy.pm + Devel/SelfStubber.pm + Class/ISA.pm + Class/Struct.pm + Carp/Heavy.pm + Attribute/Handlers.pm + Attribute/Handlers/demo/Demo.pm + Attribute/Handlers/demo/Descriptions.pm + Attribute/Handlers/demo/MyClass.pm + ); +} diff --git a/wince/comp.pl b/wince/comp.pl new file mode 100644 index 0000000000..8ecc95855d --- /dev/null +++ b/wince/comp.pl @@ -0,0 +1,111 @@ +=comments + +helper script to make life for PerlCE easier. + +You need edit values for @defs array to reflect your changes and then do + + perl comp.pl [any-additional-options] + +This will call + nmake -f Makefile.ce +with most parameters overrided as you specified and additional options +(such as build target) will also be prepended to command line to execute. + +There are also additional different modes for running this script: + perl comp.pl --run [any-command-line-arguments] +and + perl comp.pl --do [any-command-line-arguments] +and + perl comp.pl --copy-pm pc:[pc-location] ce:[ce-location] + +--run executes this build of perl on CE device with arguments provided +--run=test will display a predefined messagebox that say everything is ok. + +--do Executes on local computer command that is presented by arguments + immediately following after --do + Most reason why you may want to execute script in this mode is that + arguments preprocessed to replace [p] occurences into current perl + location. Typically it is handy to run + perl comp.pl --do cecopy pc:..\lib\Exporter.pm ce:[p]\lib + +--copy copies file to CE device + here also [p] will be expanded to corrent PerlCE path, and additionally + when --copy=compact specified then, if filename looks like perl module, + then POD will be stripped away from that file + modules + + +=cut + +use Cwd; +use strict; + +# edit value of $inst_root variable to reflect your desired location of +# built perl +my $inst_root = "\\Storage Card\\perl-tests\\perl\@16225"; +my @defs = ( + "\"PV=\"", + "\"INST_VER=\"", + "\"INSTALL_ROOT=$inst_root\"", + "\"WCEROOT=$ENV{SDKROOT}\"", + "NTPERL=$^X", #todo: check version: this must be (almost?) current version + "\"CEPATH=$ENV{WCEROOT}\"", + "CELIBDLLDIR=d:\\personal\\pocketPC\\celib-palm-3.0", + "CECONSOLEDIR=d:\\personal\\pocketPC\\w32console", + "YES=/y", + "CFG=RELEASE", + "MACHINE=wince-mips-pocket-wce300", + "PERLCEDIR=".cwd, + #NIY "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy=compact\"", + "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy\"", +); + +my %opts = ( + # %known_opts enumerates allowed opts as well as specifies default + # and initial values + my %known_opts = ( + 'do' => '', + 'run' => '', + 'copy' => '', + ), + #options itself + my %specified_opts = ( + (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth + (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt + ), +); +die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts; +@ARGV = grep {!/^--/} @ARGV; + +if ($opts{'do'}) { + s/\[p\]/$inst_root/g for @ARGV; + system(@ARGV); +} +elsif ($opts{'run'}) { + if ($opts{'run'} eq 'test') { + system("ceexec","$inst_root\\bin\\perl","-we","Win32::MessageBox(\$].qq(\n).join'','cc'..'dx')"); + } + else { + system("ceexec","$inst_root\\bin\\perl", map {/^".*"$/s?$_:"\"$_\""} @ARGV); + } +} +elsif ($opts{'copy'}) { + if ($opts{'copy'} eq 'compact') { + die "todo"; + } + s/\[p\]/$inst_root/g for @ARGV; + if ($ARGV[0]=~/^pc:/i) {system("cedel",$ARGV[1])} + system("cecopy",@ARGV); +} +else { + my $cmd = "nmake -f Makefile.ce @defs @ARGV"; + print $cmd; + system($cmd); +} + + +=comments + + Author Vadim Konovalov. + +=cut diff --git a/wince/perldll.def b/wince/perldll.def index f7b7eb4099..c95e33a2a0 100644 --- a/wince/perldll.def +++ b/wince/perldll.def @@ -1,4 +1,4 @@ -LIBRARY Perl57 +LIBRARY Perl EXPORTS PL_AMG_names @@ -405,20 +405,10 @@ EXPORTS PL_yynerrs PL_yyval PerlIO_canset_cnt - PerlIO_clearerr - PerlIO_close - PerlIO_eof - PerlIO_error PerlIO_exportFILE PerlIO_fast_gets PerlIO_fdopen - PerlIO_fileno PerlIO_findFILE - PerlIO_flush - PerlIO_get_base - PerlIO_get_bufsiz - PerlIO_get_cnt - PerlIO_get_ptr PerlIO_getc PerlIO_getname PerlIO_getpos @@ -430,26 +420,16 @@ EXPORTS PerlIO_printf PerlIO_putc PerlIO_puts - PerlIO_read PerlIO_releaseFILE PerlIO_reopen PerlIO_rewind - PerlIO_seek - PerlIO_set_cnt - PerlIO_set_ptrcnt - PerlIO_setlinebuf PerlIO_setpos PerlIO_sprintf - PerlIO_stderr - PerlIO_stdin - PerlIO_stdout PerlIO_stdoutf - PerlIO_tell PerlIO_tmpfile PerlIO_ungetc PerlIO_vprintf PerlIO_vsprintf - PerlIO_write Perl_Gv_AMupdate Perl_amagic_call Perl_av_clear @@ -771,7 +751,6 @@ EXPORTS Perl_set_numeric_local Perl_set_numeric_radix Perl_set_numeric_standard - Perl_sharepvn Perl_stack_grow Perl_start_subparse Perl_str_to_version diff --git a/wince/win32.h b/wince/win32.h index b46fb2f76a..de2e628969 100644 --- a/wince/win32.h +++ b/wince/win32.h @@ -227,6 +227,16 @@ typedef long gid_t; /* compatibility stuff for other compilers goes here */ +#ifndef _INTPTR_T_DEFINED +typedef int intptr_t; +# define _INTPTR_T_DEFINED +#endif + +#ifndef _UINTPTR_T_DEFINED +typedef unsigned int uintptr_t; +# define _UINTPTR_T_DEFINED +#endif + START_EXTERN_C #undef Stat diff --git a/wince/wince.c b/wince/wince.c index b6b9f140db..7aabdd7dc5 100644 --- a/wince/wince.c +++ b/wince/wince.c @@ -352,6 +352,20 @@ win32_times(struct tms *timebuf) return -1; } +/* TODO */ +bool +win32_signal() +{ + Perl_croak_nocontext("signal() TBD on this platform"); + return FALSE; +} +DllExport void +win32_clearenv() +{ + return; +} + + DllExport char *** win32_environ(void) { @@ -554,11 +568,7 @@ win32_uname(struct utsname *name) char *arch; GetSystemInfo(&info); -#if defined(__BORLANDC__) || defined(__MINGW32__) - switch (info.u.s.wProcessorArchitecture) { -#else switch (info.wProcessorArchitecture) { -#endif case PROCESSOR_ARCHITECTURE_INTEL: arch = "x86"; break; case PROCESSOR_ARCHITECTURE_MIPS: @@ -1616,3 +1626,13 @@ isnan(double d) return _isnan(d); } +int +win32_open_osfhandle(intptr_t osfhandle, int flags) +{ + int fh; + char fileflags=0; /* _osfile flags */ + + XCEMessageBoxA(NULL, "NEED TO IMPLEMENT a place in ../wince/wince.c(win32_open_osfhandle)", "Perl(developer)", 0); + Perl_croak_nocontext("win32_open_osfhandle() TBD on this platform"); + return 0; +} |