build both threaded/non-threaded libraries

which introduced some kludge...

Reported by:		kris	(broken on bento for lapack++)
Suggestion from:	"Pedro F. Giffuni" <giffunip@yahoo.com>
This commit is contained in:
Maho Nakata 2003-07-02 21:39:36 +00:00
parent 2e8cdd9861
commit 28dd30949a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=84079
5 changed files with 120 additions and 36 deletions

View file

@ -10,6 +10,7 @@
PORTNAME= atlas
PORTVERSION= 3.5.5
PORTREVISION= 1
CATEGORIES= math
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= math-atlas
@ -34,44 +35,72 @@ post-patch:
${WRKSRC}/config.c
@${REINPLACE_CMD} -e 's+%%PTHREAD_LIBS%%+ ${PTHREAD_LIBS}+' \
${WRKSRC}/config.c
.if !defined(USE_THREADS)
@${ECHO_MSG} "make USE_THREADS=yes for force to make threaded version"
.else
@(cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/thread-patch)
.endif
do-configure:
.if defined(BATCH) || defined(PACKAGE_BUILDING)
@(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} config < ${FILESDIR}/answer)
.else
@(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} config)
.endif
.if (${MACHINE_ARCH} == "alpha")
@(cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/alpha-patch)
.endif
do-build:
do-configure:
@(cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/non-thread-patch)
@(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} config < ${FILESDIR}/answer)
@(cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/thread-patch)
@(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} config < ${FILESDIR}/answer)
NON_THREADED_ATLAS=`cat ${WRKSRC}/ARCHNAME-NON-THREADED`
THREADED_ATLAS=`cat ${WRKSRC}/ARCHNAME-THREADED`
ATLAS_LIBS1=libatlas libcblas libf77blas libtstatlas libalapack
ATLAS_LIBS2=libptcblas libptf77blas
post-configure:
.if (${MACHINE_ARCH} == "alpha") || defined(USE_GCC)
@${REINPLACE_CMD} -e 's|/usr/bin/gcc|${CC}|g;' ${WRKSRC}/Make.`cat ${WRKSRC}/ARCHNAME`
@${REINPLACE_CMD} -e 's|/usr/bin/gcc|${CC}|g;' ${WRKSRC}/Make.${NON_THREADED_ATLAS}
@${REINPLACE_CMD} -e 's|/usr/bin/gcc|${CC}|g;' ${WRKSRC}/Make.${THREADED_ATLAS}
.endif
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} install arch=`cat ${WRKSRC}/ARCHNAME`)
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} sanity_test arch=`cat ${WRKSRC}/ARCHNAME`)
do-build:
# non thread version
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} install arch=${NON_THREADED_ATLAS})
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} sanity_test arch=${NON_THREADED_ATLAS})
(cd ${WRKSRC}; ${MKDIR} tmp ; \
${CP} ${LOCALBASE}/lib/liblapack.a tmp ;\
cd tmp ;\
ar x liblapack.a ;\
ar x ../lib/`cat ${WRKSRC}/ARCHNAME`/liblapack.a ;\
ar r ../lib/`cat ${WRKSRC}/ARCHNAME`/libalapack.a *.o ;\
ranlib ../lib/`cat ${WRKSRC}/ARCHNAME`/libalapack.a )
.for i in libatlas libcblas libf77blas libtstatlas libalapack
( cd ${WRKSRC}/lib/`cat ${WRKSRC}/ARCHNAME`/ ; \
ar x ../lib/${NON_THREADED_ATLAS}/liblapack.a ;\
ar r ../lib/${NON_THREADED_ATLAS}/libalapack.a *.o ;\
ranlib ../lib/${NON_THREADED_ATLAS}/libalapack.a )
.for i in ${ATLAS_LIBS1}
( cd ${WRKSRC}/lib/${NON_THREADED_ATLAS}/ ; \
ld -Bshareable -o ${i}.so.1 -x -soname ${i}.so.1 --whole-archive ${i}.a )
.endfor
# thread version
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} install arch=${THREADED_ATLAS})
(cd ${WRKSRC}; ${MAKE_ENV} ${MAKE} sanity_test arch=${THREADED_ATLAS})
(cd ${WRKSRC}; ${MKDIR} tmp2 ; \
${CP} ${LOCALBASE}/lib/liblapack.a tmp2 ;\
cd tmp2 ;\
ar x liblapack.a ;\
ar x ../lib/${THREADED_ATLAS}/liblapack.a ;\
ar r ../lib/${THREADED_ATLAS}/libalapack.a *.o ;\
ranlib ../lib/${THREADED_ATLAS}/libalapack.a )
.for i in ${ATLAS_LIBS1} ${ATLAS_LIBS2}
( cd ${WRKSRC}/lib/${THREADED_ATLAS}/ ; \
ld -Bshareable -o ${i}.so.1 -x -soname ${i}.so.1 --whole-archive ${i}.a )
.endfor
do-install:
.for i in libatlas libcblas libf77blas libtstatlas libalapack
@${INSTALL_DATA} ${WRKSRC}/lib/`cat ${WRKSRC}/ARCHNAME`/${i}.a ${PREFIX}/lib
@${INSTALL_DATA} ${WRKSRC}/lib/`cat ${WRKSRC}/ARCHNAME`/${i}.so.1 ${PREFIX}/lib
.for i in ${ATLAS_LIBS1}
@${INSTALL_DATA} ${WRKSRC}/lib/${NON_THREADED_ATLAS}/${i}.a ${PREFIX}/lib
@${INSTALL_DATA} ${WRKSRC}/lib/${NON_THREADED_ATLAS}/${i}.so.1 ${PREFIX}/lib
@${LN} -sf ${i}.so.1 ${PREFIX}/lib/${i}.so
.endfor
.for i in ${ATLAS_LIBS1}
@${INSTALL_DATA} ${WRKSRC}/lib/${THREADED_ATLAS}/${i}.a ${PREFIX}/lib/${i}thr.a
@${INSTALL_DATA} ${WRKSRC}/lib/${THREADED_ATLAS}/${i}.so.1 ${PREFIX}/lib/${i}thr.so.1
@${LN} -sf ${i}thr.so.1 ${PREFIX}/lib/${i}thr.so
.endfor
.for i in ${ATLAS_LIBS2}
@${INSTALL_DATA} ${WRKSRC}/lib/${THREADED_ATLAS}/${i}.a ${PREFIX}/lib
@${INSTALL_DATA} ${WRKSRC}/lib/${THREADED_ATLAS}/${i}.so.1 ${PREFIX}/lib
@${LN} -sf ${i}.so.1 ${PREFIX}/lib/${i}.so
.endfor
@${INSTALL_DATA} ${WRKSRC}/include/cblas.h ${PREFIX}/include

