# Created by: Sato Hiroki # $FreeBSD$ PORTNAME= gotoblas PORTVERSION= 2.${GOTOBLAS2VER}.${LAPACKVER} PORTREVISION= 2 CATEGORIES= math MASTER_SITES= ${MASTER_SITE_LOCAL:S|%SUBDIR%|maho/gotoblas|} \ NL:lapack,lapack_tmg MASTER_SITE_SUBDIR= lapack/:lapack lapack/timing/:lapack_tmg DISTFILES= GotoBLAS2-${GOTOBLAS2VER}_bsd.tar.gz \ lapack-${LAPACKVER}.tgz:lapack \ large.tgz:lapack_tmg timing.tgz:lapack_tmg EXTRACT_ONLY= ${GOTOBLAS2_SRCFILE} MAINTAINER= maho@FreeBSD.org COMMENT= A fast implementation of Basic Linear Algebra Subprograms LICENSE= BSD LICENSE_FILE= ${WRKSRC}/00License.txt DIST_SUBDIR= gotoblas GOTOBLAS2VER= 1.13 GOTOBLAS2_SRCFILE= GotoBLAS2-${GOTOBLAS2VER}_bsd.tar.gz LAPACKVER= 3.4.0 LAPACK_SRCFILE= lapack-${LAPACKVER}.tgz LARGE_FILE= large.tgz TIMING_FILE= timing.tgz USE_GMAKE= yes USE_LDCONFIG= yes WRKSRC= ${WRKDIR}/GotoBLAS2 USES= fortran gmake perl5 USE_GCC= yes USE_PERL5= build GOTOLIBS= libgoto2 libgoto2p GOTOFILES= ${GOTOLIBS:S|$|.so|} ${GOTOLIBS:S|$|.so.1|} ${GOTOLIBS:S|$|.a|} PLIST_FILES= ${GOTOFILES:S|^|lib/|} SUB_FILES= pkg-message SUB_LIST= MAXTHREADS=${MAXTHREADS} .if defined(PACKAGE_BUILDING) OPTIONS_DEFAULT_i386= DYNAMIC_ARCH OPTIONS_DEFAULT_amd64= DYNAMIC_ARCH .endif OPTIONS_DEFINE_i386= DYNAMIC_ARCH OPTIONS_DEFINE_amd64= DYNAMIC_ARCH OPTIONS_DEFINE= INTERFACE64 OPENMP DYNAMIC_ARCH_DESC= Support multiple CPU types on i386 and amd64 INTERFACE64_DESC= Use 8 byte integers on 64-bit architectures OPENMP_DESC= Use OpenMP for threading # QUAD_PRECISION "Support IEEE quad precision (experimental)" off NO_STAGE= yes .include MAXTHREADS?= 8 .if ${ARCH:M*64} == "" GOTOFLAGS+= BINARY32=1 .else GOTOFLAGS+= BINARY64=1 .endif .if ${PORT_OPTIONS:MDYNAMIC_ARCH} GOTOFLAGS+= DYNAMIC_ARCH=1 .endif .if ${PORT_OPTIONS:MINTERFACE64} GOTOFLAGS+= INTERFACE64=1 .endif .if ${PORT_OPTIONS:MOPENMP} GOTOFLAGS+= USE_OPENMP=1 .endif .if ${PORT_OPTIONS:MQUAD_PRECISION} BROKEN = WITH_QUAD_PRECISION is broken; please disable this option GOTOFLAGS+= QUAD_PRECISION=1 .endif post-extract: ${FIND} ${WRKSRC} -type f -name '.*' -delete cd ${DISTDIR}/${DIST_SUBDIR} ; \ ${CP} ${LAPACK_SRCFILE} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} ${MKDIR} ${WRKDIR}/lib post-patch: ${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" \ ${WRKSRC}/Makefile.rule ${REINPLACE_CMD} -e "s+%%LAPACKVER%%+${LAPACKVER}+g" \ ${WRKSRC}/Makefile ${REINPLACE_CMD} -e "s+%%LAPACKVER%%+${LAPACKVER}+g" \ ${WRKSRC}/exports/gensymbol ${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \ ${WRKSRC}/Makefile.rule \ ${WRKSRC}/Makefile.tail \ ${WRKSRC}/driver/level3/Makefile \ ${WRKSRC}/driver/others/Makefile \ ${WRKSRC}/exports/Makefile \ ${WRKSRC}/interface/Makefile \ ${WRKSRC}/kernel/Makefile \ ${WRKSRC}/kernel/Makefile.L3 \ ${WRKSRC}/lapack/laswp/Makefile \ ${WRKSRC}/reference/Makefile ${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \ -e 's+%%_GCC_RUNTIME%%+${_GCC_RUNTIME}+' \ -e 's+$$(CROSS_SUFFIX)+${LOCALBASE}/bin/+' \ ${WRKSRC}/Makefile.system .if ${PORT_OPTIONS:MOPENMP} ${REINPLACE_CMD} -e "s+GOTO_NUM_THREADS+OMP_NUM_THREADS+g" \ ${WRKSRC}/test/Makefile \ ${WRKSRC}/ctest/Makefile .endif do-build: cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=1 USE_THREAD=0 \ ${GMAKE} ${MAKE_ARGS} ${CP} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2.a ${CP} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2.so.1 cd ${WRKSRC} ; ${GMAKE} ${MAKE_ARGS} clean cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \ USE_THREAD=1 ${GMAKE} ${MAKE_ARGS} ${CP} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2p.a ${CP} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2p.so.1 .if ! ${PORT_OPTIONS:MDEBUG} ${LOCALBASE}/bin/strip -X ${WRKDIR}/lib/*.so.1 .endif BENCHMARK_MAXTHREADS?= ${MAXTHREADS} .if ${PORT_OPTIONS:MOPENMP} BENCHMARK_THREADS_FLAG = OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} .else BENCHMARK_THREADS_FLAG = GOTO_NUM_THREADS=${BENCHMARK_MAXTHREADS} .endif benchmark: build cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \ USE_THREAD=1 ${GMAKE} ${MAKE_ARGS} hpl cd ${WRKSRC}/benchmark ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \ USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${GMAKE} ${MAKE_ARGS} do-install: cd ${WRKDIR}/lib ; \ ${INSTALL_DATA} ${GOTOLIBS:S|$|.a|} ${GOTOLIBS:S|$|.so.1|} \ ${PREFIX}/lib/ cd ${PREFIX}/lib ; \ for i in ${GOTOLIBS:S|$|.so|}; do \ ${LN} -sf $$i.1 $$i ; \ done .include