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.
		
		
		
		
		
			
		
			
				
					
					
						
							1172 lines
						
					
					
						
							40 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							1172 lines
						
					
					
						
							40 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # Configure script for CoCoALib | |
| # It accepts a small number of options: run "configure --help" for details. | |
| 
 | |
| # Here is what this script does. | |
| # It establishes the location of the GMP library (and the gmp.h file). | |
| # It establishes which C++ compiler to use and the compilation flags; | |
| # both compiler and flags can be user specified. | |
| # After some basic checks, all details are written into a configuration file | |
| # (currently called configuration/autoconf.mk) which is read by make. | |
| 
 | |
| # The chosen configuration parameters will be placed in the file CONFIG_FILE: | |
| # we save any prevous CONFIG_FILE by appending suffix ".old", | |
| # the new file is built up in CONFIG_TMP then renamed to CONFIG_FILE at the end. | |
| CONFIG_DIR=configuration | |
| CONFIG_FILE="$CONFIG_DIR/autoconf.mk" | |
| CONFIG_TMP="$CONFIG_FILE.part" | |
| 
 | |
| # Auxiliary shell scripts are in this directory; load some useful shell fns. | |
| SCRIPT_DIR=configuration | |
| source "$SCRIPT_DIR/shell-fns.sh" | |
| 
 | |
| COCOA_EXTLIB_DIR=`pwd`/configuration/ExternalLibs | |
| export COCOA_EXTLIB_DIR | |
| 
 | |
| # Default installation directory and command. | |
| INSTALL_DIR=/usr/local | |
|   INSTALL="install -S" | |
| which install > /dev/null | |
| if [ $? -ne 0 ] | |
| then  | |
|   INSTALL="/bin/cp -f" | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Special handling for the arg "--again" (recalls args from previous invocation) | |
| # This section puts the script args into ARGS. | |
| if [ $# = 1 -a "XXX$1" = "XXX-again" ] | |
|   then | |
|     echo "$0: ERROR!  type  ./configure --again" > /dev/stderr | |
|     exit 1 | |
|   fi | |
| if [ $# = 1 -a "XXX$1" = "XXX--again" ] | |
| then | |
|   if [ \! -f "$CONFIG_FILE" ] | |
|   then | |
|     echo "$0: ERROR no previous configuration file found" > /dev/stderr | |
|     exit 1 | |
|   fi | |
|   ARGS=`head -5 "$CONFIG_FILE" | tail -1 | cut -c 3- | cut -f 2- -d " " ` | |
|   echo | |
|   echo "Recalling previous configure command:" | |
|   echo "$0 $ARGS" | |
|   echo | |
|   sleep 2 | |
|   ./configure $ARGS | |
|   exit $? | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Process command line args. | |
| 
 | |
| ORIG_CMD="$0 $@" | |
| 
 | |
| MODE=OPT  # default optimization/debugging flag | |
| 
 | |
| # Below, is there a neater way to do tilde expansion for paths to libraries??? | |
| for option in "$@" | |
| do | |
|   case $option in | |
|     ( --again ) | |
|        echo "***ERROR***  $0: option '--again' must be used alone" | |
|        exit 1;; | |
| 
 | |
|     ( --recall ) | |
|        head -5 "$CONFIG_FILE" | tail -1 | cut -c 3- | |
|        exit 0;; | |
| 
 | |
|     ( --recall-from=* ) | |
|        head -5 "`echo "$option" | cut -f 2- -d=`" | tail -1 | cut -c 3- | |
|        exit 0;; | |
| 
 | |
|     ( --with-libgmp=~* ) | |
|        GMP_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libgmp=* ) | |
|        GMP_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-boost=~* ) | |
|        BOOST_INC_DIR="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-boost=* ) | |
|        BOOST_INC_DIR=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     (--no-readline ) | |
| 	AVOID_READLINE=yes ;; | |
| 
 | |
|     ( --with-readline=~* ) | |
|        READLINE_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-readline=* ) | |
|        READLINE_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libreadline=* ) | |
|        READLINE_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libcddgmp=system ) | |
|        CDD_LIB=`$SCRIPT_DIR/find-lib-in-std-dirs.sh libcddgmp` | |
|        if [ $? -ne 0 ] | |
|        then | |
|          echo "$0: Could not find libcddgmp" | |
|          exit 1 | |
|        fi | |
|        echo "calling $SCRIPT_DIR/find-hdr-from-lib.sh cdd/cdd.h $CDD_LIB" | |
|        CDD_HDR_DIR=`$SCRIPT_DIR/find-hdr-from-lib.sh cdd/cdd.h "$CDD_LIB"` | |
|        if [ $? -ne 0 ] | |
|        then | |
|          echo "$0: $CDD_HDR_DIR" | |
|          exit 1 | |
|        fi | |
|        CDD_SYSTEM=yes;; | |
| 
 | |
|     ( --with-libcddgmp=~* ) | |
|        CDD_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libcddgmp=* ) | |
|        CDD_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libfrobby=~* ) | |
|        FROBBY_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libfrobby=* ) | |
|        FROBBY_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libgsl=~* ) | |
|        GSL_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libgsl=* ) | |
|        GSL_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libgfan=~* ) | |
|        GFAN_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libgfan=* ) | |
|        GFAN_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-libnormaliz=~* ) | |
|        NORMALIZ_LIB="$HOME`echo "$option" | cut -f 2- -d~`" ;; | |
| 
 | |
|     ( --with-libnormaliz=* ) | |
|        NORMALIZ_LIB=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-cxx=* ) | |
|        CXX=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --with-cxxflags=* ) | |
|        CXXFLAGS=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --mode=* ) | |
|        MODE=`echo "$option" | cut -f 2- -d=` ;; | |
| 
 | |
|     ( --threadsafe-hack ) | |
|        THREADSAFE_HACK=yes ;; | |
| 
 | |
|     ( --prefix=* ) | |
|        INSTALL_DIR=`echo "$option" | cut -f 2- -d=` | |
|        if [ \! -d "$INSTALL_DIR" ] | |
|        then | |
|          echo "$0: specified installation directory does not exist: \`$INSTALL_DIR\'" | |
|          exit 1 | |
|        fi;; | |
| 
 | |
