scripts/bootstrap.sh
author Peter Kovacs <kpeter@inf.elte.hu>
Fri, 13 Nov 2009 00:10:33 +0100
changeset 815 aef153f430e1
parent 747 a42f46828cc1
child 850 e77b621e6e7e
permissions -rwxr-xr-x
Entirely rework cycle canceling algorithms (#180)

- Move the cycle canceling algorithms (CycleCanceling, CancelAndTighten)
into one class (CycleCanceling).
- Add a Method parameter to the run() function to be able to select
the used cycle canceling method.
- Use the new interface similarly to NetworkSimplex.
- Rework the implementations using an efficient internal structure
for handling the residual network.
This improvement made the codes much faster.
- Handle GEQ supply type (LEQ is not supported).
- Handle infinite upper bounds.
- Handle negative costs (for arcs of finite upper bound).
- Extend the documentation.
     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 COIN_OR_PREFIX /usr/local/coin-or \
    48     "# COIN-OR installation root prefix (used for CLP/CBC)"
    49 
    50 augment_config SOPLEX_PREFIX /usr/local/soplex \
    51     "# Soplex build prefix"
    52 
    53 
    54 function ask() {
    55 echo -n "$1 [$2]? "
    56 read _an
    57 if [ "x$_an" == "x" ]; then
    58     ret="$2"
    59 else
    60     ret=$_an
    61 fi
    62 }
    63 
    64 function yesorno() {
    65     ret='rossz'
    66     while [ "$ret" != "y" -a "$ret" != "n" -a "$ret" != "yes" -a "$ret" != "no" ]; do
    67         ask "$1" "$2"
    68     done
    69     if [ "$ret" != "y" -a "$ret" != "yes" ]; then
    70         return 1
    71     else
    72         return 0
    73     fi
    74 }
    75 
    76 if yesorno "External build" "n"
    77 then
    78     CONFIGURE_PATH=".."
    79 else
    80     CONFIGURE_PATH="."
    81     if yesorno "Autoreconf" "y"
    82     then
    83         AUTORE=yes
    84     else
    85         AUTORE=no
    86     fi
    87 fi
    88 
    89 if yesorno "Optimize" "n" 
    90 then
    91     opt_flags=' -O2'
    92 else
    93     opt_flags=''
    94 fi
    95 
    96 if yesorno "Stop on warning" "y" 
    97 then
    98     werror_flags=' -Werror'
    99 else
   100     werror_flags=''
   101 fi
   102 
   103 cxx_flags="CXXFLAGS=-ggdb$opt_flags$werror_flags"
   104 
   105 if yesorno "Check with valgrind" "n" 
   106 then
   107     valgrind_flags=' --enable-valgrind'
   108 else
   109     valgrind_flags=''
   110 fi
   111 
   112 if [ -f ${COIN_OR_PREFIX}/include/coin/config_coinutils.h ]; then
   113     if yesorno "Use COIN-OR (CBC/CLP)" "n"
   114     then
   115         coin_flag="--with-coin=$COIN_OR_PREFIX"
   116     else
   117         coin_flag=""
   118     fi
   119 else
   120     coin_flag=""        
   121 fi
   122 
   123 if [ -f ${SOPLEX_PREFIX}/src/soplex.h ]; then
   124     if yesorno "Use Soplex" "n"
   125     then
   126         soplex_flag="--with-soplex=$SOPLEX_PREFIX"
   127     else
   128         soplex_flag=""
   129     fi
   130 else
   131     soplex_flag=""
   132 fi
   133 
   134 if [ "x$AUTORE" == "xyes" ]; then
   135     autoreconf -vif;
   136 fi
   137 ${CONFIGURE_PATH}/configure --prefix=$LEMON_INSTALL_PREFIX \
   138 $valgrind_flags \
   139 "$cxx_flags" \
   140 $coin_flag \
   141 $soplex_flag \
   142 $*