given ($format){
exec 'gcc', qw/-DONLINE_JUDGE -std=gnu11 -Wall -Wextra -lm -O2 -o/, $basename, $name when 'C';
exec 'g++', qw/-DONLINE_JUDGE -std=gnu++11 -Wall -Wextra -lm -O2 -o/, $basename, $name when 'CPP';
+
when ('MONO') {
system 'gmcs', '-d:ONLINE_JUDGE', $name and die "gmcs failed: errno=$! return=$?";
rename "$basename.exe", $basename;
chmod 0755, $basename;
}
- exec 'gmcs', '-d:ONLINE_JUDGE', $name when 'MONO';
+ exec 'gmcs', '-d:ONLINE_JUDGE', $name when 'MONO';
when ('JAVA') {
unlink $_ for <*.class>;
system 'javac', $name and die "javac failed: errno=$! return=$?";
exec 'go', qw/build -compiler gc/, $name when 'GOLANG';
exec 'go', qw/build -compiler gccgo/, $name, when 'GCCGO';
exec 'ghc', qw/-DONLINE_JUDGE -Wall -O2 -o/, $basename, $name when 'HASKELL';
+ exec 'rustc', qw/-O -o/, $basename, $name when 'RUST';
+ exec 'ocamlc', qw/-o/, $basename, $name when 'OCAML';
+
+ when ('BRAINFUCK') {
+ system 'bfc', $name and die "bfc failed: errno=$! return=$?";
+ rename "a.out", $basename;
+ chmod 0755, $basename;
+ exit
+ }
- when ([qw/PERL PYTHON SBCL/]){
+ when ([qw/GOLFSCRIPT JULIA PERL PHP PYTHON RUBY SBCL/]){
open IN, '<', $name;
open OUT, '>', $basename;
- print OUT "#!/usr/bin/perl\n" if $_ eq 'PERL';
- print OUT "#!/usr/bin/python\n" if $_ eq 'PYTHON';
- print OUT "#!/usr/bin/sbcl --script\n" if $_ eq 'SBCL';
+ print OUT "#!/usr/bin/golfscript\n" if $_ eq 'GOLFSCRIPT';
+ print OUT "#!/usr/bin/julia -O\n" if $_ eq 'JULIA';
+ print OUT "#!/usr/bin/perl\n" if $_ eq 'PERL';
+ print OUT "#!/usr/bin/php -d ONLINE_JUDGE=true\n" if $_ eq 'PHP';
+ print OUT "#!/usr/bin/python\n" if $_ eq 'PYTHON';
+ print OUT "#!/usr/bin/ruby\n" if $_ eq 'RUBY';
+ print OUT "#!/usr/bin/sbcl --script\n" if $_ eq 'SBCL';
print OUT while <IN>;
close OUT;
close IN;
=head1 DESCRIPTION
-gruntmaster-compile is a very simple frontend to various comilers. It takes two arguments: the file format and the file name, and produces a compiled executable. The executable's name is the basename of the input file.
+gruntmaster-compile is a very simple frontend to various compilers. It takes two arguments: the file format and the file name, and produces a compiled executable. The executable's name is the basename of the input file.
Compile commands for each format:
=over
+=item BRAINFUCK
+
+ bfc $input
+
=item C
gcc -DONLINE_JUDGE -std=gnu11 -Wall -Wextra -O2 -o $output $input
javac $input
+=item JULIA
+
+ cp $input $output
+
=item PASCAL
fpc -dONLINE_JUDGE -O2 $input
ghc -DONLINE_JUDGE -Wall -O2 -o $output $input
+=item OCAML
+
+ ocamlc -o $output $input
+
+=item RUST
+
+ rustc -O -o $output $input
+
=item PERL
cp $input $output
+=item PHP
+
+ cp $input $output
+
=item PYTHON
cp $input $output