|     ( --help* ) | |
|        echo -e "\nThis script configures CoCoALib.  For details please consult the" | |
|        echo -e "files INSTALL and README located in the same directory as this script." | |
|        echo -e "\nUsage: ./configure [OPTIONS]" | |
|        echo -e "\nConfiguration:" | |
|        echo -e "  --help\t\tdisplay this help and exit" | |
|        echo -e "  --again\t\trerun configure with the same options as last time" | |
|        echo -e "  --recall\t\tprint out the configure command given last time" | |
|        echo -e "  --with-cxx=ARG\tspecify name of compiler [default: g++]" | |
|        echo -e "\t\t\t(or specify via environment variable CXX)" | |
|        echo -e "  --with-cxxflags=ARG\tspecify compilation flags [default: \"-Wall -pedantic\"]" | |
|        echo -e "\t\t\t(or specify via environment variable CXXFLAGS)" | |
|        echo -e "  --with-libgmp=ARG\tspecify location of the file libgmp.a (or libgmp.so)" | |
|        echo -e "\t\t\t[default is to search]" | |
|        echo -e "  --with-boost=ARG\tspecify location of the BOOST header files (without the trailing /boost)" | |
|        echo -e "\t\t\t[default is to search]" | |
|        echo -e "  --threadsafe-hack\tcompile using a hack for threadsafety" | |
|        echo -e "  --mode=ARG\t\tspecify OPT/DEBUG1/DEBUG2/PROFILE [default: OPT]" | |
|        echo -e "\nOptional_libraries:" | |
|        echo -e "  --no-readline\tdo not look for libreadline.a" | |
|        echo -e "  --with-libreadline=ARG\tspecify location of the file libreadline.a" | |
|        echo -e "\t\t\t[default is to search for libreadline.a]" | |
|        echo -e "  --with-libcddgmp=ARG\tspecify location of the file libcddgmp.a" | |
|        echo -e "\t\t\t[default is no libcddgmp.a]" | |
|        echo -e "  --with-libfrobby=ARG\tspecify location of the file libfrobby.a" | |
|        echo -e "\t\t\t[default is no libfrobby]" | |
|        echo -e "  --with-libgfan=ARG\tspecify location of the file libgfan.a" | |
|        echo -e "\t\t\t[default is no libgfan]" | |
|        echo -e "  --with-libgsl=ARG\tspecify location of the file libgsl.a" | |
|        echo -e "\t\t\t[default is no libgsl]" | |
|        echo -e "  --with-libnormaliz=ARG\tspecify location of the file libnormaliz.a" | |
|        echo -e "\t\t\t[default is no libnormaliz]" | |
|        echo -e "\nInstallation:" | |
|        echo -e "  --prefix=PREFIX\tinstall in PREFIX/include & PREFIX/lib" | |
|        echo -e "\t\t\t[default: /usr/local]" | |
|        exit;; | |
| 
 | |
|     ( * ) | |
|        echobox "ERROR: unrecognized option/parameter \"$option\"" | |
|        echo | |
|        echo "HINT: try \"$0 --help\" for guidance" | |
|        exit 1;; | |
|   esac | |
| done | |
| 
 | |
| if [ "$AVOID_READLINE" = yes -a \! -z "$READLINE_LIB" ] | |
| then | |
|     echo "$0: incompatible inputs for readline" | |
|     exit 1 | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| echo "Starting configuration process for CoCoALib..." | |
| echo | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Rename the old configuration file (if it exists). | |
| # Do this early so that after a failed configure it is not | |
| # not possible to compile | |
| 
 | |
| if [ -f "$CONFIG_FILE" ] | |
| then | |
|   /bin/rm -rf "$CONFIG_FILE.old" | |
|   /bin/mv "$CONFIG_FILE" "$CONFIG_FILE.old" | |
|   echo "-------------------------------------------------------" | |
|   echo "**NOTE**  moved previous config file into $CONFIG_FILE.old" | |
|   echo "-------------------------------------------------------" | |
|   echo | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Check the compiler. | |
| 
 | |
| # If user didn't specify a compiler, we assume g++. | |
| if [ -z "$CXX" ] | |
| then | |
|   CXX=g++ | |
| fi | |
| # Check compiler and flags are sane. | |
| # If there's a problem, result is error message & return code is non-zero. | |
| # If all is well, result is either "gnu" or "not gnu" & return code is 0. | |
| CXX_TYPE=`$SCRIPT_DIR/verify-compiler.sh "$CXX" "$CXXFLAGS"` | |
| if [ $? -ne 0 ] | |
| then | |
|   echo "ERROR: $CXX_TYPE"                                                 > /dev/stderr | |
|   echo "ERROR: Check the options --with-cxx=... and --with-cxxflags=..."  > /dev/stderr | |
|   echo "ERROR: (or the environment variables CXX and CXXFLAGS)."          > /dev/stderr | |
|   exit 1 | |
| fi | |
| # Next line required by the scripts which check GMP (see below). | |
| export CXX | |
| export CXXFLAGS | |
| 
 | |
| 
 | |
| ################################################################## | |
| # -- EXTERNAL LIBRARIES --            ############################ | |
| ################################################################## | |
| # Prepare subtree for symlinks to external libs | |
| EXTLIBS=configuration/ExternalLibs | |
| /bin/rm -rf $EXTLIBS | |
| mkdir $EXTLIBS | |
| mkdir $EXTLIBS/lib | |
| mkdir $EXTLIBS/include | |
| 
 | |
| ################################################################## | |
| # external library: GMP | |
| ################################################################## | |
| # Now obtain and check the GMP installation. | |
| 
 | |
| # Establish the location of the GMP library. | |
| # Check whether user supplied the location of the GMP library; if not, we search for it. | |
| if [ -n "$GMP_LIB" ] | |
| then | |
|   # User supplied a path to the GMP library. | |
|   # Check it is at least a readable file. | |
|   # Convert the file name into an absolute path (in case it was not). | |
|   if [ \! -f "$GMP_LIB" -o \! -r "$GMP_LIB" ] | |
|   then | |
|     echo "ERROR: Specified GMP library is not a readable file \"$GMP_LIB\"" | |
|     exit 1 | |
|   fi | |
|   # These two lines should make sure GMP_LIB is an absolute path. | |
|   GMP_DIR=`dirname "$GMP_LIB"` | |
|   GMP_LIB=`cd "$GMP_DIR"; pwd`/`basename "$GMP_LIB"` | |
|   GMP_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$GMP_LIB"` | |
|   /bin/ln -s "$GMP_LIB" $EXTLIBS/lib/libgmp-symlink.$GMP_LIB_EXTN | |
|   HAVE_DEFAULT_GMP=no | |
| else | |
|   # User did not supply path to GMP library, so we try to use defaults. | |
|   # That means we do NOT specify any paths just add -lgmp and maybe -lgmpxx. | |
|   GMP_TRY_DEFAULT=`$SCRIPT_DIR/gmp-try-default.sh`  # uses CXX & CXXFLAGS | |
|   if [ $? -eq 0 ] | |
|   then | |
|     HAVE_DEFAULT_GMP=yes | |
|     # System defaults for GMP work fine. | |
|     GMP_LIB= | |
|     if [ "$GMP_TRY_DEFAULT" = "GMPXX" ] | |
|     then | |
|       GMPXX_LIB= | |
|       HAVE_GMPXX=yes | |
|     else | |
|       HAVE_GMPXX=no | |
|     fi | |
|   else | |
|     # Default GMP library not found, so we search for it. | |
|     HAVE_DEFAULT_GMP=no | |
|     GMP_MESG=`$SCRIPT_DIR/gmp-find.sh` | |
|     if [ $? -ne 0 ] | |
|     then | |
|       # Something went wrong; so GMP_MESG contains an error message. | |
|       echo "ERROR: Problem with GMP -- abandoning configuration of CoCoALib." > /dev/stderr | |
|       echo "ERROR: You can provide the path to libgmp.a (or libgmp.so) using" > /dev/stderr | |
|       echo "ERROR: the \"--with-libgmp=\" command line option to $0."         > /dev/stderr | |
|       echo "ERROR: $GMP_MESG"                                                 > /dev/stderr | |
|       exit 1 | |
|     else | |
|       # gmp-find.sh script worked, so message is full path of GMP library | |
|       /bin/ln -s "$GMP_MESG" $EXTLIBS/lib/libgmp-symlink.a | |
|       GMP_LIB="$GMP_MESG" | |
|     fi | |
|   fi | |
| fi | |
| 
 | |
| 
 | |
