summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/googletest/package.py
blob: e74afaff062b92b170de6f7dc6924d943fb198a3 (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
# 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)

from spack.package import *


class Googletest(CMakePackage):
    """Google test framework for C++.  Also called gtest."""

    homepage = "https://github.com/google/googletest"
    url = "https://github.com/google/googletest/archive/release-1.10.0.tar.gz"
    git = "https://github.com/google/googletest"

    version("main", branch="main")
    version("1.12.1", sha256="81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2")
    version("1.12.0", sha256="2a4f11dce6188b256f3650061525d0fe352069e5c162452818efbbf8d0b5fe1c")
    version("1.11.0", sha256="07b0896360f8e14414a8419e35515da0be085c5b4547c914ab8f4684ef0a3a8e")
    version("1.10.0", sha256="e4a7cd97c903818abe7ddb129db9c41cc9fd9e2ded654be57ced26d45c72e4c9")
    version("1.8.1", sha256="8e40a005e098b1ba917d64104549e3da274e31261dedc57d6250fe91391b2e84")
    version("1.8.0", sha256="d8c33605d23d303b08a912eaee7f84c4e091d6e3d90e9a8ec8aaf7450dfe2568")
    version("1.7.0", sha256="9639cf8b7f37a4d0c6575f52c01ef167c5f11faee65252296b3ffc2d9acd421b")
    version("1.6.0", sha256="a61e20c65819eb39a2da85c88622bac703b865ca7fe2bfdcd3da734d87d5521a")

    variant("gmock", default=False, description="Build with gmock")
    conflicts("+gmock", when="@:1.7.0")

    variant("pthreads", default=True, description="Build multithreaded version with pthreads")
    variant("shared", default=True, description="Build shared libraries (DLLs)")

    def cmake_args(self):
        spec = self.spec
        if "@1.8.0:" in spec:
            # New style (contains both Google Mock and Google Test)
            options = ["-DBUILD_GTEST=ON"]
            if "+gmock" in spec:
                options.append("-DBUILD_GMOCK=ON")
            else:
                options.append("-DBUILD_GMOCK=OFF")
        else:
            # Old style (contains only GTest)
            options = []

        options.append(
            "-Dgtest_disable_pthreads={0}".format("OFF" if "+pthreads" in spec else "ON")
        )
        options.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared"))
        return options

    @when("@:1.7.0")
    def install(self, spec, prefix):
        """Make the install targets"""
        with working_dir(self.build_directory):
            # Google Test doesn't have a make install
            # We have to do our own install here.
            install_tree(join_path(self.stage.source_path, "include"), prefix.include)

            mkdirp(prefix.lib)
            if "+shared" in spec:
                install("libgtest.{0}".format(dso_suffix), prefix.lib)
                install("libgtest_main.{0}".format(dso_suffix), prefix.lib)
            else:
                install("libgtest.a", prefix.lib)
                install("libgtest_main.a", prefix.lib)

    @run_after("install")
    def darwin_fix(self):
        # The shared library is not installed correctly on Darwin; fix this
        if self.spec.satisfies("platform=darwin"):
            fix_darwin_install_name(self.prefix.lib)