from os import path def options(opt): opt.load('compiler_cxx') opt.add_option('--checker', action='store', default='all') def configure(conf): conf.env.CXX = 'clang++' conf.load('compiler_cxx') conf.env.append_value('DEFINES', ['__STDC_CONSTANT_MACROS', '__STDC_LIMIT_MACROS']) conf.check_cfg(msg='Checking for llvm config', path='llvm-config', package='', args='--cxxflags --ldflags --libs --system-libs', uselib_store='LLVM') clang_libs = ['clang', 'clangARCMigrate', 'clangAST', 'clangASTMatchers', 'clangAnalysis', 'clangApplyReplacements', 'clangBasic', 'clangCodeGen', 'clangDriver', 'clangDynamicASTMatchers', 'clangEdit', 'clangFormat', 'clangFrontend', 'clangFrontendTool', 'clangIndex', 'clangLex', 'clangParse', 'clangQuery', 'clangRename', 'clangRewrite', 'clangRewriteFrontend', 'clangSema', 'clangSerialization', 'clangStaticAnalyzerCheckers', 'clangStaticAnalyzerCore', 'clangStaticAnalyzerFrontend', 'clangTooling', 'clangToolingCore'] conf.check_cxx(msg='Checking for clang++', uselib_store='CLANG', use=['LLVM'], lib=clang_libs) def build(bld): checkers = [] if bld.options.checker == 'all': checkers = bld.path.ant_glob('*.cpp') else: checkers = [ bld.path.make_node(bld.options.checker) ] for checker in checkers: source = [ checker ] target = checker.change_ext('.dylib') bld.shlib(source=source, target=target, use=['CLANG', 'LLVM'], cppflags=['-fno-rtti', '-std=c++11', '-fPIC']) # vim:filetype=python