aboutsummaryrefslogtreecommitdiff
path: root/science/cantera/Makefile
blob: fc0b817aab88bd7f9446b6874c1b489add189b5f (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
PORTNAME=	cantera
DISTVERSIONPREFIX=	v
DISTVERSION=	3.0.0
PORTREVISION=	2
CATEGORIES=	science # chemistry physics

MAINTAINER=	yuri@FreeBSD.org
COMMENT=	Chemical kinetics, thermodynamics, and transport tool suite
WWW=		https://cantera.org/

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/License.txt

BUILD_DEPENDS=	googletest>0:devel/googletest \
		${LOCALBASE}/include/boost/algorithm/string.hpp:devel/boost-libs \
		highfive>0:science/highfive \
		${PYTHON_PKGNAMEPREFIX}packaging>=0:devel/py-packaging@${PY_FLAVOR}
LIB_DEPENDS=	libfmt.so:devel/libfmt \
		libhdf5.so:science/hdf5 \
		libopenblas.so:math/openblas \
		libyaml-cpp.so:devel/yaml-cpp

USES=		compiler:c++17-lang eigen:3 localbase scons
USE_LDCONFIG=	yes

USE_GITHUB=	yes
GH_ACCOUNT=	Cantera
GH_TUPLE=	LLNL:sundials:887af43:sundials/ext/sundials # bundled sundials is only needed for the Octave option

MAKE_ARGS=	system_eigen='y' \
		system_sundials='n' \
		system_fmt='y' \
		system_yamlcpp='y' \
		googletest='system' \
		sundials_include='${LOCALBASE}/include/sundials' \
		extra_inc_dirs="${LOCALBASE}/include:${LOCALBASE}/include/eigen3" \
		extra_lib_dirs="${LOCALBASE}/lib" \
		debug='no' \
		cc_flags="${CXXFLAGS}" \
		prefix="${PREFIX}"
MAKE_ENV=	INSTALL_MANPAGES=y

ALL_TARGET=	build
TEST_TARGET=	test # some tests fail, see https://github.com/Cantera/cantera/issues/1095

OPTIONS_DEFINE=		OCTAVE PYTHON
OPTIONS_DEFAULT=	# PYTHON is broken; OCTAVE is off by default because Octave interface is not a frequently requested feature
OPTIONS_SUB=		yes

OCTAVE_DESC=		Octave support
OCTAVE_MAKE_ARGS=	matlab_toolbox=y matlab_path=${LOCALBASE}
OCTAVE_CXXFLAGS=	-I${LOCALBASE}/include/octave-${OCTAVE_VERSION}/octave
OCTAVE_LIB_DEPENDS=	liboctave.so:math/octave
OCTAVE_SUB_FILES=	pkg-message-octave
OCTAVE_USES=		octave:env
OCTAVE_BROKEN=		Octave support needs to be updated

PYTHON_USES=		python
PYTHON_USES_OFF=	python:env
PYTHON_USE=		PYTHON=cython
PYTHON_MAKE_ARGS=	python_cmd=${PYTHON_CMD} python_package=full
PYTHON_MAKE_ARGS_OFF=	python_package="none"
PYTHON_BUILD_DEPENDS=	${PYNUMPY}
PYTHON_RUN_DEPENDS=	${PYNUMPY} \
			${PYTHON_PKGNAMEPREFIX}h5py>0:science/py-h5py@${PY_FLAVOR} \
			${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \
			${PYTHON_PKGNAMEPREFIX}pandas>0:math/py-pandas@${PY_FLAVOR} \
			${PYTHON_PKGNAMEPREFIX}ruamel.yaml>0:devel/py-ruamel.yaml@${PY_FLAVOR} \
			${PYTHON_PKGNAMEPREFIX}scipy>0:science/py-scipy@${PY_FLAVOR}
PYTHON_BROKEN=		https://github.com/Cantera/cantera/issues/1601

do-install:
	cd ${WRKSRC} && \
		${MAKE_CMD} install \
			stage_dir="${STAGEDIR}"
	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libcantera_shared.so.${PORTVERSION}

do-install-PYTHON-on:
	# strip
	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/cantera/_cantera.cpython-${PYTHON_SUFFIX}.so

post-patch-OCTAVE-on: # adjust Octave version in SConscript (python styled os.environ['OCTAVE_VERSION'] somehow doesn't work for this)
	@${REINPLACE_CMD} -e "s|, 'bin', 'glnx.*')|, 'lib', 'octave', '${OCTAVE_VERSION}')|" ${WRKSRC}/src/matlab/SConscript

post-install-OCTAVE-on: # adjust .mex file name
	@${MV} \
		${STAGEDIR}${PREFIX}/lib/cantera/matlab/toolbox/ctmethods.mexa64 \
		${STAGEDIR}${PREFIX}/lib/cantera/matlab/toolbox/ctmethods.mex

.include <bsd.port.mk>