summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/sina/package.py
blob: b28cbb6a65fbcb02fae95a98fff4d23ec00543ae (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Copyright 2013-2022 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)

import os

from spack.package import *


class Sina(CachedCMakePackage):
    """Sina C++ Library"""

    homepage = 'https://github.com/LLNL/Sina'
    url = 'https://github.com/LLNL/Sina/releases/download/v1.10.0/sina-cpp-1.10.0.tar.gz'

    maintainers = [
        'estebanpauli',
        'HaluskaR',
        'murray55',
    ]

    version('1.11.0', sha256='a080f6583101696a6354940f00646ef892e1b2f8fc3f1b1907ba1c3ade6d4b47')
    version('1.10.0', sha256='b34379ce8cc5eca5a0f16893053fac75be14c2109d1beed4c6d48e11f9b281c7')

    variant('docs', default=False,
            description='Allow generating documentation')
    variant('adiak', default=False,
            description='Create interface for calling Sina through Adiak')
    variant('test', default=False,
            description='Build tests')

    depends_on('cmake@3.8.0:', type='build')
    depends_on('adiak', when='+adiak')
    depends_on('doxygen', type='build', when='+docs')
    depends_on('conduit')

    def cmake_args(self):
        return [
            self.define_from_variant('-DSINA_BUILD_ADIAK_BINDINGS', 'adiak'),
            self.define_from_variant('-DSINA_BUILD_TESTS', 'test'),
            self.define_from_variant('-DSINA_BUILD_DOCS', 'docs'),
        ]

    def initconfig_package_entries(self):
        entries = [
            '#' + 78 * '-',
            '# Library Dependencies',
            '#' + 78 * '-'
        ]

        conduit_dir = self.spec['conduit'].prefix
        entries.append(cmake_cache_path(
            'Conduit_DIR',
            '%s/lib/cmake/conduit' % conduit_dir))

        use_adiak = self.spec.satisfies('^adiak')
        entries.append(cmake_cache_option('SINA_BUILD_ADIAK_BINDINGS', use_adiak))
        if use_adiak:
            adiak_dir = self.spec['adiak'].prefix
            entries.append(cmake_cache_path(
                'adiak_DIR',
                '%s/lib/cmake/adiak/' % adiak_dir))

        entries.append('#' + 78 * '-')
        entries.append('# Devtools')
        entries.append('#' + 78 * '-')

        build_tests = self.spec.satisfies('+test')
        entries.append(cmake_cache_option('SINA_BUILD_TESTS', build_tests))

        build_docs = self.spec.satisfies('+docs')
        entries.append(cmake_cache_option('SINA_BUILD_DOCS', build_docs))
        if build_docs:
            doxygen_bin_dir = self.spec['doxygen'].prefix.bin
            entries.append(cmake_cache_path(
                'DOXYGEN_EXECUTABLE', os.path.join(doxygen_bin_dir, 'doxygen')))

        return entries