summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/vdt/package.py
blob: a29b924b43029e131a6a74e4da50e435c63d622c (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
# 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 Vdt(CMakePackage):
    """Vectorised math. A collection of fast and inline implementations of
    mathematical functions.
    """

    homepage = "https://github.com/dpiparo/vdt"
    url = "https://github.com/dpiparo/vdt/archive/v0.3.9.tar.gz"

    version("0.4.4", sha256="8b1664b45ec82042152f89d171dd962aea9bb35ac53c8eebb35df1cb9c34e498")
    version("0.4.3", sha256="705674612ebb5c182b65a8f61f4d173eb7fe7cdeee2235b402541a492e08ace1")
    version("0.3.9", sha256="1662d21037a29cae717ee50b73bd177bea79582f4138b7ad11404fc4be4e542e")
    version("0.3.8", sha256="e6d8485c3c8923993cb1b1a5bb85068a86746285058bf77faeb177363647be62")
    version("0.3.7", sha256="713a7e6d76d98f3b2b56b5216e7d5906e30f17865a5c7c889968e9a0b0664949")
    version("0.3.6", sha256="fb8f6386f2cd1eeb03db43f2b5c83a172107949bb5e5e8d4dfa603660a9757b0")

    variant(
        "preload",
        default=False,
        description="Create in the library the symbols to preload the library",
    )

    depends_on("python", type="build")

    @property
    def build_directory(self):
        d = join_path(self.stage.path, "spack-build")
        if self.spec.satisfies("@:0.3.8"):
            d = self.stage.source_path
        return d

    def cmake_args(self):
        spec = self.spec

        disable_features = set()
        if spec.satisfies("target=aarch64:"):
            disable_features.add("neon")
        elif spec.satisfies("target=ppc64le:"):
            disable_features.add("fma")

        args = [
            self.define_from_variant("PRELOAD"),
            self.define("PYTHON_EXECUTABLE", spec["python"].command),
        ]
        for f in ["sse", "avx", "avx2", "fma", "neon"]:
            args.append(
                self.define(f.upper(), f not in disable_features and f in self.spec.target)
            )

        return args