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 $* |
|