#!/bin/bash

# ICON
#
# ------------------------------------------
# Copyright (C) 2004-2026, DWD, MPI-M, DKRZ, KIT, ETH, MeteoSwiss
# Contact information: icon-model.org
# See AUTHORS.TXT for a list of authors
# See LICENSES/ for license information
# SPDX-License-Identifier: BSD-3-Clause
# ------------------------------------------

# abort on error
set -euo pipefail

set -x
# create all builders for a given list
list=$1
if [ x$list == x ]; then
  echo "Builbot list name missing"
  exit 1
fi

machine=mpimac
./addmachine $machine --list $list
./addbuilder mpimac_gcc    --machine $machine --build_script="./config/buildbot/mpimac_gcc"    --configureflags="--with-mpi --with-openmp" --builderflags="Active"     --list $list
./addbuilder mpimac_gcc_sp --machine $machine --build_script="./config/buildbot/mpimac_gcc_sp" --configureflags="--with-mpi --with-openmp" --builderflags="Active" --list $list

# breeze builders
machine=breeze
./addmachine $machine --list $list
./addbuilder breeze_gcc           --machine $machine --build_script="./config/buildbot/breeze_gcc"                                               --builderflags="Active"  --list $list
./addbuilder breeze_gcc_openmp    --machine $machine --build_script="./config/buildbot/breeze_gcc_openmp"   --configureflags="--with-openmp"    --builderflags="Active"  --list $list
./addbuilder breeze_intel         --machine $machine --build_script="./config/buildbot/breeze_intel"                                           --builderflags="Active"  --list $list
./addbuilder breeze_intel_openmp  --machine $machine --build_script="./config/buildbot/breeze_intel_openmp" --configureflags="--with-openmp"  --builderflags="Active"  --list $list
./addbuilder breeze_nag           --machine $machine --build_script="./config/buildbot/breeze_nag"                                               --builderflags="Active"  --list $list

machine=balfrin
./addmachine $machine --list $list
./addbuilder balfrin_cpu_nvidia       --machine $machine --build_script="./config/buildbot/balfrin_cpu_nvidia"  --builderflags="Active"  --list $list
./addbuilder balfrin_gpu_nvidia       --machine $machine --build_script="./config/buildbot/balfrin_gpu_nvidia"  --builderflags="Active"  --list $list
./addbuilder balfrin_cpu_nvidia_mixed --machine $machine --build_script="./config/buildbot/balfrin_cpu_nvidia_mixed"  --builderflags="Active"  --list $list
./addbuilder balfrin_gpu_nvidia_mixed --machine $machine --build_script="./config/buildbot/balfrin_gpu_nvidia_mixed"  --builderflags="Active"  --list $list
# the alps_mch_test builders may be moved to different machines in the future
./addbuilder alps_mch_test_cpu        --machine $machine --build_script="./config/buildbot/alps_mch_test_cpu"  --builderflags="Active"  --list $list
./addbuilder alps_mch_test_gpu        --machine $machine --build_script="./config/buildbot/alps_mch_test_gpu"  --builderflags="Active"  --list $list

#DWD machines
machine=dwd_nec
./addmachine $machine --list $list
./addbuilder dwd_nec_oper       --machine $machine  --build_script="./config/buildbot/dwd_nec_oper"       --builderflags="Active"  --list $list
./addbuilder dwd_nec_hybrid     --machine $machine  --build_script="./config/buildbot/dwd_nec_hybrid"     --builderflags="Active"  --list $list
./addbuilder dwd_nec_coupling   --machine $machine  --build_script="./config/buildbot/dwd_nec_coupling"   --builderflags="Active"  --list $list
./addbuilder dwd_nec_sp         --machine $machine  --build_script="./config/buildbot/dwd_nec_sp"         --builderflags="Active"  --list $list

machine=levante
./addmachine $machine --list $list
./addbuilder levante_gcc                --machine $machine  --build_script="config/buildbot/levante_gcc" \
  --configureflags="--with-mpi --without-openmp"    --builderflags="Active" --list $list
./addbuilder levante_gcc_hybrid         --machine $machine  --build_script="config/buildbot/levante_gcc_hybrid" \
  --configureflags="--with-mpi --with-openmp"    --builderflags="Active" --list $list
./addbuilder levante_gcc_sp             --machine $machine  --build_script="config/buildbot/levante_gcc_sp" \
  --configureflags="--with-mpi --without-openmp"    --builderflags="Active" --list $list
