--- Mk/Uses/blaslapack.mk (revision 505080) +++ Mk/Uses/blaslapack.mk (working copy) @@ -41,8 +41,8 @@ LAPACKLIB= -llapack .elif ${blaslapack_ARGS} == openblas LIB_DEPENDS+= libopenblas.so:math/openblas -_BLASLIB= openblasp -LAPACKLIB= -lopenblasp +_BLASLIB= openblas +LAPACKLIB= -lopenblas .else IGNORE= USES=blaslapack: invalid arguments: ${blaslapack_ARGS} .endif --- math/openblas/Makefile (revision 505080) +++ math/openblas/Makefile (working copy) @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= openblas -PORTVERSION= 0.2.20 -PORTREVISION= 8 +PORTVERSION= 0.3.6 DISTVERSIONPREFIX= v PORTEPOCH= 1 CATEGORIES= math @@ -17,10 +16,9 @@ LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE -BROKEN_powerpc64= fails to compile: gemm.c:403: 'SGEMM_DEFAULT_Q' undeclared (first use in this function) +CONFLICTS_INSTALL= cblas lapacke -USES= fortran gmake perl5 - +USES= fortran gmake perl5 pkgconfig USE_GITHUB= yes GH_ACCOUNT= xianyi GH_PROJECT= OpenBLAS @@ -30,11 +28,7 @@ USE_LDCONFIG= yes USE_PERL5= build -OPENBLAS_SUFX= r${PORTVERSION} -OPENBLAS_LIBS= libopenblas libopenblasp OPENBLAS_SVER= 0 -OPENBLAS_FILES= ${OPENBLAS_LIBS:S|$|.so|} ${OPENBLAS_LIBS:S|$|.so.${OPENBLAS_SVER}|} ${OPENBLAS_LIBS:S|$|.a|} -PLIST_FILES= ${OPENBLAS_FILES:S|^|lib/|} TEST_TARGET= tests BUILDFLAGS= FCOMMON_OPT=-frecursive MAKE_NB_JOBS=-1 @@ -54,6 +48,9 @@ AVX_DESC= Support Advanced Vector Extensions (AVX) AVX2_DESC= Support Advanced Vector Extensions 2 (AVX2) +MAKE_ENV+= ${MAKE_ENV_${ARCH}} +MAKE_ENV_powerpc64= TARGET=POWER7 + .include .if defined(TARGET_CPU_ARCH) @@ -81,11 +78,6 @@ BUILDFLAGS+= INTERFACE64=1 .endif -.if ${PORT_OPTIONS:MOPENMP} -USES+= compiler:openmp -BUILDFLAGS_THREAD+= USE_OPENMP=1 -.endif - .if ! ${PORT_OPTIONS:MAVX} BUILDFLAGS+= NO_AVX=1 .endif @@ -94,6 +86,21 @@ BUILDFLAGS+= NO_AVX2=1 .endif +.if ${PORT_OPTIONS:MOPENMP} +USES+= compiler:openmp +BUILDFLAGS_THREAD+= USE_OPENMP=1 +.else +USES+= compiler:c11 +.endif + +.include + +.if ${PORT_OPTIONS:MOPENMP} +.if ${CHOSEN_COMPILER_TYPE} == gcc +USE_GCC= yes +.endif +.endif + post-extract: cd ${DISTDIR}/${DIST_SUBDIR} ; \ ${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} @@ -100,37 +107,10 @@ ${MKDIR} ${WRKDIR}/lib post-patch: - ${REINPLACE_CMD} -e "s+%%FIND%%+${FIND}+" \ - -e "s+%%XARGS%%+${XARGS}+" \ - -e "s+%%REINPLACE_CMD%%+${REINPLACE_CMD}+" \ - ${WRKSRC}/Makefile - ${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" \ - ${WRKSRC}/Makefile.rule - ${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}/lapack-netlib/SRC/Makefile \ - ${WRKSRC}/lapack-netlib/SRC/VARIANTS/Makefile \ - ${WRKSRC}/lapack-netlib/TESTING/MATGEN/Makefile \ - ${WRKSRC}/lapack-netlib/LAPACKE/src/Makefile \ - ${WRKSRC}/lapack-netlib/LAPACKE/utils/Makefile \ - ${WRKSRC}/reference/Makefile - ${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \ - -e 's+%%LDFLAGS%%+${LDFLAGS}+' \ - -e 's+%%LOCALBASE%%+${LOCALBASE}+' \ - -e 's+%%FIND%%+${FIND}+' \ - -e 's+%%XARGS%%+${XARGS}+' \ - -e 's+%%REINPLACE_CMD%%+${REINPLACE_CMD}+' \ - -e 's+$${CROSS_SUFFIX}+${LOCALBASE}/bin/+' \ - -e '/Clang.*OpenMP/g' \ - ${WRKSRC}/Makefile.system + ${REINPLACE_CMD} \ + -e 's/defined(linux)/(defined(linux) || defined(__FreeBSD__))/g' \ + -e 's/ifdef linux/if defined(linux) || defined(__FreeBSD__)/g' \ + ${WRKSRC}/kernel/power/*.S post-patch-OPENMP-on: ${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \ @@ -137,16 +117,11 @@ ${WRKSRC}/test/Makefile \ ${WRKSRC}/ctest/Makefile -do-build: - cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=1 USE_THREAD=0 \ - ${MAKE_CMD} ${MAKE_ARGS} - ${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblas.a - ${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblas.so.${OPENBLAS_SVER} - cd ${WRKSRC} ; ${MAKE_CMD} ${MAKE_ARGS} clean - cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} ${BUILDFLAGS_THREAD} \ - ${MAKE_CMD} ${MAKE_ARGS} - ${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblasp.a - ${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblasp.so.${OPENBLAS_SVER} +post-install: + ${MV} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}_*-r${PORTVERSION}.a ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.a + ${MV} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}_*-r${PORTVERSION}.so ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so.${OPENBLAS_SVER} + ${RM} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so + ${LN} -sf lib${PORTNAME}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so BENCHMARK_MAXTHREADS?= ${MAXTHREADS} .if ${PORT_OPTIONS:MOPENMP} @@ -161,11 +136,4 @@ cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \ USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS} -do-install: -.for L in ${OPENBLAS_LIBS} - ${INSTALL_DATA} ${WRKDIR}/lib/${L}.a ${STAGEDIR}${PREFIX}/lib - ${INSTALL_LIB} ${WRKDIR}/lib/${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib - ${LN} -sf ${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/${L}.so -.endfor - -.include +.include --- math/openblas/distinfo (revision 505080) +++ math/openblas/distinfo (working copy) @@ -1,7 +1,7 @@ -TIMESTAMP = 1503123719 +TIMESTAMP = 1556566525 SHA256 (openblas/large.tgz) = f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1 SIZE (openblas/large.tgz) = 2595 SHA256 (openblas/timing.tgz) = 999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af SIZE (openblas/timing.tgz) = 1059485 -SHA256 (openblas/xianyi-OpenBLAS-v0.2.20_GH0.tar.gz) = 5ef38b15d9c652985774869efd548b8e3e972e1e99475c673b25537ed7bcf394 -SIZE (openblas/xianyi-OpenBLAS-v0.2.20_GH0.tar.gz) = 11637301 +SHA256 (openblas/xianyi-OpenBLAS-v0.3.6_GH0.tar.gz) = e64c8fe083832ffbc1459ab6c72f71d53afd3b36e8497c922a15a06b72e9002f +SIZE (openblas/xianyi-OpenBLAS-v0.3.6_GH0.tar.gz) = 11920973 --- math/openblas/files/patch-Makefile (revision 505080) +++ math/openblas/files/patch-Makefile (nonexistent) @@ -1,11 +0,0 @@ ---- Makefile.orig 2015-10-27 20:44:50 UTC -+++ Makefile -@@ -238,7 +238,7 @@ ifndef NOFORTRAN - -@echo "LOADOPTS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "CC = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "override CFLAGS = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -- -@echo "ARCH = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc -+ -@echo "ARCH_ = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "ARCHFLAGS = -ru" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "RANLIB = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc - -@echo "LAPACKLIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc --- math/openblas/files/patch-Makefile.rule (revision 505080) +++ math/openblas/files/patch-Makefile.rule (nonexistent) @@ -1,15 +0,0 @@ ---- Makefile.rule.orig 2015-10-27 20:44:50 UTC -+++ Makefile.rule -@@ -19,10 +19,10 @@ VERSION = 0.2.15 - - # C compiler including binary type(32bit / 64bit). Default is gcc. - # Don't use Intel Compiler or PGI, it won't generate right codes as I expect. --# CC = gcc -+CC = %%CC%% - - # Fortran compiler. Default is g77. --# FC = gfortran -+FC = %%FC%% - - # Even you can specify cross compiler. Meanwhile, please set HOSTCC. - --- math/openblas/files/patch-Makefile.system (revision 505080) +++ math/openblas/files/patch-Makefile.system (nonexistent) @@ -1,62 +0,0 @@ ---- Makefile.system.orig 2015-10-27 20:44:50 UTC -+++ Makefile.system -@@ -218,6 +218,7 @@ MD5SUM = md5 -r - endif - - ifeq ($(OSNAME), FreeBSD) -+EXTRALIB += -lm %%LDFLAGS%% - MD5SUM = md5 -r - endif - -@@ -889,9 +890,17 @@ SYMBOLSUFFIX = - endif - - ifndef LIBNAMESUFFIX -+ifndef SMP - LIBPREFIX = lib$(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX) - else -+LIBPREFIX = lib$(SYMBOLPREFIX)openblasp$(SYMBOLSUFFIX) -+endif -+else -+ifndef SMP - LIBPREFIX = lib$(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX) -+else -+LIBPREFIX = lib$(SYMBOLPREFIX)openblasp$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX) -+endif - endif - - KERNELDIR = $(TOPDIR)/kernel/$(ARCH) -@@ -1020,24 +1029,8 @@ ifndef LIBSUFFIX - LIBSUFFIX = a - endif - --ifneq ($(DYNAMIC_ARCH), 1) --ifndef SMP --LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX) --LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX) --else --LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX) --LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX) --endif --else --ifndef SMP - LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX) - LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX) --else --LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX) --LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX) --endif --endif -- - - LIBDLLNAME = $(LIBPREFIX).dll - LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so) -@@ -1067,7 +1060,7 @@ LIB_COMPONENTS = CBLAS - endif - - export OSNAME --export ARCH -+export ARCH_ - export CORE - export LIBCORE - export PGCPATH --- math/openblas/files/patch-c_check (revision 505080) +++ math/openblas/files/patch-c_check (working copy) @@ -1,6 +1,6 @@ ---- c_check.orig 2015-10-27 20:44:50 UTC +--- c_check.orig 2019-04-29 17:22:19 UTC +++ c_check -@@ -235,7 +235,7 @@ open(CONFFILE, "> $config" ) || die "Ca +@@ -320,7 +320,7 @@ open(CONFFILE, "> $config" ) || die "Can't create $co # print $data, "\n"; print MAKEFILE "OSNAME=$os\n"; --- math/openblas/files/patch-common__arm.h (revision 505080) +++ math/openblas/files/patch-common__arm.h (working copy) @@ -1,6 +1,6 @@ ---- common_arm.h.orig 2016-09-01 03:58:42 UTC +--- common_arm.h.orig 2018-08-30 22:07:48 UTC +++ common_arm.h -@@ -93,6 +93,17 @@ static inline int blas_quickdivide(blasint x, blasint +@@ -93,6 +93,17 @@ static inline int blas_quickdivide(blasint x, blasint #endif --- math/openblas/files/patch-common__power.h (nonexistent) +++ math/openblas/files/patch-common__power.h (working copy) @@ -0,0 +1,29 @@ +--- common_power.h.orig 2019-06-24 17:16:36 UTC ++++ common_power.h +@@ -499,7 +499,7 @@ static inline int blas_quickdivide(blasint x, blasint + + #if defined(ASSEMBLER) && !defined(NEEDPARAM) + +-#ifdef OS_LINUX ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + #ifndef __64BIT__ + #define PROLOGUE \ + .section .text;\ +@@ -784,7 +784,7 @@ Lmcount$lazy_ptr: + + #define HALT mfspr r0, 1023 + +-#ifdef OS_LINUX ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + #if defined(PPC440) || defined(PPC440FP2) + #undef MAX_CPU_NUMBER + #define MAX_CPU_NUMBER 1 +@@ -829,7 +829,7 @@ Lmcount$lazy_ptr: + #define MAP_ANONYMOUS MAP_ANON + #endif + +-#ifdef OS_LINUX ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + #ifndef __64BIT__ + #define FRAMESLOT(X) (((X) * 4) + 8) + #else --- math/openblas/files/patch-cpuid__arm64.c (revision 505080) +++ math/openblas/files/patch-cpuid__arm64.c (working copy) @@ -1,6 +1,6 @@ ---- cpuid_arm64.c.orig 2016-09-01 03:58:42 UTC +--- cpuid_arm64.c.orig 2019-04-29 17:22:19 UTC +++ cpuid_arm64.c -@@ -132,6 +132,8 @@ int detect(void) +@@ -180,6 +180,8 @@ int detect(void) } --- math/openblas/files/patch-cpuid_ia64.c (revision 505080) +++ math/openblas/files/patch-cpuid_ia64.c (nonexistent) @@ -1,12 +0,0 @@ ---- cpuid_ia64.c.orig 2015-10-27 20:44:50 UTC -+++ cpuid_ia64.c -@@ -38,7 +38,9 @@ - - #include - #include -+#ifdef linux - #include -+#endif - #include "cpuid.h" - - #ifdef __ECC --- math/openblas/files/patch-cpuid_sparc.c (revision 505080) +++ math/openblas/files/patch-cpuid_sparc.c (nonexistent) @@ -1,10 +0,0 @@ ---- cpuid_sparc.c.orig 2015-10-27 20:44:50 UTC -+++ cpuid_sparc.c -@@ -49,6 +49,7 @@ void get_subdirname(void){ - } - - void get_cpuconfig(void){ -+ printf("#define SPARC\n"); - printf("#define V9\n"); - printf("#define DTB_DEFAULT_ENTRIES 32\n"); - } --- math/openblas/files/patch-cpuid_x86.c (revision 505080) +++ math/openblas/files/patch-cpuid_x86.c (nonexistent) @@ -1,18 +0,0 @@ ---- cpuid_x86.c.orig 2017-07-24 04:03:35 UTC -+++ cpuid_x86.c -@@ -1329,6 +1329,7 @@ int get_cpuname(void){ - case 8: - switch (model) { - case 1: -+ case 8: - // AMD Ryzen - if(support_avx()) - #ifndef NO_AVX2 -@@ -1865,6 +1866,7 @@ int get_coretype(void){ - } else if (exfamily == 8) { - switch (model) { - case 1: -+ case 8: - // AMD Ryzen - if(support_avx()) - #ifndef NO_AVX2 --- math/openblas/files/patch-driver_others_memory.c (revision 505080) +++ math/openblas/files/patch-driver_others_memory.c (nonexistent) @@ -1,13 +0,0 @@ -Passing a priority level to constructor/destructor only works on GCC >= 4.3.0; -improve the upstream check so that the build works with base GCC. ---- driver/others/memory.c.orig 2016-04-12 19:29:19 UTC -+++ driver/others/memory.c -@@ -144,7 +144,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF - #if defined(_MSC_VER) && !defined(__clang__) - #define CONSTRUCTOR __cdecl - #define DESTRUCTOR __cdecl --#elif (defined(OS_DARWIN) || defined(OS_SUNOS)) && defined(C_GCC) -+#elif (defined(OS_DARWIN) || defined(OS_SUNOS)) || (defined(C_GCC) && ((__GNUC__ == 4) && (__GNUC_MINOR__ < 3))) - #define CONSTRUCTOR __attribute__ ((constructor)) - #define DESTRUCTOR __attribute__ ((destructor)) - #else --- math/openblas/files/patch-exports+Makefile (revision 505080) +++ math/openblas/files/patch-exports+Makefile (nonexistent) @@ -1,18 +0,0 @@ ---- exports/Makefile.orig 2015-10-27 20:44:50 UTC -+++ exports/Makefile -@@ -140,6 +140,7 @@ endif - #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or - ifeq ($(OSNAME), $(filter $(OSNAME),FreeBSD NetBSD)) - -+EXTRALIB += -lgfortran - so : ../$(LIBSONAME) - - ifeq (, $(SYMBOLPREFIX)$(SYMBOLSUFFIX)) -@@ -151,6 +152,7 @@ else - endif - $(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \ - -Wl,--whole-archive $< -Wl,--no-whole-archive \ -+ -Wl,-soname,$(LIBPREFIX).so.$(MAJOR_VERSION) \ - $(FEXTRALIB) $(EXTRALIB) - $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK. - rm -f linktest --- math/openblas/files/patch-f_check (revision 505080) +++ math/openblas/files/patch-f_check (working copy) @@ -1,6 +1,6 @@ ---- f_check.orig 2015-10-27 20:44:50 UTC +--- f_check.orig 2018-12-02 22:41:17 UTC +++ f_check -@@ -261,7 +261,7 @@ if ($link ne "") { +@@ -288,7 +288,7 @@ if ($link ne "") { foreach $flags (@flags) { if ( @@ -9,7 +9,7 @@ && ($flags !~ /^-LIST:/) && ($flags !~ /^-LANG:/) ) { -@@ -292,7 +292,7 @@ if ($link ne "") { +@@ -317,7 +317,7 @@ if ($link ne "") { } if ( --- math/openblas/files/patch-interface__ztrmv.c (revision 505080) +++ math/openblas/files/patch-interface__ztrmv.c (working copy) @@ -1,6 +1,6 @@ ---- interface/ztrmv.c.orig 2016-09-01 03:58:42 UTC +--- interface/ztrmv.c.orig 2019-04-29 17:22:19 UTC +++ interface/ztrmv.c -@@ -242,7 +242,7 @@ void CNAME(enum CBLAS_ORDER order, enum +@@ -245,7 +245,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Upl else #endif { --- math/openblas/pkg-plist (nonexistent) +++ math/openblas/pkg-plist (working copy) @@ -0,0 +1,13 @@ +include/cblas.h +include/f77blas.h +include/lapacke.h +include/lapacke_config.h +include/lapacke_mangling.h +include/lapacke_utils.h +include/openblas_config.h +lib/cmake/openblas/OpenBLASConfig.cmake +lib/cmake/openblas/OpenBLASConfigVersion.cmake +lib/libopenblas.a +lib/libopenblas.so +lib/libopenblas.so.0 +libdata/pkgconfig/openblas.pc