| # If GMP is not a default library, search for the header file | |
| # (and put symlink in $EXTLIBS/include). | |
| if [ $HAVE_DEFAULT_GMP = "no" ] | |
| then | |
|   GMP_INC_DIR=`$SCRIPT_DIR/gmp-find-hdr.sh "$GMP_LIB"` | |
|   if [ $? -ne 0 ] | |
|   then | |
|     # Something went wrong; details are in GMP_INC_DIR | |
|     echo "ERROR: Unable to locate header for GMP library $GMP_LIB"  > /dev/stderr | |
|     echo "ERROR: $GMP_INC_DIR"                                      > /dev/stderr | |
|     exit 1 | |
|   fi | |
|   GMP_H="$GMP_INC_DIR/gmp.h" | |
|   /bin/ln -s "$GMP_H" $EXTLIBS/include/gmp.h | |
| fi | |
| 
 | |
| GMP_VERSION=`$SCRIPT_DIR/gmp-version.sh` | |
| if [ $? -ne 0 ] | |
| then | |
|   # GMP version script had trouble and printed out an error mesg. | |
|   exit 1 | |
| fi | |
| 
 | |
| if [ "$GMP_VERSION" \< "4.2.3" ] | |
| then | |
|   echo "ERROR: Your GMP installation is too old!"                             > /dev/stderr | |
|   echo "ERROR: Please update to a newer version, then reconfigure CoCoALib."  > /dev/stderr | |
|   exit 1 | |
| fi | |
| 
 | |
| # 20140901 warn about old GMP; soon we shall REQUIRE a more recent version. | |
| if [ "$GMP_VERSION" \< "5.1.0" ] | |
| then | |
|   WARNINGS="old GMP (incompat with C++11); $WARNINGS" | |
|   echo ""; sleep 1; echo "" | |
|   echo "WARNING: Your GMP installation is rather old (version: $GMP_VERSION)" > /dev/stderr | |
|   echo "WARNING: We recommend you update to a newer version."                 > /dev/stderr | |
|   echo ""; sleep 1; echo "" | |
|   sleep 1 | |
| fi | |
| 
 | |
| 
 | |
| # See which (-m***) compilation flags GMP used; we shall use the same ones. | |
| CXXFLAGS_FOR_GMP=`$SCRIPT_DIR/gmp-cxx-flags.sh` | |
| if [ $? -ne 0 ] | |
| then | |
|   echo "$CXXFLAGS_FOR_GMP" | |
|   exit 1 | |
| fi | |
| 
 | |
| # If user supplied CXXFLAGS, check they are compatible with GMP | |
| if [ -n "$CXXFLAGS" ] | |
| then | |
|   ( cd $SCRIPT_DIR; ./gmp-check-cxxflags.sh "$CXXFLAGS_FOR_GMP" ) | |
|   if [ $? -ne 0 ] | |
|   then | |
|     echo "ERROR: Supplied value of CXXFLAGS, namely \"$CXXFLAGS\""    > /dev/stderr | |
|     echo "ERROR: is not compatible with GMP library"                  > /dev/stderr | |
|     exit 1 | |
|   fi | |
| fi | |
| 
 | |
| if [ $HAVE_DEFAULT_GMP = "no" ] | |
| then | |
|   # Now make "intelligent guess" for the full path of libgmpxx. | |
|   # For the moment we do NOT CHECK if our guess was good | |
|   # (we will check later if we are using Frobby). | |
|   GMP_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$GMP_LIB"` | |
|   GMPXX_LIB=`dirname "$GMP_LIB"`/libgmpxx.$GMP_LIB_EXTN | |
|   GMPXX_H="$GMP_INC_DIR/gmpxx.h" | |
|   if [ -f "$GMPXX_LIB" -a -r "$GMPXX_LIB" -a -f "$GMPXX_H" -a -r "$GMPXX_H" ] | |
|   then | |
|     HAVE_GMPXX=yes | |
|   else | |
|     HAVE_GMPXX=no | |
|   fi | |
| 
 | |
|   if [ $HAVE_GMPXX = "yes" ] | |
|   then | |
|     /bin/ln -s "$GMPXX_LIB" $EXTLIBS/lib/libgmpxx-symlink.$GMP_LIB_EXTN | |
|   fi | |
|   # Tell user which version of GMP we are using. | |
|   echo "Using GMP version $GMP_VERSION:" | |
| #  echo "  library is in \"$GMP_LIB\"" | |
|   echo "  library is in " `readlink $EXTLIBS/lib/libgmp-symlink.a` | |
|   echo "  header  is in " `readlink $EXTLIBS/include/gmp.h` | |
| #  echo "  header  is in \"$GMP_INC_DIR/gmp.h\"" | |
|   echo | |
| 
 | |
|   else # $HAVE_DEFAULT_GMP = "yes" | |
|     if [ $HAVE_GMPXX = "yes" ] | |
|     then | |
|       echo "Using system default GMP+GMPXX, version $GMP_VERSION" | |
|     else | |
|       echo "Using system default GMP, version $GMP_VERSION" | |
|     fi | |
|   echo | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: READLINE | |
| ################################################################## | |
| # Check whether libreadline is available; if so, we will use it | |
| # for compiling CoCoAInterpreter | |
| 
 | |
| HAVE_READLINE=no | |
| if [ -z "$AVOID_READLINE" ] | |
| then | |
|     if [ -z "$READLINE_LIB" ] | |
|     then | |
| 	#  No libreadline specified, so look for an installed version | |
| 	$SCRIPT_DIR/readline-try-default.sh > /dev/null 2>& 1 | |
| 	if [ $? = 0 ] | |
| 	then | |
| 	    HAVE_READLINE=yes | |
| 	    # Note that -lreadline includes also -lncurses or -ltermcap | |
| 	    READLINE_LIB="-lreadline" | |
| 	else | |
| 	    WARNINGS="libreadline not installed; $WARNINGS" | |
| 	    echo "WARNING:  readline is not installed" | |
| 	fi | |
|     else | |
| 	# user specified a libreadline | |
| 	if [ \! "/$READLINE_LIB" -ef "$READLINE_LIB" ] | |
| 	then | |
| 	    echo "ERROR: supplied libreadline path is not absolute: $READLINE_LIB" | |
| 	    exit 1 | |
| 	fi | |
| 	if [ \! -f "$READLINE_LIB" -o \! -r "$READLINE_LIB" ] | |
| 	then | |
| 	    echo "ERROR: cannot read supplied libreadline: $READLINE_LIB" | |
| 	    exit 1 | |
| 	fi | |
| 	# User supplied abs path to a readable file. | |
| 	READLINE_HDR=`$SCRIPT_DIR/readline-find-hdr.sh "$READLINE_LIB"` | |
| 	if [ $? -ne 0 ] | |
| 	then | |
| 	    echo "ERROR: cannot find header file for the specified libreadline." > /dev/stderr | |
| 	    exit 1 | |
| 	fi | |
| 	 | |
| 	LIBTERMCAP=`$SCRIPT_DIR/readline-check-cxxflags.sh "$READLINE_HDR" "$READLINE_LIB"` | |
| 	if [ $? = 0 ] | |
| 	then | |
| 	    HAVE_READLINE=yes | |
| 	    READLINE_LIB="$READLINE_LIB  $LIBTERMCAP" | |
| 	fi | |
|     fi | |
| fi | |
| 
 | |
