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
|
# 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 import *
class _3dtk(CMakePackage):
"""The 3D Toolkit provides algorithms and methods to process 3D point
clouds.
It includes automatic high-accurate registration (6D simultaneous
localization and mapping, 6D SLAM) and other tools, e.g., a fast 3D viewer,
plane extraction software, etc. Several file formats for the point clouds
are natively supported, new formats can be implemented easily."""
homepage = "http://slam6d.sourceforge.net/"
# Repo seems to be in the process of switching to git:
# https://github.com/3DTK/3DTK
version('trunk', svn='https://svn.code.sf.net/p/slam6d/code/trunk', preferred=True)
version('1.2', svn='https://svn.code.sf.net/p/slam6d/code/branches/3dtk-release-1.2')
variant('cgal', default=False, description='Compile with CGAL support')
variant('opengl', default=True, description='Compile with OpenGL support')
variant('opencv', default=True, description='Compile with OpenCV support')
variant('compact_octree', default=False, description='Whether to use the compact octree display')
variant('cuda', default=False, description='Whether to build CUDA accelerated collision detection tools')
variant('openmp', default=False, description='Whether to use parallel processing capabilities of OPENMP')
conflicts('~opencv', when='platform=darwin')
conflicts('+compact_octree', when='~opengl')
generator = 'Ninja'
depends_on('cmake@3.5:', when='@trunk', type='build')
depends_on('cmake@2.6.1:2', when='@1.2', type='build')
depends_on('ninja', type='build')
depends_on('boost@:1.75+serialization+graph+regex+filesystem+system+thread+date_time+program_options')
depends_on('suite-sparse')
depends_on('zlib')
depends_on('libpng')
depends_on('eigen')
depends_on('cgal', when='+cgal')
depends_on('gl', when='+opengl')
depends_on('glew', when='+opengl')
depends_on('freeglut', when='+opengl')
depends_on('opencv+aruco+calib3d+features2d+ffmpeg+highgui+imgcodecs+imgproc+ml+videoio+flann', when='+opencv')
depends_on('cuda', when='+cuda')
# TODO: add Spack packages for these instead of using vendored copies
# depends_on('ann')
# depends_on('newmat')
patch('homebrew.patch', when='platform=darwin')
def setup_build_environment(self, env):
env.prepend_path('CPATH', self.spec['eigen'].prefix.include)
def cmake_args(self):
return [
self.define_from_variant('WITH_CGAL', 'cgal'),
self.define('WITH_GMP', False),
self.define('WITH_LIBZIP', False),
self.define_from_variant('WITH_OPENGL', 'opengl'),
self.define_from_variant('WITH_OPENCV', 'opencv'),
self.define('WITH_QT', False),
self.define('WITH_GLFW', False),
self.define('WITH_FTGL', False),
self.define('WITH_XMLRPC', False),
self.define('WITH_LIBCONFIG', False),
self.define('WITH_ROS', False),
self.define('WITH_PYTHON', False),
self.define('WITH_WXWIDGETS', False),
self.define_from_variant('WITH_COMPACT_OCTREE', 'compact_octree'),
self.define('WITH_GLEE', False),
self.define('WITH_LASLIB', False),
self.define('WITH_E57', False),
self.define('WITH_3DMOUSE', False),
self.define_from_variant('WITH_CUDA', 'cuda'),
self.define('WITH_RIVLIB', False),
self.define('WITH_MICROEPSILONLIB', False),
self.define_from_variant('WITH_OPENMP', 'openmp'),
self.define('WITH_METRICS', False),
self.define('WITH_ADDONS', False),
]
def install(self, spec, prefix):
install_tree('bin', prefix.bin)
|