Index: math/openblas/Makefile =================================================================== --- math/openblas/Makefile +++ math/openblas/Makefile @@ -2,15 +2,17 @@ # $FreeBSD$ PORTNAME= openblas -PORTVERSION= 0.2.20 -PORTREVISION= 3 DISTVERSIONPREFIX= v +DISTVERSION= 0.3.3 PORTEPOCH= 1 CATEGORIES= math MASTER_SITES= NL/lapack/timing/:lapack_tmg DISTFILES= large.tgz:lapack_tmg timing.tgz:lapack_tmg DIST_SUBDIR= openblas +PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ +PATCHFILES= 2349e151497dc4686413d65954d5418519dfc320.patch:-p1 # patch to cmake scripts to install the interface64 variant separately + MAINTAINER= phd_kimberlite@yahoo.co.jp COMMENT= Optimized BLAS library based on GotoBLAS2 @@ -19,39 +21,48 @@ BROKEN_powerpc64= fails to compile: gemm.c:403: 'SGEMM_DEFAULT_Q' undeclared (first use in this function) -USES= fortran gmake perl5 +FLAVORS= default interface64 # Use 8 byte integers on 64-bit architectures +FLAVOR?= ${FLAVORS:[1]} +interface64_PKGNAMESUFFIX= -interface64 +interface64_PLIST= ${PKGDIR}/pkg-plist.interface64 +USES= cmake:outsource fortran perl5 pkgconfig USE_GITHUB= yes GH_ACCOUNT= xianyi GH_PROJECT= OpenBLAS LARGE_FILE= large.tgz TIMING_FILE= timing.tgz - 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/|} +CMAKE_ON= BUILD_SHARED_LIBS + TEST_TARGET= tests -OPTIONS_DEFINE= INTERFACE64 OPENMP +CONFLICTS_INSTALL= lapacke + +.if ${FLAVOR} == interface64 +CMAKE_ARGS= -DINTERFACE64:STRING=1 +.endif + +OPTIONS_DEFINE= OPENMP OPTIONS_DEFINE_i386= DYNAMIC_ARCH AVX AVX2 OPTIONS_DEFINE_amd64= ${OPTIONS_DEFINE_i386} - -.if defined(BATCH) || defined(PACKAGE_BUILDING) OPTIONS_DEFAULT_i386= DYNAMIC_ARCH OPTIONS_DEFAULT_amd64= DYNAMIC_ARCH -.endif -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 AVX_DESC= Support Advanced Vector Extensions (AVX) AVX2_DESC= Support Advanced Vector Extensions 2 (AVX2) +DYNAMIC_ARCH_DESC= Support multiple CPU types, dynamic run-time selection +DYNAMIC_ARCH_CMAKE_BOOL= DYNAMIC_ARCH + +USE_OPENMP_USES= compiler:openmp +USE_OPENMP_CMAKE_BOOL= USE_OPENMP + +AVX_CMAKE_OFF= -DNO_AVX=1 +AVX2_CMAKE_OFF= -DNO_AVX2=1 + .include .if defined(TARGET_CPU_ARCH) @@ -67,29 +78,11 @@ BUILDFLAGS+= BINARY64=1 .endif -.if ! ${PORT_OPTIONS:MDYNAMIC_ARCH} && ( ${ARCH} == "amd64" || ${ARCH} == "i386" ) -MANUAL_PACKAGE_BUILD= Optimizes for the build machine. -.endif - -.if ${PORT_OPTIONS:MDYNAMIC_ARCH} -BUILDFLAGS+= DYNAMIC_ARCH=1 -.endif - -.if ${PORT_OPTIONS:MINTERFACE64} -BUILDFLAGS+= INTERFACE64=1 -.endif - +BENCHMARK_MAXTHREADS?= ${MAXTHREADS} .if ${PORT_OPTIONS:MOPENMP} -USES+= compiler:openmp -BUILDFLAGS_THREAD+= USE_OPENMP=1 -.endif - -.if ! ${PORT_OPTIONS:MAVX} -BUILDFLAGS+= NO_AVX=1 -.endif - -.if ! ${PORT_OPTIONS:MAVX2} -BUILDFLAGS+= NO_AVX2=1 +BENCHMARK_THREADS_FLAG= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} +.else +BENCHMARK_THREADS_FLAG= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} .endif post-extract: @@ -97,73 +90,15 @@ ${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC} ${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 - post-patch-OPENMP-on: ${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \ ${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} - -BENCHMARK_MAXTHREADS?= ${MAXTHREADS} -.if ${PORT_OPTIONS:MOPENMP} -BENCHMARK_THREADS_FLAG= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS} -.else -BENCHMARK_THREADS_FLAG= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS} -.endif - benchmark: build cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \ USE_THREAD=1 ${MAKE_CMD} ${MAKE_ARGS} hpl 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 Index: math/openblas/distinfo =================================================================== --- math/openblas/distinfo +++ math/openblas/distinfo @@ -1,7 +1,9 @@ -TIMESTAMP = 1503123719 +TIMESTAMP = 1538035912 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.3_GH0.tar.gz) = 49d88f4494ae780e3d7fa51769c00d982d7cdb73e696054ac3baa81d42f13bab +SIZE (openblas/xianyi-OpenBLAS-v0.3.3_GH0.tar.gz) = 11821696 +SHA256 (openblas/2349e151497dc4686413d65954d5418519dfc320.patch) = 234657962fe7a4b6f6f8b07cb66cbd2d8fe44d82504dc608dab24c6113a4bd1b +SIZE (openblas/2349e151497dc4686413d65954d5418519dfc320.patch) = 5346 Index: math/openblas/files/patch-CMakeLists.txt =================================================================== --- /dev/null +++ math/openblas/files/patch-CMakeLists.txt @@ -0,0 +1,29 @@ +--- CMakeLists.txt.orig 2018-09-27 07:33:15 UTC ++++ CMakeLists.txt +@@ -180,7 +180,9 @@ foreach (OUTPUTCONFIG ${CMAKE_CONFIGURAT + set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) + endforeach() + +-enable_testing() ++if (ENABLE_TESTING) ++ enable_testing() ++endif() + + if (USE_THREAD) + # Add threading library to linker +@@ -192,6 +194,7 @@ if (USE_THREAD) + target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT}) + endif() + ++if (ENABLE_TESTING) + if (MSVC OR NOT NOFORTRAN) + # Broken without fortran on unix + add_subdirectory(utest) +@@ -204,6 +207,7 @@ if (NOT MSVC AND NOT NOFORTRAN) + add_subdirectory(ctest) + endif() + endif() ++endif() + + set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES + VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION} Index: math/openblas/files/patch-Makefile =================================================================== --- math/openblas/files/patch-Makefile +++ /dev/null @@ -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 Index: math/openblas/files/patch-Makefile.rule =================================================================== --- math/openblas/files/patch-Makefile.rule +++ /dev/null @@ -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. - Index: math/openblas/files/patch-Makefile.system =================================================================== --- math/openblas/files/patch-Makefile.system +++ /dev/null @@ -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 Index: math/openblas/files/patch-cpuid_sparc.c =================================================================== --- math/openblas/files/patch-cpuid_sparc.c +++ /dev/null @@ -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"); - } Index: math/openblas/files/patch-driver_others_memory.c =================================================================== --- math/openblas/files/patch-driver_others_memory.c +++ math/openblas/files/patch-driver_others_memory.c @@ -1,8 +1,8 @@ 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.orig 2018-08-30 22:07:48 UTC +++ driver/others/memory.c -@@ -144,7 +144,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF +@@ -1652,7 +1652,7 @@ void gotoblas_dummy_for_PGI(void) { #if defined(_MSC_VER) && !defined(__clang__) #define CONSTRUCTOR __cdecl #define DESTRUCTOR __cdecl Index: math/openblas/files/patch-exports+Makefile =================================================================== --- math/openblas/files/patch-exports+Makefile +++ /dev/null @@ -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 Index: math/openblas/pkg-plist =================================================================== --- /dev/null +++ math/openblas/pkg-plist @@ -0,0 +1,17 @@ +include/openblas/cblas.h +include/openblas/f77blas.h +include/openblas/lapacke.h +include/openblas/lapacke_config.h +include/openblas/lapacke_example_aux.h +include/openblas/lapacke_mangling.h +include/openblas/lapacke_utils.h +include/openblas/openblas/lapacke_mangling.h +include/openblas/openblas_config.h +lib/libopenblas.so +lib/libopenblas.so.0 +lib/libopenblas.so.0.3 +libdata/pkgconfig/openblas.pc +share/cmake/OpenBLAS/OpenBLASConfig.cmake +share/cmake/OpenBLAS/OpenBLASConfigVersion.cmake +share/cmake/OpenBLAS/OpenBLASTargets-%%CMAKE_BUILD_TYPE%%.cmake +share/cmake/OpenBLAS/OpenBLASTargets.cmake Index: math/openblas/pkg-plist.interface64 =================================================================== --- /dev/null +++ math/openblas/pkg-plist.interface64 @@ -0,0 +1,17 @@ +include/openblas64/cblas.h +include/openblas64/f77blas.h +include/openblas64/lapacke.h +include/openblas64/lapacke_config.h +include/openblas64/lapacke_example_aux.h +include/openblas64/lapacke_mangling.h +include/openblas64/lapacke_utils.h +include/openblas64/openblas64/lapacke_mangling.h +include/openblas64/openblas_config.h +lib/libopenblas_64.so +lib/libopenblas_64.so.0 +lib/libopenblas_64.so.0.3 +libdata/pkgconfig/openblas64.pc +share/cmake/OpenBLAS64/OpenBLAS64Config.cmake +share/cmake/OpenBLAS64/OpenBLAS64ConfigVersion.cmake +share/cmake/OpenBLAS64/OpenBLAS64Targets-%%CMAKE_BUILD_TYPE%%.cmake +share/cmake/OpenBLAS64/OpenBLAS64Targets.cmake