summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/ctffind/package.py
blob: f55f2ce3802b5e3ce8986b435fd426600cd13ad2 (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
# 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 Ctffind(AutotoolsPackage):
    """Fast and accurate defocus estimation from electron micrographs."""

    homepage = "https://grigoriefflab.umassmed.edu/ctffind4"
    url = "https://grigoriefflab.umassmed.edu/system/tdf?path=ctffind-4.1.8.tar.gz&file=1&type=node&id=26"

    license("BSD-3-Clause")

    version(
        "4.1.14",
        sha256="db17b2ebeb3c3b2b3764e42b820cd50d19ccccf6956c64257bfe5d5ba6b40cb5",
        extension="tar.gz",
    )
    version(
        "4.1.8",
        sha256="bec43c0b8d32878c740d6284ef6d9d22718c80dc62270be18d1d44e8b84b2729",
        extension="tar.gz",
    )

    def url_for_version(self, version):
        url = "https://grigoriefflab.umassmed.edu/system/tdf?path=ctffind-{0}.tar.gz&file=1&type=node&id=26"
        return url.format(version)

    depends_on("wxwidgets")
    depends_on("fftw-api")
    depends_on("libtiff")
    depends_on("jpeg")

    patch("configure.patch", when="@4.1.8")
    patch("no_sincos_asm.patch", when="@4.1.14 target=power9le")
    patch("no_sincos_asm.patch", when="@4.1.14 target=aarch64:")
    patch("fix_return_types.patch", when="@4.1.13:4.1.14")

    def configure_args(self):
        config_args = []

        if self.spec["fftw-api"].name in INTEL_MATH_LIBRARIES:
            config_args.extend(
                [
                    "--enable-mkl",
                    "CPPFLAGS=-I{0}".format(
                        join_path(self.spec["fftw-api"].headers.directories[0], "fftw")
                    ),
                ]
            )
        else:
            config_args.extend(
                [
                    "--disable-mkl",
                    "CPPFLAGS={0}".format(self.spec["fftw-api"].headers.include_flags),
                ]
            )

        return config_args