aboutsummaryrefslogtreecommitdiff
path: root/science/rdkit/Makefile
blob: f02115771af1a68cc02781da0b22655ea87ece55 (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
PORTNAME=	rdkit
DISTVERSIONPREFIX=	Release_
DISTVERSION=	2025_09_2
CATEGORIES=	science
MASTER_SITES=	https://github.com/schrodinger/maeparser/archive/:maeparser \
		https://github.com/schrodinger/coordgenlibs/archive/:coordgen \
		https://codeload.github.com/Glysade/chemdraw/tar.gz/refs/tags/:chemdraw \
		https://github.com/Tencent/rapidjson/archive/:rapidjson \
		LOCAL/yuri/:font # unstable, changing font file: https://fonts.google.com/download?family=Comic%20Neue&dummy=/:font
DISTFILES=	v${MAEPARSER_VERSION}.tar.gz:maeparser \
		v${COORDGEN_VERSION}.tar.gz:coordgen \
		v${CHEMDRAW_VERSION}:chemdraw \
		v${RAPIDJSON_VERSION}.tar.gz:rapidjson \
		ComicNeue-Regular.ttf:font
DIST_SUBDIR=	${PORTNAME}-${PORTVERSION}
EXTRACT_ONLY=	${DISTFILES:C/:.*//:Nv*:N*.ttf}

MAINTAINER=	yuri@FreeBSD.org
COMMENT=	Collection of cheminformatics and machine-learning software
WWW=		https://www.rdkit.org/ \
		https://github.com/rdkit/rdkit

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

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

BUILD_DEPENDS=	catch>0:devel/catch \
		flex:textproc/flex
LIB_DEPENDS=	libboost_thread.so:devel/boost-libs \
		libfreetype.so:print/freetype2

USES=		bison:build cmake:testing compiler:c++11-lang eigen:3 gnome pkgconfig python
USE_GNOME=	cairo
USE_LDCONFIG=	yes

USE_GITHUB=	yes
GH_TUPLE=	rareylab:RingDecomposerLib:v1.1.3_rdkit:RingDecomposerLib/External/RingFamilies/RingDecomposerLib
GH_TUPLE+=	ncbi:pubchem-align3d:daefab3:align3d/External/pubchem_shape/pubchem-align3d \
		aantron:better-enums:520d8ee:better_enums/better_enums

MAEPARSER_VERSION=	1.3.3
COORDGEN_VERSION=	3.0.2
CHEMDRAW_VERSION=	1.0.11
RAPIDJSON_VERSION=	1.1.0

CMAKE_ON=	RDK_BUILD_CAIRO_SUPPORT
CMAKE_OFF=	RDK_INSTALL_INTREE RDK_USE_FLEXBISON \
		RDK_INSTALL_STATIC_LIBS RDK_SWIG_STATIC RDK_PGSQL_STATIC \
		RDK_OPTIMIZE_NATIVE \
		RDK_BUILD_CPP_TESTS
CMAKE_ARGS=	-DCATCH_DIR=${LOCALBASE}/include/catch2

CFLAGS+=	-D_GNU_SOURCE
CXXFLAGS+=	-D_GNU_SOURCE
		#-I${WRKSRC}/better_enums

DATADIR=	${PREFIX}/share/RDKit
DOCSDIR=	${PREFIX}/share/doc/RDKit

#		RDBASE=${STAGEDIR}${PREFIX}
TEST_ENV=	${MAKE_ENV} \
		RDBASE=${WRKSRC} \
		PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} \
		LD_LIBRARY_PATH=${STAGEDIR}${PREFIX}/lib

PLIST_SUB=	SHLIB_VER=${PORTVERSION}

OPTIONS_DEFINE=		DOCS PGSQL PYTHON
OPTIONS_DEFAULT=	PYTHON
OPTIONS_SUB=		yes

DOCS_CMAKE_BOOL=	FREEBSD_INSTALL_DOCS
DOCS_CMAKE_ON=		-DFREEBSD_DOCSDIR:PATH=${DOCSDIR}

PGSQL_USES=		pgsql
PGSQL_DESC=		Build the PostgreSQL cartridge
PGSQL_CMAKE_BOOL=	RDK_BUILD_PGSQL

PYTHON_CMAKE_BOOL=	RDK_BUILD_PYTHON_WRAPPERS
PYTHON_BUILD_DEPENDS=	${PYNUMPY}
PYTHON_LIB_DEPENDS=	${PY_BOOST}
PYTHON_RUN_DEPENDS=	${PYNUMPY} \
			${PY_PILLOW} \
			${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \
			${PYTHON_PKGNAMEPREFIX}reportlab>0:print/py-reportlab@${PY_FLAVOR}

PORTDOCS=	*

.include <bsd.port.options.mk>

.if ${ARCH} == powerpc || ${ARCH} == powerpc64
PLIST_SUB+=	LITTLE_ENDIAN="@comment "
.else
PLIST_SUB+=	LITTLE_ENDIAN=""
.endif

post-extract:
	#@${MKDIR} ${WRKSRC}/External/rapidjson-1.1.0
	#@cd ${WRKSRC}/External/rapidjson-1.1.0 && ${LN} -s ${LOCALBASE}/include/rapidjson include
	@cd ${WRKSRC}/Data/Fonts && ${CP} ${DISTDIR}/${DIST_SUBDIR}/ComicNeue-Regular.ttf .
	@${CP} ${WRKSRC}/better_enums/enum.h ${WRKSRC}/Code/RDGeneral

post-patch:
	# replace the URLs for fetched libs with the local file path to the distfiles, so that it can be used without internet access
	@${REINPLACE_CMD} \
		-e 's|https://github.com/schrodinger/maeparser/archive/|file://${DISTDIR}/${DIST_SUBDIR}/|g' \
		${WRKSRC}/External/CoordGen/CMakeLists.txt
	@${REINPLACE_CMD} \
		-e 's|https://github.com/schrodinger/coordgenlibs/archive/|file://${DISTDIR}/${DIST_SUBDIR}/|g' \
		${WRKSRC}/External/CoordGen/CMakeLists.txt
	@${REINPLACE_CMD} \
		-e 's|https://codeload.github.com/Glysade/chemdraw/tar.gz/refs/tags/|file://${DISTDIR}/${DIST_SUBDIR}/|g' \
		${WRKSRC}/External/ChemDraw/CMakeLists.txt
	@${REINPLACE_CMD} \
		-e 's|https://github.com/Tencent/rapidjson/archive/|file://${DISTDIR}/${DIST_SUBDIR}/|g' \
		${WRKSRC}/Code/GraphMol/MolInterchange/CMakeLists.txt

pre-build:
	@${REINPLACE_CMD} \
		-e 's|const SizeType length;|SizeType length;|g' \
		${WRKSRC}/External/rapidjson/rapidjson-1.1.0/include/rapidjson/document.h

post-install:
	@${RM} -f ${STAGEDIR}${PREFIX}/lib/libexpat.a

post-install-PGSQL-on:
	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/postgresql/rdkit.so

# many tests fail, see https://github.com/rdkit/rdkit/issues/7779
# tests as of 2025_09_1: 65% tests passed, 24 tests failed out of 68
# tests as of 2025_09_2: 63% tests passed, 26 tests failed out of 70

.include <bsd.port.mk>