| #! /usr/bin/perl | |
| use Getopt::Long; | |
| use strict; | |
| my @optlist = ("h|help!","v|verbose!","cp|classpath=s","C=s"); | |
| my $result = GetOptions @optlist; | |
| our ($opt_h, $opt_v, $opt_cp, $opt_C); | |
| # -h option || check the number of arguments | |
| if ($opt_h || @ARGV < 1 ) { | |
| usage(); | |
| exit 1; | |
| } | |
| # local variables | |
| my $javac = "javac"; | |
| my $classpath; | |
| my $opts; | |
| my $files; | |
| # set $classpath | |
| $classpath = "\$PLCAFEDIR/plcafe.jar:\$CLASSPATH"; | |
| #$classpath = "\$PLCAFEDIR/lang.jar:\$PLCAFEDIR/builtin.jar:\$PLCAFEDIR/compiler.jar:\$CLASSPATH"; | |
| if ($opt_cp) { # -cp option | |
| $classpath = ".:$opt_cp:$classpath"; | |
| } | |
| # set $opts | |
| if ($opt_C) { # -C option | |
| if ($opt_C =~ /(-cp|-classpath)\s+/) { | |
| &error("can not use $1 in -C option"); | |
| } | |
| $opts .= $opt_C; | |
| } | |
| # set $files | |
| $files = "@ARGV"; | |
| $files =~ s/(\$)/\\$1/g; | |
| my $cmd = "$javac $opts -classpath $classpath $files"; | |
| &message($cmd); | |
| system($cmd) && error("$cmd fails"); | |
| exit 0; | |
| sub usage { | |
| print "\nUsage: $0 [-options] [source files]\n"; | |
| print "\n"; | |
| print "where options support:\n\n"; | |
| print "\t-h -help : print this help\n"; | |
| print "\t-v -verbose : enable verbose output\n"; | |
| print "\t-cp -classpath <class search path of directories and zip/jar files>\n"; | |
| print "\t : A : separated list of directories and zip/jar files.\n"; | |
| print "\t-C option : option must be enclosed by '.\n"; | |
| print "\t : pass option to the Java Compiler\n"; | |
| print "\t : (ex. -C '-deprecation')\n"; | |
| print "\n"; | |
| } | |
| sub message { | |
| my ($x) = @_; | |
| if ($opt_v) { # check -v option | |
| print "\% $x\n"; | |
| } | |
| } | |
| sub error { | |
| my ($x) = @_; | |
| print "\% ERROR: $x: $0\n"; | |
| exit(1); | |
| } |