You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.2 KiB
83 lines
2.2 KiB
#!/bin/bash
|
|
|
|
# This script gets the version number of GMP.
|
|
# Assumes that env variable CXX is set, and that a link to GMP header file is in $COCOA_EXTLIB_DIR/include
|
|
# if there is no system default GMP.
|
|
|
|
# If an error occurs, exit code is non-zero (& mesg is printed on stderr).
|
|
# Otherwise exit code is zero, and output is version number (e.g. 6.0.1)
|
|
|
|
if [ "$#" != 0 ]
|
|
then
|
|
echo "$0: ERROR: expects no args"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$CXX" ]
|
|
then
|
|
echo "$0: ERROR: shell variable CXX must be set to a C++ compiler compatible with GMP"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$COCOA_EXTLIB_DIR" ]
|
|
then
|
|
echo "ERROR: $0: environment variable COCOA_EXTLIB_DIR not set."
|
|
exit 1
|
|
fi
|
|
|
|
if [ \! "$COCOA_EXTLIB_DIR" -ef "/$COCOA_EXTLIB_DIR" ]
|
|
then
|
|
echo "ERROR: $0: environment variable COCOA_EXTLIB_DIR is not absolute: $COCOA_EXTLIB_DIR."
|
|
exit 1
|
|
fi
|
|
|
|
if [ \! -d "$COCOA_EXTLIB_DIR" -o \! -d "$COCOA_EXTLIB_DIR/include" -o \! -d "$COCOA_EXTLIB_DIR/lib" ]
|
|
then
|
|
echo "ERROR: $0: environment variable COCOA_EXTLIB_DIR is implausible: $COCOA_EXTLIB_DIR."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# Get version number from the header file; we (ab)use the compiler.
|
|
umask 22
|
|
TODAY=`date "+%Y-%m-%d"`
|
|
TIME=`date "+%H:%M:%S"`
|
|
TMP_DIR=/tmp/CoCoALib-config-$USER-$TODAY/gmp-version-$TIME-$$
|
|
/bin/rm -rf $TMP_DIR && mkdir -p $TMP_DIR
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR: $0 failed to create temporary directory \"$TMP_DIR\""
|
|
exit 1
|
|
fi
|
|
|
|
cd $TMP_DIR
|
|
|
|
cat > TestProg.C <<EOF
|
|
#include "gmp.h"
|
|
#include <iostream>
|
|
|
|
int main()
|
|
{
|
|
std::cout << __GNU_MP_VERSION << "." << __GNU_MP_VERSION_MINOR << "." << __GNU_MP_VERSION_PATCHLEVEL << std::endl;
|
|
}
|
|
EOF
|
|
|
|
# Use c++ compiler specified in CXX; no need to specify libgmp as all info is in header file!!
|
|
$CXX -I "$COCOA_EXTLIB_DIR/include" TestProg.C -o TestProg 2> /dev/null
|
|
|
|
# Check whether compilation failed; if so, complain.
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "ERROR: $0: unable to determine version of GMP library" > /dev/stderr
|
|
echo "ERROR: $0: (compilation failed in gmp-version.sh)" > /dev/stderr
|
|
exit 1
|
|
fi
|
|
|
|
# Compilation succeeded, so run $PROG which will print out the version.
|
|
GMP_LIB_VERSION=`./TestProg`
|
|
|
|
# Clean up TMP_DIR
|
|
cd # Leave TMP_DIR
|
|
/bin/rm -rf $TMP_DIR
|
|
|
|
# If we get here, all tests have passed, so print version number and exit with code 0.
|
|
echo $GMP_LIB_VERSION
|