from buildbot.process.properties import WithProperties

from zorg.buildbot.builders import ClangBuilder
from zorg.buildbot.builders import PollyBuilder
from zorg.buildbot.builders import LLDBBuilder
from zorg.buildbot.builders import SanitizerBuilder
from zorg.buildbot.builders import OpenMPBuilder
from zorg.buildbot.builders import LibcxxAndAbiBuilder
from zorg.buildbot.builders import SphinxDocsBuilder
from zorg.buildbot.builders import ABITestsuitBuilder
from zorg.buildbot.builders import ClangLTOBuilder
from zorg.buildbot.builders import UnifiedTreeBuilder
from zorg.buildbot.builders import CUDATestsuiteBuilder
from zorg.buildbot.builders import AOSPBuilder
from zorg.buildbot.builders import AnnotatedBuilder
from zorg.buildbot.builders import LLDPerformanceTestsuite
from zorg.buildbot.builders import FuchsiaBuilder
from zorg.buildbot.builders import XToolchainBuilder

# Plain LLVM builders.
def _get_llvm_builders():
    return [
        ]

# Clang fast builders.
def _get_clang_fast_builders():
    return [
        {'name': "clang-x86_64-debian-fast",
         'mergeRequests': False,
         'slavenames':["gribozavr4"],
         'builddir':"clang-x86_64-debian-fast",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        llvm_srcdir="llvm.src",
                        obj_dir="llvm.obj",
                        clean=True,
                        depends_on_projects=['llvm','clang','clang-tools-extra','compiler-rt'],
                        extra_configure_args=[
                            "-DCOMPILER_RT_BUILD_BUILTINS:BOOL=OFF",
                            "-DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF",
                            "-DCOMPILER_RT_BUILD_XRAY:BOOL=OFF",
                            "-DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF",
                            "-DCMAKE_C_FLAGS=-Wdocumentation -Wno-documentation-deprecated-sync",
                            "-DCMAKE_CXX_FLAGS=-std=c++11 -Wdocumentation -Wno-documentation-deprecated-sync",
                        ],
                        env={
                            'PATH':'/home/llvmbb/bin/clang-latest/bin:/home/llvmbb/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin',
                            'CC': 'ccache clang', 'CXX': 'ccache clang++', 'CCACHE_CPP2': 'yes',
                        })},

        {'name': "clang-x86_64-debian-new-pass-manager-fast",
         'slavenames':["gribozavr4"],
         'builddir':"clang-x86_64-debian-new-pass-manager-fast",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        llvm_srcdir="llvm.src",
                        obj_dir="llvm.obj",
                        clean=True,
                        depends_on_projects=['llvm','clang','clang-tools-extra','compiler-rt'],
                        extra_configure_args=[
                            "-DCOMPILER_RT_BUILD_BUILTINS:BOOL=OFF",
                            "-DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF",
                            "-DCOMPILER_RT_BUILD_XRAY:BOOL=OFF",
                            "-DCOMPILER_RT_INCLUDE_TESTS:BOOL=OFF",
                            "-DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=ON",
                            "-DCMAKE_C_FLAGS=-Wdocumentation -Wno-documentation-deprecated-sync",
                            "-DCMAKE_CXX_FLAGS=-std=c++11 -Wdocumentation -Wno-documentation-deprecated-sync",
                        ],
                        env={
                            'PATH':'/home/llvmbb/bin/clang-latest/bin:/home/llvmbb/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin',
                            'CC': 'ccache clang', 'CXX': 'ccache clang++', 'CCACHE_CPP2': 'yes',
                        })},

        {'name': "llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast",
         'mergeRequests': False,
         'slavenames': ["ps4-buildslave4"],
         'builddir': "llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        depends_on_projects=['llvm','clang','clang-tools-extra','lld'],
                        extra_configure_args=[
                            "-DCMAKE_C_COMPILER=clang",
                            "-DCMAKE_CXX_COMPILER=clang++",
                            "-DLLVM_BUILD_TESTS=ON",
                            "-DLLVM_BUILD_EXAMPLES=ON",
                            "-DCLANG_BUILD_EXAMPLES=ON",
                            "-DLLVM_TARGETS_TO_BUILD=X86",
                            "-DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-scei-ps4",
                            "-DCMAKE_C_FLAGS=-Wdocumentation -Wno-documentation-deprecated-sync",
                            "-DCMAKE_CXX_FLAGS=-std=c++11 -Wdocumentation -Wno-documentation-deprecated-sync",
                            "-DLLVM_LIT_ARGS=-v -j36"],
                        env={'PATH':'/opt/llvm_37/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'})},

        {'name': "llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast",
         'mergeRequests': True,
         'slavenames': ["ps4-buildslave2"],
         'builddir': "llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaWithMSVCBuildFactory(
                        vs="autodetect",
                        depends_on_projects=['llvm','clang','clang-tools-extra','lld'],
                        extra_configure_args=[
                            "-DLLVM_BUILD_TESTS=ON",
                            "-DLLVM_BUILD_EXAMPLES=ON",
                            "-DCLANG_BUILD_EXAMPLES=ON",
                            "-DLLVM_TARGETS_TO_BUILD=X86",
                            "-DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-scei-ps4",
                            "-DLLVM_LIT_ARGS=-v -j80"])},

        {'name': "llvm-clang-x86_64-expensive-checks-win",
         'slavenames':["ps4-buildslave2"],
         'builddir':"llvm-clang-x86_64-expensive-checks-win",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaWithMSVCBuildFactory(
                      vs="autodetect",
                      clean=True,
                      extra_configure_args=["-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON",
                                            "-DLLVM_ENABLE_WERROR=OFF",
                                            "-DCMAKE_BUILD_TYPE=Debug",
                                            "'-DLLVM_LIT_ARGS=-vv'"])},

        {'name': "llvm-clang-x86_64-expensive-checks-ubuntu",
         'slavenames': ["as-builder-4"],
         'builddir':"llvm-clang-x86_64-expensive-checks-ubuntu",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                      depends_on_projects=["llvm"],
                      clean=True,
                      extra_configure_args=["-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON",
                                            "-DLLVM_ENABLE_WERROR=OFF",
                                            "-DCMAKE_BUILD_TYPE=Debug",
                                            "-DCMAKE_CXX_FLAGS='-U_GLIBCXX_DEBUG'",
                                            "'-DLLVM_LIT_ARGS=-vv -j32'"])},

        {'name': "llvm-clang-x86_64-expensive-checks-debian",
         'mergeRequests': False,
         'slavenames': ["gribozavr4"],
         'builddir':"llvm-clang-x86_64-expensive-checks-debian",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                      depends_on_projects=["llvm"],
                      clean=True,
                      extra_configure_args=["-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON",
                                            "-DLLVM_ENABLE_WERROR=OFF",
                                            "-DCMAKE_BUILD_TYPE=Release",
                                            "-DCMAKE_CXX_FLAGS=-U_GLIBCXX_DEBUG",
                                            "-DLLVM_LIT_ARGS=-v -vv -j96"],
                      env={
                          'PATH':'/home/llvmbb/bin/clang-latest/bin:/home/llvmbb/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin',
                          'CC': 'ccache clang', 'CXX': 'ccache clang++', 'CCACHE_CPP2': 'yes',
                      })},

        {'name' : "llvm-clang-x86_64-win-fast",
         'slavenames' : ["as-builder-3"],
         'builddir' : "llvm-clang-x86_64-win-fast",
         'mergeRequests': False,
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaWithMSVCBuildFactory(
                      vs="autodetect",
                      depends_on_projects=['llvm', 'clang'],
                      clean=True,
                      checks=[
                        "check-llvm-unit",
                        "check-clang-unit"],
                      extra_configure_args=[
                        "-DLLVM_ENABLE_WERROR=OFF",
                        "-DLLVM_TARGETS_TO_BUILD=ARM",
                        "-DLLVM_DEFAULT_TARGET_TRIPLE=armv7-unknown-linux-eabihf",
                        "-DLLVM_ENABLE_ASSERTIONS=OFF",
                        "-DLLVM_OPTIMIZED_TABLEGEN=OFF",
                        "-DLLVM_LIT_ARGS='-v --threads=32'"])},

        {'name' : "llvm-clang-win-x-armv7l",
         'slavenames' : ["as-builder-1"],
         'builddir' : "clang-win-x-armv7l",
         'mergeRequests': True,
         'factory': XToolchainBuilder.getCmakeWithMSVCBuildFactory(
                      vs="autodetect",
                      clean=True,
                      checks=[
                        "check-llvm",
                        "check-clang",
                        "check-lld",
                      ],
                      checks_on_target = [
                        ("libunwind",
                         ["python", "bin/llvm-lit.py",
                          "-v", "-vv", "--threads=32",
                          "runtimes/runtimes-bins/libunwind/test"]),
                        ("libc++abi",
                         ["python", "bin/llvm-lit.py",
                          "-v", "-vv", "--threads=32",
                          "runtimes/runtimes-bins/libcxxabi/test"]),
                        ("libc++",
                         ['python', 'bin/llvm-lit.py',
                          '-v', '-vv', '--threads=32',
                          'runtimes/runtimes-bins/libcxx/test',
                         ])
                      ],
                      extra_configure_args=[
                        "-DDEFAULT_SYSROOT=C:/buildbot/.arm-ubuntu",
                        "-DLLVM_LIT_ARGS=-v -vv --threads=32",
                        WithProperties("%(remote_test_host:+-DREMOTE_TEST_HOST=)s%(remote_test_host:-)s"),
                        WithProperties("%(remote_test_user:+-DREMOTE_TEST_USER=)s%(remote_test_user:-)s"),
                      ],
                      cmake_cache="../llvm-project/clang/cmake/caches/CrossWinToARMLinux.cmake")},

        {'name' : "llvm-clang-win-x-aarch64",
         'slavenames' : ["as-builder-2"],
         'builddir' : "clang-win-x-aarch64",
         'mergeRequests': True,
         'factory': XToolchainBuilder.getCmakeWithMSVCBuildFactory(
                      vs="autodetect",
                      clean=True,
                      checks=[
                        "check-llvm",
                        "check-clang",
                        "check-lld",
                      ],
                      checks_on_target = [
                        ("libunwind",
                         ["python", "bin/llvm-lit.py",
                          "-v", "-vv", "--threads=32",
                          "runtimes/runtimes-bins/libunwind/test"]),
                        ("libc++abi",
                         ["python", "bin/llvm-lit.py",
                          "-v", "-vv", "--threads=32",
                          "runtimes/runtimes-bins/libcxxabi/test"]),
                      ],
                      extra_configure_args=[
                        "-DLLVM_TARGETS_TO_BUILD=AArch64",
                        "-DCMAKE_C_COMPILER_TARGET=aarch64-linux-gnu",
                        "-DDEFAULT_SYSROOT=C:/buildbot/.aarch64-ubuntu",
                        "-DLLVM_LIT_ARGS=-v -vv --threads=32",
                        WithProperties("%(remote_test_host:+-DREMOTE_TEST_HOST=)s%(remote_test_host:-)s"),
                        WithProperties("%(remote_test_user:+-DREMOTE_TEST_USER=)s%(remote_test_user:-)s"),
                      ],
                      cmake_cache="../llvm-project/clang/cmake/caches/CrossWinToARMLinux.cmake")},
    ]

