From 9b6910c348fd9870d63e9d0736717f00bb2fbdf6 Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Wed, 18 May 2011 20:04:20 +0000 Subject: thumb-cc.py: simplify git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29897 a1c6a512-1295-4272-9138-f99709370657 --- tools/thumb-cc.py | 70 +++++++++++++------------------------------------------ 1 file changed, 16 insertions(+), 54 deletions(-) (limited to 'tools') diff --git a/tools/thumb-cc.py b/tools/thumb-cc.py index 1015284447..2c83474695 100755 --- a/tools/thumb-cc.py +++ b/tools/thumb-cc.py @@ -7,7 +7,7 @@ # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # -# Copyright © 2010 Rafaël Carré +# Copyright © 2010-2011 Rafaël Carré # # 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) -- cgit v1.2.3