| if [ $HAVE_READLINE = yes ] | |
| then | |
|   READLINE_FLAG="-DCoCoA_WITH_READLINE" | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Check whether "qmake" is available -- needed for building the GUI | |
| # Assume that if "qmake" is available then all of QT is too. | |
| # Also check that "qmake" actually runs (Ubuntu 14.04 can have a broken symlink) | |
| HAVE_QMAKE=no | |
| QMAKE=`which qmake 2>/dev/null` | |
| if [ $? = 0 ] | |
| then | |
|   QMAKE=`[ -x "$QMAKE" ] && qmake -help 2>&1 >/dev/null` | |
|   if [ $? = 0 ] | |
|   then | |
|     HAVE_QMAKE=yes | |
|   fi | |
| fi | |
| 
 | |
| if [ $HAVE_QMAKE = no ] | |
| then | |
|   WARNINGS="no qmake (so no CoCoA5 GUI); $WARNINGS" | |
| fi | |
| 
 | |
| ################################################################## | |
| # external library: BOOST | |
| ################################################################## | |
| # BOOST installation | |
| # Since BOOST is not (currently) essential for CoCoALib, we do | |
| # not give an error if the boost-find-hdrs.sh script cannot find it. | |
| # If a unique BOOST installation was not found, we set | |
| # BOOST_HDRS_NOT_FOUND to the error mesg (o/w it is left empty). | |
| # Otherwise the full path of the unique dir containing header files | |
| # is put in BOOST_INC_DIR. | |
| 
 | |
| if [ -z "$BOOST_INC_DIR" ] | |
| then | |
|   BOOST_MESG=`$SCRIPT_DIR/boost-find-hdrs.sh` | |
|   BOOST_FIND_HDRS_EXIT_CODE=$? | |
|   if [ $BOOST_FIND_HDRS_EXIT_CODE = 2 ] # 2 means terminating error | |
|   then | |
|     echo "$BOOST_MESG"  > /dev/stderr | |
|     exit 1 | |
|   fi | |
|   if [ $BOOST_FIND_HDRS_EXIT_CODE = 0 ] | |
|   then | |
|     BOOST_INC_DIR="$BOOST_MESG" | |
|     HAVE_BOOST_HDRS=yes | |
|   else | |
|     HAVE_BOOST_HDRS=no | |
|     echo "CONFIGURATION COMMENT" | |
|     echo "$BOOST_MESG" | |
|     echo "Proceeding without BOOST" | |
|   fi | |
| else | |
|   # User supplied a path to the BOOST directory. | |
|   # Check it is at least a readable file. | |
|   # Convert the file name into an absolute path (in case it was not). | |
|   HAVE_BOOST_HDRS=yes | |
|   if [ \! -d "$BOOST_INC_DIR" -o \! -r "$BOOST_INC_DIR" ] | |
|   then | |
|     echo "ERROR: the specified BOOST header directory does not exist or is unreadable" > /dev/stderr | |
|     echo "ERROR: path specified was $BOOST_INC_DIR"                                    > /dev/stderr | |
|     exit 1 | |
|   fi | |
|   if [ \! -d "$BOOST_INC_DIR/boost" ] | |
|   then | |
|     echo "ERROR: the specified BOOST header directory does not contain subdirectory \"boost\"" > /dev/stderr | |
|     if [ "`basename \"$BOOST_INC_DIR\"`" = "boost" ] | |
|     then | |
|       echo "ERROR: Perhaps you should simply remove the final path component?"         > /dev/stderr | |
|     fi | |
|     exit 1 | |
|   fi | |
| fi | |
| 
 | |
| # At this point either HAVE_BOOST_HDRS = "yes" (in which case BOOST_INC_DIR contains a plausible path) | |
| # or HAVE_BOOST_HDRS = "no" (and BOOST_MESG might explain why) | |
| if [ "$HAVE_BOOST_HDRS" = "yes" ] | |
| then | |
|   BOOST_INC_DIR=`cd "$BOOST_INC_DIR"; pwd` | |
|   if [ "$BOOST_INC_DIR" != /usr/local/include -a "$BOOST_INC_DIR" != /usr/include ] | |
|   then | |
|     /bin/ln -s "$BOOST_INC_DIR/boost" $EXTLIBS/include/ | |
|   fi | |
|   BOOST_MESG=`$SCRIPT_DIR/boost-find-lib.sh "$BOOST_INC_DIR"` | |
|   if [ $? -ne 0 ] | |
|   then | |
|     BOOST_LIB_NOT_FOUND="$BOOST_MESG" | |
|   else | |
|     eval "$BOOST_MESG"  # sets BOOST_LIB_DIR and BOOST_LDLIBS | |
|     BOOST_LIB_NOT_FOUND= | |
|     # Check that the BOOST libs are compatible with CXX and CXXFLAGS | |
|     BOOST_MESG=`$SCRIPT_DIR/boost-check-arch.sh "$CXXFLAGS_FOR_GMP" "$BOOST_LDLIBS"` | |
|     if [ $? -ne 0 ] | |
|     then | |
|       BOOST_LIB_NOT_FOUND="BOOST libs incompatible with GMP lib!" | |
|       WARNINGS="BOOST not found; $WARNINGS" | |
|       echo "***WARNING*** $BOOST_LIB_NOT_FOUND" | |
|       echo "***WARNING*** Proceeding without BOOST" | |
|       BOOST_LDLIBS= | |
|     fi | |
|   fi | |
| fi | |
| 
 | |
| # Set HAVE_BOOST  "english boolean" | |
| if [ "$HAVE_BOOST_HDRS" = "yes" -a -z "$BOOST_LIB_NOT_FOUND" ] | |
| then | |
|   HAVE_BOOST=yes | |
| else | |
|   HAVE_BOOST=no | |
| fi | |
| 
 | |
| 
 | |
| # Tell user which BOOST we are using. | |
| if [ "$HAVE_BOOST" = "yes" ] | |
| then | |
|   BOOST_FLAG="-DCoCoA_WITH_BOOST" | |
|   echo "Using BOOST:" | |
|   echo "  header files  are in $BOOST_INC_DIR" | |
|   echo "  library files are in $BOOST_LIB_DIR" | |
| else | |
|   echo | |
|   echo "Not using BOOST ==> compilation of CoCoA5+GUI disabled" | |
|   if [ "$HAVE_BOOST_HDRS" = "yes" ] | |
|   then | |
|     echo "$BOOST_LIB_NOT_FOUND" | fold -s | |
|   fi | |
| fi | |
| echo | |
| 
 | |