# Clang builders.
def _get_clang_builders():
    return [
        {'name': "clang-atom-d525-fedora-rel",
         'slavenames':["atom1-buildbot"],
         'builddir':"clang-atom-d525-fedora-rel",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                       clean=False,
                       checkout_compiler_rt=False,
                       checkout_lld=False,
                       useTwoStage=False,
                       stage1_config='Release',
                       test=True,
                       testStage1=True,
                       extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                         '-DLLVM_USE_INTEL_JITEVENTS=TRUE'])},

        # Cortex-A15 LNT test-suite in Benchmark mode
        {'name' : "clang-native-arm-lnt-perf",
         'slavenames':["linaro-tk1-02"],
         'builddir':"clang-native-arm-lnt-perf",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      test=False,
                      useTwoStage=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-O3 -mcpu=cortex-a15 -mthumb',
                                '--threads=1', '--build-threads=4',
                                '--use-perf=all',
                                '--benchmarking-only', '--exec-multisample=3',
                                '--exclude-stat-from-submission=compile'],
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM'",
                                        "-DLLVM_PARALLEL_LINK_JOBS=2"],
                      submitURL='http://lnt.llvm.org/submitRun',
                      testerName='LNT-Thumb2v7-A15-O3')},

        # ARMv7 LNT test-suite in test-only mode
        {'name' : "clang-cmake-armv7-lnt",
         'slavenames':["linaro-armv7-lnt"],
         'builddir':"clang-cmake-armv7-lnt",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      test=False,
                      useTwoStage=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a15 -marm',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM'"])},

        ## ARMv7 check-all self-host NEON with CMake builder
        {'name': "clang-cmake-armv7-selfhost-neon",
         'slavenames':["linaro-armv7-selfhost"],
         'builddir':"clang-cmake-armv7-selfhost-neon",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      useTwoStage=True,
                      testStage1=False,
                      extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a15 -marm'",
                                        "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a15 -marm'",
                                        "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"])},

        ## ARMv7 check-all with CMake builder
        {'name': "clang-cmake-armv7-quick",
         'slavenames':["linaro-armv7-quick"],
         'builddir':"clang-cmake-armv7-quick",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"])},

        ## ARMv7 Clang + LLVM run test-suite with GlobalISel enabled
        {'name' : "clang-cmake-armv7-global-isel",
         'slavenames':["linaro-armv7-global-isel"],
         'builddir':"clang-cmake-armv7-global-isel",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      test=True,
                      useTwoStage=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a15 -marm -O0 -mllvm -global-isel -mllvm -global-isel-abort=0',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"])},

        ## ARMv7 check-all self-host with CMake builder
        {'name': "clang-cmake-armv7-selfhost",
         'slavenames':["linaro-armv7-selfhost"],
         'builddir':"clang-cmake-armv7-selfhost",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      useTwoStage=True,
                      testStage1=False,
                      extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a15 -mfpu=vfpv3 -marm'",
                                        "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a15 -mfpu=vfpv3 -marm'",
                                        "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"])},

        ## AArch64 Clang+LLVM check-all + test-suite
        {'name': "clang-cmake-aarch64-quick",
         'slavenames':["linaro-aarch64-quick"],
         'builddir':"clang-cmake-aarch64-quick",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      test=True,
                      useTwoStage=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a57',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"],
               )},

        ## AArch64 Self-hosting Clang+LLVM check-all + LLD + test-suite
        {'name': "clang-cmake-aarch64-lld",
         'slavenames':["linaro-aarch64-lld"],
         'builddir':"clang-cmake-aarch64-lld",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=True,
                      checkout_lld=True,
                      test=True,
                      useTwoStage=True,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a57 -fuse-ld=lld',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a57'",
                                        "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a57'",
                                        "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'",
                                        "-DLLVM_ENABLE_LLD=True"],
               ),
         'category'   : 'lld'},

        ## AArch64 Clang+LLVM run test-suite at -O0 (GlobalISel is now default).
        {'name': "clang-cmake-aarch64-global-isel",
         'slavenames':["linaro-aarch64-global-isel"],
         'builddir':"clang-cmake-aarch64-global-isel",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=False,
                      checkout_lld=False,
                      test=True,
                      useTwoStage=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-O0',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"],
               )},

          ## ARMv7 without neon; check-all 2-stage full compiler-rt + testsuite
          {'name': "clang-cmake-armv7-full",
           'slavenames':["linaro-tk1-06", "linaro-tk1-07", "linaro-tk1-08", "linaro-tk1-09"],
           'builddir':"clang-cmake-armv7-full",
           'factory' : ClangBuilder.getClangCMakeBuildFactory(
                        clean=False,
                        checkout_lld=False,
                        checkout_compiler_rt=True,
                        testStage1=False,
                        useTwoStage=True,
                        runTestSuite=True,
                        testsuite_flags=['--cppflags', '-mcpu=cortex-a15 -mfpu=vfpv3 -marm',
                                         '--threads=4', '--build-threads=4'],
                        extra_cmake_args=["-DCOMPILER_RT_TEST_COMPILER_CFLAGS='-mcpu=cortex-a15 -mfpu=vfpv3 -marm'",
                                          "-DLLVM_TARGETS_TO_BUILD='ARM'",
                                          "-DLLVM_PARALLEL_LINK_JOBS=2"])},

          ## ARMv7 Thumb2 with neon; check-all 2-stage full compiler-rt + testsuite
          {'name': "clang-cmake-thumbv7-full-sh",
           'slavenames':["linaro-tk1-01", "linaro-tk1-03", "linaro-tk1-04", "linaro-tk1-05"],
           'builddir':"clang-cmake-thumbv7-full-sh",
           'factory' : ClangBuilder.getClangCMakeBuildFactory(
                        clean=False,
                        checkout_lld=False,
                        checkout_compiler_rt=True,
                        testStage1=False,
                        useTwoStage=True,
                        runTestSuite=True,
                        testsuite_flags=['--cppflags', '-mcpu=cortex-a15 -mthumb',
                                         '--threads=4', '--build-threads=4'],
                        extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a15 -mthumb'",
                                          "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a15 -mthumb'",
                                          "-DCOMPILER_RT_TEST_COMPILER_CFLAGS='-mcpu=cortex-a15 -mthumb'",
                                          "-DLLVM_TARGETS_TO_BUILD='ARM'",
                                          "-DLLVM_PARALLEL_LINK_JOBS=2"])},

        ## AArch32 Self-hosting Clang+LLVM check-all + LLD + test-suite
        # Sanitizers build disabled due to PR38690
        {'name': "clang-cmake-armv8-lld",
         'slavenames':["linaro-armv8-lld"],
         'builddir':"clang-cmake-armv8-lld",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=True,
                      checkout_lld=True,
                      test=True,
                      useTwoStage=True,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a57 -fuse-ld=lld',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a57'",
                                        "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a57'",
                                        "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'",
                                        "-DCOMPILER_RT_BUILD_SANITIZERS=OFF",
                                        "-DLLVM_ENABLE_LLD=True"],
               ),
         'category'   : 'lld'},

        # AArch64 Clang+LLVM+RT check-all + test-suite + self-hosting
        {'name': "clang-cmake-aarch64-full",
         'slavenames':["linaro-aarch64-full"],
         'builddir':"clang-cmake-aarch64-full",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                      clean=False,
                      checkout_compiler_rt=True,
                      checkout_lld=False,
                      test=True,
                      useTwoStage=True,
                      testStage1=False,
                      runTestSuite=True,
                      testsuite_flags=['--cppflags', '-mcpu=cortex-a57',
                                       '--threads=32', '--build-threads=32'],
                      extra_cmake_args=["-DCMAKE_C_FLAGS='-mcpu=cortex-a57'",
                                        "-DCMAKE_CXX_FLAGS='-mcpu=cortex-a57'",
                                        "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'"],
               )},

        {'name': 'clang-x64-windows-msvc',
         'slavenames': ['windows-gcebot2'],
         'builddir': 'clang-x64-windows-msvc',
         'factory' : AnnotatedBuilder.getAnnotatedBuildFactory(
             script="clang-windows.py",
             depends_on_projects=['llvm', 'clang', 'lld', 'debuginfo-tests'])},

        {'name' : "clang-ppc64be-linux-lnt",
         'slavenames' :["ppc64be-clang-lnt-test"],
         'builddir' :"clang-ppc64be-lnt",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            runTestSuite=True,
                                                            stage1_config='Release',
                                                            nt_flags=['--threads=16', '--build-threads=16'],
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON"]),
         'category' : 'clang'},

        {'name' : "clang-ppc64be-linux-multistage",
         'slavenames' :["ppc64be-clang-multistage-test"],
         'builddir' :"clang-ppc64be-multistage",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=True,
                                                            stage1_config='Release',
                                                            stage2_config='Release',
                                                            extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON']),
         'category' : 'clang'},

        {'name' : "clang-ppc64le-linux-lnt",
         'slavenames' :["ppc64le-clang-lnt-test"],
         'builddir' :"clang-ppc64le-lnt",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            runTestSuite=True,
                                                            stage1_config='Release',
                                                            nt_flags=['--threads=16', '--build-threads=16'],
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON"]),
         'category' : 'clang'},


        {'name' : "clang-ppc64le-linux-multistage",
         'slavenames' :["ppc64le-clang-multistage-test"],
         'builddir' :"clang-ppc64le-multistage",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=True,
                                                            stage1_config='Release',
                                                            stage2_config='Release',
                                                            extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON', '-DBUILD_SHARED_LIBS=ON']),
         'category' : 'clang'},

        {'name': "clang-ppc64be-linux",
         'slavenames':["ppc64be-clang-test"],
         'builddir':"clang-ppc64be",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            stage1_config='Release',
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON"]),
         'category' : 'clang'},

        {'name': "clang-ppc64le-linux",
         'slavenames':["ppc64le-clang-test"],
         'builddir':"clang-ppc64le",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            stage1_config='Release',
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON"]),
         'category' : 'clang'},

        {'name': "clang-ppc64le-rhel",
         'slavenames':["ppc64le-clang-rhel-test"],
         'builddir':"clang-ppc64le-rhel",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(clean=False,
                                                            checkout_clang_tools_extra=True,
                                                            checkout_compiler_rt=True,
                                                            checkout_lld=False,
                                                            checkout_libcxx=False,
                                                            useTwoStage=False,
                                                            runTestSuite=True,
                                                            stage1_config='Release',
                                                            nt_flags=['--threads=16', '--build-threads=16'],
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=On", "-DCMAKE_C_COMPILER=clang",
                                                                              "-DCMAKE_CXX_COMPILER=clang++",
                                                                              "-DCMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN:PATH=/opt/rh/devtoolset-7/root/usr",
                                                                              "-DCMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN:PATH=/opt/rh/devtoolset-7/root/usr",
                                                                              "-DLLVM_BINUTILS_INCDIR=/usr/include", "-DBUILD_SHARED_LIBS=ON", "-DLLVM_ENABLE_WERROR=ON",
                                                                              '-DLLVM_LIT_ARGS="-vj 256"']),
         'category' : 'clang'},

        {'name': "clang-s390x-linux",
         'slavenames':["systemz-1"],
         'builddir':"clang-s390x-linux",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(jobs=4,
                                                            clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            stage1_config='Release',
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON",
                                                                              "-DLLVM_LIT_ARGS='-v -j4 --param run_long_tests=true'"]),
         'category' : 'clang'},

        {'name' : "clang-s390x-linux-multistage",
         'slavenames':["systemz-1"],
         'builddir' :"clang-s390x-linux-multistage",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(jobs=4,
                                                            clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=True,
                                                            stage1_config='Release',
                                                            stage2_config='Release',
                                                            extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON']),
         'category' : 'clang'},

        {'name' : "clang-s390x-linux-lnt",
         'slavenames':["systemz-1"],
         'builddir' :"clang-s390x-linux-lnt",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(jobs=4,
                                                            clean=False,
                                                            checkout_lld=False,
                                                            useTwoStage=False,
                                                            runTestSuite=True,
                                                            stage1_config='Release',
                                                            testsuite_flags=['--threads=4', '--build-threads=4'],
                                                            extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON"]),
         'category' : 'clang'},

        # ABI test-suite with CMake builder
        {'name'          : "clang-x86_64-linux-abi-test",
         'mergeRequests' : False,
         'slavenames'    : ["ps4-buildslave1a"],
         'builddir'      : "clang-x86_64-linux-abi-test",
         'factory'       : ABITestsuitBuilder.getABITestsuitBuildFactory(
                               # TODO: Enable Werror once all the warnings are cleaned.
                               extra_configure_args = ["-DLLVM_ENABLE_WERROR=OFF","-GNinja"])},

        {'name' : "clang-hexagon-elf",
         'slavenames' :["hexagon-build-02", "hexagon-build-03"],
         'builddir' :"clang-hexagon-elf",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
            jobs=16,
            checkout_clang_tools_extra=False,
            checkout_compiler_rt=False,
            checkout_lld=False,
            env={'LD_LIBRARY_PATH': '/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/lib', 'PATH': ['/local/cmake-3.17.0/bin', '${PATH}']},
            extra_cmake_args=[
              "-DCMAKE_BUILD_TYPE:STRING=Release",
              "-DLLVM_TARGETS_TO_BUILD:STRING=Hexagon",
              "-DTARGET_TRIPLE:STRING=hexagon-unknown-elf",
              "-DLLVM_DEFAULT_TARGET_TRIPLE:STRING=hexagon-unknown-elf",
              "-DLLVM_TARGET_ARCH:STRING=hexagon-unknown-elf",
              "-DLLVM_BUILD_RUNTIME:BOOL=OFF",
              "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON",
              "-DLLVM_ENABLE_PIC:BOOL=ON",
              "-DLLVM_ENABLE_ASSERTIONS:BOOL=ON",
              "-DLLVM_INCLUDE_TOOLS:BOOL=ON",
              "-DLLVM_LIT_ARGS:STRING=-v",
              "-DLLVM_ENABLE_LIBCXX:BOOL=ON",
              "-DWITH_POLLY:BOOL=OFF",
              "-DLINK_POLLY_INTO_TOOLS:BOOL=OFF",
              "-DPOLLY_BUILD_SHARED_LIB:BOOL=OFF",
              "-DCMAKE_C_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang",
              "-DCMAKE_CXX_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++"])},

        ## X86_64 AVX2 Clang+LLVM check-all + test-suite
        {'name': "clang-cmake-x86_64-avx2-linux",
         'slavenames':["avx2-intel64"],
         'builddir':"clang-cmake-x86_64-avx2-linux",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
             clean=False,
             checkout_clang_tools_extra=False,
             checkout_compiler_rt=False,
             checkout_lld=False,
             test=True,
             useTwoStage=False,
             runTestSuite=True,
             nt_flags=['--cflag', '-march=broadwell', '--threads=80', '--build-threads=80'],
             env={'PATH':'/usr/bin/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'},
             extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON",
                               "-DCMAKE_C_FLAGS='-march=broadwell'",
                               "-DCMAKE_CXX_FLAGS='-march=broadwell'",
                               "-DLLVM_TARGETS_TO_BUILD='X86'"])},

        ## X86_64 AVX2 LNT test-suite in Benchmark mode
        {'name': "clang-cmake-x86_64-avx2-linux-perf",
         'slavenames':["avx2-intel64"],
         'builddir':"clang-cmake-x86_64-avx2-linux-perf",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
             clean=False,
             checkout_clang_tools_extra=False,
             checkout_compiler_rt=False,
             checkout_lld=False,
             test=False,
             useTwoStage=False,
             runTestSuite=True,
             nt_flags=['--cflag', '-march=broadwell', '--threads=1', '--build-threads=80', '--use-perf',
                       '--benchmarking-only', '--multisample=4', '--exclude-stat-from-submission=compile'],
             env={'PATH':'/usr/bin/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'},
             extra_cmake_args=["-DCMAKE_C_FLAGS='-march=broadwell'",
                               "-DCMAKE_CXX_FLAGS='-march=broadwell'",
                               "-DLLVM_TARGETS_TO_BUILD='X86'"],
             submitURL='http://lnt.llvm.org/submitRun',
             testerName='LNT-Broadwell-AVX2-O3')},

        ## X86_64 Clang+LLVM Run test-suite targeting AVX512 on SDE (Emulator)
        {'name': "clang-cmake-x86_64-sde-avx512-linux",
         'slavenames':["sde-avx512-intel64"],
         'builddir':"clang-cmake-x86_64-sde-avx512-linux",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
             clean=False,
             checkout_clang_tools_extra=False,
             checkout_compiler_rt=False,
             checkout_lld=False,
             test=True,
             useTwoStage=False,
             runTestSuite=True,
             nt_flags=['--cflag', '-march=skylake-avx512', '--threads=80',
                 '--build-threads=80', '--make-param', "RUNUNDER=sde64 -skx --", '--make-param', 'USER_MODE_EMULATION=1',
                 '--make-param', 'RUNTIMELIMIT=1200'],
             env={'PATH':'/home/ssglocal/tools/sde/latest:/usr/bin/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'},
             extra_cmake_args=["-DLLVM_ENABLE_ASSERTIONS=ON",
                               "-DCMAKE_C_FLAGS='-march=broadwell'",
                               "-DCMAKE_CXX_FLAGS='-march=broadwell'",
                               "-DLLVM_TARGETS_TO_BUILD='X86'"])},

        ## Armv7 build cache
        {'name': "clang-armv7-linux-build-cache",
         'slavenames':["packet-linux-armv7-slave-1"],
         'builddir':"clang-armv7-linux-build-cache",
         'factory' : ClangBuilder.getClangCMakeGCSBuildFactory(
                      stage1_config='Release',
                      clean=True,
                      checkout_compiler_rt=False,
                      test=False,
                      useTwoStage=False,
                      runTestSuite=False,
                      checkout_lld=True,
                      checkout_libcxx=True,
                      checkout_clang_tools_extra=False,
                      use_pixz_compression=False,
                      xz_compression_factor=0,
                      stage1_upload_directory='clang-armv7-linux',
                      extra_cmake_args=[
                          "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64;X86'",
                          "-DCMAKE_C_FLAGS='-mthumb'",
                          "-DCMAKE_CXX_FLAGS='-mthumb'",
                          ],
                      env={'BUCKET': 'llvm-build-artifacts'}
               ),
         'category': 'clang'},

        ## AArch64 build cache
        {'name': "clang-aarch64-linux-build-cache",
         'slavenames':["packet-linux-aarch64-slave-1"],
         'builddir':"clang-aarch64-linux-build-cache",
         'factory' : ClangBuilder.getClangCMakeGCSBuildFactory(
                      stage1_config='Release',
                      clean=True,
                      checkout_compiler_rt=False,
                      test=False,
                      useTwoStage=False,
                      runTestSuite=False,
                      checkout_lld=True,
                      checkout_libcxx=True,
                      checkout_clang_tools_extra=False,
                      stage1_upload_directory='clang-aarch64-linux',
                      use_pixz_compression=True,
                      extra_cmake_args=[
                          "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64;X86'",
                          #"-DCMAKE_C_FLAGS=''",
                          #"-DCMAKE_CXX_FLAGS=''",
                          ],
                      env={'BUCKET': 'llvm-build-artifacts'}
               ),
         'category': 'clang'},

        {'name' : "llvm-avr-linux",
         'slavenames' : ["avr-build-01"],
         'builddir' : "llvm-avr-linux",
         'factory': ClangBuilder.getClangCMakeBuildFactory(
                      jobs=8,
                      clean=False,
                      checkout_lld=False,
                      extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                        # We need to compile the X86 backend due to a few generic CodeGen tests.
                                        '-DLLVM_TARGETS_TO_BUILD=X86',
                                        '-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR',
                                        '-DBUILD_SHARED_LIBS=ON'])},

        {'name' : "clang-solaris11-amd64",
         'slavenames' : ["solaris11-amd64"],
         'builddir' : "clang-solaris11-amd64",
         'factory': ClangBuilder.getClangCMakeBuildFactory(
                      jobs=8,
                      clean=False,
                      checkout_lld=False,
                      extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                        '-DLLVM_TARGETS_TO_BUILD=X86',
                                        '-DLLVM_HOST_TRIPLE=amd64-pc-solaris2.11',
                                        '-DLLVM_PARALLEL_LINK_JOBS=4'])},

        {'name' : "clang-solaris11-sparcv9",
         'slavenames' : ["solaris11-sparcv9"],
         'builddir' : "clang-solaris11-sparcv9",
         'factory': ClangBuilder.getClangCMakeBuildFactory(
                      jobs=8,
                      clean=False,
                      checkout_lld=False,
                      extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                        '-DLLVM_TARGETS_TO_BUILD=Sparc',
                                        '-DLLVM_HOST_TRIPLE=sparcv9-sun-solaris2.11',
                                        '-DLLVM_PARALLEL_LINK_JOBS=4'])},

        {'name' : "clang-x64-ninja-win7",
         'slavenames' : ["windows7-buildbot"],
         'builddir' : "clang-x64-ninja-win7",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                        clean=False,
                        checkout_lld=False,
                        vs="autodetect",
                        vs_target_arch='x64',
                        testStage1=True,
                        useTwoStage=True,
                        stage1_config='Release',
                        stage2_config='Release',
                        extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                          '-DLLVM_TARGETS_TO_BUILD=X86'])},

        {'name' : "clang-x86-ninja-win10",
         'slavenames' : ["windows10-vs2019"],
         'builddir' : "clang-x86-ninja-win10",
         'factory' : ClangBuilder.getClangCMakeBuildFactory(
                        clean=True,
                        checkout_lld=False,
                        vs="autodetect",
                        vs_target_arch='x86',
                        testStage1=True,
                        useTwoStage=True,
                        stage1_config='Release',
                        stage2_config='Release',
                        extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=ON',
                                          '-DLLVM_TARGETS_TO_BUILD=X86',
                                          '-DCMAKE_C_COMPILER_LAUNCHER=sccache',
                                          '-DCMAKE_CXX_COMPILER_LAUNCHER=sccache',
                                          # FIXME: DIA is not working on this machine, so disabling it until we 
                                          #        have a proper fix
                                          '-D LLVM_ENABLE_DIA_SDK=OFF',
                                          ])},

    ]

