diff options
Diffstat (limited to 'minic/mcc')
-rwxr-xr-x | minic/mcc | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/minic/mcc b/minic/mcc index c153370..dd662f1 100755 --- a/minic/mcc +++ b/minic/mcc @@ -1,37 +1,40 @@ -#!/usr/bin/python2 - -import sys -import subprocess - -root=".." -ssafile = '/tmp/minic.ssa' -asmfile = '/tmp/minic.s' -cc = '/usr/bin/gcc' - -ccargs = [] -cfile = None - -for a in sys.argv[1:]: - if a[0] == '-': - ccargs.append(a) - else: - cfile = a - -if not cfile: - print >>sys.stderr, "usage: mcc [LDFLAGS] file.c" - sys.exit(1) - -ret = subprocess.call(root + "/minic/minic < " + cfile + " >" + ssafile, shell=True) -if not ret == 0: - print >>sys.stderr, "minic failed (%d)" % ret - sys.exit(1) - -ret = subprocess.call(root + "/lisc/lisc <" + ssafile + " >" + asmfile, shell=True) -if not ret == 0: - print >>sys.stderr, "backend failed (%d)" % ret - sys.exit(1) - -ret = subprocess.call([cc, asmfile] + ccargs) -if not ret == 0: - print >>sys.stderr, "linking failed (%d)" % ret - sys.exit(1) +#!/bin/sh + +usage() +{ + echo "usage: mcc [LDFLAGS] file.c" >&2 + exit 1 +} + +for i +do + case $i in + -*) + flags="$flags $i" + ;; + *) + if ! test -z $file + then + usage + fi + file=$i + ;; + esac +done + +if test -z $file +then + usage +fi + + +../minic/minic < $file > /tmp/minic.ssa && +../lisc/lisc < /tmp/minic.ssa > /tmp/minic.s && +cc $flags /tmp/minic.s + +if test $? -ne 0 +then + echo "error processing file $file" >&2 +fi + + |