--- cvsroot/App-Staticperl/mkbundle 2010/12/07 09:27:54 1.6 +++ cvsroot/App-Staticperl/mkbundle 2010/12/09 09:51:32 1.10 @@ -6,6 +6,7 @@ our $VERBOSE = 1; our $STRIP = "pod"; # none, pod or ppi our $PERL = 0; +our $APP; our $VERIFY = 0; our $STATIC = 0; @@ -17,6 +18,8 @@ my @libs; my @static_ext; my $extralibs; +my @staticlibs; +my @incext; @ARGV or die "$0: use 'staticperl help' (or read the sources of staticperl)\n"; @@ -90,7 +93,7 @@ my $package; while (<$fh>) { - if (/^\s*sub\s+([^[:space:];]+)\s*;?\s*$/) { + if (/^\s*sub\s+ ([^[:space:];]+) \s* (?:\([^)]*\))? \s*;?\s*$/x) { my $al = "auto/$package/$1.al"; my $inc = find_inc $al; @@ -211,6 +214,11 @@ $pmbin{$as} = 1 if $_[1]; } +sub cmd_staticlib { + push @staticlibs, $_ + for split /\s+/, $_[0]; +} + sub cmd_file { open my $fh, "<", $_[0] or die "$_[0]: $!\n"; @@ -222,11 +230,17 @@ if ($cmd eq "strip") { $STRIP = $args; + } elsif ($cmd eq "perl") { + $PERL = 1; + } elsif ($cmd eq "app") { + $APP = $args; } elsif ($cmd eq "eval") { trace_eval $_; } elsif ($cmd eq "use") { trace_module $_ for split / /, $args; + } elsif ($cmd eq "staticlib") { + cmd_staticlib $args; } elsif ($cmd eq "boot") { cmd_boot $args; } elsif ($cmd eq "static") { @@ -248,19 +262,24 @@ Getopt::Long::Configure ("bundling", "no_auto_abbrev", "no_ignore_case"); GetOptions - "strip=s" => \$STRIP, - "verbose|v" => sub { ++$VERBOSE }, - "quiet|q" => sub { --$VERBOSE }, - "perl" => \$PERL, - "eval|e=s" => sub { trace_eval $_[1] }, - "use|M=s" => sub { trace_module $_[1] }, - "boot=s" => sub { cmd_boot $_[1] }, - "add=s" => sub { cmd_add $_[1], 0 }, - "addbin=s" => sub { cmd_add $_[1], 1 }, - "static" => sub { $STATIC = 1 }, - "<>" => sub { cmd_file $_[0] }, + "strip=s" => \$STRIP, + "verbose|v" => sub { ++$VERBOSE }, + "quiet|q" => sub { --$VERBOSE }, + "perl" => \$PERL, + "app=s" => \$APP, + "eval|e=s" => sub { trace_eval $_[1] }, + "use|M=s" => sub { trace_module $_[1] }, + "boot=s" => sub { cmd_boot $_[1] }, + "add=s" => sub { cmd_add $_[1], 0 }, + "addbin=s" => sub { cmd_add $_[1], 1 }, + "static" => sub { $STATIC = 1 }, + "staticlib=s" => sub { cmd_staticlib $_[1] }, + "<>" => sub { cmd_file $_[0] }, or exit 1; +die "cannot specify both --app and --perl\n" + if $PERL and defined $APP; + my $data; my @index; my @order = sort { @@ -613,12 +632,6 @@ XSRETURN ($varpfx\_count); } -static char *args[] = { - "staticperl", - "-e", - "0" -}; - EOF ############################################################################# @@ -667,7 +680,39 @@ ############################################################################# # optional perl_init/perl_destroy -if ($PERL) { +if ($APP) { + print $fh <