1PORTNAME=	metis
2PORTVERSION=	5.1.0
3PORTREVISION=	6
4CATEGORIES=	math
5MASTER_SITES=	http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/
6
7MAINTAINER=	ports@MidnightBSD.org
8COMMENT=	Package for unstructured graph partitioning
9
10LICENSE=	Apache-2.0
11
12CONFLICTS=	metis4-4* metis-edf-[0-9]*
13
14USES=		cmake:noninja compiler:c11
15
16OPTIONS_DEFINE=	OPENMP SHARED STATIC DOCS
17
18OPENMP_DESC=	multithreading via OpenMP
19#PROFILE_DESC=	profiling libraries
20SHARED_DESC=	shared library and dynamically-linked executables
21STATIC_DESC=	libmetis archive
22
23OPTIONS_DEFAULT=	SHARED STATIC
24
25BINS=	cmpfillin gpmetis graphchk m2gmetis mpmetis ndmetis
26
27.include <bsd.mport.options.mk>
28
29.if ${PORT_OPTIONS:MOPENMP}
30CMAKE_ARGS+=	-DOPENMP=1
31USE_GCC=	any
32.endif
33
34.if ${PORT_OPTIONS:MSHARED}
35ALL_TARGET_SHARED=	all
36CMAKE_ARGS_SHARED=	-DSHARED=1
37PLIST_SUB+=		SHARED=""
38.if ${ARCH} == "sparc64"
39SHARED_FLAGS?=		-fPIC
40.else
41SHARED_FLAGS?=		-fpic
42.endif
43SHLIB_MAJOR?=		2
44CMAKE_ARGS+=		-DSHLIB_MAJOR="${SHLIB_MAJOR}"
45USE_LDCONFIG=		yes
46WRKSRC_SHARED=		${WRKSRC}_SHARED
47INSTALL_WRKSRC_SHARED=	${WRKSRC_SHARED}
48.else
49PLIST_SUB+=		SHARED="@comment "
50.endif
51
52.if ${PORT_OPTIONS:MSTATIC}
53ALL_TARGET_STATIC=	metis
54PLIST_SUB+=		STATIC=""
55WRKSRC_STATIC=		${WRKSRC}
56INSTALL_WRKSRC_STATIC=	${WRKSRC_STATIC}/libmetis
57.else
58PLIST_SUB+=		STATIC="@comment "
59.endif
60
61pre-configure:
62	@${REINPLACE_CMD} -e "/^# Add compiler flags/,/^$$/d" \
63	-e "/^check_include_file(execinfo.h/d" \
64	${WRKSRC}/GKlib/GKlibSystem.cmake
65	@${REINPLACE_CMD} -e "\|/home/karypis/|d" \
66	${WRKSRC}/programs/CMakeLists.txt
67.if ((${ARCH}=="amd64") || (${ARCH}=="aarch64") || (${ARCH}=="sparc64") || (${ARCH}=="powerpc64"))
68	@${REINPLACE_CMD}-e \
69		's|IDXTYPEWIDTH 32|IDXTYPEWIDTH 64|' \
70		${WRKSRC}/include/metis.h
71.endif
72.for o in SHARED #PROFILE
73.if ${PORT_OPTIONS:M${o}}
74	@${CP} -R ${WRKSRC} ${WRKSRC_${o}}
75.endif
76.endfor
77
78do-configure:
79.for o in SHARED STATIC #PROFILE
80.if ${PORT_OPTIONS:M${o}}
81	@${PRINTF} "\n\nConfiguring ${o}:\n\n\n"
82	@cd ${WRKSRC_${o}}; ${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} \
83	${CMAKE_ARGS:C|${CFLAGS}|& ${${o}_FLAGS}|g} ${CMAKE_ARGS_${o}} \
84	-DGKLIB_PATH="${WRKSRC_${o}}/GKlib" ${CMAKE_SOURCE_PATH}
85.endif
86.endfor
87
88do-build:
89.for o in SHARED STATIC #PROFILE
90.if ${PORT_OPTIONS:M${o}}
91	@${PRINTF} "\n\nBuilding ${o}:\n\n\n"
92	@cd ${WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
93	${MAKE_ARGS} ${ALL_TARGET_${o}}
94.endif
95.endfor
96.if ${PORT_OPTIONS:MSHARED}
97	@cd ${WRKSRC_SHARED}/programs; ${STRIP_CMD} ${BINS}
98	@cd ${WRKSRC_SHARED}/libmetis; ${STRIP_CMD} libmetis.so.*
99.endif
100.if ${PORT_OPTIONS:MSTATIC}
101	@cd ${WRKSRC_STATIC}/libmetis; ${STRIP_CMD} libmetis.a
102.endif
103
104check regression-test test: build
105	cd ${WRKSRC_SHARED}/graphs ; ../programs/gpmetis ./4elt.graph 5
106
107do-install:
108.for o in SHARED STATIC #PROFILE
109.if ${PORT_OPTIONS:M${o}}
110	@${PRINTF} "\n\nInstalling ${o}:\n\n\n"
111	@cd ${INSTALL_WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
112	${MAKE_ARGS} ${FAKE_MAKEARGS} install
113.endif
114.endfor
115
116.if ${PORT_OPTIONS:MDOCS}
117PORTDOCS=	manual.pdf
118
119post-install:
120	@${MKDIR} ${DOCSDIR}
121	${INSTALL_DATA} ${WRKSRC}/manual/manual.pdf ${DOCSDIR}
122.endif
123
124.include <bsd.port.mk>
125