summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/ape/package.py
blob: 39b833ab0e10d6f933a68790f85717e2f8e3b7dd (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
# 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 Ape(Package):
    """A tool for generating atomic pseudopotentials within a Density-Functional
    Theory framework"""

    homepage = "https://www.tddft.org/programs/APE/"
    url = "http://www.tddft.org/programs/APE/sites/default/files/ape-2.2.1.tar.gz"

    version("2.2.1", sha256="1bdb7f987fde81f8a5f335da6b59fa884e6d185d4a0995c90fde7c04376ce9e3")

    depends_on("gsl")
    depends_on("libxc@:4", when="@2.3.0:")
    depends_on("libxc@:2.2.2", when="@:2.2.1")

    def install(self, spec, prefix):
        args = []
        args.extend(
            [
                f"--prefix={prefix}",
                f"--with-gsl-prefix={spec['gsl'].prefix}",
                f"--with-libxc-prefix={spec['libxc'].prefix}",
            ]
        )

        # When preprocessor expands macros (i.e. CFLAGS) defined as quoted
        # strings the result may be > 132 chars and is terminated.
        # This will look to a compiler as an Unterminated character constant
        # and produce Line truncated errors. To overcome this, add flags to
        # let compiler know that the entire line is meaningful.
        # TODO: For the lack of better approach, assume that clang is mixed
        # TODO: with GNU fortran.
        if spec.satisfies("%apple-clang") or spec.satisfies("%clang") or spec.satisfies("%gcc"):
            args.extend(["FCFLAGS=-O2 -ffree-line-length-none"])

        configure(*args)
        make()
        make("install")