Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 146 | f9daq | 1 | #!/bin/bash |
| 2 | |||
| 3 | function colorecho |
||
| 4 | { |
||
| 5 | echo -e$2 "\033[33m$1\033[39m" |
||
| 6 | } |
||
| 7 | |||
| 8 | function errorecho |
||
| 9 | { |
||
| 10 | echo -e "\031[33m$1\033[39m" |
||
| 11 | } |
||
| 12 | |||
| 13 | function helptext() |
||
| 14 | { |
||
| 15 | colorecho "#------------------------------" |
||
| 16 | colorecho "# Configure instructions: -----" |
||
| 17 | colorecho "#------------------------------" |
||
| 18 | colorecho "" |
||
| 19 | colorecho "./configure [option] [type] [install directories] [ostype]" |
||
| 20 | colorecho "" |
||
| 21 | colorecho "[option] = Option for configure:" |
||
| 22 | colorecho " help Display configure instructions." |
||
| 23 | colorecho " nomake Only prepare system dependent files (base directory and online/offline mode)." |
||
| 24 | colorecho " all Prepare system dependent files and make used libraries." |
||
| 25 | colorecho " clean Clean the installation directory. Does not clean the results directory." |
||
| 26 | colorecho " compress Compress the source code in a tar-ball." |
||
| 27 | colorecho "" |
||
| 28 | colorecho "[type] = Configure for use in online or offline mode (only needed in nomake and all):" |
||
| 29 | colorecho " I Online mode." |
||
| 30 | colorecho " O Offline mode (no connection to CAMAC, motor, voltage supply and scope)." |
||
| 31 | colorecho " S Offline mode with scope connection (no connection to CAMAC, motor and voltage supply)." |
||
| 32 | colorecho "" |
||
| 33 | colorecho "[install directories] = Directories where ROOT and NET-SNMP are installed (when running with superuser, this is important, otherwise optional):" |
||
| 34 | colorecho " --root-install=/root/install/directory" |
||
| 35 | colorecho " --snmp-install=/snmp/install/directory" |
||
| 36 | colorecho "" |
||
| 37 | colorecho "[ostype] = Specific setting for 64bit or 32bit version of OS (optional):" |
||
| 38 | colorecho " --ostype=i686 32bit OS type" |
||
| 39 | colorecho " --ostype=x86_64 64bit OS type" |
||
| 40 | colorecho "" |
||
| 41 | colorecho "Example:" |
||
| 42 | colorecho " ./configure all I --root-install=/home/user/root --snmp-install=/home/user/snmp" |
||
| 43 | colorecho "" |
||
| 44 | colorecho "#------------------------------" |
||
| 45 | } |
||
| 46 | |||
| 47 | # Check for arguments |
||
| 48 | if [ "$1" == "" ]; then |
||
| 49 | errorecho "Error! No arguments supplied." |
||
| 50 | echo "" |
||
| 51 | helptext |
||
| 52 | exit 1 |
||
| 53 | else |
||
| 54 | # When using help, only display help and then exit |
||
| 55 | if [ "$1" == "help" ]; then |
||
| 56 | helptext |
||
| 57 | exit 0 |
||
| 58 | fi |
||
| 59 | |||
| 60 | # Print help and exit if we give a wrong first argument |
||
| 61 | if [ "$1" != "nomake" ] && [ "$1" != "all" ] && [ "$1" != "clean" ] && [ "$1" != "compress" ]; then |
||
| 62 | errorecho "Error! Wrong configuration option selected (first argument)." |
||
| 63 | echo "" |
||
| 64 | helptext |
||
| 65 | exit 1 |
||
| 66 | fi |
||
| 67 | |||
| 68 | startdir=$PWD |
||
| 69 | |||
| 70 | # Check for ROOT and NET-SNMP install directories and for OS type |
||
| 71 | snmpsearch="--snmp-install=" |
||
| 72 | rootsearch="--root-install=" |
||
| 73 | ossearch="--ostype=" |
||
| 74 | snmpdirectory=-1 |
||
| 75 | rootdirectory=-1 |
||
| 76 | osmanual=-1 |
||
| 77 | for var in $@ |
||
| 78 | do |
||
| 79 | case $var in |
||
| 80 | "$snmpsearch"*) |
||
| 81 | snmpdirectory=${var#$snmpsearch} |
||
| 82 | echo "NET-SNMP directory: $snmpdirectory";; |
||
| 83 | "$rootsearch"*) |
||
| 84 | rootdirectory=${var#$rootsearch} |
||
| 85 | echo "ROOT directory: $rootdirectory";; |
||
| 86 | "$ossearch"*) |
||
| 87 | osmanual=${var#$ossearch};; |
||
| 88 | *) ;; |
||
| 89 | esac |
||
| 90 | done |
||
| 91 | |||
| 92 | # If not supplied, check automatically for OS type |
||
| 93 | if [ $osmanual == -1 ]; then |
||
| 94 | ostype=`uname -p` |
||
| 95 | if [ "$ostype" != "x86_64" ] && [ "$ostype" != "i686" ]; then |
||
| 96 | ostype=`uname -i` |
||
| 97 | if [ "$ostype" != "x86_64" ] && [ "$ostype" != "i686" ]; then |
||
| 98 | ostype=`uname -m` |
||
| 99 | fi |
||
| 100 | fi |
||
| 101 | else |
||
| 102 | ostype=$osmanual |
||
| 103 | fi |
||
| 104 | |||
| 105 | # Check for installation directory of ROOT - if variables not currently set, remind user to set them before running make |
||
| 106 | if [ "$1" != "clean" ] && [ "$1" != "compress" ]; then |
||
| 107 | if [ $rootdirectory != -1 ]; then |
||
| 108 | printenv ROOTSYS > /dev/null |
||
| 109 | if [ $? != 0 ]; then |
||
| 110 | colorecho "ROOT environment variables not set. Please run \"source $rootdirectory/bin/thisroot.sh\", before using make." |
||
| 111 | fi |
||
| 112 | else |
||
| 113 | colorecho "Before running make, please make sure ROOT environment variables are set." |
||
| 114 | fi |
||
| 115 | fi |
||
| 116 | |||
| 117 | # Compiles the table microcontroller program |
||
| 118 | if [ "$1" == "all" ]; then |
||
| 119 | if [ -d $startdir/src/MIKRO ]; then |
||
| 120 | cd $startdir/src/MIKRO |
||
| 121 | rm -f $startdir/src/MIKRO/mikro_ctrl |
||
| 122 | make |
||
| 123 | cd $startdir |
||
| 124 | fi |
||
| 125 | fi |
||
| 126 | |||
| 127 | # When using compress, only create a tar-ball and then exit |
||
| 128 | if [ "$1" == "compress" ]; then |
||
| 129 | cd $startdir |
||
| 130 | if [ ! -d $startdir/sipmscan_trunk ]; then |
||
| 131 | mkdir $startdir/sipmscan_trunk |
||
| 132 | mkdir $startdir/sipmscan_trunk/results |
||
| 133 | mkdir $startdir/sipmscan_trunk/layout |
||
| 134 | mkdir $startdir/sipmscan_trunk/settings |
||
| 135 | echo "Copying files to temporary directory $startdir/sipmscan_trunk..." |
||
| 136 | cp -r configure ./dict ./doc ./include ./input ./src ./sipmscan_trunk/ |
||
| 137 | cp -r ./layout/default.layout ./sipmscan_trunk/layout/ |
||
| 138 | echo "default.layout" > ./sipmscan_trunk/layout/selected_layout.txt |
||
| 139 | # TODO - Settings default files |
||
| 140 | cd $startdir/sipmscan_trunk |
||
| 141 | echo "Cleaning the base directory in $startdir/sipmscan_trunk..." |
||
| 142 | rm -f ./*.bak |
||
| 143 | echo "Cleaning the subdirectories of $startdir/sipmscan_trunk..." |
||
| 144 | rm -f ./*/*.bak |
||
| 145 | cd $startdir/sipmscan_trunk/src |
||
| 146 | rm -f ./*/*.bak |
||
| 147 | cd $startdir/sipmscan_trunk/include/vxi11_x86_64 |
||
| 148 | echo "Cleaning the 64 bit VXI11 directory in $startdir/sipmscan_trunk/include/vxi11_x86_64..." |
||
| 149 | rm -f ./*.bak |
||
| 150 | make clean |
||
| 151 | cd $startdir/sipmscan_trunk/include/vxi11_i686 |
||
| 152 | echo "Cleaning the 32 bit VXI11 directory in $startdir/sipmscan_trunk/include/vxi11_i686..." |
||
| 153 | rm -f ./*.bak |
||
| 154 | make clean |
||
| 155 | cd $startdir |
||
| 156 | echo "Creating a tar-ball sipmscan_trunk.tar.gz..." |
||
| 157 | tar czf $startdir/sipmscan_trunk.tar.gz ./sipmscan_trunk |
||
| 158 | echo "Removing the temporary directory $startdir/sipmscan_trunk..." |
||
| 159 | rm -fr $startdir/sipmscan_trunk |
||
| 160 | exit 0 |
||
| 161 | else |
||
| 162 | errorecho "Error! Directory ./sipmscan_trunk already exists." |
||
| 163 | exit 1 |
||
| 164 | fi |
||
| 165 | fi |
||
| 166 | |||
| 167 | # Configure the workstation information and directory of program (0 if we find something and 1 otherwise) |
||
| 168 | basedir=$(echo $startdir | sed 's/\//\\\//g') |
||
| 169 | |||
| 170 | if [ "$1" == "nomake" ] || [ "$1" == "all" ]; then |
||
| 171 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then |
||
| 172 | # Setting up the current working computer |
||
| 173 | grep -q "#define WORKSTAT 'N'" $startdir/input/workstation.h.in |
||
| 174 | if [ $? == 0 ]; then |
||
| 175 | sed "s/define WORKSTAT 'N'/define WORKSTAT '$2'/" $startdir/input/workstation.h.in > $startdir/input/workstation.h.mid |
||
| 176 | fi |
||
| 177 | grep -q "#define rootdir \"path-to-installation\"" $startdir/input/workstation.h.in |
||
| 178 | if [ $? == 0 ]; then |
||
| 179 | sed "s/path-to-installation/$basedir/g" $startdir/input/workstation.h.mid > $startdir/input/workstation.h.mid2 |
||
| 180 | rm $startdir/input/workstation.h.mid |
||
| 181 | fi |
||
| 182 | # Check if we are connected to IJS network |
||
| 183 | etnet=$(ifconfig | grep "178.172.43.") |
||
| 184 | if [ "$etnet" == "" ]; then |
||
| 185 | sed "s/define IJSNET 1/define IJSNET 0/" $startdir/input/workstation.h.mid2 > $startdir/include/workstation.h |
||
| 186 | rm $startdir/input/workstation.h.mid2 |
||
| 187 | else |
||
| 188 | cp $startdir/input/workstation.h.mid2 $startdir/include/workstation.h |
||
| 189 | rm $startdir/input/workstation.h.mid2 |
||
| 190 | fi |
||
| 191 | # Setting up the OS type specific files |
||
| 192 | grep -q "#include \"vxi11_user.h\"" $startdir/input/daqscope.C.in |
||
| 193 | if [ $? == 0 ]; then |
||
| 194 | sed "s/vxi11_user.h/..\/include\/vxi11_$ostype\/vxi11_user.h/g" $startdir/input/daqscope.C.in > $startdir/src/daqscope.C |
||
| 195 | fi |
||
| 196 | grep -q "SHLIB = \$(LIBFILE) \$(LDIR)\/libvxi11.a" $startdir/input/Makefile.in |
||
| 197 | if [ $? == 0 ]; then |
||
| 198 | if [ "$2" == "I" ]; then |
||
| 199 | sed "s/SHLIB = \$(LIBFILE) \$(LDIR)\/libvxi11.a/SHLIB = \$(LIBFILE) \$(LDIR)\/libvxi11.a -lusb/g" $startdir/input/Makefile.in > $startdir/Makefile.mid |
||
| 200 | fi |
||
| 201 | fi |
||
| 202 | grep -q "CAMLIB = \$(LIBFILE)" $startdir/input/Makefile.in |
||
| 203 | if [ $? == 0 ]; then |
||
| 204 | if [ "$2" == "I" ]; then |
||
| 205 | sed "s/CAMLIB = \$(LIBFILE)/CAMLIB = \$(LIBFILE) -lusb/g" $startdir/Makefile.mid > $startdir/Makefile.mid2 |
||
| 206 | rm $startdir/Makefile.mid |
||
| 207 | elif [ "$2" == "O" ] || [ "$2" == "S" ]; then |
||
| 208 | cp $startdir/input/Makefile.in $startdir/Makefile.mid2 |
||
| 209 | fi |
||
| 210 | fi |
||
| 211 | sed "s/OSTYPE=none/OSTYPE=$ostype/g" $startdir/Makefile.mid2 > $startdir/Makefile |
||
| 212 | rm $startdir/Makefile.mid2 |
||
| 213 | |||
| 214 | if [ "$2" == "O" ] || [ "$2" == "S" ]; then |
||
| 215 | cp $startdir/input/daqusb.C.offline $startdir/src/daqusb.C |
||
| 216 | cp $startdir/input/libxxusb.h.offline $startdir/include/libxxusb.h |
||
| 217 | cp $startdir/input/usb.h.offline $startdir/include/usb.h |
||
| 218 | elif [ "$2" == "I" ]; then |
||
| 219 | cp $startdir/input/daqusb.C.online $startdir/src/daqusb.C |
||
| 220 | cp $startdir/input/libxxusb.h.online $startdir/include/libxxusb.h |
||
| 221 | fi |
||
| 222 | |||
| 223 | echo "#!/bin/bash" > $startdir/start.sh |
||
| 224 | echo "dir=\`dirname \$0\`" >> $startdir/start.sh |
||
| 225 | echo "" >> $startdir/start.sh |
||
| 226 | echo "snmpdirectory=$snmpdirectory" >> $startdir/start.sh |
||
| 227 | echo "rootdirectory=$rootdirectory" >> $startdir/start.sh |
||
| 228 | echo "" >> $startdir/start.sh |
||
| 229 | cat $startdir/input/start.sh.in >> $startdir/start.sh |
||
| 230 | chmod ug+x $startdir/start.sh |
||
| 231 | fi |
||
| 232 | fi |
||
| 233 | |||
| 234 | # In case we just want to set the workstation information, exit here |
||
| 235 | if [ "$1" == "nomake" ]; then |
||
| 236 | exit 0 |
||
| 237 | fi |
||
| 238 | |||
| 239 | # 64 bit configuration rules |
||
| 240 | if [ $ostype == "x86_64" ]; then |
||
| 241 | vxidir=$startdir/include/vxi11_$ostype |
||
| 242 | if [ -d $vxidir ]; then |
||
| 243 | cd $vxidir |
||
| 244 | if [ "$1" == "clean" ]; then |
||
| 245 | make clean |
||
| 246 | cd $startdir |
||
| 247 | make clean |
||
| 248 | rm -f Makefile |
||
| 249 | else |
||
| 250 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then |
||
| 251 | make |
||
| 252 | else |
||
| 253 | errorecho "Error! No configuration type selected (second argument)." |
||
| 254 | echo "" |
||
| 255 | helptext |
||
| 256 | exit 1 |
||
| 257 | fi |
||
| 258 | fi |
||
| 259 | cd $startdir |
||
| 260 | else |
||
| 261 | errorecho "No 64 bit VXI11 source folder." |
||
| 262 | exit 1 |
||
| 263 | fi |
||
| 264 | # 32 bit configuration rules |
||
| 265 | elif [ $ostype == "i686" ]; then |
||
| 266 | vxidir=$startdir/include/vxi11_$ostype |
||
| 267 | if [ -d $vxidir ]; then |
||
| 268 | cd $vxidir |
||
| 269 | if [ "$1" == "clean" ]; then |
||
| 270 | make clean |
||
| 271 | cd $startdir |
||
| 272 | make clean |
||
| 273 | rm -f Makefile |
||
| 274 | else |
||
| 275 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then |
||
| 276 | make |
||
| 277 | else |
||
| 278 | errorecho "Error! No installation type selected (second argument)." |
||
| 279 | echo "" |
||
| 280 | helptext |
||
| 281 | exit 1 |
||
| 282 | fi |
||
| 283 | fi |
||
| 284 | cd $startdir |
||
| 285 | else |
||
| 286 | errorecho "No 32 bit VXI11 source folder." |
||
| 287 | exit 1 |
||
| 288 | fi |
||
| 289 | else |
||
| 290 | errorecho "No OS type information found." |
||
| 291 | exit 1 |
||
| 292 | fi |
||
| 293 | fi |
||
| 294 | |||
| 295 | exit 0 |