1PORTNAME= openblas 2DISTVERSIONPREFIX= v 3DISTVERSION= 0.3.25 4PORTEPOCH= 2 5CATEGORIES= math 6MASTER_SITES= NL/lapack/timing/:lapack_tmg 7DISTFILES= large.tgz:lapack_tmg \ 8 timing.tgz:lapack_tmg 9DIST_SUBDIR= openblas 10 11MAINTAINER= ports@MidnightBSD.org 12COMMENT= Optimized BLAS library based on GotoBLAS2 13WWW= https://github.com/OpenMathLib/OpenBLAS 14 15LICENSE= bsd3 16LICENSE_FILE= ${WRKSRC}/LICENSE 17 18FAKE_OPTS= trueprefix 19 20USES= compiler:c11 cpe fortran gmake perl5 pkgconfig 21 22USE_GITHUB= yes 23GH_ACCOUNT= OpenMathLib 24GH_PROJECT= OpenBLAS 25GH_TAGNAME= 5e1a429 26LARGE_FILE= large.tgz 27TIMING_FILE= timing.tgz 28CPE_VENDOR= openblas_project 29 30USE_LDCONFIG= yes 31USE_PERL5= build 32 33OPENBLAS_SVER= 0 34TEST_TARGET= tests 35 36PLIST_SUB+= PORTVERSION=${PORTVERSION} 37 38OPTIONS_DEFINE= DYNAMIC_ARCH INTERFACE64 OPENMP 39OPTIONS_DEFAULT= OPENMP 40OPTIONS_DEFINE_i386= AVX AVX2 41OPTIONS_DEFINE_amd64= AVX AVX2 42OPTIONS_RADIO= ${OPTIONS_RADIO_${ARCH}} 43OPTIONS_SUB= yes 44 45.if defined(BATCH) || defined(PACKAGE_BUILDING) 46OPTIONS_DEFAULT_i386= DYNAMIC_ARCH 47OPTIONS_DEFAULT_amd64= DYNAMIC_ARCH 48.endif 49 50DYNAMIC_ARCH_DESC= Support multiple CPU types on i386 and amd64 51INTERFACE64_DESC= Use 8 byte integers on 64-bit architectures 52OPENMP_DESC= Use OpenMP for threading 53AVX_DESC= Support Advanced Vector Extensions (AVX) 54AVX2_DESC= Support Advanced Vector Extensions 2 (AVX2) 55 56.include <bsd.mport.options.mk> 57 58MAXTHREADS?= 64 59 60.if ! ${PORT_OPTIONS:MDYNAMIC_ARCH} && ( ${ARCH} == "amd64" || ${ARCH} == "i386" ) 61MANUAL_PACKAGE_BUILD= Optimizes for the build machine. 62.endif 63 64.include <bsd.port.pre.mk> 65 66post-extract: 67 cd ${DISTDIR}/${DIST_SUBDIR} ; \ 68 ${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} 69 70post-patch: 71 @${ECHO_CMD} MAKE_NB_JOBS=-1 >> ${WRKSRC}/Makefile.rule 72 @${ECHO_CMD} NUM_THREADS=${MAXTHREADS} >> ${WRKSRC}/Makefile.rule 73 @${ECHO_CMD} USE_THREAD=1 >> ${WRKSRC}/Makefile.rule 74.if ! ${PORT_OPTIONS:MAVX} 75 @${ECHO_CMD} NO_AVX=1 >> ${WRKSRC}/Makefile.rule 76.endif 77.if ! ${PORT_OPTIONS:MAVX2} 78 @${ECHO_CMD} NO_AVX2=1 >> ${WRKSRC}/Makefile.rule 79.endif 80.if ${PORT_OPTIONS:MDYNAMIC_ARCH} 81 @${ECHO_CMD} DYNAMIC_ARCH=1 >> ${WRKSRC}/Makefile.rule 82 @${ECHO_CMD} DYNAMIC_OLDER=1 >> ${WRKSRC}/Makefile.rule 83.endif 84.if defined(TARGET_CPU_ARCH) 85 @${ECHO_CMD} TARGET=${TARGET_CPU_ARCH} >> ${WRKSRC}/Makefile.rule 86.endif 87.if ${PORT_OPTIONS:MINTERFACE64} 88 @${ECHO_CMD} INTERFACE64=1 >> ${WRKSRC}/Makefile.rule 89.endif 90.if ${PORT_OPTIONS:MOPENMP} 91 @${ECHO_CMD} USE_OPENMP=1 >> ${WRKSRC}/Makefile.rule 92.endif 93.if ${ARCH:M*64*} == "" 94 @${ECHO_CMD} BINARY=32 >> ${WRKSRC}/Makefile.rule 95.else 96 @${ECHO_CMD} BINARY=64 >> ${WRKSRC}/Makefile.rule 97.endif 98 99post-patch-OPENMP-on: 100 @${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \ 101 ${WRKSRC}/test/Makefile \ 102 ${WRKSRC}/ctest/Makefile 103 104BENCHMARK_MAXTHREADS?= ${MAXTHREADS} 105.if ${PORT_OPTIONS:MOPENMP} 106BENCHMARK_THREADS_FLAG= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} 107.else 108BENCHMARK_THREADS_FLAG= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} 109.endif 110 111benchmark: build 112 cd ${WRKSRC} ; ${SETENV} ${MAKE_CMD} ${MAKE_ARGS} hpl 113 cd ${WRKSRC}/benchmark ; ${SETENV} ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS} 114 115post-install-DYNAMIC_ARCH-off: 116 cd ${FAKE_DESTDIR}${PREFIX} && ls lib/libopenblas_*p-r${PORTVERSION}.* >> ${TMPPLIST} 117 118.include <bsd.port.post.mk> 119