Lines 2-14
Link Here
|
2 |
# $FreeBSD$ |
2 |
# $FreeBSD$ |
3 |
|
3 |
|
4 |
PORTNAME= openblas |
4 |
PORTNAME= openblas |
5 |
PORTVERSION= 0.2.20 |
5 |
PORTVERSION= 0.3.7 |
6 |
PORTREVISION= 11 |
|
|
7 |
DISTVERSIONPREFIX= v |
6 |
DISTVERSIONPREFIX= v |
8 |
PORTEPOCH= 1 |
7 |
PORTEPOCH= 1 |
9 |
CATEGORIES= math |
8 |
CATEGORIES= math |
10 |
MASTER_SITES= NL/lapack/timing/:lapack_tmg |
9 |
MASTER_SITES= NL/lapack/timing/:lapack_tmg |
11 |
DISTFILES= large.tgz:lapack_tmg timing.tgz:lapack_tmg |
10 |
DISTFILES= large.tgz:lapack_tmg \ |
|
|
11 |
timing.tgz:lapack_tmg |
12 |
DIST_SUBDIR= openblas |
12 |
DIST_SUBDIR= openblas |
13 |
|
13 |
|
14 |
MAINTAINER= phd_kimberlite@yahoo.co.jp |
14 |
MAINTAINER= phd_kimberlite@yahoo.co.jp |
Lines 17-23
COMMENT= Optimized BLAS library based on GotoBLAS2
Link Here
|
17 |
LICENSE= BSD3CLAUSE |
17 |
LICENSE= BSD3CLAUSE |
18 |
LICENSE_FILE= ${WRKSRC}/LICENSE |
18 |
LICENSE_FILE= ${WRKSRC}/LICENSE |
19 |
|
19 |
|
20 |
USES= fortran gmake perl5 |
20 |
USES= fortran gmake perl5 pkgconfig |
|
|
21 |
|
22 |
CONFLICTS_INSTALL= cblas lapacke |
21 |
|
23 |
|
22 |
USE_GITHUB= yes |
24 |
USE_GITHUB= yes |
23 |
GH_ACCOUNT= xianyi |
25 |
GH_ACCOUNT= xianyi |
Lines 28-46
TIMING_FILE= timing.tgz
Link Here
|
28 |
USE_LDCONFIG= yes |
30 |
USE_LDCONFIG= yes |
29 |
USE_PERL5= build |
31 |
USE_PERL5= build |
30 |
|
32 |
|
31 |
OPENBLAS_SUFX= r${PORTVERSION} |
|
|
32 |
OPENBLAS_LIBS= libopenblas libopenblasp |
33 |
OPENBLAS_SVER= 0 |
33 |
OPENBLAS_SVER= 0 |
34 |
OPENBLAS_FILES= ${OPENBLAS_LIBS:S|$|.so|} ${OPENBLAS_LIBS:S|$|.so.${OPENBLAS_SVER}|} ${OPENBLAS_LIBS:S|$|.a|} |
|
|
35 |
PLIST_FILES= ${OPENBLAS_FILES:S|^|lib/|} |
36 |
TEST_TARGET= tests |
34 |
TEST_TARGET= tests |
37 |
|
35 |
|
38 |
BUILDFLAGS= FCOMMON_OPT=-frecursive MAKE_NB_JOBS=-1 |
36 |
BUILDFLAGS= FCOMMON_OPT=-frecursive MAKE_NB_JOBS=-1 |
39 |
|
37 |
|
40 |
OPTIONS_DEFINE= INTERFACE64 OPENMP |
38 |
OPTIONS_DEFINE= INTERFACE64 OPENMP |
41 |
OPTIONS_DEFINE_i386= DYNAMIC_ARCH AVX AVX2 |
39 |
OPTIONS_DEFINE_i386= AVX AVX2 DYNAMIC_ARCH |
42 |
OPTIONS_DEFINE_amd64= ${OPTIONS_DEFINE_i386} |
40 |
OPTIONS_DEFINE_amd64= AVX AVX2 DYNAMIC_ARCH |
43 |
OPTIONS_DEFINE_powerpc64= POWER6 |
41 |
OPTIONS_DEFINE_powerpc64= POWER8 |
44 |
OPTIONS_EXCLUDE_powerpc64= OPENMP |
42 |
OPTIONS_EXCLUDE_powerpc64= OPENMP |
45 |
|
43 |
|
46 |
.if defined(BATCH) || defined(PACKAGE_BUILDING) |
44 |
.if defined(BATCH) || defined(PACKAGE_BUILDING) |
Lines 53-66
INTERFACE64_DESC= Use 8 byte integers on 64-bit architectures
Link Here
|
53 |
OPENMP_DESC= Use OpenMP for threading |
51 |
OPENMP_DESC= Use OpenMP for threading |
54 |
AVX_DESC= Support Advanced Vector Extensions (AVX) |
52 |
AVX_DESC= Support Advanced Vector Extensions (AVX) |
55 |
AVX2_DESC= Support Advanced Vector Extensions 2 (AVX2) |
53 |
AVX2_DESC= Support Advanced Vector Extensions 2 (AVX2) |
56 |
POWER6_DESC= Optimize for POWER6, instead of the default PPC970 |
54 |
POWER8_DESC= Optimize for POWER8, instead of the default PPC970 |
57 |
|
55 |
|
58 |
.include <bsd.port.options.mk> |
56 |
.include <bsd.port.options.mk> |
59 |
|
57 |
|
60 |
.if ${ARCH} == powerpc64 |
58 |
.if ${ARCH} == powerpc64 |
61 |
USE_GCC= yes |
59 |
USE_GCC= yes |
62 |
. if ${PORT_OPTIONS:MPOWER6} |
60 |
. if ${PORT_OPTIONS:MPOWER8} |
63 |
TARGET_CPU_ARCH= POWER6 |
61 |
TARGET_CPU_ARCH= POWER8 |
64 |
.else |
62 |
.else |
65 |
TARGET_CPU_ARCH= PPC970 |
63 |
TARGET_CPU_ARCH= PPC970 |
66 |
. endif |
64 |
. endif |
Lines 68-76
TARGET_CPU_ARCH= PPC970
Link Here
|
68 |
|
66 |
|
69 |
.if defined(TARGET_CPU_ARCH) |
67 |
.if defined(TARGET_CPU_ARCH) |
70 |
BUILDFLAGS+= TARGET=${TARGET_CPU_ARCH} |
68 |
BUILDFLAGS+= TARGET=${TARGET_CPU_ARCH} |
|
|
69 |
MAKE_ENV+= TARGET=${TARGET_CPU_ARCH} |
71 |
.endif |
70 |
.endif |
72 |
|
71 |
|
73 |
MAXTHREADS?= 64 |
72 |
MAXTHREADS?= 64 |
74 |
BUILDFLAGS_THREAD+= NUM_THREADS=${MAXTHREADS} USE_THREAD=1 |
73 |
BUILDFLAGS_THREAD+= NUM_THREADS=${MAXTHREADS} USE_THREAD=1 |
75 |
|
74 |
|
76 |
.if ${ARCH:M*64} == "" |
75 |
.if ${ARCH:M*64} == "" |
Lines 94-177
PLIST_SUB+= DYNARCH="@comment "
Link Here
|
94 |
BUILDFLAGS+= INTERFACE64=1 |
93 |
BUILDFLAGS+= INTERFACE64=1 |
95 |
.endif |
94 |
.endif |
96 |
|
95 |
|
|
|
96 |
.if ! ${PORT_OPTIONS:MAVX} |
97 |
BUILDFLAGS+= NO_AVX=1 |
98 |
.endif |
99 |
|
100 |
.if ! ${PORT_OPTIONS:MAVX2} |
101 |
BUILDFLAGS+= NO_AVX2=1 |
102 |
.endif |
103 |
|
97 |
.if ${PORT_OPTIONS:MOPENMP} |
104 |
.if ${PORT_OPTIONS:MOPENMP} |
98 |
USES+= compiler:openmp |
105 |
USES+= compiler:openmp |
99 |
BUILDFLAGS_THREAD+= USE_OPENMP=1 |
106 |
BUILDFLAGS_THREAD+= USE_OPENMP=1 |
100 |
.else |
107 |
.else |
101 |
USES+= compiler:c11 |
108 |
USES+= compiler:c11 |
102 |
.endif |
109 |
.endif |
103 |
|
110 |
|
104 |
.if ! ${PORT_OPTIONS:MAVX} |
111 |
.include <bsd.port.pre.mk> |
105 |
BUILDFLAGS+= NO_AVX=1 |
|
|
106 |
.endif |
107 |
|
112 |
|
108 |
.if ! ${PORT_OPTIONS:MAVX2} |
113 |
.if ${PORT_OPTIONS:MOPENMP} |
109 |
BUILDFLAGS+= NO_AVX2=1 |
114 |
.if ${CHOSEN_COMPILER_TYPE} == gcc |
|
|
115 |
USE_GCC= yes |
116 |
.endif |
110 |
.endif |
117 |
.endif |
111 |
|
118 |
|
112 |
post-extract: |
119 |
post-extract: |
113 |
cd ${DISTDIR}/${DIST_SUBDIR} ; \ |
120 |
cd ${DISTDIR}/${DIST_SUBDIR} ; \ |
114 |
${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} |
121 |
${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} |
115 |
${MKDIR} ${WRKDIR}/lib |
|
|
116 |
|
117 |
post-patch: |
118 |
${REINPLACE_CMD} -e "s+%%FIND%%+${FIND}+" \ |
119 |
-e "s+%%XARGS%%+${XARGS}+" \ |
120 |
-e "s+%%REINPLACE_CMD%%+${REINPLACE_CMD}+" \ |
121 |
${WRKSRC}/Makefile |
122 |
${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" \ |
123 |
${WRKSRC}/Makefile.rule |
124 |
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \ |
125 |
${WRKSRC}/Makefile.rule \ |
126 |
${WRKSRC}/Makefile.tail \ |
127 |
${WRKSRC}/driver/level3/Makefile \ |
128 |
${WRKSRC}/driver/others/Makefile \ |
129 |
${WRKSRC}/exports/Makefile \ |
130 |
${WRKSRC}/interface/Makefile \ |
131 |
${WRKSRC}/kernel/Makefile \ |
132 |
${WRKSRC}/kernel/Makefile.L3 \ |
133 |
${WRKSRC}/lapack/laswp/Makefile \ |
134 |
${WRKSRC}/lapack-netlib/SRC/Makefile \ |
135 |
${WRKSRC}/lapack-netlib/SRC/VARIANTS/Makefile \ |
136 |
${WRKSRC}/lapack-netlib/TESTING/MATGEN/Makefile \ |
137 |
${WRKSRC}/lapack-netlib/LAPACKE/src/Makefile \ |
138 |
${WRKSRC}/lapack-netlib/LAPACKE/utils/Makefile \ |
139 |
${WRKSRC}/reference/Makefile |
140 |
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \ |
141 |
-e 's+%%LDFLAGS%%+${LDFLAGS}+' \ |
142 |
-e 's+%%LOCALBASE%%+${LOCALBASE}+' \ |
143 |
-e 's+%%FIND%%+${FIND}+' \ |
144 |
-e 's+%%XARGS%%+${XARGS}+' \ |
145 |
-e 's+%%REINPLACE_CMD%%+${REINPLACE_CMD}+' \ |
146 |
-e 's+$${CROSS_SUFFIX}+${LOCALBASE}/bin/+' \ |
147 |
-e '/Clang.*OpenMP/g' \ |
148 |
${WRKSRC}/Makefile.system |
149 |
${REINPLACE_CMD} \ |
150 |
-e 's/defined(linux)/(defined(linux) || defined(__FreeBSD__))/g' \ |
151 |
-e 's/ifdef linux/if defined(linux) || defined(__FreeBSD__)/g' \ |
152 |
${WRKSRC}/kernel/power/*.S |
153 |
|
122 |
|
154 |
post-patch-OPENMP-on: |
123 |
post-patch-OPENMP-on: |
155 |
${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \ |
124 |
@${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \ |
156 |
${WRKSRC}/test/Makefile \ |
125 |
${WRKSRC}/test/Makefile \ |
157 |
${WRKSRC}/ctest/Makefile |
126 |
${WRKSRC}/ctest/Makefile |
158 |
|
127 |
|
159 |
do-build: |
|
|
160 |
cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=1 USE_THREAD=0 \ |
161 |
${MAKE_CMD} ${MAKE_ARGS} |
162 |
${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblas.a |
163 |
${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblas.so.${OPENBLAS_SVER} |
164 |
cd ${WRKSRC} ; ${MAKE_CMD} ${MAKE_ARGS} clean |
165 |
cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} ${BUILDFLAGS_THREAD} \ |
166 |
${MAKE_CMD} ${MAKE_ARGS} |
167 |
${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblasp.a |
168 |
${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblasp.so.${OPENBLAS_SVER} |
169 |
|
170 |
BENCHMARK_MAXTHREADS?= ${MAXTHREADS} |
128 |
BENCHMARK_MAXTHREADS?= ${MAXTHREADS} |
171 |
.if ${PORT_OPTIONS:MOPENMP} |
129 |
.if ${PORT_OPTIONS:MOPENMP} |
172 |
BENCHMARK_THREADS_FLAG= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} |
130 |
BENCHMARK_THREADS_FLAG= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} |
173 |
.else |
131 |
.else |
174 |
BENCHMARK_THREADS_FLAG= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} |
132 |
BENCHMARK_THREADS_FLAG= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} |
175 |
.endif |
133 |
.endif |
176 |
|
134 |
|
177 |
benchmark: build |
135 |
benchmark: build |
Lines 180-191
benchmark: build
Link Here
|
180 |
cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \ |
138 |
cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \ |
181 |
USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS} |
139 |
USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS} |
182 |
|
140 |
|
183 |
do-install: |
141 |
post-install: |
184 |
.for L in ${OPENBLAS_LIBS} |
|
|
185 |
${INSTALL_DATA} ${WRKDIR}/lib/${L}.a ${STAGEDIR}${PREFIX}/lib |
186 |
${INSTALL_LIB} ${WRKDIR}/lib/${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib |
187 |
${LN} -sf ${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/${L}.so |
188 |
.endfor |
189 |
cd ${WRKSRC} && \ |
142 |
cd ${WRKSRC} && \ |
190 |
${FIND} . -name 'common*.h' -print | ${XARGS} ${BASENAME} | ${XARGS} -I {} ${MV} {} openblas_{} |
143 |
${FIND} . -name 'common*.h' -print | ${XARGS} ${BASENAME} | ${XARGS} -I {} ${MV} {} openblas_{} |
191 |
${MV} ${WRKSRC}/version.h ${WRKSRC}/openblas_version.h |
144 |
${MV} ${WRKSRC}/version.h ${WRKSRC}/openblas_version.h |
Lines 206-213
do-install:
Link Here
|
206 |
${INSTALL_DATA} ${WRKSRC}/openblas_*.h ${STAGEDIR}${PREFIX}/include/openblas |
159 |
${INSTALL_DATA} ${WRKSRC}/openblas_*.h ${STAGEDIR}${PREFIX}/include/openblas |
207 |
${INSTALL_DATA} ${WRKSRC}/cblas.h ${WRKSRC}/config_last.h ${WRKSRC}/l1param.h ${WRKSRC}/l2param.h ${WRKSRC}/symcopy.h \ |
160 |
${INSTALL_DATA} ${WRKSRC}/cblas.h ${WRKSRC}/config_last.h ${WRKSRC}/l1param.h ${WRKSRC}/l2param.h ${WRKSRC}/symcopy.h \ |
208 |
${STAGEDIR}${PREFIX}/include/openblas |
161 |
${STAGEDIR}${PREFIX}/include/openblas |
|
|
162 |
${MV} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}_*-r${PORTVERSION}.a ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.a |
163 |
${MV} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}_*-r${PORTVERSION}.so ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so.${OPENBLAS_SVER} |
164 |
${RM} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so |
165 |
${LN} -sf lib${PORTNAME}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so |
209 |
|
166 |
|
210 |
do-install-DYNAMIC_ARCH-on: |
167 |
.include <bsd.port.post.mk> |
211 |
${INSTALL_DATA} ${WRKSRC}/config_kernel.h ${STAGEDIR}${PREFIX}/include/openblas |
|
|
212 |
|
213 |
.include <bsd.port.mk> |