35 строки
1015 B
Python
Executable File
35 строки
1015 B
Python
Executable File
from SCons.Scanner.Prog import scan
|
|
from SCons.Builder import Builder
|
|
import os
|
|
|
|
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.SetDefault(
|
|
CLANG='clang',
|
|
CLANGXX='clang++',
|
|
LLVM_DIS='llvm-dis',
|
|
LLVM_OPT='opt',
|
|
LLVM_LINK='llvm-link')
|
|
|
|
env['BUILDERS']['LLVMDis'] = Builder(
|
|
action=os.path.join('${LLVM_ROOT}', '$LLVM_DIS') + ' -o $TARGET $SOURCE')
|
|
|
|
env['BUILDERS']['LLVMOpt'] = Builder(
|
|
action=os.path.join('${LLVM_ROOT}', '$LLVM_OPT') + ' $LLVM_OPT_FLAGS $LLVM_OPT_PASSES -o $TARGET $SOURCE')
|
|
|
|
env['BUILDERS']['LLVMLink'] = Builder(
|
|
action=os.path.join('${LLVM_ROOT}', '$LLVM_LINK') + ' -o $TARGET $SOURCES',
|
|
emitter=add_libraries)
|