| if [ $HAVE_BOOST = "yes" -a $HAVE_QMAKE = "no" ] | |
| then | |
|   echo "Note: we will build CoCoA5 ***without*** GUI because \"qmake\" is absent" | |
|   echo | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: CDD (GMP) | |
| ################################################################## | |
| # Check the file passed as CDD library is at least a readable file. | |
| # Convert the file name into an absolute path (in case it was not). | |
| if [ -n "$CDD_LIB" ] | |
| then  | |
|   if [ \! -f "$CDD_LIB" -o \! -r "$CDD_LIB" ] | |
|   then | |
|     echo "ERROR: Specified CDD library is not a readable file \"$CDD_LIB\"" | |
|     exit 1 | |
|   fi | |
|   HAVE_CDD=yes | |
|   # These three lines should make sure CDD_LIB is an absolute path. | |
|   CDD_LIB_NAME=`basename "$CDD_LIB"` | |
|   CDD_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$CDD_LIB_NAME"` | |
|   CDD_LIB_DIR=`dirname "$CDD_LIB"` | |
|   CDD_LIB_DIR=`cd "$CDD_LIB_DIR"; pwd` | |
|   CDD_LIB="$CDD_LIB_DIR/$CDD_LIB_NAME" | |
|   CDD_INC_DIR="$CDD_LIB_DIR" | |
|   CDD_FLAG="-DCoCoA_WITH_CDD" | |
|   if [ \! -d "$CDD_INC_DIR" ] | |
|   then | |
|     echo "ERROR: Did not find CDD header file where expected, in dir: \"$CDD_INC_DIR\"" | |
|     exit 1 | |
|   fi | |
| /bin/ln -s "$CDD_LIB"     $EXTLIBS/lib/libcddgmp-symlink.$CDD_LIB_EXTN | |
| /bin/ln -s "$CDD_INC_DIR" $EXTLIBS/include | |
| else | |
|   HAVE_CDD=no | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: FROBBY | |
| ################################################################## | |
| # Check the file passed as libfrobby.a is at least a readable file. | |
| # Convert the file name into an absolute path (in case it was not). | |
| if [ -n "$FROBBY_LIB" ] | |
| then  | |
|   if [ \! -f "$FROBBY_LIB" -o \! -r "$FROBBY_LIB" ] | |
|   then | |
|     echo "ERROR: Specified FROBBY library is not a readable file \"$FROBBY_LIB\"" | |
|     exit 1 | |
|   fi | |
|   if [ $HAVE_GMPXX = "no" ] | |
|   then | |
|     echo "ERROR: Frobby needs libgmpxx but your GMP installation does not have it."   > /dev/stderr | |
|     echo "ERROR: Please specify a GMP installation with libgmpxx, or rebuild GMP"     > /dev/stderr | |
|     echo "specifying that you want the C++ library too (see GMP doc for details)."    > /dev/stderr | |
|     exit 1 | |
|   fi | |
| 
 | |
|   # These lines should put absolute paths in FROBBY_LIB and FROBBY_DIR. | |
|   HAVE_FROBBY=yes | |
|   FROBBY_LIB_DIR=`dirname "$FROBBY_LIB"` | |
|   FROBBY_LIB_DIR=`cd "$FROBBY_LIB_DIR"; pwd` | |
|   FROBBY_LIB="$FROBBY_LIB_DIR"/`basename "$FROBBY_LIB"` | |
|   FROBBY_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$FROBBY_LIB"` | |
| /bin/ln -s "$FROBBY_LIB" $EXTLIBS/lib/libfrobby-symlink.$FROBBY_LIB_EXTN | |
| /bin/ln -s `dirname "$FROBBY_LIB_DIR"`/src/frobby.h $EXTLIBS/include | |
| if [ $? -ne 0 ] | |
| then | |
|   echo "ERROR: frobby.h header file not found in `dirname \"$FROBBY_LIB_DIR\"`" | |
|   exit 1 | |
| fi | |
| ###  FROBBY_DIR=`cd "$FROBBY_LIB_DIR"/..; pwd` | |
|   FROBBY_FLAG="-DCoCoA_WITH_FROBBY" | |
| else | |
|   HAVE_FROBBY=no | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: GFAN | |
| ################################################################## | |
| # Check the file passed as GFAN library is at least a readable file. | |
| # Convert the file name into an absolute path (in case it was not). | |
| if [ -n "$GFAN_LIB" ] | |
| then  | |
|   if [ \! -f "$GFAN_LIB" -o \! -r "$GFAN_LIB" ] | |
|   then | |
|     echo "ERROR: Specified GFAN library is not a readable file \"$GFAN_LIB\"" | |
|     exit 1 | |
|   fi | |
|   HAVE_GFAN=yes | |
|   # These three lines should make sure GFAN_LIB is an absolute path. | |
|   GFAN_LIB_NAME=`basename "$GFAN_LIB"` | |
|   GFAN_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$GFAN_LIB_NAME"` | |
|   GFAN_LIB_DIR=`dirname "$GFAN_LIB"` | |
|   GFAN_LIB_DIR=`cd "$GFAN_LIB_DIR"; pwd` | |
|   GFAN_LIB="$GFAN_LIB_DIR/$GFAN_LIB_NAME" | |
|   GFAN_INC_DIR="$GFAN_LIB_DIR" | |
|   GFAN_FLAG="-DCoCoA_WITH_GFAN" | |
|   if [ \! -d "$GFAN_INC_DIR" ] | |
|   then | |
|     echo "ERROR: Did not find GFAN header file where expected, in dir: \"$GFAN_INC_DIR\"" | |
|     exit 1 | |
|   fi | |
| /bin/ln -s "$GFAN_LIB"     $EXTLIBS/lib/libgfan-symlink.$GFAN_LIB_EXTN | |
| /bin/ln -s "$GFAN_INC_DIR" $EXTLIBS/include | |
| else | |
|   HAVE_GFAN=no | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: GSL | |
| ################################################################## | |
| # Check the file passed as GSL library is at least a readable file. | |
| # Convert the file name into an absolute path (in case it was not). | |
| if [ -n "$GSL_LIB" ] | |
| then  | |
|   if [ \! -f "$GSL_LIB" -o \! -r "$GSL_LIB" ] | |
|   then | |
|     echo "ERROR: Specified GSL library is not a readable file \"$GSL_LIB\"" | |
|     exit 1 | |
|   fi | |
|   HAVE_GSL=yes | |
|   # These three lines should make sure GSL_LIB is an absolute path. | |
|   GSL_LIB_NAME=`basename "$GSL_LIB"` | |
|   GSL_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$GSL_LIB_NAME"` | |
|   GSL_LIB_DIR=`dirname "$GSL_LIB"` | |
|   GSL_LIB_DIR=`cd "$GSL_LIB_DIR"; pwd` | |
|   GSL_LIB="$GSL_LIB_DIR/$GSL_LIB_NAME" | |
|   if [ "`basename \"$GSL_LIB_DIR\"`" = ".libs" ] | |
|   then | |
|     GSL_INC_DIR="`dirname \"$GSL_LIB_DIR\"`/gsl" | |
|   else | |
|     GSL_INC_DIR="`dirname \"$GSL_LIB_DIR\"`/include/gsl" | |
|   fi | |
|   GSL_FLAG="-DCoCoA_WITH_GSL" | |
|   if [ \! -d "$GSL_INC_DIR" ] | |
|   then | |
|     echo "ERROR: Did not find GSL header file where expected, in dir: \"$GSL_INC_DIR\"" | |
|     exit 1 | |
|   fi | |
| /bin/ln -s "$GSL_LIB" $EXTLIBS/lib/libgsl-symlink.$GSL_LIB_EXTN | |
| /bin/ln -s "$GSL_INC_DIR" $EXTLIBS/include | |
| else | |
|   HAVE_GSL=no | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # external library: NORMALIZ | |
| ################################################################## | |
| # Check the path passed as libnormaliz is at least a readable file. | |
| # Make the path absolute (in case it was not). | |
| if [ -n "$NORMALIZ_LIB" ] | |
| then  | |
|   if [ \! -f "$NORMALIZ_LIB" -o \! -r "$NORMALIZ_LIB" ] | |
|   then | |
|     echo "ERROR: Specified NORMALIZ library is not a readable file \"$NORMALIZ_LIB\"" | |
|     echo | |
|     exit 1 | |
|   fi | |
|   HAVE_NORMALIZ=yes | |
|   # These lines should put absolute paths in NORMALIZ_LIB and NORMALIZ_DIR. | |
|   NORMALIZ_LIB_NAME=`basename "$NORMALIZ_LIB"` | |
|   NORMALIZ_LIB_EXTN=`$SCRIPT_DIR/extn.sh "$NORMALIZ_LIB_NAME"` | |
|   NORMALIZ_LIB_DIR=`dirname "$NORMALIZ_LIB"` | |
|   NORMALIZ_LIB_DIR=`cd "$NORMALIZ_LIB_DIR"; pwd` | |
|   NORMALIZ_LIB="$NORMALIZ_LIB_DIR"/"$NORMALIZ_LIB_NAME" | |
|   NORMALIZ_INC_DIR="$NORMALIZ_LIB_DIR/../../source/libnormaliz" | |
|   # Hack to handle case of installed libnormaliz... | |
|   if [ \! -f "$NORMALIZ_INC_DIR/libnormaliz.h" ] | |
|   then | |
|     NORMALIZ_INC_DIR="$NORMALIZ_LIB_DIR/../include/libnormaliz" | |
|   fi | |
|   # End of hack | |
|   NORMALIZ_FLAG="-DCoCoA_WITH_NORMALIZ" | |
|   if [ $HAVE_BOOST_HDRS = "no" ] | |
|   then | |
|     echo "ERROR: Normaliz requires BOOST."                           > /dev/stderr | |
|     echo "ERROR: You can provide the path to boost header dir using" > /dev/stderr | |
|     echo "ERROR: the \"--with-boost=\" command line option to $0."   > /dev/stderr | |
|     echo "ERROR: $BOOST_HDRS_NOT_FOUND"                              > /dev/stderr | |
|     exit 1 | |
|   fi | |
|   if [ $HAVE_GMPXX = "no" ] | |
|   then | |
|     echo "ERROR: Normaliz requires libgmpxx."                                      > /dev/stderr | |
|     echo "ERROR: Please use the command line option \"--with-libgmp=\" to specify" > /dev/stderr | |
|     echo "ERROR: a GMP installation with libgmpxx, or rebuild GMP specifying that" > /dev/stderr | |
|     echo "ERROR: you want the C++ library too (see GMP doc for details)."          > /dev/stderr | |
|     exit 1 | |
|   fi | |
| /bin/ln -s "$NORMALIZ_LIB" $EXTLIBS/lib/libnormaliz-symlink.$NORMALIZ_LIB_EXTN | |
| /bin/ln -s "$NORMALIZ_INC_DIR" $EXTLIBS/include/ | |
| else | |
|   HAVE_NORMALIZ=no | |
| fi | |
| 
 | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Decide which "optimization" flags to use: | |
