1# --------------------------------------------------------------- 2# Programmer(s): Cody J. Balos @ LLNL 3# --------------------------------------------------------------- 4# SUNDIALS Copyright Start 5# Copyright (c) 2002-2021, Lawrence Livermore National Security 6# and Southern Methodist University. 7# All rights reserved. 8# 9# See the top-level LICENSE and NOTICE files for details. 10# 11# SPDX-License-Identifier: BSD-3-Clause 12# SUNDIALS Copyright End 13# --------------------------------------------------------------- 14# SUNDIALS build options that are interepreted after all other 15# CMake configuration. 16# --------------------------------------------------------------- 17 18# --------------------------------------------------------------- 19# Option to use specialized fused kernels in the packages. 20# Currently only available in CVODE. 21# --------------------------------------------------------------- 22 23sundials_option(SUNDIALS_BUILD_PACKAGE_FUSED_KERNELS BOOL "Build specialized fused CUDA kernels" OFF 24 DEPENDS_ON ENABLE_CUDA CMAKE_CUDA_COMPILER BUILD_CVODE 25 DEPENDS_ON_THROW_ERROR 26 SHOW_IF ENABLE_CUDA CMAKE_CUDA_COMPILER BUILD_CVODE) 27 28# --------------------------------------------------------------- 29# Options to enable/disable build for NVECTOR modules. 30# --------------------------------------------------------------- 31 32# required modules are in the build list, but cannot be disabled 33set(BUILD_NVECTOR_SERIAL TRUE) 34list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_SERIAL") 35 36sundials_option(BUILD_NVECTOR_CUDA BOOL "Build the NVECTOR_CUDA module (requires CUDA)" ON 37 DEPENDS_ON ENABLE_CUDA CMAKE_CUDA_COMPILER 38 ADVANCED) 39list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_CUDA") 40 41sundials_option(BUILD_NVECTOR_HIP BOOL "Build the NVECTOR_HIP module (requires HIP)" ON 42 DEPENDS_ON ENABLE_HIP 43 ADVANCED) 44list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_HIP") 45 46sundials_option(BUILD_NVECTOR_SYCL BOOL "Build the NVECTOR_SYCL module (requires SYCL)" ON 47 DEPENDS_ON ENABLE_SYCL 48 ADVANCED) 49list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_SYCL") 50 51sundials_option(BUILD_NVECTOR_MANYVECTOR BOOL "Build the NVECTOR_MANYVECTOR module" ON 52 ADVANCED) 53list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_MANYVECTOR") 54 55sundials_option(BUILD_NVECTOR_MPIMANYVECTOR BOOL "Build the NVECTOR_MPIMANYVECTOR module (requires MPI)" ON 56 DEPENDS_ON ENABLE_MPI MPI_C_FOUND 57 ADVANCED) 58list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_MPIMANYVECTOR") 59 60sundials_option(BUILD_NVECTOR_MPIPLUSX BOOL "Build the NVECTOR_MPIPLUSX module (requires MPI)" ON 61 DEPENDS_ON ENABLE_MPI MPI_C_FOUND BUILD_NVECTOR_MPIMANYVECTOR 62 ADVANCED) 63list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_MPIPLUSX") 64 65sundials_option(BUILD_NVECTOR_PARALLEL BOOL "Build the NVECTOR_PARALLEL module (requires MPI)" ON 66 DEPENDS_ON ENABLE_MPI MPI_C_FOUND 67 ADVANCED) 68list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_PARALLEL") 69 70sundials_option(BUILD_NVECTOR_OPENMP BOOL "Build the NVECTOR_OPENMP module" ON 71 DEPENDS_ON ENABLE_OPENMP 72 ADVANCED) 73list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_OPENMP") 74 75sundials_option(BUILD_NVECTOR_OPENMPDEV BOOL "Build the NVECTOR_OPENMPDEV module" ON 76 DEPENDS_ON ENABLE_OPENMP_DEVICE OPENMP_SUPPORTS_DEVICE_OFFLOADING 77 ADVANCED) 78list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_OPENMPDEV") 79 80sundials_option(BUILD_NVECTOR_PARHYP BOOL "Build the NVECTOR_PARHYP module (requires hypre)" ON 81 DEPENDS_ON ENABLE_HYPRE HYPRE_WORKS 82 ADVANCED) 83list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_PARHYP") 84 85sundials_option(BUILD_NVECTOR_PETSC BOOL "Build the NVECTOR_PETSC module (requires PETSc)" ON 86 DEPENDS_ON ENABLE_PETSC PETSC_WORKS 87 ADVANCED) 88list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_PETSC") 89 90sundials_option(BUILD_NVECTOR_PTHREADS BOOL "Build the NVECTOR_PTHREADS module" ON 91 DEPENDS_ON ENABLE_PTHREAD 92 ADVANCED) 93list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_PTHREADS") 94 95sundials_option(BUILD_NVECTOR_RAJA BOOL "Build the NVECTOR_RAJA module (requires RAJA)" ON 96 DEPENDS_ON ENABLE_RAJA 97 ADVANCED) 98list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_RAJA") 99 100sundials_option(BUILD_NVECTOR_TRILINOS BOOL "Build the NVECTOR_TRILINOS module (requires Trilinos)" ON 101 DEPENDS_ON ENABLE_TRILINOS Trilinos_WORKS 102 ADVANCED) 103list(APPEND SUNDIALS_BUILD_LIST "BUILD_NVECTOR_TRILINOS") 104 105 106# --------------------------------------------------------------- 107# Options to enable/disable build for SUNMATRIX modules. 108# --------------------------------------------------------------- 109 110# required modules are in the build list, but cannot be disabled 111set(BUILD_SUNMATRIX_BAND TRUE) 112list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_BAND") 113set(BUILD_SUNMATRIX_DENSE TRUE) 114list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_DENSE") 115set(BUILD_SUNMATRIX_SPARSE TRUE) 116list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_SPARSE") 117 118set(_COMPATIBLE_INDEX_SIZE FALSE) 119if(SUNDIALS_INDEX_SIZE MATCHES "32") 120 set(_COMPATIBLE_INDEX_SIZE TRUE) 121endif() 122sundials_option(BUILD_SUNMATRIX_CUSPARSE BOOL "Build the SUNMATRIX_CUSPARSE module (requires CUDA and 32-bit indexing)" ON 123 DEPENDS_ON ENABLE_CUDA CMAKE_CUDA_COMPILER _COMPATIBLE_INDEX_SIZE BUILD_NVECTOR_CUDA 124 ADVANCED) 125list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_CUSPARSE") 126 127sundials_option(BUILD_SUNMATRIX_SLUNRLOC BOOL "Build the SUNMATRIX_SLUNRLOC module (requires SuperLU_DIST)" ON 128 DEPENDS_ON ENABLE_SUPERLUDIST SUPERLUDIST_WORKS 129 ADVANCED) 130list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_SLUNRLOC") 131 132sundials_option(BUILD_SUNMATRIX_MAGMADENSE BOOL "Build the SUNMATRIX_MAGMADENSE module (requires MAGMA)" ON 133 DEPENDS_ON ENABLE_MAGMA MAGMA_WORKS 134 ADVANCED) 135list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNMATRIX_MAGMADENSE") 136 137# --------------------------------------------------------------- 138# Options to enable/disable build for SUNLINSOL modules. 139# --------------------------------------------------------------- 140 141# required modules are in the build list, but cannot be disabled 142set(BUILD_SUNLINSOL_BAND TRUE) 143list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_BAND") 144set(BUILD_SUNLINSOL_DENSE TRUE) 145list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_DENSE") 146set(BUILD_SUNLINSOL_PCG TRUE) 147list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_PCG") 148set(BUILD_SUNLINSOL_SPBCGS TRUE) 149list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SPBCGS") 150set(BUILD_SUNLINSOL_SPFGMR TRUE) 151list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SPFGMR") 152set(BUILD_SUNLINSOL_SPGMR TRUE) 153list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SPGMR") 154set(BUILD_SUNLINSOL_SPTFQMR TRUE) 155list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SPTFQMR") 156 157sundials_option(BUILD_SUNLINSOL_CUSOLVERSP BOOL "Build the SUNLINSOL_CUSOLVERSP module (requires CUDA and 32-bit indexing)" ON 158 DEPENDS_ON ENABLE_CUDA CMAKE_CUDA_COMPILER BUILD_NVECTOR_CUDA BUILD_SUNMATRIX_CUSPARSE 159 ADVANCED) 160list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_CUSOLVERSP") 161 162sundials_option(BUILD_SUNLINSOL_KLU BOOL "Build the SUNLINSOL_KLU module (requires KLU)" ON 163 DEPENDS_ON ENABLE_KLU KLU_WORKS 164 ADVANCED) 165list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_KLU") 166 167sundials_option(BUILD_SUNLINSOL_LAPACKBAND BOOL "Build the SUNLINSOL_LAPACKBAND module (requires LAPACK)" ON 168 DEPENDS_ON ENABLE_LAPACK LAPACK_WORKS 169 ADVANCED) 170list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_LAPACKBAND") 171 172sundials_option(BUILD_SUNLINSOL_LAPACKDENSE BOOL "Build the SUNLINSOL_LAPACKDENSE module (requires LAPACK)" ON 173 DEPENDS_ON ENABLE_LAPACK LAPACK_WORKS 174 ADVANCED) 175list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_LAPACKDENSE") 176 177sundials_option(BUILD_SUNLINSOL_MAGMADENSE BOOL "Build the SUNLINSOL_MAGMADENSE module (requires MAGMA)" ON 178 DEPENDS_ON ENABLE_MAGMA MAGMA_WORKS 179 ADVANCED) 180list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_MAGMADENSE") 181 182sundials_option(BUILD_SUNLINSOL_SUPERLUDIST BOOL "Build the SUNLINSOL_SUPERLUDIST module (requires SUPERLUDIST)" ON 183 DEPENDS_ON ENABLE_SUPERLUDIST SUPERLUDIST_WORKS BUILD_SUNMATRIX_SLUNRLOC 184 ADVANCED) 185list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SUPERLUDIST") 186 187sundials_option(BUILD_SUNLINSOL_SUPERLUMT BOOL "Build the SUNLINSOL_SUPERLUMT module (requires SUPERLUMT)" ON 188 DEPENDS_ON ENABLE_SUPERLUMT SUPERLUMT_WORKS 189 ADVANCED) 190list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNLINSOL_SUPERLUMT") 191 192 193# --------------------------------------------------------------- 194# Options to enable/disable build for SUNNONLINSOL modules. 195# --------------------------------------------------------------- 196 197# required modules are in the build list, but cannot be disabled 198set(BUILD_SUNNONLINSOL_NEWTON TRUE) 199list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNNONLINSOL_NEWTON") 200set(BUILD_SUNNONLINSOL_FIXEDPOINT TRUE) 201list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNNONLINSOL_FIXEDPOINT") 202 203sundials_option(BUILD_SUNNONLINSOL_PETSCSNES BOOL "Build the SUNNONLINSOL_PETSCSNES module (requires PETSc)" ON 204 DEPENDS_ON ENABLE_PETSC PETSC_FOUND 205 ADVANCED) 206list(APPEND SUNDIALS_BUILD_LIST "BUILD_SUNNONLINSOL_PETSCSNES") 207