summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/easi/package.py
blob: e934fab9c4252f76d52a80df60c2d47e5244bab9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack.package import *


class Easi(CMakePackage):
    """easi is a library for the Easy Initialization of models
    in three (or less or more) dimensional domains.
    """

    homepage = "https://easyinit.readthedocs.io"
    git = "https://github.com/SeisSol/easi.git"

    maintainers("ravil-mobile", "Thomas-Ulrich", "krenzland", "ThrudPrimrose", "davschneller")

    license("BSD-3-Clause")

    version("develop", branch="master")
    version("1.2.0", tag="v1.2.0", commit="305a119338116a0ceac6b68b36841a50250d05b1")
    version("1.1.2", tag="v1.1.2", commit="4c87ef3b3dca9415d116ef102cb8de750ef7e1a0")

    variant("asagi", default=True, description="build with ASAGI support")
    variant(
        "jit",
        default="impalajit,lua",
        description="build with JIT support",
        values=("impalajit", "impalajit-llvm", "lua"),
        multi=True,
    )

    depends_on("asagi +mpi +mpi3", when="+asagi")
    depends_on("yaml-cpp@0.6.2")

    depends_on("impalajit@llvm-1.0.0", when="jit=impalajit-llvm")
    depends_on("lua@5.3.2", when="jit=lua")
    depends_on("impalajit@main", when="jit=impalajit")

    conflicts("jit=impalajit", when="jit=impalajit-llvm")
    conflicts("jit=impalajit-llvm", when="jit=impalajit")

    conflicts("jit=impalajit", when="target=aarch64:")
    conflicts("jit=impalajit", when="target=ppc64:")
    conflicts("jit=impalajit", when="target=ppc64le:")
    conflicts("jit=impalajit", when="target=riscv64:")

    def cmake_args(self):
        args = []
        args.append(self.define_from_variant("ASAGI", "asagi"))
        spec = self.spec
        if "jit=impalajit" in spec or "jit=impalajit-llvm" in spec:
            args.append(self.define("IMPALAJIT", True))
            backend_type = "llvm" if "jit=impalajit-llvm" in spec else "original"
            args.append(self.define("IMPALAJIT_BACKEND", backend_type))
        else:
            args.append(self.define("IMPALAJIT", False))

        if "jit=lua" in spec:
            args.append(self.define("LUA", True))

        return args