./addbuilder levante_intel              --machine $machine  --build_script="config/buildbot/levante_intel" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_intel_hybrid       --machine $machine  --build_script="config/buildbot/levante_intel_hybrid" \
  --configureflags="--with-mpi --with-openmp"  --builderflags="Active" --list $list
./addbuilder levante_intel_hybrid_mixed --machine $machine  --build_script="config/buildbot/levante_intel_hybrid_mixed" \
  --configureflags="--with-mpi --with-openmp --enable-mixed"  --builderflags="Active" --list $list
./addbuilder levante_intel_hybrid_sp    --machine $machine  --build_script="config/buildbot/levante_intel_hybrid_sp" \
  --configureflags="--with-mpi --with-openmp"    --builderflags="Active" --list $list
./addbuilder levante_intel_pio          --machine $machine  --build_script="config/buildbot/levante_intel_pio" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_nag                --machine $machine  --build_script="config/buildbot/levante_nag" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_nag_serial         --machine $machine  --build_script="config/buildbot/levante_nag_serial" \
  --configureflags="--without-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_nag_sp             --machine $machine  --build_script="config/buildbot/levante_nag_sp" \
  --configureflags="--with-mpi --without-openmp"    --builderflags="Active" --list $list
./addbuilder levante_gpu_nvhpc              --machine $machine  --build_script="config/buildbot/levante_gpu_nvhpc" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_gpu_nvhpc_sp           --machine $machine  --build_script="config/buildbot/levante_gpu_nvhpc_sp" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_cpu_nvhpc              --machine $machine  --build_script="config/buildbot/levante_cpu_nvhpc" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_gpu_nvhpc_dev          --machine $machine  --build_script="config/buildbot/levante_gpu_nvhpc_dev" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_cpu_nvhpc_dev          --machine $machine  --build_script="config/buildbot/levante_cpu_nvhpc_dev" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_gpu_validation         --machine $machine --build_script="config/buildbot/levante_gpu_validation" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_aurora             --machine $machine  --build_script="config/buildbot/levante_aurora" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list
./addbuilder levante_coverage           --machine $machine  --build_script="config/buildbot/levante_coverage" \
  --configureflags="--with-mpi --without-openmp"  --builderflags="Active" --list $list

machine=jsc
./addmachine $machine --list $list
./addbuilder cluster_intel_ompi  --machine $machine  --build_script="config/buildbot/cluster_intel_ompi"   --builderflags="Inactive" --list $list
./addbuilder cluster_intel_psmpi --machine $machine  --build_script="config/buildbot/cluster_intel_psmpi"  --builderflags="Inactive" --list $list
./addbuilder cluster_nvhpc_psmpi --machine $machine  --build_script="config/buildbot/cluster_nvhpc_psmpi"  --builderflags="Inactive" --list $list
./addbuilder booster_nvhpc_ompi  --machine $machine  --build_script="config/buildbot/booster_nvhpc_ompi"   --builderflags="Inactive" --list $list
./addbuilder booster_nvhpc_psmpi --machine $machine  --build_script="config/buildbot/booster_nvhpc_psmpi"  --builderflags="Inactive" --list $list

# KIT builders
machine=horeka
./addmachine $machine --list $list
./addbuilder horeka_gcc       --machine $machine --build_script="config/buildbot/horeka_gcc"       --builderflags="Active" --list $list
./addbuilder horeka_intel     --machine $machine --build_script="config/buildbot/horeka_intel"     --builderflags="Active" --list $list
./addbuilder horeka_gpu_nvhpc --machine $machine --build_script="config/buildbot/horeka_gpu_nvhpc" --builderflags="Active" --list $list
./addbuilder horeka_cpu_nvhpc --machine $machine --build_script="config/buildbot/horeka_cpu_nvhpc" --builderflags="Active" --list $list

machine=lumi
./addmachine $machine --list $list
./addbuilder lumi_gpu  --machine $machine  --build_script="config/buildbot/lumi_gpu"   --builderflags="Active" --list $list
./addbuilder lumi_cpu  --machine $machine  --build_script="config/buildbot/lumi_cpu"   --builderflags="Active" --list $list
./addbuilder lumi_gpu_mixed  --machine $machine  --build_script="config/buildbot/lumi_gpu_mixed"   --builderflags="build_only" --list $list
./addbuilder lumi_cpu_mixed  --machine $machine  --build_script="config/buildbot/lumi_cpu_mixed"   --builderflags="build_only" --list $list
./addbuilder lumi_cpu_sp  --machine $machine  --build_script="config/buildbot/lumi_cpu_sp"   --builderflags="Active" --list $list