# Polly builders.
def _get_polly_builders():
    return [
        {'name': "polly-arm-linux",
         'slavenames': ["hexagon-build-02", "hexagon-build-03"],
         'builddir': "polly-arm-linux",
         'factory': PollyBuilder.getPollyBuildFactory(
                clean=True,
                install=True,
                make='ninja',
                jobs=16,
                env={'LD_LIBRARY_PATH': '/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/lib', 'PATH': ['/local/cmake-3.17.0/bin', '${PATH}']},
                extraCmakeArgs=["-G", "Ninja",
                                "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'",
                                "-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabi",
                                "-DLLVM_TARGET_ARCH=arm-linux-gnueabi",
                                "-DLLVM_ENABLE_ASSERTIONS=True",
                                "-DLLVM_ENABLE_LIBCXX:BOOL=ON",
                                "-DCMAKE_C_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang",
                                "-DCMAKE_CXX_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++"])},
        {'name': "polly-x86_64-linux",
         'slavenames': ["polly-x86_64-fdcserver", "polly-x86_64-gce1"],
         'builddir': "polly-x86_64-linux",
         'factory': PollyBuilder.getPollyBuildFactory(
                clean=False,
                install=False,
                make='ninja',
                extraCmakeArgs=["-G", "Ninja",
                                "-DLLVM_ENABLE_ASSERTIONS=True",
                                "-DLLVM_TARGETS_TO_BUILD='X86;NVPTX'",
                                "-DCLANG_ENABLE_ARCMT=OFF",
                                "-DCLANG_ENABLE_STATIC_ANALYZER=OFF",
                                ])},
        {'name': "polly-x86_64-linux-test-suite",
         'slavenames': ["polly-x86_64-fdcserver", "polly-x86_64-gce2"],
         'builddir':"polly-x86_64-linux-test-suite",
         'factory': PollyBuilder.getPollyBuildFactory(
                clean=False,
                install=False,
                make='ninja',
                extraCmakeArgs=["-G", "Ninja",
                                "-DLLVM_ENABLE_ASSERTIONS=True",
                                "-DLLVM_TARGETS_TO_BUILD='X86;NVPTX'",
                                "-DCLANG_ENABLE_ARCMT=OFF",
                                "-DCLANG_ENABLE_STATIC_ANALYZER=OFF",
                                ],
                testsuite=True,
                extraTestsuiteCmakeArgs=["-G", "Ninja"]
                )}
       ]