View file

@ -0,0 +1,18 @@
--- config.c.orig Tue Jul 1 12:32:49 2003
+++ config.c Tue Jul 1 12:35:09 2003
@@ -2737,6 +2737,7 @@
Use3DNow = IsYes('n', " ", "Use 3DNow! for computation?");
}
ncpu = ProbeNCPU(OS, mach, targ, TOPdir);
+ ncpu = 1; // force non-threading
if (ncpu != 1) /* user may want to thread */
{
DisplayFile("CONFIG/pthread.txt", stdout, NLINES);
@@ -3154,6 +3155,7 @@
}
if (USEWINF77) strcpy(F77, "$(BINdir)/winf77.exe");
+ fpout = fopen("ARCHNAME-NON-THREADED", "w");
fprintf(fpout, "%s", ARCH);
fclose(fpout);
ATL_mprintf(2, fplog, stdout,"\nCreating make include file Make.%s\n", ARCH);

View file

@ -1,5 +1,5 @@
--- config.c.orig Mon Jun 23 00:58:35 2003
+++ config.c Sat Jun 28 16:44:25 2003
--- config.c.orig Mon Jun 23 07:58:35 2003
+++ config.c Tue Jul 1 12:32:49 2003
@@ -708,7 +708,7 @@
else if (mach == IA64Itan || MachIsUS(mach) ||
mach == Dec21164 || mach == Dec21264)
@ -66,11 +66,10 @@
}
break;
default:;
@@ -3136,6 +3154,9 @@
@@ -3136,6 +3154,8 @@
}
if (USEWINF77) strcpy(F77, "$(BINdir)/winf77.exe");
+ fpout = fopen("ARCHNAME", "w");
+ fprintf(fpout, "%s", ARCH);
+ fclose(fpout);
ATL_mprintf(2, fplog, stdout,"\nCreating make include file Make.%s\n", ARCH);

