Bug 165684 - [NEW PORT] math/openblas: An optimized BLAS library based on GotoBLAS2
Summary: [NEW PORT] math/openblas: An optimized BLAS library based on GotoBLAS2
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Maho Nakata
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-04 12:00 UTC by Eijiro Shibusawa
Modified: 2012-09-11 01:41 UTC (History)
0 users

See Also:


Attachments
file.shar (62.39 KB, text/plain)
2012-03-04 12:00 UTC, Eijiro Shibusawa
no flags Details
openblas.diff (10.39 KB, patch)
2012-03-17 06:25 UTC, Eijiro Shibusawa
no flags Details | Diff
openblas_0.2.3.diff (24.49 KB, patch)
2012-08-31 15:07 UTC, Eijiro Shibusawa
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Eijiro Shibusawa 2012-03-04 12:00:22 UTC
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
OpenBLAS is an open source project supported by Lab of Parallel Software and Computational Science, ISCAS.

WWW: https://github.com/xianyi/OpenBLAS

NOTE:
- This port was tested with porttools 0.99 and tinderbox 3.4.1 (9.0R) on FreeBSD 9.0R on amd64.

Fix: Patch attached with submission follows:
Comment 1 Brendan Fabeny freebsd_committer 2012-03-04 19:22:15 UTC
Responsible Changed
From-To: freebsd-ports-bugs->bf

I'll take it.
Comment 2 Eijiro Shibusawa 2012-03-17 06:25:35 UTC
Hi!

I have created a diff which updates the port to 0.1alpha2.5.
This version fixes the detection failure of "Sandy Bridge" CPU.
https://github.com/xianyi/OpenBLAS/blob/master/Changelog.txt

Best regards,
Shibusawa
Comment 3 Maho Nakata freebsd_committer 2012-08-23 06:13:38 UTC
Responsible Changed
From-To: bf->maho

I'll take it. 