# AOSP builders.
def _get_aosp_builders():
    return [
        {'name': "aosp-O3-polly-before-vectorizer-unprofitable",
         'slavenames': ["hexagon-build-03"],
         'builddir': "aosp",
         'factory': AOSPBuilder.getAOSPBuildFactory(
                device="angler",
                build_clang=True,
                extra_cmake_args=["-G", "Ninja",
                                  "-DLLVM_TARGETS_TO_BUILD='ARM;AArch64'",
                                  "-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-androideabi",
                                  "-DLLVM_TARGET_ARCH=arm-linux-androideabi",
                                  "-DLLVM_ENABLE_ASSERTIONS=True",
                                  "-DLLVM_ENABLE_LIBCXX:BOOL=ON",
                                  "-DCMAKE_C_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang",
                                  "-DCMAKE_CXX_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++"],
                timeout=240,
                target_clang=None,
                target_flags="-Wno-error -O3 -mllvm -polly -mllvm -polly-position=before-vectorizer -mllvm -polly-process-unprofitable -fcommon",
                jobs=8,
                extra_make_args=None,
                env={'LD_LIBRARY_PATH': '/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/lib', 'PATH': ['/local/cmake-3.17.0/bin', '${PATH}']},
                clean=False,
                sync=False,
                patch=None)}
    ]

