summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
blob: 618d166a2d9f909f7da769ced5dadd7a5de937d5 (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# 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 LibjpegTurbo(CMakePackage, AutotoolsPackage):
    """libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to
    accelerate baseline JPEG compression and decompression.

    libjpeg is a library that implements JPEG image encoding, decoding and
    transcoding.
    """

    # https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
    homepage = "https://libjpeg-turbo.org/"
    url = "https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.0.3.tar.gz"

    license("BSD-3-Clause AND IJG AND Zlib")

    version("3.0.0", sha256="171dae5d73560bc94006a7c0c3281bd9bfde6a34f7e41e66f930a1a9162bd7df")
    version("2.1.5.1", sha256="61846251941e5791005fb7face196eec24541fce04f12570c308557529e92c75")
    version("2.1.5", sha256="254f3642b04e309fee775123133c6464181addc150499561020312ec61c1bf7c")
    version("2.1.4", sha256="a78b05c0d8427a90eb5b4eb08af25309770c8379592bb0b8a863373128e6143f")
    version("2.1.3", sha256="dbda0c685942aa3ea908496592491e5ec8160d2cf1ec9d5fd5470e50768e7859")
    version("2.1.2", sha256="e7fdc8a255c45bc8fbd9aa11c1a49c23092fcd7379296aeaeb14d3343a3d1bed")
    version("2.1.1", sha256="20e9cd3e5f517950dfb7a300ad344543d88719c254407ffb5ad88d891bf701c4")
    version("2.1.0", sha256="d6b7790927d658108dfd3bee2f0c66a2924c51ee7f9dc930f62c452f4a638c52")
    version("2.0.6", sha256="005aee2fcdca252cee42271f7f90574dda64ca6505d9f8b86ae61abc2b426371")
    version("2.0.5", sha256="b3090cd37b5a8b3e4dbd30a1311b3989a894e5d3c668f14cbc6739d77c9402b7")
    version("2.0.4", sha256="7777c3c19762940cff42b3ba4d7cd5c52d1671b39a79532050c85efb99079064")
    version("2.0.3", sha256="a69598bf079463b34d45ca7268462a18b6507fdaa62bb1dfd212f02041499b5d")
    version("2.0.2", sha256="b45255bd476c19c7c6b198c07c0487e8b8536373b82f2b38346b32b4fa7bb942")
    version("1.5.90", sha256="cb948ade92561d8626fd7866a4a7ba3b952f9759ea3dd642927bc687470f60b7")
    version(
        "1.5.3",
        sha256="1a17020f859cb12711175a67eab5c71fc1904e04b587046218e36106e07eabde",
        deprecated=True,
    )
    version(
        "1.5.0",
        sha256="232280e1c9c3e6a1de95fe99be2f7f9c0362ee08f3e3e48d50ee83b9a2ed955b",
        deprecated=True,
    )
    version(
        "1.3.1",
        sha256="5008aeeac303ea9159a0ec3ccff295434f4e63b05aed4a684c9964d497304524",
        deprecated=True,
    )

    provides("jpeg")

    build_system(
        conditional("autotools", when="@:1.5.3"),
        conditional("cmake", when="@1.5.90:"),
        default="cmake",
    )

    variant("shared", default=True, description="Build shared libs")
    variant("static", default=True, description="Build static libs")
    variant("jpeg8", default=False, description="Emulate libjpeg v8 API/ABI")
    variant(
        "partial_decoder",
        default=False,
        description="add partial_decode_scale functionality required for rocAL",
    )

    patch(
        "https://github.com/libjpeg-turbo/libjpeg-turbo/commit/09c71da06a6346dca132db66f26f959f7e4dd5ad.patch?full_index=1",
        sha256="4d5bdfb5de5b04399144254ea383f5357ab7beb830b398aeb35b65f21dd6b4b0",
        when="@2.0.6 +partial_decoder",
    )
    patch(
        "https://github.com/libjpeg-turbo/libjpeg-turbo/commit/640d7ee1917fcd3b6a5271aa6cf4576bccc7c5fb.patch?full_index=1",
        sha256="dc1ec567c2356b652100ecdc28713bbf25f544e46f7d2947f31a2395c362cc48",
        when="@2.0.6 +partial_decoder",
    )

    # Can use either of these. But in the current version of the package
    # only nasm is used. In order to use yasm an environmental variable
    # NASM must be set.
    # TODO: Implement the selection between two supported assemblers.
    # depends_on('yasm', type='build')
    depends_on("nasm", type="build")
    with when("build_system=autotools"):
        depends_on("autoconf", type="build")
        depends_on("automake", type="build")
        depends_on("libtool", type="build")

    with when("build_system=cmake"):
        depends_on("cmake", type="build", when="@1.5.90:")

    @property
    def libs(self):
        return find_libraries("libjpeg*", root=self.prefix, recursive=True)


class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
    def cmake_args(self):
        args = [
            self.define_from_variant("ENABLE_SHARED", "shared"),
            self.define_from_variant("ENABLE_STATIC", "static"),
            self.define_from_variant("WITH_JPEG8", "jpeg8"),
        ]

        return args

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