freebsd-ports/math/atlas-devel/Makefile
2007-03-07 23:26:16 +00:00

218 lines
7.1 KiB
Makefile

# New ports collection makefile for: atlas-devel
# Date created: 14 September 2003
# Whom: Nakata Maho <maho@FreeBSD.org>
#
# $FreeBSD$
#
# NOTE: This port purposely ignores the CC and CFLAGS settings.
# Program and compiler flags are finetuned to gcc.
PORTNAME= atlas
PORTVERSION= 3.7.29
CATEGORIES= math
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= math-atlas
PKGNAMESUFFIX= -devel
DISTNAME= ${PORTNAME}${PORTVERSION}
MAINTAINER= maho@FreeBSD.org
COMMENT= Development version of math/atlas
NO_PACKAGE= Optimizes for the local machine, so a package is not generally useful. Set FORCE_PACKAGE to override
USE_BZIP2= yes
USE_GMAKE= yes
WRKSRC= ${WRKDIR}/ATLAS
USE_LDCONFIG= yes
.include <bsd.port.pre.mk>
NOT_FOR_ARCHS= alpha
#to compile the ATLAS kernel we use gcc3. See ATLAS/INSTALL.txt for details.
WANT_FORTRAN= yes
BUILD_DEPENDS+= gfortran42:${PORTSDIR}/lang/gcc42
FC= gfortran42
F77= gfortran42
.if ${OSVERSION} > 700000
BUILD_DEPENDS+= gcc34:${PORTSDIR}/lang/gcc34
CCOMPILER= gcc34
.else
CCOMPILER= ${CC}
.endif
LIB_DEPENDS+= blas.2:${PORTSDIR}/math/blas
LIB_DEPENDS+= lapack.4:${PORTSDIR}/math/lapack
LIB_DEPENDS+= f2c:${PORTSDIR}/lang/f2c
.if ${ARCH} == "sparc64"
PICFLAG?= -fPIC
.else
PICFLAG?= -fpic
.endif
# only affects for lapack sub project
.if defined(WITH_OPTIMIZED_FLAGS)
.if defined(CPUTYPE)
FFLAGS+= -mtune=${CPUTYPE} -pipe -O2 -ffast-math
.else
FFLAGS+= -pipe -O2 -ffast-math
.endif
.endif
.if defined(WITH_STATICLIB)
PLIST_SUB+= WITH_STATICLIB=""
.else
PLIST_SUB+= WITH_STATICLIB="@comment "
.endif
post-extract:
.if !defined(WITH_STATICLIB)
@${ECHO_MSG} "You can build static libraries with"
@${ECHO_MSG} "make -DWITH_STATICLIB"
@${ECHO_MSG}
.endif
pre-configure:
@${REINPLACE_CMD} -e "s|%%CC%%|${CCOMPILER}|g" \
-e "s|%%FC%%|${FC}|g" ${WRKSRC}/CONFIG/src/atlcomp.txt
@${REINPLACE_CMD} -e "s|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|g" \
-e "s|%%PTHREAD_LIBS%%|${PTHREAD_CFLAGS}|g" \
-e "s|%%LOCALBASE%%|${LOCALBASE}|g" \
${WRKSRC}/CONFIG/src/SpewMakeInc.c
do-configure:
#non threaded
#dummy f77lib, it is not used.
${MKDIR} ${WRKSRC}/NON_THREADED ; cd ${WRKSRC}/NON_THREADED ; \
../configure -t 0 -Si cputhrchk 0 -Ss f77lib " "
${MKDIR} ${WRKSRC}/NON_THREADED_PIC ; cd ${WRKSRC}/NON_THREADED_PIC ; \
../configure -t 0 -Fag al '${PICFLAG} -DPIC' -Si cputhrchk 0 -Ss f77lib " "
#threaded
#dummy f77lib, it is not used.
cd ${WRKSRC}; ${PATCH} < ${FILESDIR}/thread-patch
${MKDIR} ${WRKSRC}/THREADED ; cd ${WRKSRC}/THREADED ; \
../configure -Fag al '${PTHREAD_CFLAGS} ' -Si cputhrchk 0 -Ss f77lib " "
${MKDIR} ${WRKSRC}/THREADED_PIC ; cd ${WRKSRC}/THREADED_PIC ; \
../configure -Fag al '${PTHREAD_CFLAGS} ${PICFLAG} -DPIC' -Si cputhrchk 0 -Ss f77lib " "
do-build:
# make lapack
.if ! exists(${WRKDIR}/lapack/Makefile)
@${ECHO_MSG} "===> Extracting lapack sub project"
@${MKDIR} ${WRKDIR}/lapack
@${CP} -r ${PORTSDIR}/math/lapack/files ${WRKDIR}/lapack
@${CP} -r ${PORTSDIR}/math/lapack/scripts ${WRKDIR}/lapack
@${CP} ${PORTSDIR}/math/lapack/Makefile ${WRKDIR}/lapack
@${CP} ${PORTSDIR}/math/lapack/distinfo ${WRKDIR}/lapack
@${CP} ${PORTSDIR}/math/lapack/pkg-descr ${WRKDIR}/lapack
@cd ${WRKDIR}/lapack ; ${MAKE} "FFLAGS=${FFLAGS}" FC="${FC}" build WRKDIRPREFIX=""
.endif
.if defined(WITH_STATICLIB)
(cd ${WRKSRC}/NON_THREADED ; ${MAKE})
(cd ${WRKSRC}/THREADED ; ${MAKE})
.endif
(cd ${WRKSRC}/NON_THREADED_PIC ; ${MAKE})
(cd ${WRKSRC}/THREADED_PIC ; ${MAKE})
@${MAKE} test
ATLAS_LIBS1=libalapack libatlas libcblas libf77blas #libtstatlas
ATLAS_LIBS2=libptcblas libptf77blas
post-build:
.if defined(WITH_STATICLIB)
# make atlas enhanced lapack (static ver)
(cd ${WRKSRC}; ${MKDIR} tmp1 ; \
${CP} ${WRKDIR}/lapack/work/LAPACK/SRC/liblapack.a tmp1 ;\
cd tmp1 ;\
ar x liblapack.a ;\
ar x ../NON_THREADED/lib/liblapack.a ;\
ar r ../NON_THREADED/lib/libalapack.a *.o ;\
ranlib ../NON_THREADED/lib/libalapack.a )
# make atlas enhanced lapack (static and thread safe ver)
(cd ${WRKSRC}; ${MKDIR} tmp2 ; \
${CP} ${WRKDIR}/lapack/work/LAPACK/SRC/liblapack.a tmp2 ;\
cd tmp2 ;\
ar x liblapack.a ;\
ar x ../THREADED/lib/liblapack.a ;\
ar r ../THREADED/lib/libalapack.a *.o ;\
ranlib ../THREADED/lib/libalapack.a )
.endif
# make atlas enhanced lapack (shared ver)
( cd ${WRKSRC}; ${MKDIR} tmp3 ;\
${TAR} --exclude "*.f" --exclude "*.po" --exclude "*.o" -cf - -C ${WRKDIR}/lapack/work/LAPACK/SRC . | ${TAR} xf - -C tmp3 ;\
for object in `${FIND} tmp3 -name "*.So"` ; do \
n=`${ECHO_CMD} $${object}|${SED} -e 's#.So##'` ; \
${MV} $$n.So $$n.o ; \
done ; \
cd tmp3 ;\
ar x ../NON_THREADED_PIC/lib/liblapack.a ;\
ar r ../NON_THREADED_PIC/lib/libalapack.a *.o ;\
ranlib ../NON_THREADED_PIC/lib/libalapack.a )
# make atlas enhanced lapack (shared and thread safe ver)
( cd ${WRKSRC}; ${MKDIR} tmp4 ;\
${TAR} --exclude "*.f" --exclude "*.po" --exclude "*.o" -cf - -C ${WRKDIR}/lapack/work/LAPACK/SRC . | ${TAR} xf - -C tmp4 ;\
for object in `${FIND} tmp4 -name "*.So"` ; do \
n=`${ECHO_CMD} $${object}|${SED} -e 's#.So##'` ; \
${MV} $$n.So $$n.o ; \
done ; \
cd tmp4 ;\
ar x ../THREADED_PIC/lib/liblapack.a ;\
ar r ../THREADED_PIC/lib/libalapack.a *.o ;\
ranlib ../THREADED_PIC/lib/libalapack.a )
# make atlas shared library
.for i in ${ATLAS_LIBS1}
( cd ${WRKSRC}/NON_THREADED_PIC/lib ; \
ld -Bshareable -o ${i}.so.2 -x -soname ${i}.so.2 --whole-archive ${i}.a )
.endfor
# make atlas shared (thread safe) library
.for i in ${ATLAS_LIBS1}
( cd ${WRKSRC}/THREADED_PIC/lib ; \
ld -Bshareable -o ${i}_r.so.2 -x -soname ${i}_r.so.2 --whole-archive ${i}.a )
.endfor
.for i in ${ATLAS_LIBS2}
( cd ${WRKSRC}/THREADED_PIC/lib ; \
ld -Bshareable -o ${i}.so.2 -x -soname ${i}.so.2 --whole-archive ${i}.a )
.endfor
do-install:
.for i in ${ATLAS_LIBS1}
.if defined(WITH_STATICLIB)
@${INSTALL_DATA} ${WRKSRC}/NON_THREADED/lib/${i}.a ${PREFIX}/lib
.endif
@${INSTALL_DATA} ${WRKSRC}/NON_THREADED_PIC/lib/${i}.so.2 ${PREFIX}/lib
@${LN} -sf ${i}.so.2 ${PREFIX}/lib/${i}.so
.endfor
.for i in ${ATLAS_LIBS1}
.if defined(WITH_STATICLIB)
@${INSTALL_DATA} ${WRKSRC}/THREADED/lib/${i}.a ${PREFIX}/lib/${i}_r.a
.endif
@${INSTALL_DATA} ${WRKSRC}/THREADED_PIC/lib/${i}_r.so.2 ${PREFIX}/lib/${i}_r.so.2
@${LN} -sf ${i}_r.so.2 ${PREFIX}/lib/${i}_r.so
.endfor
.for i in ${ATLAS_LIBS2}
.if defined(WITH_STATICLIB)
@${INSTALL_DATA} ${WRKSRC}/THREADED/lib/${i}.a ${PREFIX}/lib
.endif
@${INSTALL_DATA} ${WRKSRC}/THREADED_PIC/lib/${i}.so.2 ${PREFIX}/lib
@${LN} -sf ${i}.so.2 ${PREFIX}/lib/${i}.so
.endfor
@${INSTALL_DATA} ${WRKSRC}/include/cblas.h ${PREFIX}/include
@${INSTALL_DATA} ${WRKSRC}/include/clapack.h ${PREFIX}/include
@${INSTALL_DATA} ${FILESDIR}/blas.h ${PREFIX}/include
@${INSTALL_DATA} ${FILESDIR}/lapack.h ${PREFIX}/include
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/doc/* ${DOCSDIR}
.endif
${MKDIR} ${EXAMPLESDIR}
@for i in ${ALLTESTS} ; do \
cd ${WRKDIR}/ATLAS/NON_THREADED_PIC/bin ; ${INSTALL_PROGRAM} $${i} ${EXAMPLESDIR} ; \
done
@for i in ${ALLTESTS_PT} ; do \
cd ${WRKDIR}/ATLAS/THREADED_PIC/bin ; ${INSTALL_PROGRAM} $${i} ${EXAMPLESDIR} ; \
done
.include <${FILESDIR}/Makefile.test>
.include <bsd.port.post.mk>