summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/freetype/package.py
blob: 0ebfaa811386bbf7a504e72f9c44a7600fed4156 (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
80
81
82
83
84
85
86
87
88
89
# Copyright 2013-2024 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.build_systems.autotools import AutotoolsBuilder
from spack.build_systems.cmake import CMakeBuilder
from spack.package import *


class Freetype(AutotoolsPackage, CMakePackage):
    """FreeType is a freely available software library to render fonts.
    It is written in C, designed to be small, efficient, highly customizable,
    and portable while capable of producing high-quality output (glyph images)
    of most vector and bitmap font formats."""

    homepage = "https://www.freetype.org/index.html"
    url = "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz"

    maintainers("michaelkuhn")

    license("FTL OR GPL-2.0-or-later")

    version("2.11.1", sha256="f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b")
    version("2.11.0", sha256="a45c6b403413abd5706f3582f04c8339d26397c4304b78fa552f2215df64101f")
    version("2.10.4", sha256="5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac")
    version("2.10.2", sha256="e09aa914e4f7a5d723ac381420949c55c0b90b15744adce5d1406046022186ab")
    version("2.10.1", sha256="3a60d391fd579440561bf0e7f31af2222bc610ad6ce4d9d7bd2165bca8669110")
    version("2.10.0", sha256="955e17244e9b38adb0c98df66abb50467312e6bb70eac07e49ce6bd1a20e809a")
    version("2.9.1", sha256="ec391504e55498adceb30baceebd147a6e963f636eb617424bcfc47a169898ce")
    version("2.7.1", sha256="162ef25aa64480b1189cdb261228e6c5c44f212aac4b4621e28cf2157efb59f5")
    version("2.7", sha256="7b657d5f872b0ab56461f3bd310bd1c5ec64619bd15f0d8e08282d494d9cfea4")
    version("2.5.3", sha256="41217f800d3f40d78ef4eb99d6a35fd85235b64f81bc56e4812d7672fca7b806")

    build_system("cmake", "autotools", default="autotools")

    depends_on("bzip2")
    depends_on("libpng")
    for plat in ["linux", "darwin", "cray"]:
        depends_on("pkgconfig", type="build", when="platform=%s" % plat)

    conflicts(
        "%intel",
        when="@2.8:2.10.2",
        msg="freetype-2.8 to 2.10.2 cannot be built with icc (does not "
        "support __builtin_shuffle)",
    )

    variant("shared", default=True, description="Build shared libraries")
    variant("pic", default=True, description="Enable position-independent code (PIC)")

    requires("+pic", when="+shared build_system=autotools")

    patch("windows.patch", when="@2.9.1")

    @property
    def headers(self):
        headers = find_headers("*", self.prefix.include, recursive=True)
        headers.directories = [self.prefix.include.freetype2]
        return headers


class AutotoolsBuilder(AutotoolsBuilder):
    def configure_args(self):
        args = [
            "--with-brotli=no",
            "--with-bzip2=yes",
            "--with-harfbuzz=no",
            "--with-png=yes",
            "--with-zlib=no",
        ]
        if self.spec.satisfies("@2.9.1:"):
            args.append("--enable-freetype-config")
        args.extend(self.enable_or_disable("shared"))
        args.extend(self.with_or_without("pic"))
        return args


class CMakeBuilder(CMakeBuilder):
    def cmake_args(self):
        return [
            self.define("FT_DISABLE_ZLIB", True),
            self.define("FT_DISABLE_BROTLI", True),
            self.define("FT_DISABLE_HARFBUZZ", True),
            self.define("FT_REQUIRE_PNG", True),
            self.define("FT_REQUIRE_BZIP2", True),
            self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
            self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
        ]