diff options
| author | Rafaël Carré <rafael.carre@gmail.com> | 2011-05-18 20:04:20 +0000 |
|---|---|---|
| committer | Rafaël Carré <rafael.carre@gmail.com> | 2011-05-18 20:04:20 +0000 |
| commit | 9b6910c348fd9870d63e9d0736717f00bb2fbdf6 (patch) | |
| tree | 6fd7dce073d2cb2a93082fd38152f73ee81d3a1f | |
| parent | 7eb0db250cc1cfe54d7c061e7ffa65b34a058c1d (diff) | |
| download | rockbox-9b6910c348fd9870d63e9d0736717f00bb2fbdf6.zip rockbox-9b6910c348fd9870d63e9d0736717f00bb2fbdf6.tar.gz rockbox-9b6910c348fd9870d63e9d0736717f00bb2fbdf6.tar.bz2 rockbox-9b6910c348fd9870d63e9d0736717f00bb2fbdf6.tar.xz | |
thumb-cc.py: simplify
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29897 a1c6a512-1295-4272-9138-f99709370657
| -rwxr-xr-x | tools/thumb-cc.py | 70 |
1 files changed, 16 insertions, 54 deletions
diff --git a/tools/thumb-cc.py b/tools/thumb-cc.py index 1015284..2c83474 100755 --- a/tools/thumb-cc.py +++ b/tools/thumb-cc.py @@ -7,7 +7,7 @@ # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # -# Copyright © 2010 Rafaël Carré <rafael.carre@gmail> +# Copyright © 2010-2011 Rafaël Carré <rafael.carre@gmail> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -16,65 +16,27 @@ # # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY # KIND, either express or implied. -# - -import sys -import os -import subprocess -import tempfile - - -def run_gcc(args): - os.execv(args[0], args) # run real gcc - -def get_output(args): - output = False - for i in args: - if output == True: - return i - elif i == '-o': - output = True - -def try_thumb(args, output): - thumb_args = args + ['-mthumb'] - thumb_args[thumb_args.index('-o') + 1] = output - thumb_gcc = subprocess.Popen(thumb_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (stdout, stderr) = thumb_gcc.communicate() +from sys import argv, stderr, stdout +from subprocess import Popen, PIPE +from os import execv - if thumb_gcc.returncode != 0: # building failed - return False - - # building with thumb succeeded, show our output - #sys.stderr.write(bytes.decode(stderr)) - #sys.stdout.write(bytes.decode(stdout)) - sys.stderr.write(stderr) - sys.stdout.write(stdout) - return True - -##### main - - -args=sys.argv[1:] # remove script path +args = argv[1:] # remove script path for opt in ['-E', '-MM', '-v', '--version']: if opt in args: - run_gcc(args) - -output = get_output(args) -split = output.rsplit('.o', 1) + execv(args[0], args) # not actually compiling -if len(split) == 1: # output doesn't end in .o - run_gcc(args) +if '-o' in args and args.index('-o') < len(args) - 1: + if len(args[args.index('-o') + 1].rsplit('.o', 1)) == 1: + execv(args[0], args) # output doesn't end in .o -dirname = os.path.dirname(output) -thumb_output = tempfile.mktemp(suffix='.o', prefix=split[0], dir=dirname) +args.append('-mthumb-interwork') # thumb-interwork is required +gcc = Popen(args + ['-mthumb'], stdout=PIPE, stderr=PIPE) +(out, err) = gcc.communicate() -args.append('-mthumb-interwork') +if gcc.returncode != 0: # thumb failed, try outputting arm + execv(args[0], args) -if try_thumb(args, thumb_output): - os.rename(thumb_output, output) - sys.exit(0) -else: - #sys.stderr.write('skipped ' + os.path.basename(output) + '\n') - run_gcc(args) +stdout.write(out) +stderr.write(err) |