| #  if the compiler is type "gnu" then we use -O2 | |
| #  otherwise we just use -O | |
| 
 | |
| if [ "$CXX_TYPE" = "gnu" ] | |
| then | |
|   OPT_FLAG=-O2 | |
|   if [ -z "$CXXFLAGS" ] | |
|   then | |
|     FPIC=`$SCRIPT_DIR/fpic-flag.sh "$CXX"` | |
|     CXXFLAGS="-Wall -pedantic $FPIC" | |
|     LDFPIC=`$SCRIPT_DIR/fpic-ldflag.sh "$CXX"` | |
|   fi | |
| else | |
|   OPT_FLAG=-O | |
| fi | |
| 
 | |
| # Some special handling for Normaliz.. | |
| if [ $HAVE_NORMALIZ = "yes" ] | |
| then | |
|   # Hack to allow Normaliz to use longlong | |
|   # later versions of g++ allow the flag -std=c++11, but I'm | |
|   # stuck on a horrible Mac with version 4.2 :-( | |
|   if [ "$CXX_TYPE" = "gnu" -a -n "$NORMALIZ_FLAG" ] | |
|   then | |
|     NORMALIZ_FLAG="$NORMALIZ_FLAG -Wno-long-long" | |
|   fi | |
| 
 | |
|   # Check whether Normaliz was compiled with OpenMP | |
|   NORMALIZ_WITH_OPENMP=`$SCRIPT_DIR/normaliz-with-openmp.sh "$NORMALIZ_LIB"` | |
|   if [ -n "$NORMALIZ_WITH_OPENMP" ] | |
|   then | |
|     CXXFLAGS_DEFINES_COMMON="$CXXFLAGS_DEFINES_COMMON -fopenmp" | |
|   fi | |
| fi | |
| 
 | |
| # Ugly hack to produce a threadsafe compilation: | |
| if [ "$THREADSAFE_HACK" = "yes" ] | |
| then | |
|   CXXFLAGS_DEFINES_COMMON="$CXXFLAGS_DEFINES_COMMON -DCoCoA_THREADSAFE_HACK" | |
| fi | |
| 
 | |
| 
 | |
| CXXFLAGS_COMMON="$CXXFLAGS $CXXFLAGS_FOR_GMP" | |
| CXXFLAGS_DEFINES_COMMON="$CXXFLAGS_DEFINES_COMMON $BOOST_FLAG $CDD_FLAG $FROBBY_FLAG $GFAN_FLAG $GSL_FLAG $NORMALIZ_FLAG $READLINE_FLAG" | |
| CXXFLAGS_OPT="$OPT_FLAG" | |
| CXXFLAGS_DEBUG1="-Wextra -g"; CXXFLAGS_DEFINES_DEBUG1="-DCoCoA_DEBUG" | |
| CXXFLAGS_DEBUG2="-Wextra -g"; CXXFLAGS_DEFINES_DEBUG2="-DCoCoA_DEBUG -DCoCoA_MEMPOOL_DEBUG" | |
| CXXFLAGS_PROFILE="$OPT_FLAG -pg" | |
| 
 | |
| ################################################################## | |
| # Determine custom CPP flags (& add them to CXXFLAGS_COMMON) | |
| 
 | |
| CXX="$CXX"  CXXFLAGS="$CXXFLAGS_COMMON $CXXFLAGS_OPT"  UL2L="`$SCRIPT_DIR/cpp-flags.sh`" | |
| if [ $? -ne 0 ] | |
| then | |
|   echo "***ERROR*** Customization failed" | |
|   echo "***ERROR*** $UL2L" | |
|   echo | |
|   exit 1 | |
| fi | |
| CXXFLAGS_DEFINES_COMMON="$UL2L $CXXFLAGS_DEFINES_COMMON" | |
| 
 | |
| 
 | |
| # Tell user the compiler and default compilation flags put in the Makefile. | |
| echo "The C++ compiler is $CXX" | |
| echo "The C++ compilation flags are \"$CXXFLAGS_COMMON $CXXFLAGS_DEFAULT\"" | |
| echo | |
| 
 | |
| ################################################################## | |
| ################################################################## | |
| # We have checked the compiler, GMP library etc., so now create the CONFIG_FILE | |
| 
 | |
| ################################################################## | |
| # Place initial message and fixed_part1 in $CONFIG_FILE | |
| 
 | |
| echo "# Makefile configuration for CoCoALib."                  > "$CONFIG_TMP" | |
| echo "# Created automatically by the configure script."       >> "$CONFIG_TMP" | |
| echo "# Created on  `date \"+%Y-%m-%d  at time  %H:%M:%S\"`"  >> "$CONFIG_TMP" | |
| echo "# Command was: "                                        >> "$CONFIG_TMP" | |
| echo "# $ORIG_CMD"                                            >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| /bin/cat "$CONFIG_DIR/fixed_part1"                            >> "$CONFIG_TMP" | |
| 
 | |
