1014
|
1 #!/bin/bash
|
|
2 LANG="$1"
|
|
3
|
|
4 case "$LANG" in
|
|
5 c)
|
|
6 HEAD='#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/types.h>\n#include <unistd.h>\nint main(int argc, char **argv) {'
|
|
7 TAIL='; return 0; }'
|
|
8 EXT='c'
|
|
9 GCC='gcc'
|
|
10 FLAGS='-std=gnu99'
|
|
11 ;;
|
|
12
|
|
13 c++)
|
|
14 HEAD='#include <iostream>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\nusing namespace std;\nint main(int argc, char **argv) {'
|
|
15 TAIL='; return 0; }'
|
|
16 EXT='cc'
|
|
17 GCC='g++'
|
|
18 FLAGS='-std=gnu++0x'
|
|
19 ;;
|
|
20
|
|
21 assembler)
|
|
22 HEAD='.globl main; main: pushq %rbp; movq %rsp, %rbp;'
|
|
23 TAIL='movl $0, %eax; leave; ret;'
|
|
24 EXT='s'
|
|
25 GCC='gcc'
|
|
26 FLAGS=''
|
|
27 ;;
|
|
28
|
|
29 java)
|
|
30 HEAD='class Main { public static void main(String[] args) {'
|
|
31 TAIL='; } }'
|
|
32 EXT='java'
|
|
33 GCC='gcj'
|
|
34 FLAGS='--main=Main'
|
|
35 ;;
|
|
36 esac
|
|
37
|
|
38 SOURCE="/tmp/source.$$.$EXT"
|
|
39
|
|
40 (
|
|
41 echo -e "$HEAD"
|
|
42 cat "$2"
|
|
43 echo "$TAIL"
|
|
44 ) > "$SOURCE"
|
|
45
|
|
46 "$GCC" -x "$LANG" "$SOURCE" $FLAGS -o /tmp/compiled.$$ 2> /dev/null ||
|
|
47 "$GCC" -x "$LANG" "$2" $FLAGS -o /tmp/compiled.$$ 2> /dev/null ||
|
|
48 echo 'Does not compile.'
|
|
49 rm -f "$SOURCE"
|
|
50
|
|
51 ulimit -u 3
|
|
52 if [ -x /tmp/compiled.$$ ] ; then /tmp/compiled.$$; fi 2>&1
|
|
53 rm -f /tmp/compiled.$$
|