| #!/usr/bin/env bash |
| #===----------------------------------------------------------------------===## |
| # |
| # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| # |
| #===----------------------------------------------------------------------===## |
| |
| # |
| # This file contains functions to compute which projects should be built by CI |
| # systems and is intended to provide common functionality applicable across |
| # multiple systems during a transition period. |
| # |
| |
| function compute-projects-to-test() { |
| isForWindows=$1 |
| shift |
| projects=${@} |
| for project in ${projects}; do |
| echo "${project}" |
| case ${project} in |
| lld) |
| for p in bolt cross-project-tests; do |
| echo $p |
| done |
| ;; |
| llvm) |
| for p in bolt clang clang-tools-extra lld lldb mlir polly; do |
| echo $p |
| done |
| # Flang is not stable in Windows CI at the moment |
| if [[ $isForWindows == 0 ]]; then |
| echo flang |
| fi |
| ;; |
| clang) |
| # lldb is temporarily removed to alleviate Linux pre-commit CI waiting times |
| for p in clang-tools-extra compiler-rt cross-project-tests; do |
| echo $p |
| done |
| ;; |
| clang-tools-extra) |
| echo libc |
| ;; |
| mlir) |
| # Flang is not stable in Windows CI at the moment |
| if [[ $isForWindows == 0 ]]; then |
| echo flang |
| fi |
| ;; |
| *) |
| # Nothing to do |
| ;; |
| esac |
| done |
| } |
| |
| function compute-runtimes-to-test() { |
| projects=${@} |
| for project in ${projects}; do |
| case ${project} in |
| clang) |
| for p in libcxx libcxxabi libunwind; do |
| echo $p |
| done |
| ;; |
| *) |
| # Nothing to do |
| ;; |
| esac |
| done |
| } |
| |
| function add-dependencies() { |
| projects=${@} |
| for project in ${projects}; do |
| echo "${project}" |
| case ${project} in |
| bolt) |
| for p in clang lld llvm; do |
| echo $p |
| done |
| ;; |
| cross-project-tests) |
| for p in lld clang; do |
| echo $p |
| done |
| ;; |
| clang-tools-extra) |
| for p in llvm clang; do |
| echo $p |
| done |
| ;; |
| compiler-rt|libc|openmp) |
| echo clang lld |
| ;; |
| flang|lldb|libclc) |
| for p in llvm clang; do |
| echo $p |
| done |
| ;; |
| lld|mlir|polly) |
| echo llvm |
| ;; |
| *) |
| # Nothing to do |
| ;; |
| esac |
| done |
| } |
| |
| function exclude-linux() { |
| projects=${@} |
| for project in ${projects}; do |
| case ${project} in |
| cross-project-tests) ;; # tests failing |
| openmp) ;; # https://github.com/google/llvm-premerge-checks/issues/410 |
| *) |
| echo "${project}" |
| ;; |
| esac |
| done |
| } |
| |
| function exclude-windows() { |
| projects=${@} |
| for project in ${projects}; do |
| case ${project} in |
| cross-project-tests) ;; # tests failing |
| compiler-rt) ;; # tests taking too long |
| openmp) ;; # TODO: having trouble with the Perl installation |
| libc) ;; # no Windows support |
| lldb) ;; # custom environment requirements (https://github.com/llvm/llvm-project/pull/94208#issuecomment-2146256857) |
| bolt) ;; # tests are not supported yet |
| *) |
| echo "${project}" |
| ;; |
| esac |
| done |
| } |
| |
| # Prints only projects that are both present in $modified_dirs and the passed |
| # list. |
| function keep-modified-projects() { |
| projects=${@} |
| for project in ${projects}; do |
| if echo "$modified_dirs" | grep -q -E "^${project}$"; then |
| echo "${project}" |
| fi |
| done |
| } |
| |
| function check-targets() { |
| # Do not use "check-all" here because if there is "check-all" plus a |
| # project specific target like "check-clang", that project's tests |
| # will be run twice. |
| projects=${@} |
| for project in ${projects}; do |
| case ${project} in |
| clang-tools-extra) |
| echo "check-clang-tools" |
| ;; |
| compiler-rt) |
| echo "check-compiler-rt" |
| ;; |
| cross-project-tests) |
| echo "check-cross-project" |
| ;; |
| libcxx) |
| echo "check-cxx" |
| ;; |
| libcxxabi) |
| echo "check-cxxabi" |
| ;; |
| libunwind) |
| echo "check-unwind" |
| ;; |
| lldb) |
| echo "check-lldb" |
| ;; |
| pstl) |
| # Currently we do not run pstl tests in CI. |
| ;; |
| libclc) |
| # Currently there is no testing for libclc. |
| ;; |
| *) |
| echo "check-${project}" |
| ;; |
| esac |
| done |
| } |
| |