summaryrefslogtreecommitdiff
path: root/devel/root/Makefile
blob: 7e21a99f4c3994179d782f7270ee315133f110f1 (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
PORTNAME=	root
DISTVERSION=	6.28.02
CATEGORIES=	devel science math parallel python
MASTER_SITES=	https://root.cern/download/
DISTFILES=	${PORTNAME}_v${DISTVERSION}.source${EXTRACT_SUFX}

MAINTAINER=	erik@tenku.dk
COMMENT=	Data analysis framework made at CERN
WWW=		https://root.cern/

LICENSE=	LGPL21
LICENSE_FILE=	${WRKSRC}/LGPL2_1.txt

BUILD_DEPENDS=	${PYNUMPY} \
		bash:shells/bash \
		nlohmann-json>=3:devel/nlohmann-json
LIB_DEPENDS=	libAfterImage.so:graphics/libafterimage \
		libcfitsio.so:astro/cfitsio \
		libcurl.so:ftp/curl \
		libfftw3.so:math/fftw3 \
		libfreetype.so:print/freetype2 \
		libftgl.so:graphics/ftgl \
		libgif.so:graphics/giflib \
		libgl2ps.so:print/gl2ps \
		libgsl.so:math/gsl \
		liblz4.so:archivers/liblz4 \
		libpcre.so:devel/pcre \
		libpng.so:graphics/png \
		libtbb.so:devel/onetbb \
		libtiff.so:graphics/tiff \
		libvdt.so:math/vdt \
		libxkbcommon.so:x11/libxkbcommon \
		libXrdCl.so:databases/xrootd \
		libxxhash.so:devel/xxhash \
		libzstd.so:archivers/zstd

USES=		blaslapack:openblas cmake compiler:c++17-lang desktop-file-utils \
		gettext-runtime gl gnome iconv jpeg mysql:57 pgsql:13.0+ python:3.9+ \
		shebangfix sqlite ssl xorg
USE_GL=		glew glu opengl
USE_GNOME=	cairo gdkpixbuf2 glib20 librsvg2 libxml2
USE_XORG=	ice sm x11 xau xaw xcb xcomposite xcursor xdamage xdmcp xext \
		xfixes xfont xfont2 xft xi xinerama xkbfile xmu xpm xrandr \
		xrender xres xscrnsaver xt xv xxf86vm

SHEBANG_FILES=	config/rootssh etc/dictpch/makepch.py etc/proof/utils/circle.sh \
		etc/proof/utils/crypt etc/proof/utils/pps \
		etc/proof/utils/proofctl.sh etc/proof/utils/proofinstall.sh

CMAKE_ARGS=	-DCMAKE_CXX_STANDARD=17
CMAKE_ON=	gnuinstall soversion
CMAKE_OFF=	builtin_gtest

CONFIGURE_WRKSRC?=	${WRKDIR}/.build
MAKE_ENV+=		ROOTSYS=${CONFIGURE_WRKSRC}

OPTIONS_DEFINE=	DOCS ROOT7
OPTIONS_DEFAULT=	ROOT7
OPTIONS_SUB=	yes

ROOT7_DESC=	Enable supplementary preview features of ROOT version 7
ROOT7_CMAKE_BOOL=	root7

.include <bsd.port.options.mk>

PLIST_SUB+=	SHLIB_SHVER="${DISTVERSION:R}" \
		SHLIB_VER="${DISTVERSION}"

# Some .modulemap, .pcm and .idx files are not installed on aarch64, a few .pcm files are exclusive to aarch64 and files LIBRARY.pcm are renamed libLIBRARY_rdict.pcm on aarch64
.if ${ARCH} == "aarch64"
PLIST_SUB+=	NOT_INSTALLED_ON_AARCH64="@comment " ONLY_INSTALLED_ON_AARCH64="" AARCH64_PCM_PREFIX="lib" AARCH64_PCM_SUFFIX="_rdict"
.else
PLIST_SUB+=	NOT_INSTALLED_ON_AARCH64="" ONLY_INSTALLED_ON_AARCH64="@comment " AARCH64_PCM_PREFIX="" AARCH64_PCM_SUFFIX=""
.endif

# Some files only installed with LLVM/Clang 13 (used on FreeBSD 12.4 and 13.x)
# TODO: Introduce USES+=llvm:min=14 instead when this can be deemed not too obtrusive on supported releases
#       -- the post-patch step further down can then be phased out as well
.if 1204000 <= ${OSVERSION} && ${OSVERSION} < 1400000 && ${OSVERSION} != 1301507
PLIST_SUB+=	ONLY_INSTALLED_WITH_LLVM_CLANG_13=""
.else
PLIST_SUB+=	ONLY_INSTALLED_WITH_LLVM_CLANG_13="@comment "
.endif

.include <bsd.port.pre.mk>

# In LLVM/Clang 10.0.1 (used on FreeBSD 12.3), the cstdalign header is missing from the std modulemap, but it is declared included in ROOT's std modulemap - this has to be removed.
# See https://github.com/llvm/llvm-project/blob/main/libcxx/include/module.modulemap.in#L181
# The same seems to be the case for the other headers defined in the variable "modules" below.
.if ${OSVERSION} < 1204000
modules=	cstdalign cuchar "ext\/functional" "ext\/numeric" "bits\/allocator.h" "bits\/basic_ios.h" "bits\/cpp_type_traits.h" "bits\/exception_defines.h" "bits\/ios_base.h" "bits\/locale_facets.h" "bits\/stl_algobase.h" "bits\/stl_map.h" "bits\/stl_pair.h" bits_stl_tree_h
post-patch:
	MODULEMAP=${WRKSRC}/interpreter/cling/include/cling/std.modulemap ${SH} ${SCRIPTDIR}/remove-modules-from-modulemap.sh ${modules}
.endif

.include <bsd.port.post.mk>