base-cpp/site_scons/site_tools/program.py

46 lines
1.1 KiB
Python

# program.py
# Eryn Wells <eryn@erynwells.me>
'''
SCons tool for working with Programs.
'''
def _program(env, name):
return env['PROGRAMS'].get(name)
def _register_program(env, name, program):
env['PROGRAMS'][name] = program
def _build_program(env):
original_builder = env.Program
def builder(env, program, sources, local_libs=None, *args, **kwargs):
# local_libs is an array of names of libs built in the local project.
# These will be looked up in the environment and added to the LIBS
# array, if present.
# if local_libs:
# local_libs = map(lambda lib: env.lib(lib), local_libs)
# try:
# kwargs['LIBS'].extend(local_libs)
# except KeyError:
# kwargs['LIBS'] = local_libs
prog = original_builder(program, sources, *args, **kwargs)
register_program(prog)
return prog
return builder
#
# SCons tool interface
#
def generate(env):
env.SetDefault(PROGRAMS={})
env.AddMethod(_build_program(env), 'Program')
env.AddMethod(_program, 'program')
def exists(env):
return True