# Reverse iteration builders.
def _get_rev_iter_builders():
    return [
        {'name': "reverse-iteration",
         'slavenames': ["hexagon-build-02", "hexagon-build-03"],
         'builddir': "reverse-iteration",
         'factory': PollyBuilder.getPollyBuildFactory(
                clean=True,
                make='ninja',
                jobs=16,
                checkAll=True,
                env={'LD_LIBRARY_PATH': '/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/lib', 'PATH': ['/local/cmake-3.17.0/bin', '${PATH}']},
                extraCmakeArgs=["-G", "Ninja",
                                "-DLLVM_REVERSE_ITERATION:BOOL=ON",
                                "-DLLVM_ENABLE_ASSERTIONS=True",
                                "-DLLVM_ENABLE_LIBCXX:BOOL=ON",
                                "-DCMAKE_C_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang",
                                "-DCMAKE_CXX_COMPILER:FILEPATH=/local/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04/bin/clang++"])}
    ]

# LLDB builders.
def _get_lldb_builders():
    return [
        {'name': "lldb-x86_64-fedora",
         'slavenames': ["lldb-x86_64-fedora"],
         'builddir': "lldb-x86_64-fedora",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    clean=True,
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_USE_LINKER=gold',
                                      '-DLLVM_LIT_ARGS="-v"'])},
        {'name': "lldb-s390x-fedora",
         'slavenames': ["lldb-s390x-fedora"],
         'builddir': "lldb-s390x-fedora",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    clean=True,
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_USE_LINKER=gold',
                                      '-DLLVM_LIT_ARGS="-v"'])},
        {'name': "lldb-ppc64le-fedora",
         'slavenames': ["lldb-ppc64le-fedora"],
         'builddir': "lldb-ppc64le-fedora",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    clean=True,
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_USE_LINKER=gold',
                                      '-DLLVM_LIT_ARGS="-v"'])},
        {'name': "lldb-x86_64-debian",
         'slavenames': ["lldb-x86_64-debian"],
         'builddir': "lldb-x86_64-debian",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_USE_LINKER=gold',
                                      '-DLLDB_ENABLE_PYTHON=True',
                                      '-DPYTHON_EXECUTABLE=/usr/bin/python3',
                                      '-DCMAKE_C_COMPILER=clang',
                                      '-DCMAKE_CXX_COMPILER=clang++'])},
        {'name': "lldb-aarch64-ubuntu",
         'slavenames': ["linaro-aarch64-lldb"],
         'builddir': "lldb-cmake-aarch64",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_LIT_ARGS="-svj 8"',
                                      '-DLLVM_USE_LINKER=gold'])},
        {'name': "lldb-arm-ubuntu",
         'slavenames': ["linaro-arm-lldb"],
         'builddir': "lldb-cmake-arm",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=True',
                                      '-DLLVM_LIT_ARGS="-svj 8"',
                                      '-DLLVM_USE_LINKER=gold'])},
        {'name': "lldb-x64-windows-ninja",
         'slavenames': ["win-py3-buildbot"],
         'builddir': "lldb-x64-windows-ninja",
         'category' : 'lldb',
         'factory': LLDBBuilder.getLLDBCMakeBuildFactory(
                    clean=True,
                    python_source_dir=r'"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64"',
                    target_arch='x64',
                    vs="autodetect",
                    test=True,
                    extra_cmake_args=['-DLLVM_ENABLE_ASSERTIONS=OFF',
                                      '-DLLVM_ENABLE_ZLIB=FALSE',
                                      '-DLLDB_ENABLE_PYTHON=TRUE'])}
       ]

# LLD builders.
def _get_lld_builders():
    return [
        {'name': "lld-x86_64-darwin",
         'slavenames' :["as-bldslv9"],
         'builddir':"lld-x86_64-darwin",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm', 'lld'],
                        extra_configure_args=[
                            '-DLLVM_ENABLE_WERROR=OFF',
                        ]),
         'category'   : 'lld'},

        {'name': "lld-x86_64-win",
         'slavenames' :["ps4-buildslave2"],
         'builddir':"lld-x86_64-win",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaWithMSVCBuildFactory(
                        depends_on_projects=['llvm', 'lld'],
                        vs="autodetect",
                        extra_configure_args = [
                            '-DLLVM_ENABLE_WERROR=OFF',
                        ]),
         'category'   : 'lld'},

        {'name': "lld-x86_64-freebsd",
         'slavenames' :["as-bldslv5"],
         'builddir':"lld-x86_64-freebsd",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        depends_on_projects=['llvm', 'lld'],
                        extra_configure_args=[
                            '-DCMAKE_EXE_LINKER_FLAGS=-lcxxrt',
                            '-DLLVM_ENABLE_WERROR=OFF',
                        ],
                        env={'CXXFLAGS' : "-std=c++11 -stdlib=libc++"}),
         'category'   : 'lld'},

        {'name' : "clang-with-lto-ubuntu",
         'slavenames' : ["ps4-buildslave1a"],
         'builddir' : "clang-with-lto-ubuntu",
         'factory': ClangLTOBuilder.getClangWithLTOBuildFactory(jobs=32),
         'category'   : 'lld'},

        {'name' : "clang-with-thin-lto-ubuntu",
         'slavenames' : ["ps4-buildslave1"],
         'builddir' : "clang-with-thin-lto-ubuntu",
         'factory': ClangLTOBuilder.getClangWithLTOBuildFactory(jobs=72, lto='thin'),
         'category'   : 'lld'},

        {'name' : "clang-lld-x86_64-2stage",
         'slavenames' : ["am1i-slv1", "am1i-slv3", "am1i-slv4"],
         'builddir' : "clang-lld-x86_64-2stage",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaMultistageBuildFactory(
                                  depends_on_projects=['llvm', 'clang', 'lld']),
         'category'   : 'lld'},

        {'name' : "lld-perf-testsuite",
         'slavenames' : ["as-bldslv8"],
         'builddir' : "lld-perf-testsuite",
         'factory': LLDPerformanceTestsuite.getFactory(targets=["bin/lld"]),
         'category'   : 'lld'},

        {'name' : "ppc64le-lld-multistage-test",
         'slavenames' : ["ppc64le-lld-multistage-test"],
         'builddir' : "ppc64le-lld-multistage-test",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaMultistageBuildFactory(
                                    extra_configure_args=[
                                        '-DLLVM_ENABLE_ASSERTIONS=ON',
                                        '-DLLVM_LIT_ARGS="-svj 256"'],
                                    depends_on_projects=['llvm', 'clang', 'lld']),
         'category'   : 'lld'},

        {'name' : "lld-x86_64-ubuntu-fast",
         'slavenames' : ["as-builder-4"],
         'builddir' : "lld-x86_64-ubuntu-fast",
         'mergeRequests': False,
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                                    clean=True,
                                    extra_configure_args=[
                                        '-DLLVM_ENABLE_WERROR=OFF'],
                                    depends_on_projects=['llvm', 'lld']),
         'category' : 'lld'},

        ]

