def cmake_builder(target): check_repo_state(conf.workspace) if not os.getenv("TESTING"): dep.parse_dependencies([here + "/clang_build_dependencies.dep"]) env = [] dyld_path = "" if conf.lto and conf.liblto(): dyld_path = conf.liblto() env.extend(["env", "DYLD_LIBRARY_PATH=" + dyld_path]) cmake_cmd = env + [ "/usr/local/bin/cmake", "-G", "Ninja", '-DCMAKE_MAKE_PROGRAM=' + NINJA, "-DCMAKE_INSTALL_PREFIX=" + conf.installdir(), conf.srcdir() ] compiler_flags = conf.compiler_flags max_parallel_links = conf.max_parallel_links if conf.lto: if conf.thinlto: cmake_cmd += ["-DLLVM_PARALLEL_LINK_JOBS=1"] else: cmake_cmd += ["-DLLVM_PARALLEL_LINK_JOBS=" + str(max_link_jobs())] cmake_cmd += ['-DLLVM_BUILD_EXAMPLES=Off'] if not max_parallel_links: max_parallel_links = 1 if dyld_path: cmake_cmd += ['-DDYLD_LIBRARY_PATH=' + dyld_path] else: cmake_cmd += ['-DLLVM_ENABLE_LTO=Off'] cmake_cmd += ['-DLLVM_BUILD_EXAMPLES=On'] cmake_cmd += ["-DCMAKE_MACOSX_RPATH=On"] libtool_path = query_sys_tool("macosx", "libtool") if libtool_path: cmake_cmd += ['-DCMAKE_LIBTOOL=' + libtool_path] if compiler_flags: cmake_cmd += [ "-DCMAKE_C_FLAGS={}".format(' '.join(compiler_flags)), "-DCMAKE_CXX_FLAGS={}".format(' '.join(compiler_flags)) ] if max_parallel_links is not None: cmake_cmd += [ "-DLLVM_PARALLEL_LINK_JOBS={}".format(max_parallel_links) ] if conf.CC(): cmake_cmd += [ '-DCMAKE_C_COMPILER=' + conf.CC(), '-DCMAKE_CXX_COMPILER=' + conf.CC() + "++" ] if conf.cmake_build_type: cmake_cmd += ["-DCMAKE_BUILD_TYPE=" + conf.cmake_build_type] elif conf.debug: cmake_cmd += ["-DCMAKE_BUILD_TYPE=Debug"] else: cmake_cmd += ["-DCMAKE_BUILD_TYPE=Release"] cmake_cmd += ["-DLLVM_BUILD_EXTERNAL_COMPILER_RT=On"] for flag in conf.cmake_flags: cmake_cmd += [flag] if conf.assertions: cmake_cmd += ["-DLLVM_ENABLE_ASSERTIONS=On"] else: cmake_cmd += ["-DLLVM_ENABLE_ASSERTIONS=Off"] if conf.globalisel: cmake_cmd += ["-DLLVM_BUILD_GLOBAL_ISEL=ON"] if conf.svn_rev != 'NONE': cmake_cmd += ["-DSVN_REVISION={}".format(conf.svn_rev)] lit_flags = [ '--xunit-xml-output=testresults.xunit.xml', '-v', '--timeout=600' ] if conf.max_parallel_tests: lit_flags += ['-j', conf.max_parallel_tests] cmake_cmd += ['-DLLVM_LIT_ARGS={}'.format(' '.join(lit_flags))] ninja_cmd = env + ["/usr/local/bin/ninja", '-v'] if conf.j_level is not None: ninja_cmd += ["-j", conf.j_level] if target == 'all' or target == 'build': header("Cmake") run_cmd(conf.builddir(), cmake_cmd) footer() header("Ninja build") # Build all if nothing is passed by the user. passed_target = conf.cmake_build_targets build_target = passed_target if passed_target else ['all'] run_cmd(conf.builddir(), ninja_cmd + build_target) footer() if conf.noinstall: header("Skip install") else: header("Ninja install") run_cmd(conf.builddir(), ninja_cmd + ['install']) build_upload_artifact() footer() # Run all the test targets. ninja_cmd.extend(['-k', '0']) if target == 'all' or target == 'test' or target == 'testlong': header("Ninja test") targets = [ 'check-all' ] if target == 'testlong' or target == 'all' else conf.cmake_test_targets if not targets: # testlong and all do check all, otherwise check and check-clang # unless the user asked for something else. targets = ['check', 'check-clang'] run_cmd(conf.builddir(), ninja_cmd + targets) footer()
def lldb_cmake_builder(target, variant=None): """Do a CMake build of lldb.""" if not os.getenv("TESTING"): dep.parse_dependencies([here + "/clang_build_dependencies.dep"]) test_dir = os.path.join(conf.workspace, 'test') results_file = os.path.join(test_dir, 'results.xml') create_dirs([conf.lldbbuilddir(), test_dir]) cmake_build_type = conf.cmake_build_type if conf.cmake_build_type else 'RelWithDebInfo' # Construct dotest.py arguments. dotest_args = [ '--arch', 'x86_64', '--build-dir', conf.lldbbuilddir() + '/lldb-test-build.noindex', '-t', '--env', 'TERM=vt100' ] dotest_args.extend(conf.dotest_flags) # Construct lit arguments. lit_args = [ '-v', '--time-tests', '--shuffle', '--xunit-xml-output={}'.format(results_file), '-v' ] if conf.max_parallel_tests: lit_args.extend(['-j', conf.max_parallel_tests]) if variant == 'sanitized': lit_args.extend(['--timeout 1200']) # Construct CMake invocation. cmake_cmd = [ "/usr/local/bin/cmake", '-G', 'Ninja', conf.llvmsrcdir(), '-DCMAKE_BUILD_TYPE={}'.format(cmake_build_type), '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON', '-DCMAKE_INSTALL_PREFIX={}'.format(conf.lldbinstalldir()), '-DCMAKE_MAKE_PROGRAM={}'.format(NINJA), '-DLLDB_TEST_USER_ARGS=' + ';'.join(dotest_args), '-DLLDB_ENABLE_PYTHON=On', '-DLLVM_ENABLE_ASSERTIONS:BOOL={}'.format( "TRUE" if conf.assertions else "FALSE"), '-DLLVM_ENABLE_MODULES=On', '-DLLVM_ENABLE_PROJECTS={}'.format( conf.llvm_enable_projects), '-DLLVM_LIT_ARGS={}'.format( ' '.join(lit_args)), '-DLLVM_VERSION_PATCH=99' ] if variant == 'sanitized': cmake_cmd.append('-DLLVM_TARGETS_TO_BUILD=X86') cmake_cmd.append('-DLLVM_USE_SANITIZER=Address;Undefined') # There is no need to compile the lldb tests with an asanified compiler # if we have a host compiler available. if conf.CC(): cmake_cmd.extend([ '-DLLDB_TEST_C_COMPILER=' + conf.CC(), '-DLLDB_TEST_CXX_COMPILER=' + conf.CC() + "++" ]) if conf.compiler_flags: cmake_cmd.extend([ "-DCMAKE_C_FLAGS={}".format(' '.join(conf.compiler_flags)), "-DCMAKE_CXX_FLAGS={}".format(' '.join(conf.compiler_flags)) ]) if conf.lldbtestcompiler(): cmake_cmd.extend([ '-DLLDB_TEST_C_COMPILER=' + conf.lldbtestcompiler(), '-DLLDB_TEST_CXX_COMPILER=' + conf.lldbtestcompiler() + "++" ]) cmake_cmd.extend(conf.cmake_flags) if conf.CC(): cmake_cmd.extend([ '-DCMAKE_C_COMPILER=' + conf.CC(), '-DCMAKE_CXX_COMPILER=' + conf.CC() + "++" ]) header("Clean") delete_module_caches(conf.workspace) footer() if target == 'all' or target == 'configure' or target == 'build': header("Cmake") run_cmd(conf.lldbbuilddir(), cmake_cmd) footer() if target == 'all' or target == 'build': header("Build") run_cmd(conf.lldbbuilddir(), [NINJA, '-v']) footer() if target == 'all' or target == 'install': header("Install") run_cmd(conf.lldbbuilddir(), [NINJA, '-v', 'install']) footer() if target == 'all' or target == 'testlong': header("Run Debug Info Tests") run_cmd(conf.lldbbuilddir(), [NINJA, '-v', 'check-debuginfo']) footer() if target == 'all' or target == 'test' or target == 'testlong': header("Run Tests") run_cmd(conf.lldbbuilddir(), ['/usr/bin/env', 'TERM=vt100', NINJA, '-v', 'check-lldb']) footer() for test_target in conf.cmake_test_targets: header("Run Custom Test: {0}".format(test_target)) run_cmd(conf.lldbbuilddir(), [NINJA, '-k', '0', '-v', test_target]) footer()
def test_simple_brew(): """End-to-end test of a simple brew dependency.""" dep.parse_dependencies(['./tests/Dependencies0'])
def cmake_builder(target): check_repo_state(conf.workspace) if not os.getenv("TESTING"): dep.parse_dependencies([here + "/clang_build_dependencies.dep"]) env = [] dyld_path = "" if conf.lto and conf.liblto(): dyld_path = conf.liblto() env.extend(["env", "DYLD_LIBRARY_PATH=" + dyld_path]) cmake_cmd = env + ["/usr/local/bin/cmake", "-G", "Ninja", '-DCMAKE_MAKE_PROGRAM=' + NINJA, "-DCMAKE_INSTALL_PREFIX=" + conf.installdir(), conf.srcdir()] compiler_flags = conf.compiler_flags max_parallel_links = conf.max_parallel_links if conf.lto: if conf.thinlto: cmake_cmd += ["-DLLVM_PARALLEL_LINK_JOBS=1"] else: cmake_cmd += ["-DLLVM_PARALLEL_LINK_JOBS=" + str(max_link_jobs())] cmake_cmd += ['-DLLVM_BUILD_EXAMPLES=Off'] if not max_parallel_links: max_parallel_links = 1 if dyld_path: cmake_cmd += ['-DDYLD_LIBRARY_PATH=' + dyld_path] else: cmake_cmd += ['-DLLVM_ENABLE_LTO=Off'] cmake_cmd += ['-DLLVM_BUILD_EXAMPLES=On'] cmake_cmd += ["-DCMAKE_MACOSX_RPATH=On"] libtool_path = query_sys_tool("macosx", "libtool") if libtool_path: cmake_cmd += ['-DCMAKE_LIBTOOL=' + libtool_path] if compiler_flags: cmake_cmd += ["-DCMAKE_C_FLAGS={}".format(' '.join(compiler_flags)), "-DCMAKE_CXX_FLAGS={}".format(' '.join(compiler_flags))] if max_parallel_links is not None: cmake_cmd += ["-DLLVM_PARALLEL_LINK_JOBS={}".format(max_parallel_links)] if conf.CC(): cmake_cmd += ['-DCMAKE_C_COMPILER=' + conf.CC(), '-DCMAKE_CXX_COMPILER=' + conf.CC() + "++"] if conf.cmake_build_type: cmake_cmd += ["-DCMAKE_BUILD_TYPE=" + conf.cmake_build_type] elif conf.debug: cmake_cmd += ["-DCMAKE_BUILD_TYPE=Debug"] else: cmake_cmd += ["-DCMAKE_BUILD_TYPE=Release"] cmake_cmd += ["-DLLVM_BUILD_EXTERNAL_COMPILER_RT=On"] for flag in conf.cmake_flags: cmake_cmd += [flag] if conf.assertions: cmake_cmd += ["-DLLVM_ENABLE_ASSERTIONS=On"] else: cmake_cmd += ["-DLLVM_ENABLE_ASSERTIONS=Off"] if conf.globalisel: cmake_cmd += ["-DLLVM_BUILD_GLOBAL_ISEL=ON"] if conf.svn_rev != 'NONE': cmake_cmd += ["-DSVN_REVISION={}".format(conf.svn_rev)] lit_flags = ['--xunit-xml-output=testresults.xunit.xml', '-v', '--timeout=600'] if conf.max_parallel_tests: lit_flags += ['-j', conf.max_parallel_tests] cmake_cmd += ['-DLLVM_LIT_ARGS={}'.format(' '.join(lit_flags))] ninja_cmd = env + ["/usr/local/bin/ninja", '-v'] if conf.j_level is not None: ninja_cmd += ["-j", conf.j_level] if target == 'all' or target == 'build': header("Cmake") run_cmd(conf.builddir(), cmake_cmd) footer() header("Ninja build") # Build all if nothing is passed by the user. passed_target = conf.cmake_build_targets build_target = passed_target if passed_target else ['all'] run_cmd(conf.builddir(), ninja_cmd + build_target) footer() if conf.noinstall: header("Skip install") else: header("Ninja install") run_cmd(conf.builddir(), ninja_cmd + ['install']) build_upload_artifact() footer() # Run all the test targets. ninja_cmd.extend(['-k', '0']) if target == 'all' or target == 'test' or target == 'testlong': header("Ninja test") targets = [ 'check-all'] if target == 'testlong' or target == 'all' else conf.cmake_test_targets if not targets: # testlong and all do check all, otherwise check and check-clang # unless the user asked for something else. targets = ['check', 'check-clang'] run_cmd(conf.builddir(), ninja_cmd + targets) footer()