annotate gcccomp @ 5020:fb86bf0b485a

<oerjan> fetch http://oerjan.nvg.org/gcccomp
author HackBot
date Mon, 06 Oct 2014 05:38:14 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5020
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
1 #!/bin/bash
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
2 LANG="$1"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
3 echo >>"$2"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
4
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
5 case "$LANG" in
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
6 c)
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
7 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) {\nint main(void) { printf("Calling main from itself not supported.\n"); exit(1); }\n'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
8 TAIL='; return 0; }'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
9 EXT='c'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
10 GCC='gcc'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
11 FLAGS='-std=gnu99'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
12 ;;
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
13
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
14 c++)
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
15 HEAD='#include <iostream>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\nusing namespace std;\nint main(int argc, char **argv) {'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
16 TAIL='; return 0; }'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
17 EXT='cc'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
18 GCC='g++'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
19 FLAGS='-std=gnu++0x'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
20 ;;
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
21
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
22 assembler)
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
23 HEAD='.globl main; main: pushq %rbp; movq %rsp, %rbp;'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
24 TAIL='movl $0, %eax; leave; ret;'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
25 EXT='s'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
26 GCC='gcc'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
27 FLAGS=''
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
28 ;;
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
29
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
30 java)
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
31 HEAD='class Main { public static void main(String[] args) {'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
32 TAIL='; } }'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
33 EXT='java'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
34 GCC='gcj'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
35 FLAGS='--main=Main'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
36 ;;
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
37 esac
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
38
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
39 SOURCE="/tmp/source.$$.$EXT"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
40
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
41 (
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
42 echo -e "$HEAD"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
43 cat "$2"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
44 echo "$TAIL"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
45 ) > "$SOURCE"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
46
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
47 "$GCC" -x "$LANG" "$SOURCE" $FLAGS -o /tmp/compiled.$$ 2> /dev/null ||
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
48 "$GCC" -x "$LANG" "$2" $FLAGS -o /tmp/compiled.$$ 2> /dev/null ||
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
49 echo 'Does not compile.'
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
50 rm -f "$SOURCE"
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
51
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
52 #ulimit -u 3
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
53 if [ -x /tmp/compiled.$$ ] ; then /tmp/compiled.$$; fi 2>&1
fb86bf0b485a <oerjan> fetch http://oerjan.nvg.org/gcccomp
HackBot
parents:
diff changeset
54 rm -f /tmp/compiled.$$