diff --git a/tools/mklibs b/tools/mklibs index d95d58a24..d264bd0d8 100755 --- a/tools/mklibs +++ b/tools/mklibs @@ -141,6 +141,7 @@ fi DIST_DIR=`pwd`/${TAR_FILE%.tar.gz} SYS_TYPE=`uname -s` +CONFIGURE="./configure --with-babel" #=========================================================================== # Build and do a temporary install in the UPDATE subdirectory @@ -155,7 +156,7 @@ then HYPRE_INSTALL_DIR=$DIST_DIR export HYPRE_INSTALL_DIR cd src - ./configure + $CONFIGURE make install make veryclean ) @@ -165,7 +166,7 @@ then mkdir -p $HYPRE_INSTALL_DIR cd src - ./configure --enable-debug + $CONFIGURE --enable-debug make install make veryclean ) @@ -180,7 +181,7 @@ then mkdir -p $HYPRE_INSTALL_DIR cd src - ./configure --without-MPI --with-COMM_SIMPLE + $CONFIGURE --without-MPI --with-COMM_SIMPLE make install make veryclean ) @@ -190,7 +191,7 @@ then mkdir -p $HYPRE_INSTALL_DIR cd src - ./configure --without-MPI --with-COMM_SIMPLE --enable-debug + $CONFIGURE --without-MPI --with-COMM_SIMPLE --enable-debug make install make veryclean ) @@ -209,7 +210,7 @@ then mkdir -p $HYPRE_INSTALL_DIR cd src - ./configure --with-openmp + $CONFIGURE --with-openmp make install make veryclean ) @@ -219,7 +220,7 @@ then mkdir -p $HYPRE_INSTALL_DIR cd src - ./configure --with-openmp --enable-debug + $CONFIGURE --with-openmp --enable-debug make install make veryclean ) diff --git a/tools/mklibs.aix b/tools/mklibs.aix new file mode 100755 index 000000000..586466d49 --- /dev/null +++ b/tools/mklibs.aix @@ -0,0 +1,419 @@ +#!/bin/ksh +#BHEADER*********************************************************************** +# (c) 2000 The Regents of the University of California +# +# See the file COPYRIGHT_and_DISCLAIMER for a complete copyright +# notice, contact person, and disclaimer. +# +# $Revision$ +#EHEADER*********************************************************************** +# +# MaKe hypre LIBrarieS +# This scripte will build and install the hypre distribution +# on an AIX system that supports 32 bit and 64 bit libraries. +# + +help () +{ + printf "$0: [-help] | [-n] {-g|-b|-a} HypreArchiveFile [install]\n" + printf " -n use preextracted archive, skip HypreArchiveFile extraction\n" + printf " -g general release\n" + printf " -b beta release\n" + printf " -a alpha release\n" + printf " HypreArchiveFile, the name of the tar file produced by\n" + printf " mkdist (e.g., hypre-1.3.0.tar.gz) assumed to exist in\n" + printf " the current working directory.\n" + printf " install will replace the symbolic links.\n" +} + +usage () +{ + printf "usage: $0 [-n] {-g|-b|-a} HypreArchiveFile [install]\n" +} + +build_general () +{ + HYPRE_INSTALL_DIR=$DIST_DIR/.. + for i in bin debug docs include lib src + do + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i ../$i + done + for i in serial threads + do + if [ -d $DIST_DIR/$i ] + then + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i $HYPRE_INSTALL_DIR/$i + fi + done +} + +build_beta () +{ + HYPRE_INSTALL_DIR=$DIST_DIR/../beta + for i in bin debug docs include lib src + do + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i $HYPRE_INSTALL_DIR/$i + done + for i in serial threads + do + if [ -d $DIST_DIR/$i ] + then + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i $HYPRE_INSTALL_DIR/$i + fi + done +} + +build_alpha () +{ + if [ "$SYS_TYPE" = "SunOS" ] + then + HYPRE_INSTALL_DIR=$DIST_DIR/../alpha + for i in bin debug docs include lib src + do + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i $HYPRE_INSTALL_DIR/$i + done + for i in serial threads + do + if [ -d $DIST_DIR/$i ] + then + rm -fR $HYPRE_INSTALL_DIR/$i + ln -s $DIST_DIR/$i $HYPRE_INSTALL_DIR/$i + fi + done + fi +} + +# Define install permissions: +# - give everybody read/execute permission +# - give user/group write permission +#============================================================================= + +HYPRE_INSTALL_PERMISSIONS="a+rX,ug+w" + +#============================================================================= +# Set install directories: +#============================================================================= + +HYPRE_CASC_INSTALL_DIR="/home/casc/software/hypre" +HYPRE_DEC_INSTALL_DIR="/usr/apps/hypre" +HYPRE_BLUE_INSTALL_DIR="/usr/apps/hypre" +HYPRE_RED_INSTALL_DIR="/usr/apps/hypre" + +#============================================================================= +# Parse arguments +#============================================================================= + +integer SKIPEXT=0 +case $1 in + -n) + SKIPEXT=1 + shift + ;; + -h|-help) + help + exit;; +esac + +if [ $# -gt 1 ] +then + case "$1" + in + -g|-b|-a) OPTION=$1 + TAR_FILE=$2 ;; + *) echo "Error: Invalid argument = $1, expecting -g, -b or -a" + exit ;; + esac +else + usage + exit +fi + +#=========================================================================== +# Update the source +#=========================================================================== + +if (( SKIPEXT == 0 )) +then +if [ -f $TAR_FILE ] +then + gzip -cd $TAR_FILE | tar xof - +else + echo "Error: HypreArchiveFile does not exist" + exit +fi +fi + +DIST_DIR=`pwd`/${TAR_FILE%.tar.gz} +SYS_TYPE=`uname -s` +CONFIGURE="./configure --with-babel" + +#=========================================================================== +# Build and do a temporary install in the UPDATE subdirectory +#=========================================================================== + +cd $DIST_DIR + +# MPI version. (Do this only once) +if [ ! -d lib ] +then + ( + HYPRE_INSTALL_DIR=$DIST_DIR + export HYPRE_INSTALL_DIR + cd src + $CONFIGURE + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-F77FLAGS="-q64 -O3 -qstrict"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) + ( + HYPRE_INSTALL_DIR=$DIST_DIR/debug + export HYPRE_INSTALL_DIR + mkdir -p $HYPRE_INSTALL_DIR + + cd src + $CONFIGURE --enable-debug + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-F77FLAGS="-q64 -g"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) +fi + +# serial version. (Do this only once) +if [ ! -d serial/lib ] +then + ( + HYPRE_INSTALL_DIR=$DIST_DIR/serial + export HYPRE_INSTALL_DIR + mkdir -p $HYPRE_INSTALL_DIR + + cd src + $CONFIGURE --without-MPI --with-COMM_SIMPLE + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CC=xlc --with-CXX=xlC --with-F77=xlf\ + --with-CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-F77FLAGS="-q64 -O3 -qstrict"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) + ( + HYPRE_INSTALL_DIR=$DIST_DIR/serial/debug + export HYPRE_INSTALL_DIR + mkdir -p $HYPRE_INSTALL_DIR + + cd src + $CONFIGURE --without-MPI --with-COMM_SIMPLE --enable-debug + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CC=xlc --with-CXX=xlC --with-F77=xlf\ + --with-CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-F77FLAGS="-q64 -g"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) +fi + +# MPI + threads version. (Do this only once) +if [ ! -d threads/lib ] +then + if [[ "$SYS_TYPE" != "SunOS" && + "$SYS_TYPE" != "Linux" && + "$SYS_TYPE" != "IRIX64" ]] + then + ( + HYPRE_INSTALL_DIR=$DIST_DIR/threads + export HYPRE_INSTALL_DIR + mkdir -p $HYPRE_INSTALL_DIR + + cd src + $CONFIGURE --with-openmp + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CC=mpguidec --with-CXX=mpguidec++ --with-F77=mpguidef77\ + --with-CFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-CXXFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\ + --with-F77FLAGS="-q64 -qsmp=omp -O3 -qstrict"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) + ( + HYPRE_INSTALL_DIR=$DIST_DIR/threads/debug + export HYPRE_INSTALL_DIR + mkdir -p $HYPRE_INSTALL_DIR + + cd src + $CONFIGURE --with-openmp --enable-debug + AR="ar -X32" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_32 + done + cd $DIST_DIR/src + $CONFIGURE \ + --with-CC=mpguidec --with-CXX=mpguidec++ --with-F77=mpguidef77\ + --with-CFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-CXXFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\ + --with-F77FLAGS="-q64 -qsmp=omp -g"\ + --with-LDFLAGS="-q64" + AR="ar -X64" make -i install + make -i veryclean + cd $HYPRE_INSTALL_DIR/lib + for i in *.a;do + mv $i ${i}_64 + done + for i in *.a_32; do + mkdir 32 64 + cd 32 + ar -X32 -x ../${i} + cd ../64 + ar -X64 -x ../${i%%_32}_64 + cd .. + ar -X32_64 -q ${i%%_32} 32/*.o 64/*.o + rm -Rf 32 64 + done + rm -f *.a_32 *.a_64 + ) + fi +fi + +if [ "$3" = "install" ] +then + case "$OPTION" + in + -g) build_general + build_beta + build_alpha ;; + -b) build_beta + build_alpha ;; + -a) build_alpha ;; + esac +fi + +chmod -R $HYPRE_INSTALL_PERMISSIONS $DIST_DIR +chgrp -fR hypre $DIST_DIR