# Builders for MLIR
def _get_mlir_builders():
    return [
        {'name': "mlir-nvidia",
        'slavenames':["mlir-nvidia"],
        'builddir':"mlir-nvidia",
        'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        llvm_srcdir="llvm.src",
                        obj_dir="llvm.obj",
                        clean=True,
                        depends_on_projects=['llvm','mlir'],
                        extra_configure_args=[
                            '-DLLVM_BUILD_EXAMPLES=ON',
                            '-DLLVM_TARGETS_TO_BUILD=host;NVPTX',
                            '-DLLVM_ENABLE_PROJECTS=mlir',
                            '-DMLIR_CUDA_RUNNER_ENABLED=1',
                            '-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc',
                            '-DMLIR_VULKAN_RUNNER_ENABLED=1',
                        ],
                        env={
                            'CC':'clang',
                            'CXX': 'clang++',
                            'LD': 'lld',
                        })},
        {'name': "mlir-windows",
        'slavenames':["win-mlir-buildbot"],
        'builddir': "mlir-x64-windows-ninja",
        'category' : 'mlir',
        'factory': UnifiedTreeBuilder.getCmakeWithNinjaWithMSVCBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm','mlir'],
                        vs="autodetect",
                        checks=['check-mlir'],
                        extra_configure_args=[
                            "-DLLVM_BUILD_EXAMPLES=ON",
                            "-DLLVM_ENABLE_PROJECTS=mlir",
                            "-DLLVM_TARGETS_TO_BUILD='host;NVPTX;AMDGPU'",
                        ])},
       {'name': 'ppc64le-mlir-rhel-clang',
        'mergeRequests': False,
        'slavenames': ['ppc64le-flang+mlir-rhel-test'],
        'builddir': 'ppc64le-mlir-rhel-clang-build',
        'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm', 'mlir'],
                        checks=['check-mlir'],
                        extra_configure_args=[
                            '-DLLVM_TARGETS_TO_BUILD=PowerPC',
                            '-DLLVM_INSTALL_UTILS=ON',
                            '-DCMAKE_CXX_STANDARD=17',
                            '-DLLVM_ENABLE_PROJECTS=mlir',
                            '-DLLVM_LIT_ARGS="-vj 256"',
                        ],
                        env={
                              'CC': 'clang',
                              'CXX': 'clang++',
                              'LD': 'lld',
                        })},
    ]

# Sanitizer builders.
def _get_sanitizer_builders():
      return [
          {'name': "sanitizer-x86_64-linux",
           'slavenames' :["sanitizer-buildbot1", "sanitizer-buildbot2"],
           'builddir': "sanitizer-x86_64-linux",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},
          {'name': "sanitizer-x86_64-linux-fast",
           'slavenames' :["sanitizer-buildbot1", "sanitizer-buildbot2"],
           'builddir': "sanitizer-x86_64-linux-fast",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},

          {'name': "sanitizer-x86_64-linux-bootstrap",
           'slavenames' :["sanitizer-buildbot3", "sanitizer-buildbot4"],
           'builddir': "sanitizer-x86_64-linux-bootstrap",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},
          {'name': "sanitizer-x86_64-linux-bootstrap-ubsan",
           'slavenames' :["sanitizer-buildbot3", "sanitizer-buildbot4"],
           'builddir': "sanitizer-x86_64-linux-bootstrap-ubsan",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},

          {'name': "sanitizer-x86_64-linux-bootstrap-msan",
           'slavenames' :["sanitizer-buildbot7", "sanitizer-buildbot8"],
           'builddir': "sanitizer-x86_64-linux-bootstrap-msan",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},
          {'name': "sanitizer-x86_64-linux-autoconf",
           'slavenames' :["sanitizer-buildbot7", "sanitizer-buildbot8"],
           'builddir': "sanitizer-x86_64-linux-autoconf",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},
          {'name': "sanitizer-x86_64-linux-fuzzer",
           'slavenames' :["sanitizer-buildbot7", "sanitizer-buildbot8"],
           'builddir': "sanitizer-x86_64-linux-fuzzer",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},

           {'name': "sanitizer-x86_64-linux-android",
           'slavenames' :["sanitizer-buildbot6"],
           'builddir': "sanitizer-x86_64-linux-android",
           'factory': SanitizerBuilder.getSanitizerBuildFactory()},

          {'name': "sanitizer-ppc64be-linux",
           'slavenames' :["ppc64be-sanitizer"],
           'builddir': "sanitizer-ppc64be",
           'factory': SanitizerBuilder.getSanitizerBuildFactory(timeout=1800)},

          {'name': "sanitizer-ppc64le-linux",
           'slavenames' :["ppc64le-sanitizer"],
           'builddir': "sanitizer-ppc64le",
           'factory': SanitizerBuilder.getSanitizerBuildFactory(timeout=1800)},

          {'name': "sanitizer-windows",
           'slavenames' :["sanitizer-windows"],
           'builddir': "sanitizer-windows",
           'factory': AnnotatedBuilder.getAnnotatedBuildFactory(
             script="sanitizer-windows.py",
             depends_on_projects=["llvm", "clang", "lld", "compiler-rt"])},

          ]

def _get_openmp_builders():
    return [
        {'name': "openmp-gcc-x86_64-linux-debian",
         'slavenames':["gribozavr4"],
         'builddir':"openmp-gcc-x86_64-linux-debian",
         'factory' : OpenMPBuilder.getOpenMPCMakeBuildFactory(
                         env={
                             'PATH':'/home/llvmbb/bin/clang-latest/bin:/home/llvmbb/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin',
                             'CC': 'ccache clang', 'CXX': 'ccache clang++', 'CCACHE_CPP2': 'yes',
                         })},

        {'name': "openmp-clang-x86_64-linux-debian",
         'slavenames':["gribozavr4"],
         'builddir':"openmp-clang-x86_64-linux-debian",
         'factory' : OpenMPBuilder.getOpenMPCMakeBuildFactory(
                         env={
                             'PATH':'/home/llvmbb/bin/clang-latest/bin:/home/llvmbb/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin',
                             'CC': 'ccache clang', 'CXX': 'ccache clang++', 'CCACHE_CPP2': 'yes',
                         })},
        ]

