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

import platform

from spack.operating_systems.mac_os import macos_version
from spack.package import *


class Oce(Package):
    """Open CASCADE Community Edition

    UNMAINTAINED: see https://github.com/tpaviot/oce/issues/745#issuecomment-992285943
    """

    homepage = "https://github.com/tpaviot/oce"
    url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz"

    version("0.18.3", sha256="c553d6a7bf52f790abc3b6bb7a1e91a65947e92a426bb1a88a11960c31f0966c")
    version("0.18.2", sha256="dc21ddea678a500ad87c773e9a502ed7a71768cf83d9af0bd4c43294186a7fef")
    version("0.18.1", sha256="1acf5da4bffa3592ca9f3535af9b927b79fcfeadcb81e9963e89aec192929a6c")
    version("0.18", sha256="226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993")
    version("0.17.2", sha256="8d9995360cd531cbd4a7aa4ca5ed969f08ec7c7a37755e2f3d4ef832c1b2f56e")
    version("0.17.1", sha256="b1ff0cb8cf31339bbb30ac7ed2415d376b9b75810279d2f497e115f08c090928")
    version("0.17", sha256="9ab0dc2a2d125b46cef458b56c6d171dfe2218d825860d616c5ab17994b8f74d")
    version("0.16.1", sha256="d31030c8da4a1b33f767d0d59895a995c8eabc8fc65cbe0558734f6021ea2f57")
    version("0.16", sha256="841fe4337a5a4e733e36a2efc4fe60a4e6e8974917028df05d47a02f59787515")

    variant("tbb", default=True, description="Build with Intel Threading Building Blocks")
    variant("X11", default=False, description="Build with X11 enabled")

    depends_on("cmake@2.8:", type="build")

    with when("+tbb"):
        depends_on("tbb")
        depends_on("intel-tbb@:2020 build_system=makefile", when="^intel-tbb")
        conflicts("^intel-oneapi-tbb@2021.1:")

    # There is a bug in OCE which appears with Clang (version?) or GCC 6.0
    # and has to do with compiler optimization, see
    # https://github.com/tpaviot/oce/issues/576
    # https://tracker.dev.opencascade.org/view.php?id=26042
    # https://github.com/tpaviot/oce/issues/605
    # https://github.com/tpaviot/oce/commit/61cb965b9ffeca419005bc15e635e67589c421dd.patch
    patch("null.patch", when="@0.16:0.17.1")

    # OCE depends on xlocale.h from glibc-headers but it was removed in 2.26,
    # see https://github.com/tpaviot/oce/issues/675
    patch("xlocale.patch", level=0, when="@0.18.1:0.18.2")

    # fix build with Xcode 8 "previous definition of CLOCK_REALTIME"
    # reported 27 Sep 2016 https://github.com/tpaviot/oce/issues/643
    if (platform.system() == "Darwin") and (macos_version() == Version("10.12")):
        patch("sierra.patch", when="@0.17.2:0.18.0")

    def install(self, spec, prefix):
        options = []
        options.extend(std_cmake_args)
        options.extend(
            [
                "-DOCE_INSTALL_PREFIX=%s" % prefix,
                "-DOCE_BUILD_SHARED_LIB:BOOL=ON",
                "-DCMAKE_BUILD_TYPE:STRING=Release",
                "-DOCE_DATAEXCHANGE:BOOL=ON",
                "-DOCE_DISABLE_X11:BOOL=%s" % ("OFF" if "+X11" in spec else "ON"),
                "-DOCE_DRAW:BOOL=OFF",
                "-DOCE_MODEL:BOOL=ON",
                "-DOCE_MULTITHREAD_LIBRARY:STRING=%s" % ("TBB" if "+tbb" in spec else "NONE"),
                "-DOCE_OCAF:BOOL=ON",
                "-DOCE_USE_TCL_TEST_FRAMEWORK:BOOL=OFF",
                "-DOCE_VISUALISATION:BOOL=OFF",
                "-DOCE_WITH_FREEIMAGE:BOOL=OFF",
                "-DOCE_WITH_GL2PS:BOOL=OFF",
                "-DOCE_WITH_OPENCL:BOOL=OFF",
            ]
        )

        if platform.system() == "Darwin":
            options.extend(["-DOCE_OSX_USE_COCOA:BOOL=ON"])

        if platform.system() == "Darwin" and (macos_version() >= Version("10.12")):
            # use @rpath on Sierra due to limit of dynamic loader
            options.append("-DCMAKE_MACOSX_RPATH=ON")
        else:
            options.append("-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib" % prefix)

        cmake(".", *options)
        make("install/strip")
        if self.run_tests:
            make("test")