Tweak math/geg version 1.0.2_7
[dports.git] / math / lapack / Makefile
1 # Created by: jmz
2 # $FreeBSD$
3
4 PORTNAME?=      lapack
5 PORTVERSION=    3.4.2
6 PORTREVISION=   2
7 CATEGORIES=     math
8 MASTER_SITES=   NL/lapack/
9 DISTFILES=      lapack-${PORTVERSION}.tgz
10 .if make(makesum) || !(defined(BLAS_SLAVEPORT) || defined(XLAPACK_SLAVEPORT))
11 DISTFILES+=             manpages-${PORTVERSION}.tgz
12 .endif
13 DIST_SUBDIR=    lapack
14
15 MAINTAINER?=    maho@FreeBSD.org
16 COMMENT?=       A library of Fortran 77 subroutines for linear algebra
17
18 LICENSE=        BSD
19 LICENSE_FILE=   ${WRKSRC}/LICENSE
20
21 USES=           fortran
22
23 OPTIONS_DEFINE= PROFILE SHARED STATIC
24 OPTIONS_DEFAULT=        SHARED STATIC
25 PROFILE_DESC=   Build profiling libraries
26 SHARED_DESC=    Build shared libraries and PIC archives
27 STATIC_DESC=    Build (non-PIC) archives
28
29 MAKE_ENV=       BLASLIB="${BLASLIB}"
30 PLIST_SUB=      SVERSION="${SVERSION}"
31
32 WRKSRC=                 ${WRKDIR}/lapack-${PORTVERSION}
33 WRKSRC_PROFILE=         ${WRKSRC}_PROFILE
34 WRKSRC_SHARED=          ${WRKSRC}_SHARED
35 WRKSRC_STATIC=          ${WRKSRC}
36
37 .include <bsd.port.options.mk>
38
39 .if defined(BLAS_SLAVEPORT)
40 ALL_TARGET=             blaslib
41 BLASLIB=                ../../libblas.a
42 LIBS=                   blas
43 PLIST_SUB+=             BLAS="" LAPACK="@comment " XLAPACK="@comment "
44 SVERSION=               2
45 TEST_TARGET=            blas_testing
46 .else
47 ALL_TARGET=             lib
48 BLASLIB?=               -L${LOCALBASE}/lib -lblas
49 LIB_DEPENDS+=           libblas.so:${PORTSDIR}/math/blas
50 LIBS=                   lapack tmglib
51 SVERSION=               4
52 TEST_TARGET=            lapack_testing
53 .if defined(MAINTAINER_MODE) || defined(PACKAGE_BUILDING)
54 S=                      ${PYTHON_CMD}
55 USE_PYTHON_BUILD=       yes
56 .else
57 S=                      \#
58 .endif
59 .if defined(XLAPACK_SLAVEPORT)
60 LIB_DEPENDS+=           libxblas.so:${PORTSDIR}/math/xblas
61 MAKE_ENV+=              USEXBLAS=yes XBLASLIB="${XBLASLIB}"
62 P=                      x
63 PLIST_SUB+=             BLAS="@comment " LAPACK="@comment " XLAPACK=""
64 XBLASLIB?=              -L${LOCALBASE}/lib -lxblas
65 .else
66 PLIST_FILES+=           ${MAN3L:S|^|man/man3/|:S|$|.gz|}
67 PLIST_SUB+=             BLAS="@comment " LAPACK="" XLAPACK="@comment "
68 .if defined(MAINTAINER_MODE)
69 BUILD_DEPENDS +=        doxygen:${PORTSDIR}/devel/doxygen
70 MAN_TARGET=             build-manpages
71 .endif
72 .endif
73 .endif
74
75 .if ${ARCH} == "sparc64"
76 PICFLAG?=       -fPIC
77 .else
78 PICFLAG?=       -fpic
79 .endif
80
81 FFLAGS_PROFILE?=        -pg
82 FFLAGS_SHARED ?=        ${PICFLAG}
83
84 .if ${PORT_OPTIONS:MPROFILE} && !exists(/usr/lib/libc_p.a)
85 IGNORE= you have chosen WITH_PROFILE, but have not installed the\
86 base system profiling libraries
87 .endif
88
89 .if ${PORT_OPTIONS:MSHARED}
90 USE_LDCONFIG=   yes
91 .endif
92
93 .for o in PROFILE SHARED STATIC
94 .if ${PORT_OPTIONS:M${o}}
95 PLIST_SUB+=     ${o}=""
96 .else
97 PLIST_SUB+=     ${o}="@comment "
98 .endif
99 .endfor
100
101 post-patch:
102         @${SED} -Ee '\
103                 s@^(FORTRAN|LOADER)([[:blank:]]*=)(.*)@\1\2 $${FC}@; \
104                 s@^(OPTS[[:blank:]]*=)(.*)@\1 $${FFLAGS} $${EXTRAFLAGS}@; \
105                 s@^NOOPT[[:blank:]]*=.*@& $${EXTRAFLAGS}@; \
106                 s@^(LOADOPTS[[:blank:]]*=)(.*)@\1 $${LDFLAGS} $${EXTRAFLAGS}@; \
107                 \@(BLAS|RAN)LIB[[:blank:]]*=@d;' \
108                         ${WRKSRC}/make.inc.example > ${WRKSRC}/make.inc
109         @${REINPLACE_CMD} -e 's@\./lapack_testing\.py@${S} &@' \
110                 ${WRKSRC}/Makefile
111 .for o in PROFILE SHARED
112 .if ${PORT_OPTIONS:M${o}}
113         @${CP} -a ${WRKSRC} ${WRKSRC_${o}}
114 .endif
115 .endfor
116
117 do-build: ${MAN_TARGET} build-profile build-shared build-static
118
119 .for o in PROFILE SHARED STATIC
120 build-${o:tl}: patch
121 .if ${PORT_OPTIONS:M${o}}
122         ${PRINTF} "\n\nBuilding ${o:tl} libraries:\n\n\n"
123         cd ${WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} EXTRAFLAGS="${FFLAGS_${o}}" \
124         ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ARCH="${AR}" ${ALL_TARGET}
125
126 .endif
127 .endfor
128
129 .if defined (MAINTAINER_MODE)
130 build-manpages: patch
131         @cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS} \
132         ${MAKE_ARGS} man
133
134 .endif
135
136 post-build:
137 .if ${PORT_OPTIONS:MSHARED}
138 .for L in ${LIBS}
139         cd ${WRKSRC_SHARED} ; ${FC} ${FFLAGS} ${FFLAGS_SHARED} ${LDFLAGS} -shared \
140         -o lib${P}${L}.so.${SVERSION} -Wl,-x -Wl,-soname,lib${P}${L}.so.${SVERSION} \
141         -Wl,--whole-archive lib${L}.a -Wl,--no-whole-archive
142 .endfor
143 .endif
144
145 .if ${PORT_OPTIONS:MSHARED}
146 TESTS ?=        test-shared
147 .elif ${PORT_OPTIONS:MSTATIC}
148 TESTS ?=        test-static
149 .elif ${PORT_OPTIONS:MPROFILE}
150 TESTS ?=        test-profile
151 .endif
152
153 check regression-test test: ${TESTS}
154
155 .for o in PROFILE SHARED STATIC
156 test-${o:tl}: build-${o:tl}
157 .if ${PORT_OPTIONS:M${o}}
158         @${PRINTF} "\n\nTesting ${o:tl} libraries:\n\n\n"
159         @cd ${WRKSRC_${o}}; ${SETENV} ${MAKE_ENV} EXTRAFLAGS="${FFLAGS_${o}}" \
160         ${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} ARCH="${AR}" ${TEST_TARGET}
161 .if defined(BLAS_SLAVEPORT)
162         @${CAT} ${WRKSRC_${o}}/BLAS/*.out
163 .endif
164
165 .endif
166 .endfor
167
168 do-install:
169 .for L in ${LIBS}
170 .if ${PORT_OPTIONS:MSTATIC}
171         @${INSTALL_DATA} ${WRKSRC}/lib${L}.a ${STAGEDIR}${PREFIX}/lib/lib${P}${L}.a
172 .endif
173 .if ${PORT_OPTIONS:MSHARED}
174         @${INSTALL_DATA} ${WRKSRC_SHARED}/lib${L}.a ${STAGEDIR}${PREFIX}/lib/lib${P}${L}_pic.a
175         @${INSTALL_DATA} ${WRKSRC_SHARED}/lib${P}${L}.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib
176         @${LN} -sf lib${P}${L}.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib/lib${P}${L}.so
177 .endif
178 .if ${PORT_OPTIONS:MPROFILE}
179         @${INSTALL_DATA} ${WRKSRC_PROFILE}/lib${L}.a ${STAGEDIR}${PREFIX}/lib/lib${P}${L}_p.a
180 .endif
181 .endfor
182
183 .include  <bsd.port.pre.mk>
184
185 .if !(defined(BLAS_SLAVEPORT) || defined(XLAPACK_SLAVEPORT))
186
187 .include "${FILESDIR}/manpages"
188
189 post-install:
190         @cd ${WRKDIR}/man ; ${ECHO_CMD} ${MAN3L:S|^|man3/|} \
191         | ${XARGS} -J @ ${INSTALL_MAN} @ ${STAGEDIR}${MAN3PREFIX}/man/man3
192
193 .if defined(MAINTAINER_MODE)
194 package-manpages: build-manpages
195         @${RM} -f ${WRKDIR}/lapack-manpages-${PORTVERSION}.tar.gz ; \
196         cd ${WRKSRC}/DOCS/man; \
197         ${TAR} -czvf ${WRKDIR}/lapack-manpages-${PORTVERSION}.tar.gz \
198         ${MAN3L:S|^|man3/|}
199
200 .endif
201 .endif
202 .include <bsd.port.post.mk>