Build fix with gcc46 [1] and other small improvements [2].

PR:		160973
Submitted by:	bf [1, 2], Eijiro Shibusawa <phd_kimberlite@yahoo.co.jp> [1]
This commit is contained in:
Maho Nakata
2011-09-28 06:21:19 +00:00
parent 88f77a33ca
commit 97e17b67b6
5 changed files with 159 additions and 87 deletions

View File

@@ -7,19 +7,21 @@
PORTNAME= gotoblas
PORTVERSION= 2.${GOTOBLAS2VER}
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= math
MASTER_SITES= ${MASTER_SITE_LOCAL:S|%SUBDIR%|maho/gotoblas|} \
ftp://ftp.netlib.org/lapack/:lapack \
ftp://ftp.netlib.org/lapack/timing/:lapack_tmg \
ftp://ftp.netlib.no/netlib/lapack/:lapack \
ftp://ftp.netlib.no/netlib/lapack/timing/:lapack_tmg
DISTFILES= GotoBLAS2-${GOTOBLAS2VER}_bsd.tar.gz lapack-3.1.1.tgz:lapack large.tgz:lapack_tmg timing.tgz:lapack_tmg
EXTRACT_ONLY= ${GOTOBLAS2_SRCFILE}
NL:lapack,lapack_tmg
MASTER_SITE_SUBDIR= lapack/:lapack lapack/timing/:lapack_tmg
DISTFILES= GotoBLAS2-${GOTOBLAS2VER}_bsd.tar.gz \
lapack-3.1.1.tgz:lapack \
large.tgz:lapack_tmg timing.tgz:lapack_tmg
EXTRACT_ONLY= ${GOTOBLAS2_SRCFILE}
MAINTAINER= maho@FreeBSD.org
COMMENT= A fast implementation of Basic Linear Algebra Subprograms
LICENSE= BSD
DIST_SUBDIR= gotoblas
GOTOBLAS2VER= 1.13
GOTOBLAS2_SRCFILE= GotoBLAS2-${GOTOBLAS2VER}_bsd.tar.gz
@@ -31,106 +33,115 @@ USE_LDCONFIG= yes
WRKSRC= ${WRKDIR}/GotoBLAS2
USE_PERL5_BUILD= yes
USE_FORTRAN= yes
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
USE_FORTRAN= yes
GOTOLIBS= libgoto2 libgoto2p
GOTOFILES= ${GOTOLIBS:S|$|.so|} ${GOTOLIBS:S|$|.so.1|} ${GOTOLIBS:S|$|.a|}
PLIST_FILES= ${GOTOFILES:S|^|lib/|}
SUB_FILES= pkg-message
SUB_LIST= MAXTHREADS=${MAXTHREADS}
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
# QUAD_PRECISION "Support IEEE quad precision (experimental)" off
.include <bsd.port.pre.mk>
BUILD_DEPENDS+= ${LOCALBASE}/bin/as:${PORTSDIR}/devel/binutils
.if ${ARCH} == "amd64" || ${ARCH} == "ia64" || ${ARCH} == "sparc64"
MAKE_FLAGS+= BINARY64=1
.if defined(PACKAGE_BUILDING)
DYNAMIC_ARCH_DEFAULT= on
.else
MAKE_FLAGS+= BINARY32=1
DYNAMIC_ARCH_DEFAULT= off
.endif
.if ${ARCH} == "ia64" || ${ARCH} == "powerpc" || ${ARCH} == "sparc64"
BROKEN= Does not link: searches for x86-specific optimizations
MAXTHREADS?= 8
.if ${ARCH:M*64} == ""
GOTOFLAGS+= BINARY32=1
.else
GOTOFLAGS+= BINARY64=1
.endif
.if defined(WITH_DYNAMIC_ARCH)
GOTOFLAGS+= DYNAMIC_ARCH=1
.endif
.if defined(WITH_INTERFACE64)
MAKE_FLAGS+= INTERFACE64=1
GOTOFLAGS+= INTERFACE64=1
.endif
.if defined(WITH_GFORTRAN)
MAKE_FLAGS+= F_COMPILER=GFORTRAN
.elif defined(WITH_G77)
MAKE_FLAGS+= F_COMPILER=G77
.elif defined(WITH_G95)
MAKE_FLAGS+= F_COMPILER=G95
.elif defined(WITH_IFORT)
MAKE_FLAGS+= F_COMPILER=INTEL
.elif defined(WITH_PGF77)
MAKE_FLAGS+= F_COMPILER=PGI
.elif defined(WITH_PATHF90)
MAKE_FLAGS+= F_COMPILER=PATHF90
.elif defined(WITH_XLF)
MAKE_FLAGS+= F_COMPILER=IBM
.if defined(WITH_OPENMP)
GOTOFLAGS+= USE_OPENMP=1
.endif
pre-build::
@${ECHO_CMD} "****"
@${ECHO_CMD} "You can choose FORTRAN compiler" \
"by using the following knobs:"
@${ECHO_CMD} " WITH_GFORTRAN=yes (gfortran; default)"
@${ECHO_CMD} " WITH_G77=yes (g77)"
@${ECHO_CMD} " WITH_G95=yes (g95)"
@${ECHO_CMD} " WITH_IFORT=yes (ifort)"
@${ECHO_CMD} " WITH_PGF77=yes (pgf77)"
@${ECHO_CMD} " WITH_PATHF90=yes (pathf90)"
@${ECHO_CMD} " WITH_XLF=yes (xlf)"
@${ECHO_CMD} " WITH_INTERFACE64=yes (for using 64-bit integer interface)"
@${ECHO_CMD} "- Note that if the specified compiler does not exist" \
"on your system, build will fail."
@${ECHO_CMD} "- None is specified, gfortran will be used."
@${ECHO_CMD} "****"
.if defined(WITH_QUAD_PRECISION)
BROKEN = WITH_QUAD_PRECISION is broken; please disable this option
GOTOFLAGS+= QUAD_PRECISION=1
.endif
post-extract:
${FIND} ${WRKSRC} -type f -name '.*' -delete
cd ${DISTDIR}/${DIST_SUBDIR} ; \
${CP} ${LAPACK_SRCFILE} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC}
${MKDIR} ${WRKDIR}/lib
post-patch:
${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" ${WRKSRC}/Makefile.rule
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/Makefile.system
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/Makefile.rule
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/Makefile.tail
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/driver/level3/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/driver/others/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/exports/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/interface/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/kernel/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/kernel/Makefile.L3
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/lapack/laswp/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" ${WRKSRC}/reference/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}/reference/Makefile
${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \
-e 's+${CROSS_SUFFIX}+${LOCALBASE}/bin/+' \
${WRKSRC}/Makefile.system
.if defined(WITH_OPENMP)
${REINPLACE_CMD} -e "s+GOTO_NUM_THREADS+OMP_NUM_THREADS+g" \
${WRKSRC}/test/Makefile \
${WRKSRC}/ctest/Makefile
.endif
do-build:
${CP} ${DISTDIR}/${DIST_SUBDIR}/${LAPACK_SRCFILE} ${WRKSRC}
${CP} ${DISTDIR}/${DIST_SUBDIR}/${LARGE_FILE} ${WRKSRC}
${CP} ${DISTDIR}/${DIST_SUBDIR}/${TIMING_FILE} ${WRKSRC}
${MKDIR} ${WRKDIR}/lib
cd ${WRKSRC} && ${GMAKE} ${MAKE_FLAGS} USE_THREAD=1 DYNAMIC_ARCH=1
cd ${WRKSRC}/exports && ${GMAKE} ${MAKE_FLAGS} USE_THREAD=1 DYNAMIC_ARCH=1
${INSTALL_DATA} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2p.a
${INSTALL_DATA} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2p.so
cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=1 USE_THREAD=0 \
${GMAKE} ${MAKE_ARGS}
${CP} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2.a
${CP} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2.so.1
cd ${WRKSRC} ; ${GMAKE} ${MAKE_ARGS} clean
cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \
USE_THREAD=1 ${GMAKE} ${MAKE_ARGS}
${CP} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2p.a
${CP} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2p.so.1
.if !defined(WITH_DEBUG)
${LOCALBASE}/bin/strip -X ${WRKDIR}/lib/*.so.1
.endif
cd ${WRKSRC} && ${GMAKE} clean
cd ${WRKSRC}/exports && ${GMAKE} clean
cd ${WRKSRC} && ${GMAKE} ${MAKE_FLAGS} USE_THREAD=0 DYNAMIC_ARCH=1
cd ${WRKSRC}/exports && ${GMAKE} ${MAKE_FLAGS} USE_THREAD=0 DYNAMIC_ARCH=1
${INSTALL_DATA} ${WRKSRC}/libgoto2.a ${WRKDIR}/lib/libgoto2.a
${INSTALL_DATA} ${WRKSRC}/libgoto2.so ${WRKDIR}/lib/libgoto2.so
BENCHMARK_MAXTHREADS?= ${MAXTHREADS}
.if defined(WITH_OPENMP)
BENCHMARK_THREADS_FLAG = OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS}
.else
BENCHMARK_THREADS_FLAG = GOTO_NUM_THREADS=${BENCHMARK_MAXTHREADS}
.endif
benchmark:
cd ${WRKSRC}/ && \
${GMAKE} ${MAKE_FLAGS} hpl
cd ${WRKSRC}/benchmark && \
${GMAKE} ${MAKE_FLAGS} dlinpack.goto
benchmark: build
cd ${WRKSRC} ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \
USE_THREAD=1 ${GMAKE} ${MAKE_ARGS} hpl
cd ${WRKSRC}/benchmark ; ${SETENV} ${GOTOFLAGS} NUM_THREADS=${MAXTHREADS} \
USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${GMAKE} ${MAKE_ARGS}
do-install:
cd ${WRKDIR}/lib/ && \
${INSTALL_DATA} ${GOTOLIBS:S|$|.a|} ${PREFIX}/lib/ && \
${INSTALL_DATA} ${GOTOLIBS:S|$|.so|} ${PREFIX}/lib/
cd ${PREFIX}/lib/ && \
cd ${WRKDIR}/lib ; \
${INSTALL_DATA} ${GOTOLIBS:S|$|.a|} ${GOTOLIBS:S|$|.so.1|} \
${PREFIX}/lib/
cd ${PREFIX}/lib ; \
for i in ${GOTOLIBS:S|$|.so|}; do \
${LN} -sf $$i $$i.1;done
${LN} -sf $$i.1 $$i ; \
done
.include <bsd.port.post.mk>

View File

@@ -1,5 +1,5 @@
--- Makefile.system 2010-01-15 12:24:42.000000000 +0900
+++ Makefile.system 2010-02-01 15:16:00.000000000 +0900
--- Makefile.system.orig 2010-01-28 15:11:08.000000000 -0500
+++ Makefile.system 2011-09-05 12:30:26.000000000 -0400
@@ -93,6 +93,10 @@
EXTRALIB += -lm
endif
@@ -11,7 +11,7 @@
ifeq ($(OSNAME), AIX)
EXTRALIB += -lm
endif
@@ -604,7 +608,7 @@
@@ -608,7 +612,7 @@
GREP = grep
endif
@@ -20,7 +20,31 @@
AWK = awk
REVISION = -r$(VERSION)
@@ -657,7 +661,7 @@
@@ -631,15 +635,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)
@@ -647,7 +642,6 @@
LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
endif
-endif
LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
@@ -661,7 +655,7 @@
LIBS_P = $(TOPDIR)/$(LIBNAME_P)
export OSNAME

View File

@@ -0,0 +1,10 @@
--- cpuid_sparc.c.orig 2010-11-05 09:57:49.000000000 -0400
+++ cpuid_sparc.c 2011-09-23 13:10:18.000000000 -0400
@@ -49,6 +49,7 @@
}
void get_cpuconfig(void){
+ printf("#define SPARC\n");
printf("#define V9\n");
printf("#define DTB_ENTRIES 32\n");
}

View File

@@ -0,0 +1,20 @@
--- f_check.orig 2011-09-05 09:17:18.000000000 -0400
+++ f_check 2011-09-05 09:21:09.000000000 -0400
@@ -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/)

View File

@@ -0,0 +1,7 @@
GotoBLAS has been built with a maximum limit of MAXTHREADS=%%MAXTHREADS%%
threads, which may be further reduced (but not increased) by the number of
logical processors detected at run-time, as well as the environment variable
GOTO_NUM_THREADS (or OMP_NUM_THREADS, if the port has been build WITH_OPENMP).
To modify this limit, rebuild the port after setting MAXTHREADS to a suitable
value in the build environment.