| ################################################################## | |
| # Append the CoCoALib version number. | |
| 
 | |
| source "$CONFIG_DIR/version" | |
| VERSION=$VER_MAJ.$VER_MIN$VER_PATCH | |
| echo "# Version number of CoCoALib we shall build."           >> "$CONFIG_TMP" | |
| echo "VERSION=$VERSION"                                       >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # Installation command and directory (just placeholders, 20140323) | |
| echo "Installation options are:" | |
| echo "  directory INSTALL_DIR=$INSTALL_DIR" | |
| echo "  command   INSTALL=$INSTALL" | |
| echo | |
| 
 | |
| echo "INSTALL_DIR=$INSTALL_DIR"                               >> "$CONFIG_TMP" | |
| echo "INSTALL=$INSTALL"                                       >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| echo "EXTLIBS=\$(COCOA_ROOT)/configuration/ExternalLibs"      >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| echo "# Compilation flags common to all cases:"               >> "$CONFIG_TMP" | |
| echo "CXXFLAGS_COMMON=$CXXFLAGS_COMMON"                       >> "$CONFIG_TMP" | |
| echo "CXXFLAGS_DEFINES_COMMON=$CXXFLAGS_DEFINES_COMMON"       >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| echo "####################################################"   >> "$CONFIG_TMP" | |
| echo "###   SPECIFIC compilation flags -- CHOOSE ONE   ###"   >> "$CONFIG_TMP" | |
| echo "####################################################"   >> "$CONFIG_TMP" | |
| 
 | |
| ############################################################################# | |
| # Output the various compilation cases. | |
| 
 | |
| if [ "$MODE" = OPT ] | |
| then | |
|   CXXFLAGS_DEFAULT="$CXXFLAGS_OPT" | |
| else | |
|   HASH_OPT="#" | |
| fi | |
| 
 | |
| if [ "$MODE" = DEBUG1 ] | |
| then | |
|   CXXFLAGS_DEFAULT="$CXXFLAGS_DEBUG1 $CXXFLAGS_DEFINES_DEBUG1" | |
| else | |
|   HASH_DEBUG1="#" | |
| fi | |
| 
 | |
| if [ "$MODE" = DEBUG2 ] | |
| then | |
|   CXXFLAGS_DEFAULT="$CXXFLAGS_DEBUG2 $CXXFLAGS_DEFINES_DEBUG2" | |
| else | |
|   HASH_DEBUG2="#" | |
| fi | |
| 
 | |
| if [ "$MODE" = PROFILE ] | |
| then | |
|   CXXFLAGS_DEFAULT="$CXXFLAGS_PROFILE" | |
| else | |
|   HASH_PROFILE="#" | |
| fi | |
| 
 | |
| 
 | |
| echo "### Case (1): compile optimized and without debugging"  >> "$CONFIG_TMP" | |
| echo "$HASH_OPT CXXFLAGS_SPECIFIC=$CXXFLAGS_OPT"              >> "$CONFIG_TMP" | |
| 
 | |
| echo "### Case (2): compile with debugging activated"         >> "$CONFIG_TMP" | |
| echo "$HASH_DEBUG1 CXXFLAGS_SPECIFIC=$CXXFLAGS_DEBUG1"        >> "$CONFIG_TMP" | |
| echo "$HASH_DEBUG1 CXXFLAGS_DEFINES_SPECIFIC=$CXXFLAGS_DEFINES_DEBUG1" >> "$CONFIG_TMP" | |
| 
 | |
| echo "### Case (3): compile with full debugging activated"    >> "$CONFIG_TMP" | |
| echo "$HASH_DEBUG2 CXXFLAGS_SPECIFIC=$CXXFLAGS_DEBUG2"        >> "$CONFIG_TMP" | |
| echo "$HASH_DEBUG2 CXXFLAGS_DEFINES_SPECIFIC=$CXXFLAGS_DEFINES_DEBUG2" >> "$CONFIG_TMP" | |
| 
 | |
| 
 | |
| echo "### Case (4): compile with profiling activated"         >> "$CONFIG_TMP" | |
| echo "$HASH_PROFILE CXXFLAGS_SPECIFIC=$CXXFLAGS_PROFILE"      >> "$CONFIG_TMP" | |
| 
 | |
| 
 | |
| echo                                                          >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| echo "# Actual compilation flags:"                            >> "$CONFIG_TMP" | |
| echo "CXXFLAGS=\$(CXXFLAGS_COMMON) \$(CXXFLAGS_SPECIFIC)"     >> "$CONFIG_TMP" | |
| echo "CXXFLAGS_DEFINES=\$(CXXFLAGS_DEFINES_COMMON) \$(CXXFLAGS_DEFINES_SPECIFIC)" >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| echo "######################################################" >> "$CONFIG_TMP" | |
| echo "# These variables were set by the configure script."    >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| echo "CXX=$CXX"                                               >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| 
 | |
| # Add appropriate definitions to the config file, and version number in a comment. | |
| echo "# We use the following GMP installation:"               >> "$CONFIG_TMP" | |
| echo "GMP_VERSION=$GMP_VERSION"                               >> "$CONFIG_TMP" | |
| 
 | |
| if [ $HAVE_DEFAULT_GMP = "no" ] | |
| then | |
|   echo "GMP_LIB=\$(EXTLIBS)/lib/libgmp-symlink.a"             >> "$CONFIG_TMP" | |
|   echo "GMP_LDLIB=-lgmp-symlink"                              >> "$CONFIG_TMP" | |
|   if [ $HAVE_GMPXX = "yes" ] | |
|   then | |
|     echo "GMPXX_LIB=\$(EXTLIBS)/lib/libgmpxx-symlink.a"       >> "$CONFIG_TMP" | |
|     echo "GMPXX_LDLIB=-lgmpxx-symlink"                        >> "$CONFIG_TMP" | |
|   fi | |
| else | |
|   echo "GMP_LDLIB=-lgmp"                                      >> "$CONFIG_TMP" | |
|   if [ $HAVE_GMPXX = "yes" ] | |
|   then | |
|     echo "GMPXX_LDLIB=-lgmpxx"                                >> "$CONFIG_TMP" | |
|   fi | |
| fi | |
| ####  echo "GMP_INC_DIR=\"$GMP_INC_DIR\""                         >> "$CONFIG_TMP" | |
|   ## Anna-20090515:  !!WARNING!! -isystem option did not work on my G4 | |
| ####  echo "GMP_INCLUDE=-isystem \$(GMP_INC_DIR)"                 >> "$CONFIG_TMP" | |
| 
 | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| 
 | |
| echo "HAVE_QMAKE=$HAVE_QMAKE"                                 >> "$CONFIG_TMP" | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # If BOOST libraries are present, put them in CONFIG file; otherwise | |
| # unset BOOST_INC_DIR & BOOST_LIBS | |
| echo "# BOOST settings:"                                      >> "$CONFIG_TMP" | |
| echo "HAVE_BOOST=$HAVE_BOOST"                                 >> "$CONFIG_TMP" | |
| ####if [ $HAVE_BOOST = "no" ] | |
| ####then | |
| ####else | |
| ####  echo "BOOST_INC_DIR=\"$BOOST_INC_DIR\""                 >> "$CONFIG_TMP" | |
| ####  echo "BOOST_INCLUDE=-isystem \$(BOOST_INC_DIR)"         >> "$CONFIG_TMP" | |
| ####  echo "BOOST_LIBS=-L\"$BOOST_LIB_DIR\" $BOOST_LIBS"      >> "$CONFIG_TMP" | |
|   echo "BOOST_LDLIBS=$BOOST_LDLIBS"                           >> "$CONFIG_TMP" | |
| ####fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| 
 | |
