scripts/bootstrap.sh
author Alpar Juttner <alpar@cs.elte.hu>
Mon, 12 Oct 2009 15:37:13 +0100
changeset 751 f5f260a63a9b
parent 732 1f8ad32f088b
child 794 313d58f9e544
permissions -rwxr-xr-x
Merge bugfix in #250
     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 [ -f ${COIN_OR_PREFIX}/include/coin/config_coinutils.h ]; then
   106     if yesorno "Use COIN-OR (CBC/CLP)" "n"
   107     then
   108         coin_flag="--with-coin=$COIN_OR_PREFIX"
   109     else
   110         coin_flag=""
   111     fi
   112 else
   113     coin_flag=""        
   114 fi
   115 
   116 if [ -f ${SOPLEX_PREFIX}/src/soplex.h ]; then
   117     if yesorno "Use Soplex" "n"
   118     then
   119         soplex_flag="--with-soplex=$SOPLEX_PREFIX"
   120     else
   121         soplex_flag=""
   122     fi
   123 else
   124     soplex_flag=""
   125 fi
   126 
   127 if [ "x$AUTORE" == "xyes" ]; then
   128     autoreconf -vif;
   129 fi
   130 ${CONFIGURE_PATH}/configure --prefix=$LEMON_INSTALL_PREFIX \
   131 "$cxx_flags" \
   132 $coin_flag \
   133 $soplex_flag \
   134 $*