hypre/tools/mklibs.aix
2008-07-18 01:34:48 +00:00

557 lines
16 KiB
Bash
Executable File

#!/bin/sh
#BHEADER**********************************************************************
# Copyright (c) 2008, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
# This file is part of HYPRE. See file COPYRIGHT for details.
#
# HYPRE is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License (as published by the Free
# Software Foundation) version 2.1 dated February 1999.
#
# $Revision$
#EHEADER**********************************************************************
#
# MaKe hypre LIBrarieS
# This script 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\n"
printf " do NOT extract HypreArchiveFile from the repository\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) which is assumed to\n"
printf " exist in 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 debug docs include lib src
do
rm -fR $HYPRE_INSTALL_DIR/$i
ln -s $DIST_DIR/$i ../$i
done
for i in serial shared 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 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 shared 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
}
# Alpha releases are ONLY done on the CASC cluster
build_alpha ()
{
if [ "$PLATFORM_NAME" = "tux149" ]
then
HYPRE_INSTALL_DIR=$DIST_DIR/../alpha
for i in 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 shared 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"
#=============================================================================
# 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" != "1" ]
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}
SYSTEMTYPE=`uname -s`
PLATFORM_NAME=`uname -n`
MAKE="make -i"
case $PLATFORM_NAME in
up*) CONFIGURE="nopoe configure"
;;
*) CONFIGURE="./nopoe ./configure"
. ../env.blue
;;
esac
#===========================================================================
# Build in the DIST_DIR 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
rm -f config.log config.status
$CONFIGURE\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q32 -O3 -qstrict"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE \
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q64 -O3 -qstrict"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --enable-debug\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q32 -g"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --enable-debug\
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q64 -g"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --without-MPI --with-COMM_SIMPLE\
CC=xlc CXX=xlC F77=xlf\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q32 -O3 -qstrict"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --without-MPI --with-COMM_SIMPLE\
CC=xlc CXX=xlC F77=xlf\
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q64 -O3 -qstrict"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --without-MPI --with-COMM_SIMPLE --enable-debug\
CC=xlc CXX=xlC F77=xlf\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q32 -g"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --without-MPI --with-COMM_SIMPLE --enable-debug\
CC=xlc CXX=xlC F77=xlf\
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q64 -g"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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 [[ "$SYSTEMTYPE" != "SunOS" &&
"$SYSTEMTYPE" != "Linux" &&
"$SYSTEMTYPE" != "IRIX64" ]]
then
(
HYPRE_INSTALL_DIR=$DIST_DIR/threads
export HYPRE_INSTALL_DIR
mkdir -p $HYPRE_INSTALL_DIR
cd src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --with-openmp\
CC=mpguidec CXX=mpguidec++ F77=mpguidef77\
CFLAGS="-q32 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q32 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q32 -qsmp=omp -O3 -qstrict"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --with-openmp\
CC=mpguidec CXX=mpguidec++ F77=mpguidef77\
CFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q64 -qsmp=omp -O3 -qstrict"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --with-openmp --enable-debug\
CC=mpguidec CXX=mpguidec++ F77=mpguidef77\
CFLAGS="-q32 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q32 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q32 -qsmp=omp -g"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --with-openmp --enable-debug\
CC=mpguidec CXX=mpguidec++ F77=mpguidef77\
CFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q64 -qsmp=omp -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q64 -qsmp=omp -g"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
cd $DIST_DIR/src
$MAKE distclean
)
fi
fi
# shared library version. (Do this only once)
if [ ! -d shared/lib ]
then
(
HYPRE_INSTALL_DIR=$DIST_DIR/shared
export HYPRE_INSTALL_DIR
cd src
rm -f config.log config.status
$CONFIGURE --enable-shared\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q32 -O3 -qstrict"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --enable-shared\
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -O3 -qstrict"\
F77FLAGS="-q64 -O3 -qstrict"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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/shared/debug
export HYPRE_INSTALL_DIR
mkdir -p $HYPRE_INSTALL_DIR
cd src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --enable-shared --enable-debug\
CFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q32 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q32 -g"\
LDFLAGS="-q32" AR="ar -X32 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
cd $HYPRE_INSTALL_DIR/lib
for i in *.a;do
mv $i ${i}_32
done
cd $DIST_DIR/src
$MAKE distclean
rm -f config.log config.status
$CONFIGURE --enable-shared --enable-debug\
CFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
CXXFLAGS="-q64 -qmaxmem=8192 -DHYPRE_COMM_SIMPLE -g"\
F77FLAGS="-q64 -g"\
LDFLAGS="-q64" AR="ar -X64 -rcu" --prefix=$HYPRE_INSTALL_DIR
$MAKE install
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
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 hyprelib $DIST_DIR