aboutsummaryrefslogtreecommitdiff
path: root/math/vtk9/Makefile
blob: 035d68bba89e937a574608d1eee5f93de52442c9 (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
PORTNAME=	vtk
DISTVERSION=	9.2.6
PORTREVISION=	5
CATEGORIES=	math graphics
MASTER_SITES=	https://vtk.org/files/release/${VTK_SHORT_VER}/
PKGNAMESUFFIX=	9
DISTNAME=	${PORTNAME:tu}-${DISTVERSION}

MAINTAINER=	yuri@FreeBSD.org
COMMENT=	Visualization toolkit
WWW=		https://vtk.org/

LICENSE=	BSD3CLAUSE

BROKEN_FreeBSD_13_aarch64=	clang crashes, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275784

LIB_DEPENDS=	\
		libexpat.so:textproc/expat2 \
		libfreetype.so:print/freetype2 \
		libhdf5.so:science/hdf5 \
		libnetcdf.so:science/netcdf \
		libpng.so:graphics/png \
		libtiff.so:graphics/tiff

USES=		alias cmake compiler:c++11-lang jpeg localbase xorg
USE_LDCONFIG=	${PREFIX}/lib/vtk-${VTK_SHORT_VER}
USE_XORG=	ice x11 xt xext sm xcursor xfixes xrender

CFLAGS_powerpc64le=	-DSQLITE_BYTEORDER=1234
CMAKE_ON=	BUILD_SHARED_LIBS \
		VTK_INSTALL_NO_DOCUMENTATION \
		Module_vtkTestingCore Module_vtkTestingRendering
.for m in expat freetype hdf5 jpeg netcdf png tiff zlib # mpi4py should be here, but this fails, see https://gitlab.kitware.com/vtk/vtk/-/issues/18693
CMAKE_ON+=	VTK_MODULE_USE_EXTERNAL_VTK_${m}
.endfor
CMAKE_ARGS=	-DVTK_INSTALL_LIBRARY_DIR=lib/vtk-${VTK_SHORT_VER} \
		-DVTK_INSTALL_ARCHIVE_DIR=lib/vtk-${VTK_SHORT_VER} \
		-DVTK_INSTALL_QT_DIR=/${QT_LIBDIR_REL}/plugins/designer \
		-DSTAGEDIR=${STAGEDIR}
		# all build options are documented here: https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/build.md
		# all modules can be obtailed by: find . -name vtk.module
		# there's also CMake/vtkWrapSettings.cmake with options

# disable finding Qt6
CMAKE_ON+=	CMAKE_DISABLE_FIND_PACKAGE_Qt6

# enable all modules
#CMAKE_ON+=	VTK_BUILD_ALL_MODULES

VTK_SHORT_VER=	${PORTVERSION:R}

DOCSDIR=	${PREFIX}/share/doc/vtk-${VTK_SHORT_VER}
DATADIR=	${PREFIX}/share/vtk-${VTK_SHORT_VER}

# Options
OPTIONS_DEFINE=	DESIGNER DOCS OMPI OSMESA PYTHON QT5 EXAMPLES
OPTIONS_DEFAULT=	OMPI PYTHON QT5 # vtk python binding is needed by other packages, and is unfortunately is unseparable. It is a candidate to be a subpackage.
OSMESA_DESC=	Use Mesa for off-screen rendering
OMPI_DESC=	OpenMPI (Message Passing Interface) support
DESIGNER_DESC=	Build the Qt Designer plugin
OPTIONS_SUB=	yes

# Option groups that enable groups of modules in VTK
VTK_GROUPS=		JAVA TCLTK
OPTIONS_GROUP=		GROUPS
OPTIONS_GROUP_GROUPS=	${VTK_GROUPS}
GROUPS_DESC=		Groups
.for w in ${VTK_GROUPS}
$w_DESC=		Enable $w group
.endfor

PYTHON_USES=		python
PYTHON_CMAKE_BOOL=	VTK_WRAP_PYTHON
PYTHON_CMAKE_ON=	-DVTK_PYTHON_VERSION=${PYTHON_MAJOR_VER} -DPython3_EXECUTABLE=${PYTHON_CMD}
PYTHON_VARS=		SUB_FILES=PKG-INFO SUB_LIST=PORTVERSION=${PORTVERSION}

QT5_USES=		qt:5
QT5_USE=		QT=core,declarative,gui,network,opengl,sql,uiplugin,widgets,x11extras,qmake,buildtools # qmake and buildtools should be with :build, but see https://gitlab.kitware.com/vtk/vtk/-/issues/18705
QT5_CMAKE_ON=		-DVTK_GROUP_ENABLE_Qt:STRING=YES \
			-DCMAKE_PREFIX_PATH:STRING=${LOCALBASE}/lib/qt5

#QT6_USES=		qt:6
#QT6_USE=		QT=base,declarative,tools:build
#QT6_CMAKE_ON=		-DVTK_GROUP_ENABLE_Qt:STRING=YES \
			-DCMAKE_PREFIX_PATH:STRING=${LOCALBASE}/lib/qt5

DESIGNER_CMAKE_BOOL=	QT_DESIGNER_PLUGIN
DESIGNER_USE=		QT=designer
DESIGNER_IMPLIES=	QT5

OMPI_CMAKE_BOOL=	VTK_USE_MPI
OMPI_USES=		mpi:openmpi
OMPI_CMAKE_ON=		-DMPI_HOME=${LOCALBASE}/mpi/openmpi
OMPI_LDFLAGS=		${MPI_LIBS}

OSMESA_CMAKE_ON=	-DVTK_OPENGL_HAS_OSMESA:BOOL=ON \
			-DOSMESA_INCLUDE_DIR:PATH=${LOCALBASE}/include/Mesa \
			-DOSMESA_LIBRARY:FILEPATH=${LOCALBASE}/lib/libOSMesa.so \
			-DOPENGL_gl_LIBRARY:FILEPATH=${LOCALBASE}/lib/libOSMesa.so \
			-DVTK_USE_X:BOOL=OFF
OSMESA_LIB_DEPENDS=	libOSMesa.so:graphics/libosmesa

JAVA_VARS=		USE_JAVA=yes
JAVA_CMAKE_BOOL=	VTK_WRAP_JAVA
JAVA_CMAKE_ON=		-DJAVA_INCLUDE_PATH:PATH=${JAVA_HOME}/include \
			-DJAVA_AWT_LIBRARY:PATH=${JAVA_HOME}/jre/lib/${ARCH}/libjawt.so \
			-DJAVA_JVM_LIBRARY:PATH=${JAVA_HOME}/jre/lib/${ARCH}/libjava.so

TCLTK_USES=		tk
TCLTK_CMAKE_ON=		-DVTK_GROUP_ENABLE_Tk:STRING=YES \
			-DTCL_INCLUDE_PATH:PATH=${TCL_INCLUDEDIR} \
			-DTK_INCLUDE_PATH:PATH=${TK_INCLUDEDIR}  \
			-DVTK_INSTALL_TCL_DIR=lib/vtk-${VTK_SHORT_VER}

DOCS_CMAKE_BOOL=	BUILD_DOCUMENTATION
DOCS_BUILD_DEPENDS=	doxygen:devel/doxygen

EXAMPLES_CMAKE_BOOL=	BUILD_EXAMPLES

.include <bsd.port.options.mk>

.if !${PORT_OPTIONS:MOSMESA}
USES+=		gl
USE_GL=		gl glu
.endif

.if ${PORT_OPTIONS:MPYTHON} && ${PORT_OPTIONS:MOMPI}
BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mpi4py>0:net/py-mpi4py@${PY_FLAVOR}
RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mpi4py>0:net/py-mpi4py@${PY_FLAVOR}
.endif

CONFLICTS=	vtk6 vtk8

do-install-PYTHON-on:
	# cmake doesn't install pip's .egg-info: https://gitlab.kitware.com/vtk/vtk/-/issues/18087
	@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/vtk-${DISTVERSION}-py${PYTHON_VER}.egg-info
	@${INSTALL_DATA} ${WRKDIR}/PKG-INFO ${STAGEDIR}${PYTHON_SITELIBDIR}/vtk-${DISTVERSION}-py${PYTHON_VER}.egg-info
	# workaround for: VTK installs mpi4py which makes it to conflict with the standalone mpi4py package, see https://gitlab.kitware.com/vtk/vtk/-/issues/18691
	@${RM} -r ${STAGEDIR}${PYTHON_SITELIBDIR}/mpi4py

post-install: # autoplist: thousands of files, complex dependencies on options
	@cd ${STAGEDIR}${PREFIX} && \
		${FIND} * -type f -or -type l >> ${TMPPLIST}

.include <bsd.port.mk>