def _get_libcxx_builders():
    ericwf_slaves = ['ericwf-buildslave2']
    docker_slaves = [
        'libcxx-cloud1', 'libcxx-cloud2', 'libcxx-cloud3', 'libcxx-cloud4',
        'libcxx-cloud5'
    ]
    benchmark_opts = ';'.join(
        ['--benchmark_min_time=0.01', '--benchmark_color=false'])
    return [
        # gribozavr's builders on gribozavr4
        {'name': 'libcxx-libcxxabi-x86_64-linux-debian',
         'slavenames': ['gribozavr4'],
         'builddir': 'libcxx-libcxxabi-x86_64-linux-debian',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'CC': 'clang', 'CXX': 'clang++'},
             lit_extra_args=['--shuffle'],
             check_libcxx_abilist=True),
         'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-debian-noexceptions',
         'slavenames': ['gribozavr4'],
         'builddir': 'libcxx-libcxxabi-x86_64-linux-debian-noexceptions',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'CC': 'clang', 'CXX': 'clang++'},
             use_cache='Generic-noexceptions.cmake',
             lit_extra_args=['--shuffle']),
         'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-libunwind-x86_64-linux-debian',
         'slavenames': ['gribozavr4'],
         'builddir': 'libcxx-libcxxabi-libunwind-x86_64-linux-debian',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'CC': 'clang', 'CXX': 'clang++'},
             cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON'},
             lit_extra_args=['--shuffle']),
         'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-singlethreaded-x86_64-linux-debian',
         'slavenames': ['gribozavr4'],
         'builddir': 'libcxx-libcxxabi-singlethreaded-x86_64-linux-debian',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'CC': 'clang', 'CXX': 'clang++'},
             use_cache='Generic-singlethreaded.cmake'),
         'category': 'libcxx'},

        # EricWF's builders
        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            use_cache='Generic-cxx03.cmake',
            check_libcxx_abilist=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx11',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx11',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            use_cache='Generic-cxx11.cmake',
            check_libcxx_abilist=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx14',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx14',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            use_cache='Generic-cxx14.cmake',
            check_libcxx_abilist=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx17',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx17',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
            use_cache='Generic-cxx17.cmake',
            check_libcxx_abilist=True,
            check_libcxx_benchmarks=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx2a',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx2a',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
            use_cache='Generic-cxx2a.cmake',
            check_libcxx_abilist=True,
            check_libcxx_benchmarks=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-32bit',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-32bit',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            use_cache='Generic-32bits.cmake',
            check_libcxx_abilist=False),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-asan',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-asan',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
            use_cache='Generic-asan.cmake',
            check_libcxx_benchmarks=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
            use_cache='Generic-ubsan.cmake',
            check_libcxx_benchmarks=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-msan',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-msan',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
            use_cache='Generic-msan.cmake',
            check_libcxx_benchmarks=True),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON'}),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-tsan',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-tsan',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': 'clang', 'CXX': 'clang++'},
            use_cache='Generic-tsan.cmake'),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-gcc5-cxx11',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-gcc5-cxx11',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': '/opt/gcc-5/bin/gcc', 'CXX': '/opt/gcc-5/bin/g++'},
            use_cache='Generic-cxx11.cmake'),
        'category': 'libcxx'},

        {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-latest-std',
         'slavenames': ericwf_slaves + docker_slaves,
         'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-latest-std',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                 'CC': '/opt/gcc-tot/bin/gcc', 'CXX': '/opt/gcc-tot/bin/g++'}),
        'category': 'libcxx'},

        # ARMv7 LibC++ and LibC++abi tests (require Clang+RT)
        {'name': 'libcxx-libcxxabi-libunwind-armv7-linux',
         'slavenames': ['linaro-tk1-02'],
         'builddir': 'libcxx-libcxxabi-libunwind-armv7-linux',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a15 -marm',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a15 -marm',
                              'LLVM_PARALLEL_LINK_JOBS': '2'})},

        # ARMv8 LibC++ and LibC++abi tests (require Clang+RT)
        {'name': 'libcxx-libcxxabi-libunwind-armv8-linux',
         'slavenames': ['linaro-armv8-libcxx'],
         'builddir': 'libcxx-libcxxabi-libunwind-armv8-linux',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a57 -marm',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a57 -marm'})},

        # ARMv7 LibC++ and LibC++abi tests w/o EH (require Clang+RT)
        {'name': 'libcxx-libcxxabi-libunwind-armv7-linux-noexceptions',
         'slavenames': ['linaro-tk1-02'],
         'builddir': 'libcxx-libcxxabi-libunwind-armv7-linux-noexceptions',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'LIBCXX_ENABLE_EXCEPTIONS': 'OFF',
                              'LIBCXXABI_ENABLE_EXCEPTIONS': 'OFF',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a15 -mthumb',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a15 -mthumb',
                              'LLVM_PARALLEL_LINK_JOBS': '2'})},

        # ARMv8 LibC++ and LibC++abi tests w/o EH (require Clang+RT)
        {'name': 'libcxx-libcxxabi-libunwind-armv8-linux-noexceptions',
         'slavenames': ['linaro-armv8-libcxx'],
         'builddir': 'libcxx-libcxxabi-libunwind-armv8-linux-noexceptions',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'LIBCXX_ENABLE_EXCEPTIONS': 'OFF',
                              'LIBCXXABI_ENABLE_EXCEPTIONS': 'OFF',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a57 -mthumb',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a57 -mthumb'})},

        # AArch64 LibC++ and LibC++abi tests (require Clang+RT)
        {'name': 'libcxx-libcxxabi-libunwind-aarch64-linux',
         'slavenames': ['linaro-aarch64-libcxx'],
         'builddir': 'libcxx-libcxxabi-libunwind-aarch64-linux',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a57',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a57'})},

        {'name': 'libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions',
         'slavenames': ['linaro-aarch64-libcxx'],
         'builddir': 'libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions',
         'category': 'libcxx',
         'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
            cmake_extra_opts={'LIBCXXABI_USE_LLVM_UNWINDER': 'ON',
                              'LIBCXX_ENABLE_EXCEPTIONS': 'OFF',
                              'LIBCXXABI_ENABLE_EXCEPTIONS': 'OFF',
                              'CMAKE_C_FLAGS': '-mcpu=cortex-a57',
                              'CMAKE_CXX_FLAGS': '-mcpu=cortex-a57'})},

    ]

# Toolchain builders.
def _get_toolchain_builders():
      return [
          {'name': "fuchsia-x86_64-linux",
           'slavenames' :["fuchsia-debian-64-us-central1-a-1", "fuchsia-debian-64-us-central1-b-1"],
           'builddir': "fuchsia-x86_64-linux",
           'factory': FuchsiaBuilder.getFuchsiaToolchainBuildFactory(),
           'category': 'fuchsia'},
          {'name': "netbsd-amd64",
           'slavenames': ["netbsd-amd64"],
           'builddir': "netbsd8",
           'category' : 'netbsd',
           'factory': LLDBBuilder.getLLDBScriptCommandsFactory(
                      downloadBinary=False,
                      runTest=True,
                      depends_on_projects=[
                          "cfe",
                          "clang-tools-extra",
                          "compiler-rt",
                          "libcxx",
                          "libcxxabi",
                          "libunwind",
                          "lld",
                          "lldb",
                          "llvm",
                          "openmp",
                          "polly",
                      ])},
        ]

# libc Builders
def _get_libc_builders():
    return [
        {'name': 'libc-x86_64-debian',
         'slavenames': ['libc-x86_64-debian'],
         'builddir': 'libc-x86_64-debian',
         'category': 'libc',
         'factory' : AnnotatedBuilder.getAnnotatedBuildFactory(
             script="libc-linux.py",
             depends_on_projects=['llvm', 'libc', 'clang', 'clang-tools-extra'])},

        {'name': "libc-x86_64-debian-dbg",
         'slavenames': ["libc-x86_64-debian"],
         'builddir': "libc-x86_64-debian-dbg",
         'category' : 'libc',
         'factory' : AnnotatedBuilder.getAnnotatedBuildFactory(
             script="libc-linux.py",
             depends_on_projects=['llvm', 'libc', 'clang', 'clang-tools-extra'],
             extra_args=['--debug'])},

        {'name': "libc-x86_64-debian-dbg-asan",
         'slavenames': ["libc-x86_64-debian"],
         'builddir': "libc-x86_64-debian-dbg-asan",
         'category' : 'libc',
         'factory' : AnnotatedBuilder.getAnnotatedBuildFactory(
             script="libc-linux.py",
             depends_on_projects=['llvm', 'libc', 'clang', 'clang-tools-extra'],
             extra_args=['--debug', '--asan'])},
    ]

