# $NetBSD: Makefile.common,v 1.3 2021/05/29 19:57:21 thor Exp $ # # used by math/openblas_pthread/Makefile # used by math/openblas_openmp/Makefile # used by math/openblas/Makefile # # This is the common Makefile for OpenBLAS builds. It depends on # OPENBLAS_VARIANT = (openblas|openblas_pthread|openblas_openmp) # being set. DISTNAME= OpenBLAS-${OPENBLAS_VERSION} PKGNAME= ${OPENBLAS_VARIANT}-${OPENBLAS_VERSION} DIST_SUBDIR= openblas-${OPENBLAS_VERSION} 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${OPENBLAS_VERSION} DISTINFO_FILE= ${.CURDIR}/../../math/openblas/distinfo PATCHDIR= ${.CURDIR}/../../math/openblas/patches HOMEPAGE= https://github.com/xianyi/OpenBLAS COMMENT= Optimized BLAS library based on GotoBLAS2 LICENSE= modified-bsd # Darwin has a .so/.dylib PLIST issue # Untested on other platforms ONLY_FOR_PLATFORM= Linux-*-* NetBSD-*-* USE_LANGUAGES= c fortran USE_TOOLS+= gmake perl:build NO_CONFIGURE= yes TEST_TARGET= tests # Also set compilers explicitly, overriding Makefile.rule MAKE_FLAGS+= CC=${CC:Q} MAKE_FLAGS+= CXX=${CXX:Q} MAKE_FLAGS+= FC=${FC:Q} # You may override the autodetected thread count limit. # Default is detected from build host, which may differ from run host. BUILD_DEFS+= OPENBLAS_THREAD_LIMIT .include "../../mk/bsd.prefs.mk" # Default checks number of cores of build host. # Do we want a pkgsrc-wide default? OPENBLAS_THREAD_LIMIT?= # empty .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 . MAKE_FLAGS+= FIXED_LIBNAME=1 .if ${OPENBLAS_VARIANT} == openblas MAKE_FLAGS+= USE_OPENMP=0 USE_THREAD=0 USE_LOCKING=1 BENCHMARK_ENV= USE_SIMPLE_THREADED_LEVEL3=1 .elif ${OPENBLAS_VARIANT} == openblas_pthread MAKE_FLAGS+= LIBNAMESUFFIX=pthread MAKE_FLAGS+= USE_OPENMP=0 USE_THREAD=1 BENCHMARK_ENV= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} .elif ${OPENBLAS_VARIANT} == openblas_openmp MAKE_FLAGS+= LIBNAMESUFFIX=openmp MAKE_FLAGS+= USE_OPENMP=1 NO_AFFINITY=1 BENCHMARK_ENV= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} .endif SUBST_CLASSES+= threads SUBST_STAGE.threads= pre-build SUBST_SED.threads+= -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" SUBST_FILES.threads+= test/Makefile SUBST_FILES.threads+= ctest/Makefile PLIST_SRC= ${.CURDIR}/../../math/openblas/PLIST PLIST_SUBST+= OPENBLAS_VARIANT=${OPENBLAS_VARIANT} post-extract: rm ${WRKSRC}/relapack/src/lapack_wrappers.c.orig (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 "../../math/openblas/version.mk" .include "options.mk"