#!/bin/sh
#
# Defaults
#
INPUT_FILE=Makefile_start
OUTPUT_FILE=Makefile
LIBTYPE=static
INSTALLDIR=/usr/local/bin
LIBINSTALLDIR=/usr/local/lib
#
# Process command line arguments
#
while [ $# -gt 0 ] ; do
if [ "$1" = "--install-dir" ] ; then
if [ $# -lt 2 ] ; then
echo "--install-dir requires a directory"
exit
else
shift
INSTALLDIR="$1"
shift
fi
elif [ "$1" = "--install-lib" ] ; then
if [ $# -lt 2 ] ; then
echo "--install-lib requires a directory"
exit
else
shift
LIBINSTALLDIR="$1"
shift
fi
elif [ "$1" = "--dynamic" ] ; then
LIBTYPE="dynamic"
shift
elif [ "$1" = "--static" ] ; then
LIBTYPE="static"
shift
else
echo "Unidentified argument $1"
exit
fi
done
#
# Use the correct makefiles for dynamic/static option
#
if [ "$LIBTYPE" = "dynamic" ] ; then
cp lib/Makefile.dynamic lib/Makefile
cp bin/Makefile.dynamic bin/Makefile
cp test/Makefile.dynamic test/Makefile
else
cp lib/Makefile.static lib/Makefile
cp bin/Makefile.static bin/Makefile
cp test/Makefile.static test/Makefile
fi
#
# Determine architecture and architecture-dependent values
#
type="Unknown"
universal_binary="FALSE"
UNAME=$(uname -a)
if [ $( echo $UNAME | grep Linux | wc | awk '{print $1;}' ) -eq 1 ] ; then
if [ $( echo $UNAME | grep 'i[3456]86' | wc | awk '{print $1};') -eq 1 ] ; then
type="Linux_x86"
elif [ $( echo $UNAME | grep 'x86_64' | wc | awk '{print $1};') -eq 1 ] ; then
type="Linux_x86_64"
elif [ $( echo $UNAME | grep 'ppc64le' | wc | awk '{print $1};') -eq 1 ] ; then
type="Linux_ppc64le"
else
type="Linux_Unknown"
fi
fi
if [ $( echo $UNAME | grep Darwin | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="MacOSX_Unknown"
if [ $( echo $UNAME | grep -E 'powerpc|Power Macintosh' | wc | awk '{print $1};') -eq 1 ] ; then
type="MacOSX_ppc"
fi
if [ $( echo $UNAME | grep 'i386' | wc | awk '{print $1}') -eq 1 ] ; then
type="MacOSX_i386"
fi
if [ $( echo $UNAME | grep 'x86_64' | wc | awk '{print $1}') -eq 1 ] ; then
type="MacOSX_x86_64"
fi
fi
if [ $( echo $UNAME | grep SunOS | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="SunOS5"
fi
if [ $( echo $UNAME | grep IRIX | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="IRIX"
fi
if [ $( echo $UNAME | grep NetBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="NetBSD"
fi
if [ $( echo $UNAME | grep FreeBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="FreeBSD"
fi
if [ $( echo $UNAME | grep OpenBSD | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="OpenBSD"
fi
if [ $( echo $UNAME | grep Cygwin | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="Cygwin"
fi
if [ $( echo $UNAME | grep Msys | wc | awk '{print $1;}' ) -eq 1 ] ; then
type="MinGW"
fi
if [ "$type" = "Linux_x86" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_i386'
elif [ "$type" = "Linux_x86_64" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_amd64'
elif [ "$type" = "Linux_ppc64le" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_ppc64le'
elif [ "$type" = "Linux_Unknown" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX=''
elif [ "$type" = "MacOSX_ppc" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib -s'
POSTFIX='_osx_ppc'
elif [ "$type" = "MacOSX_i386" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib -s'
POSTFIX='_osx_i386'
elif [ "$type" = "MacOSX_x86_64" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib -s'
POSTFIX='_osx_x86_64'
elif [ "$type" = "MacOSX_Unknown" ] ; then
CC='cc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib -s'
POSTFIX='_osx'
elif [ "$type" = "SunOS5" ] ; then
CC='gcc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='"echo Skipping ranlib"'
POSTFIX='_sunos5'
elif [ "$type" = "IRIX" ] ; then
CC='gcc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='"echo Skipping ranlib"'
POSTFIX='_irix'
elif [ "$type" = "NetBSD" ] ; then
CC='gcc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_netbsd'
elif [ "$type" = "FreeBSD" ] ; then
CC='gcc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_freebsd'
elif [ "$type" = "OpenBSD" ] ; then
CC='gcc'
CFLAGS='-Wall'
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='ranlib'
POSTFIX='_openbsd'
elif [ "$type" = "Cygwin" ] ; then
CC='cc'
CFLAGS='-Wall'
CLIBFLAGS='-Wall'
EXEEXT='.exe'
LIBBASE='bibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.dll'
RANLIB='"echo Skipping ranlib"'
POSTFIX='_cygwin'
LIBINSTALLDIR=${INSTALLDIR}
elif [ "$type" = "MinGW" ] ; then
CC='gcc'
CFLAGS='-Wall'
CLIBFLAGS='-Wall'
EXEEXT='.exe'
LIBBASE='bibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.dll'
RANLIB='"echo Skipping ranlib"'
POSTFIX='_mingw'
LIBINSTALLDIR=${INSTALLDIR}
else
# Unknown operating system
CC='cc'
CFLAGS=''
CLIBFLAGS=''
if [ "$LIBTYPE" = "dynamic" ] ; then
CLIBFLAGS='-Wall -fPIC'
else
CLIBFLAGS='-Wall'
fi
EXEEXT=''
LIBBASE='libbibutils'
STATICLIBEXT='.a'
DYNAMICLIBEXT='.so'
RANLIB='"echo Skipping ranlib"'
POSTFIX=''
fi
#
# Set up for dynamic or static libraries
#
if [ "$LIBTYPE" = "dynamic" ] ; then
cp lib/Makefile.dynamic lib/Makefile
cp bin/Makefile.dynamic bin/Makefile
cp test/Makefile.dynamic test/Makefile
LIBEXT=${DYNAMICLIBEXT}
else
cp lib/Makefile.static lib/Makefile
cp bin/Makefile.static bin/Makefile
cp test/Makefile.static test/Makefile
LIBEXT=${STATICLIBEXT}
fi
#
# Generate the upper-level Makefile
#
LIBTARGET=${LIBBASE}${LIBEXT}
cat $INPUT_FILE | \
sed "s/REPLACE_CC/${CC}/" | \
sed "s/REPLACE_CFLAGS/${CFLAGS}/" | \
sed "s/REPLACE_CLIBFLAGS/${CLIBFLAGS}/" | \
sed "s/REPLACE_EXEEXT/${EXEEXT}/" | \
sed "s/REPLACE_LIBTARGET/${LIBTARGET}/" | \
sed "s/REPLACE_LIBEXT/${LIBEXT}/" | \
sed "s/REPLACE_RANLIB/${RANLIB}/" | \
sed "s|REPLACE_INSTALLDIR|${INSTALLDIR}|" | \
sed "s|REPLACE_LIBINSTALLDIR|${LIBINSTALLDIR}|" | \
sed "s/REPLACE_POSTFIX/${POSTFIX}/" > $OUTPUT_FILE
echo
echo
echo "Bibutils Configuration"
echo "----------------------"
echo
echo "Operating system: $type"
echo "Library and binary type: $LIBTYPE"
echo "Binary installation directory: $INSTALLDIR"
echo "Library installation directory: $LIBINSTALLDIR"
echo
echo " - If auto-identification of operating system failed, e-mail cdputnam@ucsd.edu"
echo " with the output of the command: uname -a"
echo
echo " - Use --static or --dynamic to specify library and binary type;"
echo " the --static option is the default"
echo
echo " - Set binary installation directory with: --install-dir DIR"
echo
echo " - Set library installation directory with: --install-lib DIR"
echo
echo
if [ $OUTPUT_FILE = "Makefile" ] ; then
echo "To compile, type: make"
echo "To install, type: make install"
echo "To make tgz package, type: make package"
echo "To make deb package, type: make deb"
echo
echo "To clean up temporary files, type: make clean"
echo "To clean up all files, type: make realclean"
else
echo "To compile, type: make -f $OUTPUT_FILE"
echo "To install, type: make -f $OUTPUT_FILE install"
echo "To make tgz package, type: make -f $OUTPUT_FILE package"
echo "To make deb package, type: make -f $OUTPUT_FILE deb"
echo
echo "To clean up temporary files, type: make -f $OUTPUT_FILE clean"
echo "To clean up all files, type: make -f $OUTPUT_FILE realclean"
fi
echo
echo