diff options
Diffstat (limited to 'scons-tools/llvm.py')
-rwxr-xr-x | scons-tools/llvm.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/scons-tools/llvm.py b/scons-tools/llvm.py new file mode 100755 index 00000000..2e03caa3 --- /dev/null +++ b/scons-tools/llvm.py @@ -0,0 +1,26 @@ +from SCons.Scanner.Prog import scan +from SCons.Builder import Builder + +def exists(env): + return True + +def add_libraries(target, source, env): + unique = [] + lib_nodes = set() + for x in scan(None, env, tuple(map(env.Dir, env['LIBPATH']))): + if x in lib_nodes: + continue + lib_nodes.add(x) + unique.append(x) + return (target, source + unique) + +def generate(env): + env['BUILDERS']['LLVMDis'] = Builder( + action='${LLVM_ROOT}/llvm-dis -o=$TARGET $SOURCE') + + env['BUILDERS']['LLVMOpt'] = Builder( + action='${LLVM_ROOT}/opt $LLVM_OPT_FLAGS $LLVM_OPT_PASSES -o=$TARGET $SOURCE') + + env['BUILDERS']['LLVMLink'] = Builder( + action='${LLVM_ROOT}/llvm-link -o=$TARGET $SOURCES', + emitter=add_libraries) |