View file

@ -1,11 +1,28 @@
--- config.c~ Wed Jun 11 11:25:09 2003
+++ config.c Wed Jun 11 11:35:08 2003
--- config.c.orig Tue Jul 1 12:35:09 2003
+++ config.c Tue Jul 1 12:35:44 2003
@@ -79,7 +79,7 @@
char *usermmnam[2] = {"", "GOTO"};
enum USERGEMM {UG_None=0, UG_GOTO};
-int XCOMP=0, THREADS=0, USEWINF77=0, NLINES=0, ISWIN=0;
+int XCOMP=0, THREADS=1, USEWINF77=0, NLINES=0, ISWIN=0; //force threading
+int XCOMP=0, THREADS=1, USEWINF77=0, NLINES=0, ISWIN=0; // force threading
char TARGNAM[512];
enum MACHTYPE mach=MACHOther;
@@ -2737,7 +2737,6 @@
Use3DNow = IsYes('n', " ", "Use 3DNow! for computation?");
}
ncpu = ProbeNCPU(OS, mach, targ, TOPdir);
- ncpu = 1; // force non-threading
if (ncpu != 1) /* user may want to thread */
{
DisplayFile("CONFIG/pthread.txt", stdout, NLINES);
@@ -3155,7 +3154,7 @@
}
if (USEWINF77) strcpy(F77, "$(BINdir)/winf77.exe");
- fpout = fopen("ARCHNAME-NON-THREADED", "w");
+ fpout = fopen("ARCHNAME-THREADED", "w");
fprintf(fpout, "%s", ARCH);
fclose(fpout);
ATL_mprintf(2, fplog, stdout,"\nCreating make include file Make.%s\n", ARCH);

View file

@ -3,20 +3,41 @@ include/clapack.h
include/blas.h
include/lapack.h
lib/libalapack.a
lib/libalapack.so
lib/libalapack.so.1
lib/libalapack.so
lib/libalapackthr.a
lib/libalapackthr.so.1
lib/libalapackthr.so
lib/libatlas.a
lib/libatlas.so
lib/libatlas.so.1
lib/libatlas.so
lib/libatlasthr.a
lib/libatlasthr.so.1
lib/libatlasthr.so
lib/libcblas.a
lib/libcblas.so
lib/libcblas.so.1
lib/libcblas.so
lib/libcblasthr.a
lib/libcblasthr.so.1
lib/libcblasthr.so
lib/libf77blas.a
lib/libf77blas.so
lib/libf77blas.so.1
lib/libf77blas.so
lib/libf77blasthr.a
lib/libf77blasthr.so.1
lib/libf77blasthr.so
lib/libptcblas.a
lib/libptcblas.so.1
lib/libptcblas.so
lib/libptf77blas.a
lib/libptf77blas.so.1
lib/libptf77blas.so
lib/libtstatlas.a
lib/libtstatlas.so
lib/libtstatlas.so.1
lib/libtstatlas.so
lib/libtstatlasthr.a
lib/libtstatlasthr.so.1
lib/libtstatlasthr.so
%%PORTDOCS%%share/doc/atlas/AtlasCredits.txt
%%PORTDOCS%%share/doc/atlas/ChangeLog
%%PORTDOCS%%share/doc/atlas/DirStruct.txt