(I send an e-mail to bf@ in 2012/8/9, and I didn't recieve replies until now)
Comment 4 dfilter service freebsd_committer 2012-08-26 11:42:58 UTC
Author: maho
Date: Sun Aug 26 10:42:45 2012
New Revision: 303185
URL: http://svn.freebsd.org/changeset/ports/303185

Log:
  Add an math/openblas.
  OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
  OpenBLAS is an open source project supported by
  Lab of Parallel Software and Computational Science, ISCAS.
  
  NOTE: If you want to specify your CPU microarchitecture manually,
  please use TARGET_CPU_ARCH knob, e.g., "make TARGET_CPU_ARCH=NEHALEM".
  This value is set TARGET build flag.
  
  WWW: https://github.com/xianyi/OpenBLAS
  
  PR:		165684
  Submitted by:	Eijiro Shibusawa <phd_kimberlite@yahoo.co.jp>

Added:
  head/math/openblas/
  head/math/openblas/Makefile   (contents, props changed)
  head/math/openblas/distinfo   (contents, props changed)
  head/math/openblas/files/
  head/math/openblas/files/patch-Makefile   (contents, props changed)
  head/math/openblas/files/patch-Makefile.rule   (contents, props changed)
  head/math/openblas/files/patch-Makefile.system   (contents, props changed)
  head/math/openblas/files/patch-c_check   (contents, props changed)
  head/math/openblas/files/patch-cpuid_ia64.c   (contents, props changed)
  head/math/openblas/files/patch-cpuid_sparc.c   (contents, props changed)
  head/math/openblas/files/patch-exports+Makefile   (contents, props changed)
  head/math/openblas/files/patch-exports+gensymbol   (contents, props changed)
  head/math/openblas/files/patch-f_check   (contents, props changed)
  head/math/openblas/files/patch-patch.for_lapack-3.4.0   (contents, props changed)
  head/math/openblas/pkg-descr   (contents, props changed)
Modified:
  head/math/Makefile

Modified: head/math/Makefile
==============================================================================
--- head/math/Makefile	Sun Aug 26 10:30:35 2012	(r303184)
+++ head/math/Makefile	Sun Aug 26 10:42:45 2012	(r303185)
@@ -351,6 +351,7 @@
     SUBDIR += octave-forge-zenity
     SUBDIR += oleo
     SUBDIR += open-axiom
+    SUBDIR += openblas
     SUBDIR += orpie
     SUBDIR += p5-AI-DecisionTree
     SUBDIR += p5-AI-Genetic

Added: head/math/openblas/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/Makefile	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,174 @@
+# New ports collection makefile for:    openblas
+# Date created: 17 Feb 2012
+# Whom:         Eijiro Shibusawa <ej-sib@ice.uec.ac.jp>
+#
+# $FreeBSD$
+#
+
+PORTNAME=	openblas
+PORTVERSION=	0.2.2
+CATEGORIES=	math
+MASTER_SITES=	https://github.com/${GH_USER}/${GH_PORTNAME}/tarball/${GH_VERSION}/ \
+		NL:lapack,lapack_tmg
+MASTER_SITE_SUBDIR=	lapack/:lapack lapack/timing/:lapack_tmg
+DISTFILES=	${GH_USER}-${GH_PORTNAME}-${GH_VERSION}-0-g${GH_REVISION}${EXTRACT_SUFX} \
+		lapack-${LAPACKVER}.tgz:lapack \
+		large.tgz:lapack_tmg timing.tgz:lapack_tmg
+
+MAINTAINER=	phd_kimberlite@yahoo.co.jp
+COMMENT=	An optimized BLAS library based on GotoBLAS2
+
+LICENSE=	BSD
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+DIST_SUBDIR=	openblas
+FETCH_ARGS=	-pRr
+GH_USER=	xianyi
+GH_PORTNAME=	OpenBLAS
+GH_REVISION=	71d29fa
+GH_VERSION=	v${PORTVERSION}
+LAPACKVER=	3.4.0
+LAPACK_SRCFILE=	lapack-${LAPACKVER}.tgz
+LARGE_FILE=	large.tgz
+TIMING_FILE=	timing.tgz
+
+USE_GMAKE=	yes
+USE_LDCONFIG=	yes
+USE_FORTRAN=	yes
+USE_PERL5_BUILD=	yes
+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/|}
+
+MAKE_JOBS_SAFE=	yes
+WRKSRC=		${WRKDIR}/${GH_USER}-${GH_PORTNAME}-4933d61
+
+.if defined(PACKAGE_BUILDING)
+DYNAMIC_ARCH_DEFAULT=	on
+.else
+DYNAMIC_ARCH_DEFAULT=	off
+.endif
+
+OPTIONS=	DYNAMIC_ARCH	"Support multiple CPU types on i386 and amd64" \
+							${DYNAMIC_ARCH_DEFAULT} \
+		INTERFACE64	"Use 8 byte integers on 64-bit architectures" off \
+		OPENMP		"Use OpenMP for threading" off \
+		AVX		"Support Advanced Vector Extensions (AVX)" off
+
+.include <bsd.port.pre.mk>
+
+BUILDFLAGS+=	NO_LAPACKE=1
+
+.if defined(TARGET_CPU_ARCH)
+BUILDFLAGS+=	TARGET=${TARGET_CPU_ARCH}
+.endif
+
+MAXTHREADS?=	8
+
+.if ${ARCH:M*64} == ""
+BUILDFLAGS+=	BINARY32=1
+.else
+BUILDFLAGS+=	BINARY64=1
+.endif
+
+.if ! ( defined(WITH_DYNAMIC_ARCH) && ( ${ARCH} == "amd64" || ${ARCH} == "i386" ) )
+MANUAL_PACKAGE_BUILD=	Optimizes for the build machine.
+.endif
+
+.if defined(WITH_DYNAMIC_ARCH)
+BUILDFLAGS+=	DYNAMIC_ARCH=1
+.endif
+
+.if defined(WITH_INTERFACE64)
+BUILDFLAGS+=	INTERFACE64=1
+.endif
+
+.if defined(WITH_OPENMP)
+BUILDFLAGS+=	USE_OPENMP=1
+.endif
+
+.if defined(WITH_QUAD_PRECISION)
+BROKEN =	WITH_QUAD_PRECISION is broken; please disable this option
+BUILDFLAGS+=	QUAD_PRECISION=1
+.endif
+
+post-extract:
+	cd ${DISTDIR}/${DIST_SUBDIR} ; \
+	${CP} ${LAPACK_SRCFILE} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC}
+	${MKDIR} ${WRKDIR}/lib
+	${RM} ${WRKSRC}/patch.for_lapack-3.4.0
+
+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+%%LOCALBASE%%+${LOCALBASE}+' \
+	-e 's+%%_GCC_BUILD_DEPENDS%%+${_GCC_BUILD_DEPENDS}+' \
+	-e 's+$$(CROSS_SUFFIX)+${LOCALBASE}/bin/+' \
+	-e "s+%%LAPACKVER%%+${LAPACKVER}+g" \
+		${WRKSRC}/Makefile.system
+.if defined(WITH_OPENMP)
+	${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \
+		${WRKSRC}/test/Makefile \
+		${WRKSRC}/ctest/Makefile
+.endif
+.if ! ( defined(WITH_AVX) )
+	${REINPLACE_CMD} -e "s+CPUTYPE_SANDYBRIDGE+CPUTYPE_NEHALEM+g" \
+	 -e "s+CORE_SANDYBRIDGE+CORE_NEHALEM+g" \
+		${WRKSRC}/cpuid_x86.c
+.endif
+
+do-build:
+	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=1 USE_THREAD=0 \
+	${GMAKE} ${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} ; ${GMAKE} ${MAKE_ARGS} clean
+	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
+	USE_THREAD=1 ${GMAKE} ${MAKE_ARGS}
+	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblasp.a
+	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblasp.so.${OPENBLAS_SVER}
+.if !defined(WITH_DEBUG)
+	${LOCALBASE}/bin/strip -X ${WRKDIR}/lib/*.so.${OPENBLAS_SVER}
+.endif
+
+BENCHMARK_MAXTHREADS?=	${MAXTHREADS}
+.if defined(WITH_OPENMP)
+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 ${GMAKE} ${MAKE_ARGS} hpl
+	cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
+	USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${GMAKE} ${MAKE_ARGS}
+
+do-install:
+	cd ${WRKDIR}/lib ; \
+	${INSTALL_DATA} ${OPENBLAS_LIBS:S|$|.a|} ${OPENBLAS_LIBS:S|$|.so.${OPENBLAS_SVER}|} \
+	${PREFIX}/lib/
+	cd ${PREFIX}/lib ; \
+	for i in ${OPENBLAS_LIBS:S|$|.so|}; do \
+		${LN} -sf $$i.${OPENBLAS_SVER} $$i ; \
+	done
+
+.include <bsd.port.post.mk>

Added: head/math/openblas/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/distinfo	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,8 @@
+SHA256 (openblas/xianyi-OpenBLAS-v0.2.2-0-g71d29fa.tar.gz) = 19ffec70f9678f5c159feadc036ca47720681b782910fbaa95aa3867e7e86d8e
+SIZE (openblas/xianyi-OpenBLAS-v0.2.2-0-g71d29fa.tar.gz) = 3230868
+SHA256 (openblas/lapack-3.4.0.tgz) = a7139ef97004d0e3c4c30f1c52d508fd7ae84b5fbaf0dd8e792c167dc306c3e9
+SIZE (openblas/lapack-3.4.0.tgz) = 6127787
+SHA256 (openblas/large.tgz) = f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1
+SIZE (openblas/large.tgz) = 2595
+SHA256 (openblas/timing.tgz) = 999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af
+SIZE (openblas/timing.tgz) = 1059485

Added: head/math/openblas/files/patch-Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-Makefile	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,84 @@
+--- Makefile.orig	2012-07-06 23:09:12.000000000 +0900
++++ Makefile	2012-07-12 00:25:31.000000000 +0900
+@@ -34,7 +34,7 @@
+ 	@echo " OpenBLAS build complete."
+ 	@echo
+ 	@echo "  OS               ... $(OSNAME)             "
+-	@echo "  Architecture     ... $(ARCH)               "
++	@echo "  Architecture     ... $(ARCH_)               "
+ ifndef BINARY64
+ 	@echo "  BINARY           ... 32bit                 "
+ else
+@@ -203,7 +203,7 @@
+ netlib : 
+ 
+ else
+-netlib : lapack-3.4.1 patch.for_lapack-3.4.1 $(NETLIB_LAPACK_DIR)/make.inc
++netlib : lapack-%%LAPACKVER%% patch.for_lapack-%%LAPACKVER%% $(NETLIB_LAPACK_DIR)/make.inc
+ ifndef NOFORTRAN
+ 	-@$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib
+ endif
+@@ -212,7 +212,7 @@
+ endif
+ endif
+ 
+-prof_lapack : lapack-3.4.1 $(NETLIB_LAPACK_DIR)/make.inc
++prof_lapack : lapack-%%LAPACKVER%% $(NETLIB_LAPACK_DIR)/make.inc
+ 	-@$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof
+ 
+ $(NETLIB_LAPACK_DIR)/make.inc :
+@@ -225,7 +225,7 @@
+ 	-@echo "LOADOPTS    = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
+ 	-@echo "CC          = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
+ 	-@echo "CFLAGS      = $(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
+@@ -237,24 +237,17 @@
+ 	-@cat  make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
+ endif
+ 
+-lapack-3.4.1 : lapack-3.4.1.tgz
++lapack-%%LAPACKVER%% : lapack-%%LAPACKVER%%.tgz
+ ifndef NOFORTRAN
+ ifndef NO_LAPACK
+-	@if test `$(MD5SUM) lapack-3.4.1.tgz | $(AWK) '{print $$1}'` = 44c3869c38c8335c2b9c2a8bb276eb55; then \
+-		echo $(TAR) zxf $< ;\
+-		$(TAR) zxf $< && (cd $(NETLIB_LAPACK_DIR); $(PATCH) -p1 < ../patch.for_lapack-3.4.1) ;\
+-		rm -f $(NETLIB_LAPACK_DIR)/lapacke/make.inc ;\
+-	else \
+-		rm -rf $(NETLIB_LAPACK_DIR) ;\
+-		echo "	Cannot download lapack-3.4.1.tgz or the MD5 check sum is wrong (Please use orignal)."; \
+-		exit 1; \
+-	fi
++	echo $(TAR) zxf $< ;\
++	$(TAR) zxf $< && (cd $(NETLIB_LAPACK_DIR); $(PATCH) -p1 < ../patch.for_lapack-%%LAPACKVER%%)
+ endif
+ endif
+ 
+-LAPACK_URL=http://www.netlib.org/lapack/lapack-3.4.1.tgz
++LAPACK_URL=http://www.netlib.org/lapack/lapack-%%LAPACKVER%%.tgz
+ 
+-lapack-3.4.1.tgz :
++lapack-%%LAPACKVER%%.tgz :
+ ifndef NOFORTRAN
+ #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
+ ifeq ($(OSNAME), $(filter $(OSNAME),Darwin NetBSD))
+@@ -278,7 +271,7 @@
+ 	-wget http://www.netlib.org/lapack/timing/timing.tgz
+ endif
+ 
+-lapack-timing : lapack-3.4.1 large.tgz timing.tgz
++lapack-timing : lapack-%%LAPACKVER%% large.tgz timing.tgz
+ ifndef NOFORTRAN
+ 	(cd $(NETLIB_LAPACK_DIR); $(TAR) zxf ../timing.tgz TIMING)
+ 	(cd $(NETLIB_LAPACK_DIR)/TIMING; $(TAR) zxf ../../large.tgz )
+@@ -316,4 +309,4 @@
+ 	rm -rf $(NETLIB_LAPACK_DIR) ;\
+ 	fi
+ 	@rm -f *.grd Makefile.conf_last config_last.h
+-	@echo Done.
+\ No newline at end of file
++	@echo Done.

Added: head/math/openblas/files/patch-Makefile.rule
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-Makefile.rule	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,15 @@
+--- Makefile.rule.orig	2012-02-05 16:36:05.000000000 +0900
++++ Makefile.rule	2012-02-05 16:36:23.000000000 +0900
+@@ -14,10 +14,10 @@
+ 
+ # 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
+ # CC = x86_64-w64-mingw32-gcc

Added: head/math/openblas/files/patch-Makefile.system
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-Makefile.system	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,53 @@
+--- Makefile.system.orig	2012-07-06 23:09:12.000000000 +0900
++++ Makefile.system	2012-07-12 23:03:26.000000000 +0900
+@@ -10,7 +10,7 @@
+ endif
+ 
+ ifndef NETLIB_LAPACK_DIR
+-NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-3.4.1
++NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-%%LAPACKVER%%
+ endif
+ 
+ # Default C compiler
+@@ -117,6 +117,8 @@
+ endif
+ 
+ ifeq ($(OSNAME), FreeBSD)
++EXTRALIB	+= -lm
++FCOMMON_OPT	+= -Wl,-rpath=%%LOCALBASE%%/lib/%%_GCC_BUILD_DEPENDS%%
+ MD5SUM = md5 -r
+ endif
+ 
+@@ -705,15 +707,6 @@
+ LIBSUFFIX = a
+ endif
+ 
+-ifndef DYNAMIC_ARCH
+-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)
+@@ -721,7 +714,6 @@
+ LIBNAME		= $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
+ LIBNAME_P	= $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
+ endif
+-endif
+ 
+ 
+ LIBSONAME    = $(LIBNAME:.$(LIBSUFFIX)=.so)
+@@ -735,7 +727,7 @@
+ LIBS_P		= $(TOPDIR)/$(LIBNAME_P)
+ 
+ export OSNAME
+-export ARCH
++export ARCH_
+ export CORE
+ export LIBCORE
+ export PGCPATH

Added: head/math/openblas/files/patch-c_check
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-c_check	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,20 @@
+--- c_check.orig	2012-02-05 16:25:21.000000000 +0900
++++ c_check	2012-02-05 16:26:54.000000000 +0900
+@@ -2,7 +2,7 @@
+ 
+ # Checking cross compile
+ $hostos   = `uname -s | sed -e s/\-.*//`;    chop($hostos);
+-$hostarch = `uname -m | sed -e s/i.86/x86/`;chop($hostarch);
++$hostarch = `uname -m | sed -e s/i.86/x86/ | sed -e s/amd64/x86_64/`;chop($hostarch);
+ 
+ $binary = $ENV{"BINARY"};
+ 
+@@ -215,7 +215,7 @@
+ # print $data, "\n";
+ 
+ print MAKEFILE "OSNAME=$os\n";
+-print MAKEFILE "ARCH=$architecture\n";
++print MAKEFILE "ARCH_=$architecture\n";
+ print MAKEFILE "C_COMPILER=$compiler\n";
+ print MAKEFILE "BINARY32=\n" if $binformat ne bin32;
+ print MAKEFILE "BINARY64=\n" if $binformat ne bin64;

Added: head/math/openblas/files/patch-cpuid_ia64.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-cpuid_ia64.c	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,12 @@
+--- cpuid_ia64.c.orig	2012-02-05 16:28:01.000000000 +0900
++++ cpuid_ia64.c	2012-02-05 16:28:41.000000000 +0900
+@@ -38,7 +38,9 @@
+ 
+ #include <stdio.h>
+ #include <string.h>
++#ifdef linux
+ #include <sys/sysinfo.h>
++#endif
+ #include "cpuid.h"
+ 
+ #ifdef __ECC

Added: head/math/openblas/files/patch-cpuid_sparc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-cpuid_sparc.c	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,10 @@
+--- cpuid_sparc.c.orig	2012-02-05 16:29:26.000000000 +0900
++++ cpuid_sparc.c	2012-02-05 16:29:45.000000000 +0900
+@@ -49,6 +49,7 @@
+ }
+ 
+ void get_cpuconfig(void){
++  printf("#define SPARC\n");
+   printf("#define V9\n");
+   printf("#define DTB_DEFAULT_ENTRIES 32\n");
+ }

Added: head/math/openblas/files/patch-exports+Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-exports+Makefile	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,10 @@
+--- exports/Makefile.orig	2012-02-05 16:32:13.000000000 +0900
++++ exports/Makefile	2012-02-05 16:33:32.000000000 +0900
+@@ -107,6 +107,7 @@
+ endif
+ 
+ ifeq ($(OSNAME), FreeBSD)
++EXTRALIB += -lgfortran
+ 
+ so : ../$(LIBSONAME)
+ 

Added: head/math/openblas/files/patch-exports+gensymbol
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-exports+gensymbol	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,14 @@
+--- exports/gensymbol.orig	2012-07-08 21:47:12.000000000 +0900
++++ exports/gensymbol	2012-07-08 21:48:26.000000000 +0900
+@@ -2666,10 +2666,7 @@
+ 		#LAPACKE_zlagsy_work,
+ 		);
+ 
+-if ($ARGV[5] == 1) {
+-	#NO_LAPACK=1
+-	@underscore_objs = (@blasobjs, @misc_underscore_objs);
+-} elsif (-d "../lapack-3.1.1" || -d "../lapack-3.4.0" || -d "../lapack-3.4.1") {
++if (-d "../lapack-%%LAPACKVER%%") {
+     @underscore_objs = (@blasobjs, @lapackobjs, @lapackobjs2, @misc_underscore_objs);
+ } else {
+     @underscore_objs = (@blasobjs, @lapackobjs, @misc_underscore_objs);

Added: head/math/openblas/files/patch-f_check
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-f_check	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,20 @@
+--- f_check.orig	2012-02-05 16:41:59.000000000 +0900
++++ f_check	2012-02-05 16:42:41.000000000 +0900
+@@ -240,7 +240,7 @@
+ 
+     foreach $flags (@flags) {
+ 	if (
+-	    ($flags =~ /^\-L/)
++	    ($flags =~ /^\-L\S/)
+ 	    && ($flags !~ /^-LIST:/)
+ 	    && ($flags !~ /^-LANG:/)
+ 	    ) {
+@@ -263,7 +263,7 @@
+ 	}
+ 	
+ 	if (
+-	    ($flags =~ /^\-l/) 
++	    ($flags =~ /^\-l\S/) 
+ 	    && ($flags !~ /gfortranbegin/)
+ 	    && ($flags !~ /frtbegin/)
+ 	    && ($flags !~ /pathfstart/)

Added: head/math/openblas/files/patch-patch.for_lapack-3.4.0
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/files/patch-patch.for_lapack-3.4.0	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,381 @@
+--- /dev/null	2012-02-01 12:00:00.000000000 +0900
++++ patch.for_lapack-3.4.0	2012-02-01 11:59:44.000000000 +0900
+@@ -0,0 +1,378 @@
++
++--- a/lapack-3.4.0/INSTALL/Makefile	2011-10-01 11:37:03.000000000 +0900
+++++ lapack-3.4.0/INSTALL/Makefile	2012-02-01 11:05:05.000000000 +0900
++@@ -27,7 +27,7 @@
++ 	$(LOADER) $(LOADOPTS) -o testversion ilaver.o LAPACK_version.o
++ 
++ clean:
++-	rm -f *.o
+++	rm -f *.o test*
++ .f.o: 
++ 	$(FORTRAN) $(OPTS) -c $< -o $@
++ 
++diff -ur /work/ports/va/lapack-3.4.0/Makefile lapack-3.4.0/Makefile
++--- a/lapack-3.4.0/Makefile	2011-11-12 06:08:04.000000000 +0900
+++++ lapack-3.4.0/Makefile	2012-02-01 11:05:05.000000000 +0900
++@@ -20,9 +20,12 @@
++ blaslib:
++ 	( cd BLAS/SRC; $(MAKE) )
++ 
++-lapacklib:	lapack_install
+++lapacklib:
++ 	( cd SRC; $(MAKE) )
++ 
+++lapack_prof:
+++	( cd SRC; $(MAKE) lapack_prof)
+++
++ variants:
++ 	( cd SRC/VARIANTS ; $(MAKE))
++ 	
++
++--- a/lapack-3.4.0/SRC/Makefile	2011-10-04 11:58:05.000000000 +0900
+++++ lapack-3.4.0/SRC/Makefile	2012-02-01 11:58:55.000000000 +0900
++@@ -54,9 +54,9 @@
++ #
++ #######################################################################
++ 
++-ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla.o xerbla_array.o iparmq.o	\
+++ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla_array.o iparmq.o	\
++     ilaprec.o ilatrans.o ilauplo.o iladiag.o chla_transtype.o \
++-    ../INSTALL/ilaver.o ../INSTALL/lsame.o ../INSTALL/slamch.o
+++    ../INSTALL/ilaver.o
++ 
++ SCLAUX = \
++    sbdsdc.o \
++@@ -92,7 +92,7 @@
++    dlasr.o  dlasrt.o dlassq.o dlasv2.o dpttrf.o dstebz.o dstedc.o \
++    dsteqr.o dsterf.o dlaisnan.o disnan.o \
++    dlartgp.o dlartgs.o \
++-   ../INSTALL/dlamch.o ../INSTALL/dsecnd_$(TIMER).o
+++   ../INSTALL/dsecnd_$(TIMER).o
++ 
++ SLASRC = \
++    sgbbrd.o sgbcon.o sgbequ.o sgbrfs.o sgbsv.o  \
++@@ -101,8 +101,8 @@
++    sgegs.o  sgegv.o  sgehd2.o sgehrd.o sgelq2.o sgelqf.o \
++    sgels.o  sgelsd.o sgelss.o sgelsx.o sgelsy.o sgeql2.o sgeqlf.o \
++    sgeqp3.o sgeqpf.o sgeqr2.o sgeqr2p.o sgeqrf.o sgeqrfp.o sgerfs.o \
++-   sgerq2.o sgerqf.o sgesc2.o sgesdd.o sgesv.o  sgesvd.o sgesvx.o \
++-   sgetc2.o sgetf2.o sgetri.o \
+++   sgerq2.o sgerqf.o sgesc2.o sgesdd.o sgesvd.o sgesvx.o \
+++   sgetc2.o sgetri.o \
++    sggbak.o sggbal.o sgges.o  sggesx.o sggev.o  sggevx.o \
++    sggglm.o sgghrd.o sgglse.o sggqrf.o \
++    sggrqf.o sggsvd.o sggsvp.o sgtcon.o sgtrfs.o sgtsv.o  \
++@@ -118,16 +118,16 @@
++    slaqtr.o slar1v.o slar2v.o ilaslr.o ilaslc.o \
++    slarf.o  slarfb.o slarfg.o slarfgp.o slarft.o slarfx.o slargv.o \
++    slarrv.o slartv.o  \
++-   slarz.o  slarzb.o slarzt.o slaswp.o slasy2.o slasyf.o \
+++   slarz.o  slarzb.o slarzt.o slasy2.o slasyf.o \
++    slatbs.o slatdf.o slatps.o slatrd.o slatrs.o slatrz.o slatzm.o \
++-   slauu2.o slauum.o sopgtr.o sopmtr.o sorg2l.o sorg2r.o \
+++   sopgtr.o sopmtr.o sorg2l.o sorg2r.o \
++    sorgbr.o sorghr.o sorgl2.o sorglq.o sorgql.o sorgqr.o sorgr2.o \
++    sorgrq.o sorgtr.o sorm2l.o sorm2r.o \
++    sormbr.o sormhr.o sorml2.o sormlq.o sormql.o sormqr.o sormr2.o \
++    sormr3.o sormrq.o sormrz.o sormtr.o spbcon.o spbequ.o spbrfs.o \
++    spbstf.o spbsv.o  spbsvx.o \
++    spbtf2.o spbtrf.o spbtrs.o spocon.o spoequ.o sporfs.o sposv.o  \
++-   sposvx.o spotf2.o  spotri.o  spstrf.o spstf2.o \
+++   sposvx.o spstrf.o spstf2.o \
++    sppcon.o sppequ.o \
++    spprfs.o sppsv.o  sppsvx.o spptrf.o spptri.o spptrs.o sptcon.o \
++    spteqr.o sptrfs.o sptsv.o  sptsvx.o spttrs.o sptts2.o srscl.o  \
++@@ -143,7 +143,7 @@
++    stgsja.o stgsna.o stgsy2.o stgsyl.o stpcon.o stprfs.o stptri.o \
++    stptrs.o \
++    strcon.o strevc.o strexc.o strrfs.o strsen.o strsna.o strsyl.o \
++-   strti2.o strtri.o strtrs.o stzrqf.o stzrzf.o sstemr.o \
+++   strtrs.o stzrqf.o stzrzf.o sstemr.o \
++    slansf.o spftrf.o spftri.o spftrs.o ssfrk.o stfsm.o stftri.o stfttp.o \
++    stfttr.o stpttf.o stpttr.o strttf.o strttp.o \
++    sgejsv.o  sgesvj.o  sgsvj0.o  sgsvj1.o \
++@@ -152,7 +152,7 @@
++    sgeqrt.o sgeqrt2.o sgeqrt3.o sgemqrt.o \
++    stpqrt.o stpqrt2.o stpmqrt.o stprfb.o
++ 
++-DSLASRC = spotrs.o sgetrs.o spotrf.o sgetrf.o 
+++DSLASRC = spotrs.o
++ 
++ ifdef USEXBLAS
++ SXLASRC = sgesvxx.o sgerfsx.o sla_gerfsx_extended.o sla_geamv.o		\
++@@ -171,8 +171,8 @@
++    cgegs.o  cgegv.o  cgehd2.o cgehrd.o cgelq2.o cgelqf.o \
++    cgels.o  cgelsd.o cgelss.o cgelsx.o cgelsy.o cgeql2.o cgeqlf.o cgeqp3.o \
++    cgeqpf.o cgeqr2.o cgeqr2p.o cgeqrf.o cgeqrfp.o cgerfs.o \
++-   cgerq2.o cgerqf.o cgesc2.o cgesdd.o cgesv.o  cgesvd.o  \
++-   cgesvx.o cgetc2.o cgetf2.o cgetri.o \
+++   cgerq2.o cgerqf.o cgesc2.o cgesdd.o cgesvd.o  \
+++   cgesvx.o cgetc2.o cgetri.o \
++    cggbak.o cggbal.o cgges.o  cggesx.o cggev.o  cggevx.o cggglm.o \
++    cgghrd.o cgglse.o cggqrf.o cggrqf.o \
++    cggsvd.o cggsvp.o \
++@@ -200,21 +200,21 @@
++    clarf.o  clarfb.o clarfg.o clarft.o clarfgp.o \
++    clarfx.o clargv.o clarnv.o clarrv.o clartg.o clartv.o \
++    clarz.o  clarzb.o clarzt.o clascl.o claset.o clasr.o  classq.o \
++-   claswp.o clasyf.o clatbs.o clatdf.o clatps.o clatrd.o clatrs.o clatrz.o \
++-   clatzm.o clauu2.o clauum.o cpbcon.o cpbequ.o cpbrfs.o cpbstf.o cpbsv.o  \
+++   clasyf.o clatbs.o clatdf.o clatps.o clatrd.o clatrs.o clatrz.o \
+++   clatzm.o cpbcon.o cpbequ.o cpbrfs.o cpbstf.o cpbsv.o  \
++    cpbsvx.o cpbtf2.o cpbtrf.o cpbtrs.o cpocon.o cpoequ.o cporfs.o \
++-   cposv.o  cposvx.o cpotf2.o cpotri.o cpstrf.o cpstf2.o \
+++   cposv.o  cposvx.o cpstrf.o cpstf2.o \
++    cppcon.o cppequ.o cpprfs.o cppsv.o  cppsvx.o cpptrf.o cpptri.o cpptrs.o \
++    cptcon.o cpteqr.o cptrfs.o cptsv.o  cptsvx.o cpttrf.o cpttrs.o cptts2.o \
++-   crot.o   cspcon.o cspmv.o  cspr.o   csprfs.o cspsv.o  \
+++   crot.o   cspcon.o csprfs.o cspsv.o  \
++    cspsvx.o csptrf.o csptri.o csptrs.o csrscl.o cstedc.o \
++-   cstegr.o cstein.o csteqr.o csycon.o csymv.o \
++-   csyr.o   csyrfs.o csysv.o  csysvx.o csytf2.o csytrf.o csytri.o csytri2.o csytri2x.o \
+++   cstegr.o cstein.o csteqr.o csycon.o \
+++   csyrfs.o csysv.o  csysvx.o csytf2.o csytrf.o csytri.o csytri2.o csytri2x.o \
++    csyswapr.o csytrs.o csytrs2.o csyconv.o ctbcon.o ctbrfs.o ctbtrs.o ctgevc.o ctgex2.o \
++    ctgexc.o ctgsen.o ctgsja.o ctgsna.o ctgsy2.o ctgsyl.o ctpcon.o \
++    ctprfs.o ctptri.o \
++    ctptrs.o ctrcon.o ctrevc.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
++-   ctrsyl.o ctrti2.o ctrtri.o ctrtrs.o ctzrqf.o ctzrzf.o cung2l.o cung2r.o \
+++   ctrsyl.o ctrtrs.o ctzrqf.o ctzrzf.o cung2l.o cung2r.o \
++    cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.o \
++    cungrq.o cungtr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o \
++    cunmlq.o cunmql.o cunmqr.o cunmr2.o cunmr3.o cunmrq.o cunmrz.o \
++@@ -240,7 +240,7 @@
++    cla_lin_berr.o clarscl2.o clascl2.o cla_wwaddw.o
++ endif
++ 
++-ZCLASRC = cpotrs.o cgetrs.o cpotrf.o cgetrf.o 
+++ZCLASRC = cpotrs.o
++ 
++ DLASRC = \
++    dgbbrd.o dgbcon.o dgbequ.o dgbrfs.o dgbsv.o  \
++@@ -249,9 +249,9 @@
++    dgegs.o  dgegv.o  dgehd2.o dgehrd.o dgelq2.o dgelqf.o \
++    dgels.o  dgelsd.o dgelss.o dgelsx.o dgelsy.o dgeql2.o dgeqlf.o \
++    dgeqp3.o dgeqpf.o dgeqr2.o dgeqr2p.o dgeqrf.o dgeqrfp.o dgerfs.o \
++-   dgerq2.o dgerqf.o dgesc2.o dgesdd.o dgesv.o  dgesvd.o dgesvx.o  \
++-   dgetc2.o dgetf2.o dgetrf.o dgetri.o \
++-   dgetrs.o dggbak.o dggbal.o dgges.o  dggesx.o dggev.o  dggevx.o \
+++   dgerq2.o dgerqf.o dgesc2.o dgesdd.o dgesvd.o dgesvx.o  \
+++   dgetc2.o dgetri.o \
+++   dggbak.o dggbal.o dgges.o  dggesx.o dggev.o  dggevx.o \
++    dggglm.o dgghrd.o dgglse.o dggqrf.o \
++    dggrqf.o dggsvd.o dggsvp.o dgtcon.o dgtrfs.o dgtsv.o  \
++    dgtsvx.o dgttrf.o dgttrs.o dgtts2.o dhgeqz.o \
++@@ -266,16 +266,16 @@
++    dlaqtr.o dlar1v.o dlar2v.o iladlr.o iladlc.o \
++    dlarf.o  dlarfb.o dlarfg.o dlarfgp.o dlarft.o dlarfx.o \
++    dlargv.o dlarrv.o dlartv.o  \
++-   dlarz.o  dlarzb.o dlarzt.o dlaswp.o dlasy2.o dlasyf.o \
++-   dlatbs.o dlatdf.o dlatps.o dlatrd.o dlatrs.o dlatrz.o dlatzm.o dlauu2.o \
++-   dlauum.o dopgtr.o dopmtr.o dorg2l.o dorg2r.o \
+++   dlarz.o  dlarzb.o dlarzt.o dlasy2.o dlasyf.o \
+++   dlatbs.o dlatdf.o dlatps.o dlatrd.o dlatrs.o dlatrz.o dlatzm.o \
+++   dopgtr.o dopmtr.o dorg2l.o dorg2r.o \
++    dorgbr.o dorghr.o dorgl2.o dorglq.o dorgql.o dorgqr.o dorgr2.o \
++    dorgrq.o dorgtr.o dorm2l.o dorm2r.o \
++    dormbr.o dormhr.o dorml2.o dormlq.o dormql.o dormqr.o dormr2.o \
++    dormr3.o dormrq.o dormrz.o dormtr.o dpbcon.o dpbequ.o dpbrfs.o \
++    dpbstf.o dpbsv.o  dpbsvx.o \
++    dpbtf2.o dpbtrf.o dpbtrs.o dpocon.o dpoequ.o dporfs.o dposv.o  \
++-   dposvx.o dpotf2.o dpotrf.o dpotri.o dpotrs.o dpstrf.o dpstf2.o \
+++   dposvx.o dpotrs.o dpstrf.o dpstf2.o \
++    dppcon.o dppequ.o \
++    dpprfs.o dppsv.o  dppsvx.o dpptrf.o dpptri.o dpptrs.o dptcon.o \
++    dpteqr.o dptrfs.o dptsv.o  dptsvx.o dpttrs.o dptts2.o drscl.o  \
++@@ -292,7 +292,7 @@
++    dtgsja.o dtgsna.o dtgsy2.o dtgsyl.o dtpcon.o dtprfs.o dtptri.o \
++    dtptrs.o \
++    dtrcon.o dtrevc.o dtrexc.o dtrrfs.o dtrsen.o dtrsna.o dtrsyl.o \
++-   dtrti2.o dtrtri.o dtrtrs.o dtzrqf.o dtzrzf.o dstemr.o \
+++   dtrtrs.o dtzrqf.o dtzrzf.o dstemr.o \
++    dsgesv.o dsposv.o dlag2s.o slag2d.o dlat2s.o \
++    dlansf.o dpftrf.o dpftri.o dpftrs.o dsfrk.o dtfsm.o dtftri.o dtfttp.o \
++    dtfttr.o dtpttf.o dtpttr.o dtrttf.o dtrttp.o \
++@@ -319,8 +319,8 @@
++    zgegs.o  zgegv.o  zgehd2.o zgehrd.o zgelq2.o zgelqf.o \
++    zgels.o  zgelsd.o zgelss.o zgelsx.o zgelsy.o zgeql2.o zgeqlf.o zgeqp3.o \
++    zgeqpf.o zgeqr2.o zgeqr2p.o zgeqrf.o zgeqrfp.o zgerfs.o zgerq2.o zgerqf.o \
++-   zgesc2.o zgesdd.o zgesv.o  zgesvd.o zgesvx.o zgetc2.o zgetf2.o zgetrf.o \
++-   zgetri.o zgetrs.o \
+++   zgesc2.o zgesdd.o zgesvd.o zgesvx.o zgetc2.o \
+++   zgetri.o \
++    zggbak.o zggbal.o zgges.o  zggesx.o zggev.o  zggevx.o zggglm.o \
++    zgghrd.o zgglse.o zggqrf.o zggrqf.o \
++    zggsvd.o zggsvp.o \
++@@ -350,22 +350,22 @@
++    zlarfg.o zlarft.o zlarfgp.o \
++    zlarfx.o zlargv.o zlarnv.o zlarrv.o zlartg.o zlartv.o \
++    zlarz.o  zlarzb.o zlarzt.o zlascl.o zlaset.o zlasr.o  \
++-   zlassq.o zlaswp.o zlasyf.o \
++-   zlatbs.o zlatdf.o zlatps.o zlatrd.o zlatrs.o zlatrz.o zlatzm.o zlauu2.o \
++-   zlauum.o zpbcon.o zpbequ.o zpbrfs.o zpbstf.o zpbsv.o  \
+++   zlassq.o zlasyf.o \
+++   zlatbs.o zlatdf.o zlatps.o zlatrd.o zlatrs.o zlatrz.o zlatzm.o \
+++   zpbcon.o zpbequ.o zpbrfs.o zpbstf.o zpbsv.o  \
++    zpbsvx.o zpbtf2.o zpbtrf.o zpbtrs.o zpocon.o zpoequ.o zporfs.o \
++-   zposv.o  zposvx.o zpotf2.o zpotrf.o zpotri.o zpotrs.o zpstrf.o zpstf2.o \
+++   zposv.o  zposvx.o zpotrs.o zpstrf.o zpstf2.o \
++    zppcon.o zppequ.o zpprfs.o zppsv.o  zppsvx.o zpptrf.o zpptri.o zpptrs.o \
++    zptcon.o zpteqr.o zptrfs.o zptsv.o  zptsvx.o zpttrf.o zpttrs.o zptts2.o \
++-   zrot.o   zspcon.o zspmv.o  zspr.o   zsprfs.o zspsv.o  \
+++   zrot.o   zspcon.o zsprfs.o zspsv.o  \
++    zspsvx.o zsptrf.o zsptri.o zsptrs.o zdrscl.o zstedc.o \
++-   zstegr.o zstein.o zsteqr.o zsycon.o zsymv.o \
++-   zsyr.o   zsyrfs.o zsysv.o  zsysvx.o zsytf2.o zsytrf.o zsytri.o zsytri2.o zsytri2x.o \
+++   zstegr.o zstein.o zsteqr.o zsycon.o \
+++   zsyrfs.o zsysv.o  zsysvx.o zsytf2.o zsytrf.o zsytri.o zsytri2.o zsytri2x.o \
++    zsyswapr.o zsytrs.o zsytrs2.o zsyconv.o ztbcon.o ztbrfs.o ztbtrs.o ztgevc.o ztgex2.o \
++    ztgexc.o ztgsen.o ztgsja.o ztgsna.o ztgsy2.o ztgsyl.o ztpcon.o \
++    ztprfs.o ztptri.o \
++    ztptrs.o ztrcon.o ztrevc.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
++-   ztrsyl.o ztrti2.o ztrtri.o ztrtrs.o ztzrqf.o ztzrzf.o zung2l.o \
+++   ztrsyl.o ztrtrs.o ztzrqf.o ztzrzf.o zung2l.o \
++    zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.o \
++    zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o \
++    zunmlq.o zunmql.o zunmqr.o zunmr2.o zunmr3.o zunmrq.o zunmrz.o \
++@@ -393,34 +393,46 @@
++ 
++ ALLOBJ = $(SLASRC) $(DLASRC) $(DSLASRC) $(CLASRC) $(ZLASRC) $(ZCLASRC) \
++    $(SCLAUX) $(DZLAUX) $(ALLAUX)
+++ 
+++ALLOBJ_P = $(ALLOBJ:.$(SUFFIX)=.$(PSUFFIX))
+++
+++
++ 
++ ifdef USEXBLAS
++ ALLXOBJ = $(SXLASRC) $(DXLASRC) $(CXLASRC) $(ZXLASRC)
++ endif
++ 
++ all: ../$(LAPACKLIB)
+++ 
+++lapack_prof: ../$(LAPACKLIB_P)
+++
+++
++ 
++ ../$(LAPACKLIB): $(ALLOBJ) $(ALLXOBJ)
++-	$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ) $(ALLXOBJ)
+++	$(ARCH_) $(ARCHFLAGS) $@ $(ALLOBJ) $(ALLXOBJ)
+++	$(RANLIB) $@
+++ 
+++../$(LAPACKLIB_P): $(ALLOBJ_P)
+++	$(ARCH_) $(ARCHFLAGS) $@ $(ALLOBJ_P)
++ 	$(RANLIB) $@
++ 
++ single: $(SLASRC) $(DSLASRC) $(SXLASRC) $(SCLAUX) $(ALLAUX)
++-	$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(SLASRC) $(DSLASRC) \
+++	$(ARCH_) $(ARCHFLAGS) ../$(LAPACKLIB) $(SLASRC) $(DSLASRC) \
++ 	$(SXLASRC) $(SCLAUX) $(ALLAUX) $(ALLXAUX)
++ 	$(RANLIB) ../$(LAPACKLIB)
++ 
++ complex: $(CLASRC) $(ZCLASRC) $(CXLASRC) $(SCLAUX) $(ALLAUX)
++-	$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(CLASRC) $(ZCLASRC) \
+++	$(ARCH_) $(ARCHFLAGS) ../$(LAPACKLIB) $(CLASRC) $(ZCLASRC) \
++ 	$(CXLASRC) $(SCLAUX) $(ALLAUX) $(ALLXAUX)
++ 	$(RANLIB) ../$(LAPACKLIB)
++ 
++ double: $(DLASRC) $(DSLASRC) $(DXLASRC) $(DZLAUX) $(ALLAUX)
++-	$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(DLASRC) $(DSLASRC) \
+++	$(ARCH_) $(ARCHFLAGS) ../$(LAPACKLIB) $(DLASRC) $(DSLASRC) \
++ 	$(DXLASRC) $(DZLAUX) $(ALLAUX) $(ALLXAUX)
++ 	$(RANLIB) ../$(LAPACKLIB)
++ 
++ complex16: $(ZLASRC) $(ZCLASRC) $(ZXLASRC) $(DZLAUX) $(ALLAUX)
++-	$(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(ZLASRC) $(ZCLASRC) \
+++	$(ARCH_) $(ARCHFLAGS) ../$(LAPACKLIB) $(ZLASRC) $(ZCLASRC) \
++ 	$(ZXLASRC) $(DZLAUX) $(ALLAUX) $(ALLXAUX)
++ 	$(RANLIB) ../$(LAPACKLIB)
++ 
++@@ -444,13 +456,20 @@
++ 	@FRC=$(FRC)
++ 
++ clean:
++-	rm -f *.o
+++	rm -f *.o *.$(PSUFFIX)
++ 
++-.f.o: 
+++%.o: %.f
++ 	$(FORTRAN) $(OPTS) -c $< -o $@
++ 
+++%.$(PSUFFIX): %.f
+++	$(FORTRAN) $(POPTS) -c $< -o $@
+++
++ slaruv.o: slaruv.f ; $(FORTRAN) $(NOOPT) -c $< -o $@
++ dlaruv.o: dlaruv.f ; $(FORTRAN) $(NOOPT) -c $< -o $@
+++
+++slaruv.$(PSUFFIX): slaruv.f ; $(FORTRAN) $(PNOOPT) -c $< -o $@
+++dlaruv.$(PSUFFIX): dlaruv.f ; $(FORTRAN) $(PNOOPT) -c $< -o $@
+++
++ sla_wwaddw.o: sla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c $< -o $@
++ dla_wwaddw.o: dla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c $< -o $@
++ cla_wwaddw.o: cla_wwaddw.f ; $(FORTRAN) $(NOOPT) -c $< -o $@
++
++--- a/lapack-3.4.0/TESTING/EIG/Makefile	2011-09-27 06:52:31.000000000 +0900
+++++ lapack-3.4.0/TESTING/EIG/Makefile	2012-02-01 11:05:05.000000000 +0900
++@@ -129,22 +129,22 @@
++ ../xeigtsts: $(SEIGTST) $(SCIGTST) $(AEIGTST) ../../$(LAPACKLIB); \
++           $(LOADER) $(LOADOPTS) -o xeigtsts \
++           $(SEIGTST) $(SCIGTST) $(AEIGTST) ../../$(TMGLIB) \
++-	  ../../$(LAPACKLIB) $(BLASLIB) && mv xeigtsts $@
+++	  ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) && mv xeigtsts $@
++ 
++ ../xeigtstc: $(CEIGTST) $(SCIGTST) $(AEIGTST) ../../$(LAPACKLIB); \
++           $(LOADER) $(LOADOPTS) -o xeigtstc \
++           $(CEIGTST) $(SCIGTST) $(AEIGTST) ../../$(TMGLIB) \
++-	  ../../$(LAPACKLIB) $(BLASLIB) && mv xeigtstc $@
+++	  ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) && mv xeigtstc $@
++ 
++ ../xeigtstd: $(DEIGTST) $(DZIGTST) $(AEIGTST) ../../$(LAPACKLIB); \
++           $(LOADER) $(LOADOPTS) -o xeigtstd \
++           $(DEIGTST) $(DZIGTST) $(AEIGTST) ../../$(TMGLIB) \
++-	  ../../$(LAPACKLIB) $(BLASLIB) && mv xeigtstd $@
+++	  ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) && mv xeigtstd $@
++ 
++ ../xeigtstz: $(ZEIGTST) $(DZIGTST) $(AEIGTST) ../../$(LAPACKLIB); \
++           $(LOADER) $(LOADOPTS) -o xeigtstz \
++           $(ZEIGTST) $(DZIGTST) $(AEIGTST) ../../$(TMGLIB) \
++-	  ../../$(LAPACKLIB) $(BLASLIB) && mv xeigtstz $@
+++	  ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) && mv xeigtstz $@
++ 
++ $(AEIGTST): $(FRC)
++ $(SCIGTST): $(FRC)
++
++--- a/lapack-3.4.0/TESTING/LIN/Makefile	2011-11-01 07:21:11.000000000 +0900
+++++ lapack-3.4.0/TESTING/LIN/Makefile	2012-02-01 11:05:05.000000000 +0900
++@@ -243,27 +243,27 @@
++ 
++ xlintsts : $(ALINTST) $(SLINTST) $(SCLNTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(ALINTST) $(SCLNTST) $(SLINTST) \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) $(CEXTRALIB) -o $@
++ 
++ xlintstc : $(ALINTST) $(CLINTST) $(SCLNTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(ALINTST) $(SCLNTST) $(CLINTST) \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) $(CEXTRALIB) -o $@
++  
++ xlintstd : $(ALINTST) $(DLINTST) $(DZLNTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS) $^ \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB) $(BLASLIB) $(CEXTRALIB) -o $@
++  
++ xlintstz : $(ALINTST) $(ZLINTST) $(DZLNTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(ALINTST) $(DZLNTST) $(ZLINTST) \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(XBLASLIB)  $(BLASLIB) $(CEXTRALIB) -o $@
++  
++ xlintstds : $(DSLINTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(DSLINTST) \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) -o $@
++  
++ xlintstzc : $(ZCLINTST) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(ZCLINTST) \
++-        ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) -o $@
+++        ../../$(TMGLIB) ../../$(LAPACKLIB) $(BLASLIB) $(CEXTRALIB) -o $@
++  
++ xlintstrfs : $(SLINTSTRFP) ../../$(LAPACKLIB)
++ 	$(LOADER) $(LOADOPTS)  $(SLINTSTRFP) \

Added: head/math/openblas/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/math/openblas/pkg-descr	Sun Aug 26 10:42:45 2012	(r303185)
@@ -0,0 +1,9 @@
+OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
+OpenBLAS is an open source project supported by
+Lab of Parallel Software and Computational Science, ISCAS.
+
+NOTE: If you want to specify your CPU microarchitecture manually,
+please use TARGET_CPU_ARCH knob, e.g., "make TARGET_CPU_ARCH=NEHALEM".
+This value is set TARGET build flag.
+
+WWW: https://github.com/xianyi/OpenBLAS
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 5 Eijiro Shibusawa 2012-08-31 15:07:53 UTC
Hello,

I have tested an updated version of this port at redports.org.
The attached patch includes following modifications.
* updates to 0.2.3
* the patch for installing LAPACK 3.4.0 is now removed
* LAPACKE C interface is integrated
* some minor typos are corrected

NOTE:
- This port was tested with portlint 2.13.11 and tinderbox.
   tinderbox logs are available at redports.org.
   https://redports.org/buildarchive/20120829055840-24457/
- To download this port, please try
   svn co https://svn.redports.org/ejsib/math/openblas

Best Regards,
Comment 6 Maho Nakata freebsd_committer 2012-09-10 02:51:07 UTC
Hi Shibusawa-san

Committed. I have checked and it looks fine.

Anyway, could you please paste your result of
make benchmark?
On Opteron 285 (2.6GHz) x2 -> 21GFlops at peak.

./dlinpack.goto  4000 4000 1
From : 4000  To : 4000 Step =   1
   SIZE       Residual     Decompose            Solve           Total
   4000 :   7.699408e-11    17418.13 MFlops     810.45 MFlops   17154.68 MFlops

./dcholesky.goto  4000 4000 1
From : 4000  To : 4000 Step =   1
M =   4000 :   5.598300e-14   16881.149 MFlops  5.173639e-14   15945.122 MFlops
./dcholesky.mkl  4000 4000 1

Quite good performance, isn't it?

Thanks,
 Nakata Maho

From: Eijiro Shibusawa <phd_kimberlite@yahoo.co.jp>
Subject: Re: ports/165684: [NEW PORT] math/openblas: An optimized BLAS library based on GotoBLAS2
Date: Fri, 31 Aug 2012 23:07:53 +0900

> Hello,
> 
> I have tested an updated version of this port at redports.org.
> The attached patch includes following modifications.
> * updates to 0.2.3
> * the patch for installing LAPACK 3.4.0 is now removed
> * LAPACKE C interface is integrated
> * some minor typos are corrected
> 
> NOTE:
> - This port was tested with portlint 2.13.11 and tinderbox.
>   tinderbox logs are available at redports.org.
>   https://redports.org/buildarchive/20120829055840-24457/
> - To download this port, please try
>   svn co https://svn.redports.org/ejsib/math/openblas
> 
> Best Regards,
Comment 7 Maho Nakata freebsd_committer 2012-09-11 01:41:15 UTC
State Changed
From-To: open->closed

committed, thanks!