| ################################################################## | |
| # settings for optional external libs | |
| 
 | |
| echo "OPTIONAL external libraries:" | |
| 
 | |
| # READLINE | |
| echo "# READLINE settings:"                                   >> "$CONFIG_TMP" | |
| echo "HAVE_READLINE=$HAVE_READLINE"                           >> "$CONFIG_TMP" | |
| echo "HAVE_READLINE = $HAVE_READLINE   $READLINE_LIB" | |
| if [ $HAVE_READLINE = "yes" ] | |
| then | |
|   echo "READLINE_LDLIBS=$READLINE_LIB"                        >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # CDD | |
| echo "# CDD settings:"                                        >> "$CONFIG_TMP" | |
| echo "HAVE_CDD=$HAVE_CDD"                                     >> "$CONFIG_TMP" | |
| echo "HAVE_CDD      = $HAVE_CDD   $CDD_LIB" | |
| if [ $HAVE_CDD = "yes" ] | |
| then | |
|   echo "CDD_LIBS=\$(EXTLIBS)/lib/libcddgmp-symlink.a"         >> "$CONFIG_TMP" | |
|   echo "CDD_LDLIBS=-lcddgmp-symlink"                          >> "$CONFIG_TMP" | |
|   echo "CDD_VERSION="                                         >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # FROBBY | |
| echo "# FROBBY settings:"                                     >> "$CONFIG_TMP" | |
| echo "HAVE_FROBBY=$HAVE_FROBBY"                               >> "$CONFIG_TMP" | |
| echo "HAVE_FROBBY   = $HAVE_FROBBY   $FROBBY_LIB" | |
| if [ $HAVE_FROBBY = "yes" ] | |
| then | |
|   # Recall that GMPXX_LIB is the libgmpxx.a library | |
|   echo "FROBBY_LIBS=\$(EXTLIBS)/lib/libfrobby-symlink.a \$(GMPXX_LIB)" >> "$CONFIG_TMP" | |
|   echo "FROBBY_LDLIBS=-lfrobby-symlink"                       >> "$CONFIG_TMP" | |
|   echo "FROBBY_VERSION="                                      >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # GFAN | |
| echo "# GFAN settings:"                                       >> "$CONFIG_TMP" | |
| echo "HAVE_GFAN=$HAVE_GFAN"                                   >> "$CONFIG_TMP" | |
| echo "HAVE_GFAN     = $HAVE_GFAN   $GFAN_LIB" | |
| if [ $HAVE_GFAN = "yes" ] | |
| then | |
|   echo "GFAN_LIBS=\$(EXTLIBS)/lib/libgfan-symlink.a"          >> "$CONFIG_TMP" | |
|   echo "GFAN_LDLIBS=-lgfan-symlink"                           >> "$CONFIG_TMP" | |
|   echo "GFAN_VERSION="                                        >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # GSL | |
| echo "# GSL settings:"                                        >> "$CONFIG_TMP" | |
| echo "HAVE_GSL=$HAVE_GSL"                                     >> "$CONFIG_TMP" | |
| echo "HAVE_GSL      = $HAVE_GSL   $GSL_LIB" | |
| if [ $HAVE_GSL = "yes" ] | |
| then | |
| ####  echo "GSL_INC_DIR=\"$GSL_INC_DIR\""                     >> "$CONFIG_TMP" | |
| ####  echo "GSL_INCLUDE=-I \$(GSL_INC_DIR)"                   >> "$CONFIG_TMP" | |
|   echo "GSL_LIBS=\$(EXTLIBS)/lib/libgsl-symlink.a"            >> "$CONFIG_TMP" | |
|   echo "GSL_LDLIBS=-lgsl-symlink -lblas -llapack"             >> "$CONFIG_TMP" | |
|   echo "GSL_VERSION="                                         >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # NORMALIZ | |
| echo "# Normaliz settings:"                                   >> "$CONFIG_TMP" | |
| echo "HAVE_NORMALIZ=$HAVE_NORMALIZ"                           >> "$CONFIG_TMP" | |
| echo "HAVE_NORMALIZ = $HAVE_NORMALIZ   $NORMALIZ_LIB" | |
| if [ $HAVE_NORMALIZ = "yes" ] | |
| then | |
|   # Recall that GMPXX_LIB is the libgmpxx.a library | |
|   echo "NORMALIZ_LIBS=\$(EXTLIBS)/lib/libnormaliz-symlink.a \$(GMPXX_LIB)" >> "$CONFIG_TMP" | |
|   echo "NORMALIZ_LDLIBS=-lnormaliz-symlink"                   >> "$CONFIG_TMP" | |
|   echo "NORMALIZ_VERSION="                                    >> "$CONFIG_TMP" | |
| fi | |
| echo                                                          >> "$CONFIG_TMP" | |
| 
 | |
| # ### list of libraries | |
| # ### moved here from "fixed_part2"  AMB 01/09/2015 | |
| echo "LDLIBS=$LDFPIC \$(COCOA_LIB) -L\$(EXTLIBS)/lib  \$(FROBBY_LDLIBS)  \$(GFAN_LDLIBS)  \$(CDD_LDLIBS)  \$(GSL_LDLIBS)  \$(NORMALIZ_LDLIBS)  \$(GMPXX_LDLIB)  \$(GMP_LDLIB)  \$(SOCKET_LIB)  \$(BOOST_LDLIBS)  \$(READLINE_LDLIBS)" >> "$CONFIG_TMP" | |
| 
 | |
| ################################################################## | |
| # Some platforms need a special library to use sockets. | |
| 
 | |
| OSNAME=`uname` | |
| if [ "$OSNAME" = "SunOS" ] | |
| then | |
|   SOCKET_LIB="-lsocket -lnsl" | |
| fi | |
| 
 | |
| if [ -n "$SOCKET_LIB" ] | |
| then | |
|   echo "SOCKET_LIB=$SOCKET_LIB"                               >> "$CONFIG_TMP" | |
| fi | |
| 
 | |
| 
 | |
| ################################################################## | |
| # Append the second fixed part to $CONFIG_TMP, then rename to $CONFIG_FILE | |
| 
 | |
| /bin/cat "$CONFIG_DIR/fixed_part2"                            >> "$CONFIG_TMP" | |
| /bin/mv "$CONFIG_TMP" "$CONFIG_FILE" | |
| 
 | |
| ################################################################## | |
| # Configuration completed successfully.  Print final message. | |
| 
 | |
| # Removing .last-makedepend forces a rebuild of the dependencies files | |
| # (necessary e.g. if we change versions of external libs) | |
| /bin/rm -f .last-makedepend | |
| 
 | |
| echo | |
| echo "-------------------------------------------------------" | |
| echo "CoCoALib configuration process complete." | |
| echo "Configuration info saved in file $CONFIG_FILE" | |
| if [ -n "$WARNINGS" ] | |
| then | |
|   echo "=======================================================" | |
|   echo "**WARNINGS**  $WARNINGS" | |
| fi | |
| echo "-------------------------------------------------------"
 |