aboutsummaryrefslogtreecommitdiffstats
path: root/math/metis/Makefile
blob: 86fbd1d7935c7dfbd784ed5d591b62c7928f7b2e (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
PORTNAME=	metis
DISTVERSION=	5.1.0-p13
PORTREVISION=	1
PORTEPOCH=	1
CATEGORIES=	math
MASTER_SITES=	https://bitbucket.org/petsc/pkg-metis/get/
DISTNAME=	${LGCOMMIT}

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Package for unstructured graph partitioning
WWW=		https://bitbucket.org/petsc/pkg-metis

LICENSE=	APACHE20

# Keep cmake:insource to be used by math/parmetis
USES=		cmake:insource,noninja compiler:c11 tar:bzip2

SHCOMMIT=	08c3082720ff
LGCOMMIT=	${SHCOMMIT}9114b8e3cbaa4484a26739cd7d2d
WRKSRC=		${WRKDIR}/petsc-pkg-metis-${SHCOMMIT}

BINS=		cmpfillin gpmetis graphchk m2gmetis mpmetis ndmetis
SHLIB_MAJOR?=	2

OPTIONS_DEFINE=		OPENMP SHARED STATIC
OPTIONS_DEFAULT=	SHARED STATIC
OPTIONS_DEFAULT_amd64=	OPENMP
OPTIONS_DEFAULT_i386=	OPENMP
OPTIONS_DEFAULT_powerpc64=	OPENMP
OPTIONS_DEFAULT_powerpc64le=	OPENMP
OPTIONS_SUB=		yes

OPENMP_DESC=	multithreading via OpenMP
SHARED_DESC=	shared library and dynamically-linked executables
STATIC_DESC=	libmetis archive

OPENMP_CMAKE_BOOL=	OPENMP

SHARED_USE=	LDCONFIG=yes

CMAKE_ARGS_SHARED=	-DSHARED=1 -DSHLIB_MAJOR:STRING="${SHLIB_MAJOR}"	\
			-DMETIS_INSTALL:BOOL=1
ALL_TARGET_SHARED=	all
WRKSRC_SHARED=		${WRKSRC}_SHARED
INSTALL_WRKSRC_SHARED=	${WRKSRC_SHARED}
CMAKE_SOURCE_PATH_SHARED=${WRKSRC_SHARED}

ALL_TARGET_STATIC=	metis
WRKSRC_STATIC=		${WRKSRC}
INSTALL_WRKSRC_STATIC=	${WRKSRC_STATIC}/libmetis
CMAKE_SOURCE_PATH_STATIC=${WRKSRC_STATIC}

CFLAGS+=	-fpic

.include <bsd.port.options.mk>

.if ${ARCH:M*64*}
CMAKE_ARGS+=	-DMETIS_USE_LONGINDEX:BOOL="On"
.endif

pre-configure:
	${REINPLACE_CMD} -e "/^# Add compiler flags/,/^$$/d" \
		-e "/^check_include_file(execinfo.h/d" \
		${WRKSRC}/GKlib/GKlibSystem.cmake

pre-configure-SHARED-on:
	${CP} -R ${WRKSRC} ${WRKSRC_SHARED}
	${REINPLACE_CMD} -e '/programs/s|#add_subdir|add_subdir|'	\
		${WRKSRC_SHARED}/CMakeLists.txt

do-configure:
.for o in SHARED STATIC
.if ${PORT_OPTIONS:M${o}}
	@${PRINTF} "\n\nConfiguring ${o}:\n\n\n"
	cd ${WRKSRC_${o}}; ${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} \
	${CMAKE_ARGS:C|${CFLAGS}|& ${${o}_FLAGS}|g} ${CMAKE_ARGS_${o}} \
	-DGKLIB_PATH="${WRKSRC_${o}}/GKlib" ${CMAKE_SOURCE_PATH_${o}}
.endif
.endfor

do-build:
.for o in SHARED STATIC
.if ${PORT_OPTIONS:M${o}}
	@${PRINTF} "\n\nBuilding ${o}:\n\n\n"
	cd ${WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
	${MAKE_ARGS} ${ALL_TARGET_${o}}
.endif
.endfor
.if ${PORT_OPTIONS:MSHARED}
	cd ${WRKSRC_SHARED}/programs; ${STRIP_CMD} ${BINS}
	cd ${WRKSRC_SHARED}/libmetis; ${STRIP_CMD} libmetis.so.*
.endif
.if ${PORT_OPTIONS:MSTATIC}
	cd ${WRKSRC_STATIC}/libmetis; ${STRIP_CMD} libmetis.a
.endif

.if defined(MAINTAINER_MODE)
# No more graph directory, to be taken from an original tarball
# e.g. https://people.freebsd.org/~thierry/metis-5.1.0.tar.gz
test: build
	cd ${WRKSRC_SHARED}/graphs ; ../programs/gpmetis ./4elt.graph 5
.endif

do-install:
.for o in SHARED STATIC
.if ${PORT_OPTIONS:M${o}}
	@${PRINTF} "\n\nInstalling ${o}:\n\n\n"
	cd ${INSTALL_WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
	${MAKE_ARGS} install
.endif
.endfor

.include <bsd.port.mk>