scripts/bootstrap.sh
changeset 1184 3c00344f49c9
parent 794 313d58f9e544
equal deleted inserted replaced
3:b555b0f8bed8 -1:000000000000
     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 $*