1=comments
2
3helper script to make life for PerlCE easier.
4
5There are different modes for running this script:
6  perl comp.pl --run [any-command-line-arguments]
7and
8  perl comp.pl --do [any-command-line-arguments]
9and
10  perl comp.pl --copy pc:[pc-location] ce:[ce-location]
11
12--run executes this build of perl on CE device with arguments provided
13--run=test will display a predefined messagebox that say everything is ok.
14
15--do  Executes on local computer command that is presented by arguments
16      immediately following after --do
17      Most reason why you may want to execute script in this mode is that
18      arguments preprocessed to replace [p] occurrences into current perl
19      location. Typically it is handy to run
20  perl comp.pl --do cecopy pc:..\lib\Exporter.pm ce:[p]\lib
21
22--copy copies file to CE device
23  here also [p] will be expanded to current PerlCE path, and additionally
24  when --copy=compact specified then, if filename looks like perl module,
25  then POD will be stripped away from that file
26  modules
27
28
29=cut
30
31use strict;
32use Cross;
33use Config;
34
35# edit value of $inst_root variable to reflect your desired location of
36# built perl
37my $inst_root = $Config{prefix};
38
39my %opts = (
40  # %known_opts enumerates allowed opts as well as specifies default and initial values
41  my %known_opts = (
42     'do' => '',
43     'run' => '',
44     'copy' => '',
45  ),
46  #options itself
47  my %specified_opts = (
48    (map {/^--([\-_\w]+)=(.*)$/} @ARGV),                            # --opt=smth
49    (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV),  # --opt --no-opt --noopt
50  ),
51);
52die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts;
53@ARGV = grep {!/^--/} @ARGV;
54
55if ($opts{'do'}) {
56  s/\[p\]/$inst_root/g for @ARGV;
57  system(@ARGV);
58}
59elsif ($opts{'run'}) {
60  if ($opts{'run'} eq 'test') {
61    system("ceexec","$inst_root\\bin\\perl","-we","Win32::MessageBox(\$].qq(\n).join'','cc'..'dx')");
62  }
63  else {
64    system("ceexec","$inst_root\\bin\\perl", map {/^".*"$/s?$_:"\"$_\""} @ARGV);
65  }
66}
67elsif ($opts{'copy'}) {
68  if ($opts{'copy'} eq 'compact') {
69    die "todo";
70  }
71  s/\[p\]/$inst_root/g for @ARGV;
72  if ($ARGV[0]=~/^pc:/i) {system("cedel",$ARGV[1])}
73  system("cecopy",@ARGV);
74}
75else {
76  # todo
77}
78
79
80=comments
81
82  Author Vadim Konovalov.
83
84=cut
85