# Flang builders.
def _get_flang_builders():
    return [
        {'name': "flang-aarch64-ubuntu",
         'slavenames':["flang-aarch64-ubuntu-build"],
         'builddir':"flang-aarch64-ubuntu-build",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm','mlir','clang','flang'],
                        extra_configure_args=[
                            "-DLLVM_TARGETS_TO_BUILD=AArch64",
                            "-DCMAKE_C_COMPILER=/usr/bin/gcc-9",
                            "-DCMAKE_CXX_COMPILER=/usr/bin/g++-9",
                            "-DLLVM_INSTALL_UTILS=ON",
                            "-DCMAKE_CXX_STANDARD=17",
                        ],
         ),
         'category' : 'flang'},

        {'name': "flang-aarch64-ubuntu-clang",
         'slavenames':["flang-aarch64-ubuntu-clang-build"],
         'builddir':"flang-aarch64-ubuntu-clang",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm','mlir','clang','flang'],
                        extra_configure_args=[
                            "-DLLVM_TARGETS_TO_BUILD=AArch64",
                            "-DCMAKE_C_COMPILER=/usr/local/bin/clang",
                            "-DCMAKE_CXX_COMPILER=/usr/local/bin/clang++",
                            "-DLLVM_INSTALL_UTILS=ON",
                            "-DCMAKE_CXX_STANDARD=17",
                            "-DLLVM_ENABLE_WERROR=ON",
                            "-DBUILD_SHARED_LIBS=ON",
                            "-DLLVM_ENABLE_ASSERTIONS=ON",
                            "-DLLVM_ENABLE_LIBCXX=On",
                            "-DCMAKE_BUILD_TYPE=Release",
                        ],
         ),
         'category' : 'flang'},

        {'name': "flang-aarch64-ubuntu-gcc10",
         'slavenames':["flang-aarch64-ubuntu-gcc10-build"],
         'builddir':"flang-aarch64-ubuntu-gcc10",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm','mlir','clang','flang'],
                        extra_configure_args=[
                            "-DLLVM_TARGETS_TO_BUILD=AArch64",
                            "-DCMAKE_C_COMPILER=/usr/local/bin/gcc-10",
                            "-DCMAKE_CXX_COMPILER=/usr/local/bin/g++-10",
                            "-DLLVM_INSTALL_UTILS=ON",
                            "-DCMAKE_CXX_STANDARD=17",
                            "-DLLVM_ENABLE_WERROR=OFF",
                            "-DFLANG_ENABLE_WERROR=ON"
                            "-DBUILD_SHARED_LIBS=ON",
                            "-DLLVM_ENABLE_ASSERTIONS=ON",
                            "-DCMAKE_BUILD_TYPE=Release",
                        ],
         ),
         'category' : 'flang'},

        {'name': "flang-x86_64-linux",
         'slavenames':["nersc-flang"],
         'builddir':"flang-x86_64-linux",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        depends_on_projects=['llvm','mlir','clang','flang'],
                        extra_configure_args=[
                            "-DLLVM_TARGETS_TO_BUILD=X86",
                            "-DLLVM_INSTALL_UTILS=ON",
                            "-DCMAKE_CXX_STANDARD=17",
                        ],
         ),
         'category' : 'flang'},
        {'name': 'ppc64le-flang-rhel-clang',
         'mergeRequests': False,
         'slavenames': ['ppc64le-flang+mlir-rhel-test'],
         'builddir': 'ppc64le-flang-rhel-clang-build',
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                         clean=True,
                         depends_on_projects=['llvm', 'mlir', 'clang', 'flang'],
                         checks=['check-flang'],
                         extra_configure_args=[
                             '-DLLVM_TARGETS_TO_BUILD=PowerPC',
                             '-DLLVM_INSTALL_UTILS=ON',
                             '-DCMAKE_CXX_STANDARD=17',
                             '-DLLVM_ENABLE_PROJECTS=flang',
                             '-DLLVM_LIT_ARGS="-vj 256"'
                         ],
                         env={
                             'CC': 'clang',
                             'CXX': 'clang++',
                             'LD': 'lld'
                         }),
         'category': 'flang'},
        ]

# Experimental and stopped builders
def _get_on_demand_builders():
    return [
        ]

def _get_experimental_scheduled_builders():
    return [
        {'name': "clang-cuda-k80",
         'slavenames' :["cuda-k80-0"],
         'builddir': "clang-cuda-k80",
         'factory': AnnotatedBuilder.getAnnotatedBuildFactory(script="/buildbot/cuda-build",
                                                              checkout_llvm_sources=False),
         'category' : 'clang'},
        {'name': "clang-cuda-p4",
         'slavenames' :["cuda-p4-0"],
         'builddir': "clang-cuda-p4",
         'factory': AnnotatedBuilder.getAnnotatedBuildFactory(script="/buildbot/cuda-build",
                                                              checkout_llvm_sources=False),
         'category' : 'clang'},
        {'name': "clang-cuda-t4",
         'slavenames' :["cuda-t4-0"],
         'builddir': "clang-cuda-t4",
         'factory': AnnotatedBuilder.getAnnotatedBuildFactory(script="/buildbot/cuda-build",
                                                              checkout_llvm_sources=False),
         'category' : 'clang'},
        {'name': "clang-ve-ninja",
         'slavenames':["nec-arrproto41"],
         'builddir':"clang-ve-ninja",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm','clang','openmp'],
                        extra_configure_args=[
                            "-DLLVM_TARGETS_TO_BUILD=X86",
                            "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=VE",
                        ],
         ),
         'category' : 'clang'},
        ]

# Builders responsible building Sphinix documentation
def _get_documentation_builders():
    return [
             {
               'name':"llvm-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"llvm-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(llvm_html=True, llvm_man=True),
               'category' : 'llvm'
             },
             {
               'name':"clang-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"clang-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(clang_html=True),
               'category' : 'clang'
             },
             {
               'name':"clang-tools-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"clang-tools-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(clang_tools_html=True),
               'category' : 'clang'
             },
             {
               'name':"lld-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"lld-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(lld_html=True),
               'category' : 'lld'
             },
             {
               'name':"lldb-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"lldb-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(lldb_html=True),
               'category' : 'lldb'
             },
             {
               'name':"libcxx-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"libcxx-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(libcxx_html=True),
               'category' : 'libcxx'
             },
             {
               'name':"libunwind-sphinx-docs",
               'slavenames':["gribozavr3"],
               'builddir':"libunwind-sphinx-docs",
               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(libunwind_html=True),
               'category' : 'libunwind'
             },
             # Sphinx doc Publisher
             {
               'name':"publish-sphinx-docs",
               'slavenames':["as-bldslv5"],
               'builddir':"publish-sphinx-docs",
               'factory': SphinxDocsBuilder.getLLVMDocsBuildFactory(clean=True),
               'category' : 'doc'
             }
           ]

# Builders for ML-driven compiler optimizations.
def _get_ml_compiler_opt_builders():
    common_extra_args = [
        "-DCMAKE_BUILD_TYPE=Release",
        "-DLLVM_CCACHE_BUILD=ON",
        "-DLLVM_ENABLE_ASSERTIONS=ON", ]

    return [
        # Development mode build bot: tensorflow C APIs are present, and
        # we can dynamically load models, and produce training logs.
        {'name': "ml-opt-dev-x86-64",
         'mergeRequests': False,
         'slavenames':["ml-opt-dev-x86-64-b1"],
         'builddir':"ml-opt-dev-x86-64-b1",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm'],
                        extra_configure_args=common_extra_args + [
                            "-DTENSORFLOW_API_PATH=/tmp/tensorflow",
                            "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON"
                        ])},
        # Release mode build bot: the model is pre-built and linked in the
        # compiler. Only the tensorflow pip package is needed, and out of it,
        # only saved_model_cli (the model compiler) and the thin C++ wrappers
        # in xla_aot_runtime_src (and include files)
        {'name': "ml-opt-rel-x86-64",
         'mergeRequests': False,
         'slavenames':["ml-opt-rel-x86-64-b1"],
         'builddir':"ml-opt-rel-x86-64-b1",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm'],
                        extra_configure_args=common_extra_args + [
                            "-DTENSORFLOW_AOT_PATH=/var/lib/buildbot/.local/lib/python3.7/site-packages/tensorflow"
                        ])},
        # Both tensorflow C library, and the pip package, are present.
        {'name': "ml-opt-devrel-x86-64",
         'mergeRequests': False,
         'slavenames':["ml-opt-devrel-x86-64-b1"],
         'builddir':"ml-opt-devrel-x86-64-b1",
         'factory': UnifiedTreeBuilder.getCmakeWithNinjaBuildFactory(
                        clean=True,
                        depends_on_projects=['llvm'],
                        extra_configure_args=common_extra_args + [
                            "-DTENSORFLOW_API_PATH=/tmp/tensorflow",
                            "-DTENSORFLOW_AOT_PATH=/var/lib/buildbot/.local/lib/python3.7/site-packages/tensorflow",
                            "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON"
                        ])},
    ]

def get_builders():
    for b in _get_llvm_builders():
        b['category'] = 'llvm'
        yield b

    for b in _get_clang_fast_builders():
        b['category'] = 'clang_fast'
        yield b

    for b in _get_clang_builders():
        b['category'] = 'clang'
        yield b

    for b in _get_polly_builders():
        b['category'] = 'polly'
        yield b

    for b in _get_aosp_builders():
        b['category'] = 'aosp'
        yield b

    for b in _get_rev_iter_builders():
        b['category'] = 'rev_iter'
        yield b

    for b in _get_lld_builders():
        b['category'] = 'lld'
        yield b

    for b in _get_lldb_builders():
        b['category'] = 'lldb'
        yield b

    for b in _get_mlir_builders():
        b['category'] = 'mlir'
        yield b

    for b in _get_ml_compiler_opt_builders():
        b['category'] = 'ml_opt'
        yield b

    for b in _get_sanitizer_builders():
        b['category'] = 'sanitizer'
        yield b

    for b in _get_openmp_builders():
        b['category'] = 'openmp'
        yield b

    for b in _get_libcxx_builders():
        b['category'] = 'libcxx'
        yield b

    for b in _get_toolchain_builders():
        b['category'] = 'toolchain'
        yield b

    for b in _get_libc_builders():
        b['category'] = 'libc'
        yield b

    for b in _get_flang_builders():
        b['category'] = 'flang'
        yield b

    for b in _get_documentation_builders():
        yield b

    for b in _get_experimental_scheduled_builders():
        if not b.get('category', '').endswith('.exp'):
           b['category'] = b.get('category', '') + '.exp'
        yield b

    for b in _get_on_demand_builders():
        if not b.get('category', '').endswith('.on-demand'):
           b['category'] = b.get('category', '') + '.on-demand'
        yield b
