Clean up set_toolchain_binary

This commit is contained in:
Eryn Wells 2014-01-30 21:01:20 -08:00
parent 4ab61d591a
commit d4cf547683

View file

@ -38,6 +38,7 @@ BUILD_CMDS = False
import os import os
import os.path import os.path
import SCons.Errors
def which(program): def which(program):
@ -69,30 +70,20 @@ def get_bool_argument(arg):
return True return True
def set_compiler(env, var, user_compiler, compilers, compiler_string=None): def set_toolchain_binary(env, var, user_binary, binaries=()):
if not compiler_string: if user_binary and which(user_binary):
compiler_string = 'compiler' env[var] = user_binary
if user_compiler: return
if which(user_compiler): for c in binaries:
env[var] = user_compiler if which(c):
else: env[var] = c
raise SCons.Errors.UserError('The given {} does not exist. ' break
':-('.format(compiler_string))
else:
for c in compilers:
if which(c):
env[var] = c
break
else:
raise SCons.Errors.UserError(("Couldn't find a viable {}. "
"Have you installed one?").format(
compiler_string))
common_env = Environment() common_env = Environment()
set_compiler(common_env, 'CC', CC, ('clang', 'gcc'), 'C compiler') set_toolchain_binary(common_env, 'CC', CC, ('clang', 'gcc'))
set_compiler(common_env, 'CXX', CXX, ('clang++', 'g++'), 'C++ compiler') set_toolchain_binary(common_env, 'CXX', CXX, ('clang++', 'g++'))
set_compiler(common_env, 'AS', AS, ('gas'), 'assembler') set_toolchain_binary(common_env, 'AS', AS)
set_compiler(common_env, 'LINK', LINK, ('ld'), 'linker') set_toolchain_binary(common_env, 'LINK', LINK)
common_env.Append(CFLAGS='{} -std=c99'.format(CFLAGS)) common_env.Append(CFLAGS='{} -std=c99'.format(CFLAGS))
common_env.Append(CXXFLAGS='{} -std=c++11'.format(CFLAGS)) common_env.Append(CXXFLAGS='{} -std=c++11'.format(CFLAGS))