1PORTNAME=	spooles
2PORTVERSION=	2.2
3PORTREVISION=	17
4CATEGORIES=	math
5MASTER_SITES=	NETLIB/linalg/spooles
6.ifdef WITH_MPI
7PKGNAMESUFFIX=	-mpich
8.endif
9DISTNAME=	${PORTNAME}.${PORTVERSION}
10DIST_SUBDIR=	spooles
11EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
12
13MAINTAINER=	bofh@FreeBSD.org
14COMMENT=	SParse Object Oriented Linear Equations Solver
15WWW=		https://www.netlib.org/linalg/spooles/spooles.2.2.html
16
17LICENSE=	publicdom
18
19.if defined(WITH_MPI)
20LIB_DEPENDS=	libmpich.so:net/mpich
21.endif
22
23USES=		gmake tar:tgz
24
25.if defined(WITH_MPI)
26CONFLICTS=	spooles-2*
27PLIST_SUB=	MPI="" MT="@comment "
28.else
29CONFLICTS=	spooles-mpich-2*
30PLIST_SUB=	MPI="@comment " MT=""
31.endif
32
33OPTIONS_DEFINE=	DOCS
34
35DOCS_DISTFILES=	${DISTNAME}${EXTRACT_SUFX} AllInOne.ps.gz Eigen.ps.gz \
36		Install.ps.gz LinSol.ps.gz Ordering.ps.gz \
37		PP99.ps.gz ReferenceManual.ps.gz
38
39PICFLAG?=	-fpic
40
41.include <bsd.port.pre.mk>
42
43.if ${OPSYS} == FreeBSD
44CFLAGS+=	-Wno-error=int-conversion
45.endif
46
47.SILENT:
48
49pre-everything::
50.if !defined(WITH_MPI)
51	${ECHO_MSG} "make WITH_MPI=yes for mpich version"
52.endif
53
54do-extract:
55	${MKDIR} ${WRKSRC} ; cd ${WRKSRC} ; ${TAR} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX} ${EXTRACT_AFTER_ARGS}
56
57post-patch:
58	${MKDIR} ${WRKSRC}_SHARED ; ${CP} -r ${WRKSRC}/* ${WRKSRC}_SHARED
59	@${REINPLACE_CMD} -e 's+%%LOCALBASE%%+${LOCALBASE}+g;' \
60		-e 's+%%CFLAGS%%+${CFLAGS}+g;' \
61		-e 's+%%CC%%+${CC}+g;' ${WRKSRC}/Make.inc
62	@${REINPLACE_CMD} -e 's+%%LOCALBASE%%+${LOCALBASE}+g;' \
63		-e 's+%%CFLAGS%%+${CFLAGS} ${PICFLAG}+g;' \
64		-e 's+%%CC%%+${CC}+g;' ${WRKSRC}_SHARED/Make.inc
65
66do-build:
67.if defined(WITH_MPI)
68	@(cd ${WRKSRC}/MPI/src ; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -f makeGlobalLib)
69	@(cd ${WRKSRC}_SHARED/MPI/src; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -f makeGlobalLib)
70	@(cd ${WRKSRC}_SHARED ; ld -Bshareable -o libspooles.so.1 -x -soname libspooles.so.1 --whole-archive spooles.a )
71
72.else
73	@(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} global -f makefile)
74	@(cd ${WRKSRC}/MT/src; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -f makeGlobalLib)
75	@(cd ${WRKSRC}_SHARED; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} global -f makefile)
76	@(cd ${WRKSRC}_SHARED/MT/src; ${SETENV} ${MAKE_ENV} ${MAKE_CMD} -f makeGlobalLib)
77	@(cd ${WRKSRC}_SHARED ; ld -Bshareable -o libspooles.so.1 -x -soname libspooles.so.1 --whole-archive spooles.a )
78.endif
79
80do-install:
81	${MKDIR} ${STAGEDIR}${PREFIX}/include/spooles
82	${INSTALL_DATA} ${WRKSRC}/spooles.a ${STAGEDIR}${PREFIX}/lib/libspooles.a
83	${INSTALL_DATA} ${WRKSRC}_SHARED/libspooles.so.1 ${STAGEDIR}${PREFIX}/lib
84	${LN} -sf libspooles.so.1 ${STAGEDIR}${PREFIX}/lib/libspooles.so
85
86.if defined(WITH_MPI)
87	${MKDIR} ${STAGEDIR}${PREFIX}/include/spooles/MPI
88	${INSTALL_DATA} ${WRKSRC}/MPI/*.h ${STAGEDIR}${PREFIX}/include/spooles/MPI
89.else
90	${MKDIR} ${STAGEDIR}${PREFIX}/include/spooles/MT
91	${INSTALL_DATA} ${WRKSRC}/MT/*.h ${STAGEDIR}${PREFIX}/include/spooles/MT
92.endif
93	${INSTALL_DATA} ${WRKSRC}/*.h ${STAGEDIR}${PREFIX}/include/spooles/
94.for i in A2 BPG Chv ChvList ChvManager Coords DenseMtx DSTree Drand \
95	DV ETree FrontMtx GPart Graph I2Ohash IIheap IV IVL Ideq InpMtx \
96	Lock MSMD PatchAndGoInfo Pencil SolveMap SubMtx SubMtxList SubMtxManager \
97	SymbFac Tree Utilities ZV misc
98	${MKDIR} ${STAGEDIR}${PREFIX}/include/spooles/${i}
99	${INSTALL_DATA} ${WRKSRC}/${i}/*.h ${STAGEDIR}${PREFIX}/include/spooles/${i}
100.endfor
101
102do-install-DOCS-on:
103	@${MKDIR} ${STAGEDIR}${DOCSDIR}
104	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/AllInOne.ps.gz	${STAGEDIR}${DOCSDIR}
105	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/Eigen.ps.gz		${STAGEDIR}${DOCSDIR}
106	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/Install.ps.gz		${STAGEDIR}${DOCSDIR}
107	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/LinSol.ps.gz		${STAGEDIR}${DOCSDIR}
108	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/Ordering.ps.gz	${STAGEDIR}${DOCSDIR}
109	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/PP99.ps.gz		${STAGEDIR}${DOCSDIR}
110	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/ReferenceManual.ps.gz	${STAGEDIR}${DOCSDIR}
111
112.include <bsd.port.post.mk>
113