Commit | Line | Data |
42165d27 |
1 | =comments |
2 | |
3 | helper script to make life for PerlCE easier. |
4 | |
5 | You need edit values for @defs array to reflect your changes and then do |
6 | |
7 | perl comp.pl [any-additional-options] |
8 | |
9 | This will call |
10 | nmake -f Makefile.ce |
11 | with most parameters overrided as you specified and additional options |
12 | (such as build target) will also be prepended to command line to execute. |
13 | |
14 | There are also additional different modes for running this script: |
15 | perl comp.pl --run [any-command-line-arguments] |
16 | and |
17 | perl comp.pl --do [any-command-line-arguments] |
18 | and |
19 | perl comp.pl --copy-pm pc:[pc-location] ce:[ce-location] |
20 | |
21 | --run executes this build of perl on CE device with arguments provided |
22 | --run=test will display a predefined messagebox that say everything is ok. |
23 | |
24 | --do Executes on local computer command that is presented by arguments |
25 | immediately following after --do |
26 | Most reason why you may want to execute script in this mode is that |
27 | arguments preprocessed to replace [p] occurences into current perl |
28 | location. Typically it is handy to run |
29 | perl comp.pl --do cecopy pc:..\lib\Exporter.pm ce:[p]\lib |
30 | |
31 | --copy copies file to CE device |
32 | here also [p] will be expanded to corrent PerlCE path, and additionally |
33 | when --copy=compact specified then, if filename looks like perl module, |
34 | then POD will be stripped away from that file |
35 | modules |
36 | |
37 | |
38 | =cut |
39 | |
40 | use Cwd; |
41 | use strict; |
42 | |
43 | # edit value of $inst_root variable to reflect your desired location of |
44 | # built perl |
45 | my $inst_root = "\\Storage Card\\perl-tests\\perl\@16225"; |
46 | my @defs = ( |
47 | "\"PV=\"", |
48 | "\"INST_VER=\"", |
49 | "\"INSTALL_ROOT=$inst_root\"", |
50 | "\"WCEROOT=$ENV{SDKROOT}\"", |
51 | "NTPERL=$^X", #todo: check version: this must be (almost?) current version |
52 | "\"CEPATH=$ENV{WCEROOT}\"", |
53 | "CELIBDLLDIR=d:\\personal\\pocketPC\\celib-palm-3.0", |
54 | "CECONSOLEDIR=d:\\personal\\pocketPC\\w32console", |
55 | "YES=/y", |
56 | "CFG=RELEASE", |
57 | "MACHINE=wince-mips-pocket-wce300", |
58 | "PERLCEDIR=".cwd, |
59 | #NIY "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy=compact\"", |
60 | "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy\"", |
61 | ); |
62 | |
63 | my %opts = ( |
64 | # %known_opts enumerates allowed opts as well as specifies default |
65 | # and initial values |
66 | my %known_opts = ( |
67 | 'do' => '', |
68 | 'run' => '', |
69 | 'copy' => '', |
70 | ), |
71 | #options itself |
72 | my %specified_opts = ( |
73 | (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth |
74 | (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt |
75 | ), |
76 | ); |
77 | die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts; |
78 | @ARGV = grep {!/^--/} @ARGV; |
79 | |
80 | if ($opts{'do'}) { |
81 | s/\[p\]/$inst_root/g for @ARGV; |
82 | system(@ARGV); |
83 | } |
84 | elsif ($opts{'run'}) { |
85 | if ($opts{'run'} eq 'test') { |
86 | system("ceexec","$inst_root\\bin\\perl","-we","Win32::MessageBox(\$].qq(\n).join'','cc'..'dx')"); |
87 | } |
88 | else { |
89 | system("ceexec","$inst_root\\bin\\perl", map {/^".*"$/s?$_:"\"$_\""} @ARGV); |
90 | } |
91 | } |
92 | elsif ($opts{'copy'}) { |
93 | if ($opts{'copy'} eq 'compact') { |
94 | die "todo"; |
95 | } |
96 | s/\[p\]/$inst_root/g for @ARGV; |
97 | if ($ARGV[0]=~/^pc:/i) {system("cedel",$ARGV[1])} |
98 | system("cecopy",@ARGV); |
99 | } |
100 | else { |
101 | my $cmd = "nmake -f Makefile.ce @defs @ARGV"; |
102 | print $cmd; |
103 | system($cmd); |
104 | } |
105 | |
106 | |
107 | =comments |
108 | |
109 | Author Vadim Konovalov. |
110 | |
111 | =cut |