annotate candide @ 9000:d72aef993623

<oerjan> addquote <hppavilion[1]> I think we need to make Greece an independent country
author HackBot
date Thu, 01 Sep 2016 00:31:47 +0000
parents abfbcd1a21d5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8778
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
1 #!/bin/bash
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
2 # compile c from stdin
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
3 # candide, kinda
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
4
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
5 readinput () {
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
6 while read -r -e || { printf %s "$REPLY"; false; } ; do
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
7 printf '%s\n' "$REPLY"
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
8 done
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
9 }
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
10
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
11 c=$(readinput)
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
12 if ! [[ $c ]] || ! out=$(mktemp); then
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
13 echo Error >&2
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
14 exit 1
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
15 fi
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
16
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
17 # if you don't write 'main' it assumes that you're writing a full program (with free includes)
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
18 # this allows you to use other functions and stuff
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
19 # it will get false positives, but who cares?
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
20 if [[ $c != *main* ]]; then c=$(cat <<SOURCE
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
21 int main(int argc, char *argv[]) {
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
22 $c
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
23 return 0;
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
24 }
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
25 SOURCE
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
26 ); fi
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
27
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
28 # will replace -O0 with the parameters
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
29 gcc -o "$out" -x c -I /hackenv "${@--O0}" /dev/fd/0 <<SOURCE && { "$out" && { rm -f "$out"; true; }; }
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
30 #include "headers" /* precompiled headers */
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
31 $c
abfbcd1a21d5 <fizzie> ` bash ./configure
HackBot
parents:
diff changeset
32 SOURCE