164 lines
5.5 KiB
Makefile
164 lines
5.5 KiB
Makefile
# $NetBSD$
|
|
#
|
|
# used by wip/openblas_pthread/Makefile
|
|
# used by wip/openblas_openmp/Makefile
|
|
# used by wip/openblas/Makefile
|
|
# This is the common Makefile for OpenBLAS builds. It depends on
|
|
# OPENBLAS_VARIANT = (openblas|openblas_pthread|openblas_openmp)
|
|
# being set.
|
|
|
|
PORTVERSION= 0.3.5
|
|
DISTNAME= OpenBLAS-${PORTVERSION}
|
|
PKGNAME= ${OPENBLAS_VARIANT}-${PORTVERSION}
|
|
# ThOr: I do not like that. Can we rather rename the benchmark files
|
|
# to be unique?
|
|
DIST_SUBDIR= openblas
|
|
CATEGORIES= math
|
|
MASTER_SITES= ${MASTER_SITE_GITHUB:=xianyi/} \
|
|
http://www.netlib.org/lapack/timing/
|
|
DISTFILES= ${DISTNAME}.tar.gz ${LARGE_FILE} ${TIMING_FILE}
|
|
LARGE_FILE= large.tgz
|
|
TIMING_FILE= timing.tgz
|
|
GITHUB_PROJECT= OpenBLAS
|
|
GITHUB_TAG= v${PORTVERSION}
|
|
|
|
DISTINFO_FILE= ${.CURDIR}/../../wip/openblas/distinfo
|
|
PATCHDIR= ${.CURDIR}/../../wip/openblas/patches
|
|
PLIST_SRC= ${.CURDIR}/../../wip/openblas/PLIST
|
|
PLIST_SUBST+= OPENBLAS_VARIANT=${OPENBLAS_VARIANT}
|
|
|
|
# NetBSD: Cannot find -lssp*
|
|
PKGSRC_USE_SSP= no
|
|
|
|
MAINTAINER= thomas.orgis@uni-hamburg.de
|
|
HOMEPAGE= https://github.com/xianyi/OpenBLAS
|
|
COMMENT= Optimized BLAS library based on GotoBLAS2
|
|
# Check this
|
|
LICENSE= modified-bsd
|
|
|
|
# Test and change if necessary.
|
|
# MAKE_JOBS_SAFE= no
|
|
|
|
USE_LANGUAGES= c fortran
|
|
USE_TOOLS+= gmake perl:build
|
|
|
|
NO_CONFIGURE= yes
|
|
|
|
TEST_TARGET= tests
|
|
|
|
# Work around CFLAGS breakage:
|
|
# https://github.com/xianyi/OpenBLAS/issues/818
|
|
MAKE_FLAGS+= CFLAGS=${CFLAGS:Q}
|
|
MAKE_FLAGS+= CXXFLAGS=${CXXFLAGS:Q}
|
|
MAKE_FLAGS+= FFLAGS=${FFLAGS:Q}
|
|
|
|
# You may override the autodetected thread count limit.
|
|
# Default is detected from build host.
|
|
BUILD_DEFS+= OPENBLAS_THREAD_LIMIT
|
|
|
|
# Default checks number of cores of build host.
|
|
# Do we want a pkgsrc-wide default?
|
|
.if !empty(OPENBLAS_THREAD_LIMIT)
|
|
MAKE_FLAGS+= NUM_THREADS=${OPENBLAS_THREAD_LIMIT:Q}
|
|
.endif
|
|
BENCHMARK_MAXTHREADS?= 8
|
|
.if ${MACHINE_ARCH:M*64} == ""
|
|
MAKE_FLAGS+= BINARY32=1
|
|
.else
|
|
MAKE_FLAGS+= BINARY64=1
|
|
.endif
|
|
# Those come in separate BLAS-agnostic packages.
|
|
# ... except we start headaches about ILP64?
|
|
MAKE_FLAGS+= NO_CBLAS=1 NO_LAPACKE=1
|
|
|
|
# Separate headers and cmake stuff.
|
|
MAKE_FLAGS+= OPENBLAS_INCLUDE_DIR=${PREFIX}/include/${OPENBLAS_VARIANT}
|
|
MAKE_FLAGS+= OPENBLAS_CMAKE_DIR=${PREFIX}/lib/cmake/${OPENBLAS_VARIANT}
|
|
|
|
# TODO: Set INTERFACE64=1 with additional OPENBLAS_VARIANTs.
|
|
# Need to settle on a convention for SYMBOLSUFFIX first, see
|
|
# https://github.com/xianyi/OpenBLAS/issues/646 .
|
|
.if ${OPENBLAS_VARIANT} == openblas
|
|
MAKE_FLAGS+= USE_OPENMP=0 USE_THREAD=0
|
|
BENCHMARK_ENV= USE_SIMPLE_THREADED_LEVEL3=1
|
|
.elif ${OPENBLAS_VARIANT} == openblas_pthread
|
|
BENCHMARK_ENV= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS}
|
|
MAKE_FLAGS+= LIBNAMESUFFIX=pthread USE_OPENMP=0 USE_THREAD=1
|
|
.elif ${OPENBLAS_VARIANT} == openblas_openmp
|
|
BENCHMARK_ENV= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS}
|
|
MAKE_FLAGS+= LIBNAMESUFFIX=openmp USE_OPENMP=1 NO_AFFINITY=1
|
|
.endif
|
|
|
|
SUBST_CLASSES+= find
|
|
SUBST_STAGE.find= post-patch
|
|
SUBST_SED.find+= -e "s+%%FIND%%+${FIND}+"
|
|
SUBST_SED.find+= -e "s+%%XARGS%%+${XARGS}+"
|
|
SUBST_SED.find+= -e "s+%%REINPLACE_CMD%%+${REINPLACE_CMD}+"
|
|
SUBST_FILES.find+= ${WRKSRC}/Makefile
|
|
|
|
SUBST_CLASSES+= compiler
|
|
SUBST_STAGE.compiler= post-patch
|
|
SUBST_SED.compiler+= -e "s+%%FC%%+${FC}+"
|
|
SUBST_SED.compiler+= -e "s+%%CC%%+${CC}+"
|
|
SUBST_FILES.compiler+= ${WRKSRC}/Makefile.rule
|
|
|
|
SUBST_CLASSES+= arch
|
|
SUBST_STAGE.arch= post-patch
|
|
SUBST_SED.arch+= -e "s+(ARCH)+(ARCH_)+"
|
|
SUBST_FILES.arch+= ${WRKSRC}/Makefile.rule
|
|
SUBST_FILES.arch+= ${WRKSRC}/Makefile.tail
|
|
SUBST_FILES.arch+= ${WRKSRC}/driver/level3/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/driver/others/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/exports/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/interface/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/kernel/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/kernel/Makefile.L3
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack/laswp/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack-netlib/SRC/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack-netlib/SRC/VARIANTS/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack-netlib/TESTING/MATGEN/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack-netlib/LAPACKE/src/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/lapack-netlib/LAPACKE/utils/Makefile
|
|
SUBST_FILES.arch+= ${WRKSRC}/reference/Makefile
|
|
|
|
SUBST_CLASSES+= system
|
|
SUBST_STAGE.system= post-patch
|
|
SUBST_SED.system+= -e "s+(ARCH)+(ARCH_)+"
|
|
SUBST_SED.system+= -e 's+%%LDFLAGS%%+${LDFLAGS}+'
|
|
SUBST_SED.system+= -e 's+%%LOCALBASE%%+${PREFIX}+'
|
|
SUBST_SED.system+= -e 's+%%FIND%%+${FIND}+'
|
|
SUBST_SED.system+= -e 's+%%XARGS%%+${XARGS}+'
|
|
SUBST_SED.system+= -e 's+%%REINPLACE_CMD%%+${REINPLACE_CMD}+'
|
|
SUBST_SED.system+= -e 's+$${CROSS_SUFFIX}+${PREFIX}/bin/+'
|
|
SUBST_SED.system+= -e '/Clang.*OpenMP/g'
|
|
SUBST_FILES.system+= ${WRKSRC}/Makefile.system
|
|
|
|
SUBST_CLASSES+= threads
|
|
SUBST_STAGE.threads= post-patch
|
|
SUBST_SED.threads+= -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g"
|
|
SUBST_FILES.threads+= ${WRKSRC}/test/Makefile
|
|
SUBST_FILES.threads+= ${WRKSRC}/ctest/Makefile
|
|
|
|
# Fix up pkgconfig file installation.
|
|
SUBST_CLASSES+= pc
|
|
SUBST_STAGE.pc= post-patch
|
|
SUBST_SED.pc+= -e 's+-lopenblas+-l${OPENBLAS_VARIANT}+'
|
|
SUBST_SED.pc+= -e 's+openblas.pc"+${OPENBLAS_VARIANT}.pc"+'
|
|
SUBST_FILES.pc+= Makefile.install openblas.pc.in
|
|
|
|
post-extract:
|
|
cd ${DISTDIR}/${DIST_SUBDIR} ; \
|
|
${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC}
|
|
|
|
# This builds some benchmark programs you can call
|
|
# from ${WRKSRC} afterwards.
|
|
.PHONY: benchmark
|
|
benchmark: build
|
|
cd ${WRKSRC} ; ${SETENV} ${MAKE_ENV} ${BENCHMARK_ENV} \
|
|
${MAKE_PROGRAM} ${MAKE_FLAGS} hpl
|
|
cd ${WRKSRC}/benchmark ; ${SETENV} ${MAKE_ENV} \
|
|
${BENCHMARK_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS}
|
|
|
|
.include "options.mk"
|
|
.include "../../mk/bsd.pkg.mk"
|