scripts/bootstrap.sh
author Peter Kovacs <kpeter@inf.elte.hu>
Sun, 22 Aug 2010 23:54:10 +0200
changeset 895 dca9eed2c375
parent 794 313d58f9e544
permissions -rwxr-xr-x
Improve the tree update process and a pivot rule (#391)
and make some parts of the code clearer using better names
     1 #!/bin/bash
     2 #
     3 # This file is a part of LEMON, a generic C++ optimization library.
     4 #
     5 # Copyright (C) 2003-2009
     6 # Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     7 # (Egervary Research Group on Combinatorial Optimization, EGRES).
     8 #
     9 # Permission to use, modify and distribute this software is granted
    10 # provided that this copyright notice appears in all copies. For
    11 # precise terms see the accompanying LICENSE file.
    12 #
    13 # This software is provided "AS IS" with no warranty of any kind,
    14 # express or implied, and with no claim as to its suitability for any
    15 # purpose.
    16 
    17 
    18 if [ ! -f ~/.lemon-bootstrap ]; then
    19     echo 'Create ~/.lemon-bootstrap'.
    20     cat >~/.lemon-bootstrap <<EOF
    21 #
    22 # Default settings for bootstraping the LEMON source code repository
    23 #
    24 EOF
    25 fi
    26 
    27 source ~/.lemon-bootstrap
    28 if [ -f ../../../.lemon-bootstrap ]; then source ../../../.lemon-bootstrap; fi
    29 if [ -f ../../.lemon-bootstrap ]; then source ../../.lemon-bootstrap; fi
    30 if [ -f ../.lemon-bootstrap ]; then source ../.lemon-bootstrap; fi
    31 if [ -f ./.lemon-bootstrap ]; then source ./.lemon-bootstrap; fi
    32 
    33 
    34 function augment_config() { 
    35     if [ "x${!1}" == "x" ]; then
    36         eval $1=$2
    37         echo Add "'$1'" to '~/.lemon-bootstrap'.
    38         echo >>~/.lemon-bootstrap
    39         echo $3 >>~/.lemon-bootstrap
    40         echo $1=$2 >>~/.lemon-bootstrap
    41     fi
    42 }
    43 
    44 augment_config LEMON_INSTALL_PREFIX /usr/local \
    45     "# LEMON installation prefix"
    46 
    47 augment_config GLPK_PREFIX /usr/local/ \
    48     "# GLPK installation root prefix"
    49 
    50 augment_config COIN_OR_PREFIX /usr/local/coin-or \
    51     "# COIN-OR installation root prefix (used for CLP/CBC)"
    52 
    53 augment_config SOPLEX_PREFIX /usr/local/soplex \
    54     "# Soplex build prefix"
    55 
    56 
    57 function ask() {
    58 echo -n "$1 [$2]? "
    59 read _an
    60 if [ "x$_an" == "x" ]; then
    61     ret="$2"
    62 else
    63     ret=$_an
    64 fi
    65 }
    66 
    67 function yesorno() {
    68     ret='rossz'
    69     while [ "$ret" != "y" -a "$ret" != "n" -a "$ret" != "yes" -a "$ret" != "no" ]; do
    70         ask "$1" "$2"
    71     done
    72     if [ "$ret" != "y" -a "$ret" != "yes" ]; then
    73         return 1
    74     else
    75         return 0
    76     fi
    77 }
    78 
    79 if yesorno "External build" "n"
    80 then
    81     CONFIGURE_PATH=".."
    82 else
    83     CONFIGURE_PATH="."
    84     if yesorno "Autoreconf" "y"
    85     then
    86         AUTORE=yes
    87     else
    88         AUTORE=no
    89     fi
    90 fi
    91 
    92 if yesorno "Optimize" "n" 
    93 then
    94     opt_flags=' -O2'
    95 else
    96     opt_flags=''
    97 fi
    98 
    99 if yesorno "Stop on warning" "y" 
   100 then
   101     werror_flags=' -Werror'
   102 else
   103     werror_flags=''
   104 fi
   105 
   106 cxx_flags="CXXFLAGS=-ggdb$opt_flags$werror_flags"
   107 
   108 if yesorno "Check with valgrind" "n" 
   109 then
   110     valgrind_flags=' --enable-valgrind'
   111 else
   112     valgrind_flags=''
   113 fi
   114 
   115 if [ -f ${GLPK_PREFIX}/include/glpk.h ]; then
   116     if yesorno "Use GLPK" "y"
   117     then
   118         glpk_flag="--with-glpk=$GLPK_PREFIX"
   119     else
   120         glpk_flag="--without-glpk"
   121     fi
   122 else
   123     glpk_flag="--without-glpk"        
   124 fi
   125 
   126 if [ -f ${COIN_OR_PREFIX}/include/coin/config_coinutils.h ]; then
   127     if yesorno "Use COIN-OR (CBC/CLP)" "n"
   128     then
   129         coin_flag="--with-coin=$COIN_OR_PREFIX"
   130     else
   131         coin_flag="--without-coin"
   132     fi
   133 else
   134     coin_flag="--without-coin"        
   135 fi
   136 
   137 if [ -f ${SOPLEX_PREFIX}/src/soplex.h ]; then
   138     if yesorno "Use Soplex" "n"
   139     then
   140         soplex_flag="--with-soplex=$SOPLEX_PREFIX"
   141     else
   142         soplex_flag="--without-soplex"
   143     fi
   144 else
   145     soplex_flag="--without-soplex"
   146 fi
   147 
   148 if [ "x$AUTORE" == "xyes" ]; then
   149     autoreconf -vif;
   150 fi
   151 ${CONFIGURE_PATH}/configure --prefix=$LEMON_INSTALL_PREFIX \
   152 $valgrind_flags \
   153 "$cxx_flags" \
   154 $glpk_flag \
   155 $coin_flag \
   156 $soplex_flag \
   157 $*