| [732] | 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 |  | 
|---|
| [850] | 47 | augment_config GLPK_PREFIX /usr/local/ \ | 
|---|
|  | 48 | "# GLPK installation root prefix" | 
|---|
|  | 49 |  | 
|---|
| [732] | 50 | augment_config COIN_OR_PREFIX /usr/local/coin-or \ | 
|---|
|  | 51 | "# COIN-OR installation root prefix (used for CLP/CBC)" | 
|---|
|  | 52 |  | 
|---|
| [747] | 53 | augment_config SOPLEX_PREFIX /usr/local/soplex \ | 
|---|
|  | 54 | "# Soplex build prefix" | 
|---|
|  | 55 |  | 
|---|
| [732] | 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 |  | 
|---|
| [794] | 108 | if yesorno "Check with valgrind" "n" | 
|---|
|  | 109 | then | 
|---|
|  | 110 | valgrind_flags=' --enable-valgrind' | 
|---|
|  | 111 | else | 
|---|
|  | 112 | valgrind_flags='' | 
|---|
|  | 113 | fi | 
|---|
|  | 114 |  | 
|---|
| [850] | 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 |  | 
|---|
| [747] | 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 | 
|---|
| [850] | 131 | coin_flag="--without-coin" | 
|---|
| [747] | 132 | fi | 
|---|
| [732] | 133 | else | 
|---|
| [850] | 134 | coin_flag="--without-coin" | 
|---|
| [732] | 135 | fi | 
|---|
|  | 136 |  | 
|---|
| [747] | 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 | 
|---|
| [850] | 142 | soplex_flag="--without-soplex" | 
|---|
| [747] | 143 | fi | 
|---|
|  | 144 | else | 
|---|
| [850] | 145 | soplex_flag="--without-soplex" | 
|---|
| [747] | 146 | fi | 
|---|
| [732] | 147 |  | 
|---|
|  | 148 | if [ "x$AUTORE" == "xyes" ]; then | 
|---|
|  | 149 | autoreconf -vif; | 
|---|
|  | 150 | fi | 
|---|
|  | 151 | ${CONFIGURE_PATH}/configure --prefix=$LEMON_INSTALL_PREFIX \ | 
|---|
| [794] | 152 | $valgrind_flags \ | 
|---|
| [732] | 153 | "$cxx_flags" \ | 
|---|
| [850] | 154 | $glpk_flag \ | 
|---|
| [732] | 155 | $coin_flag \ | 
|---|
| [747] | 156 | $soplex_flag \ | 
|---|
| [732] | 157 | $* | 
|---|