Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 145 | 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 n ot 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/MIKRO ]; then  | 
        ||
| 120 | cd $startdir/MIKRO  | 
        ||
| 121 | rm -f $startdir/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/camac_gui_windowed ]; then  | 
        ||
| 131 | mkdir $startdir/camac_gui_windowed  | 
        ||
| 132 | mkdir $startdir/camac_gui_windowed/results  | 
        ||
| 133 | echo "Copying source files to temporary directory $startdir/camac_gui_windowed..."  | 
        ||
| 134 | cp -r configure daq.h daqscope.h GuiLinkDef.h libxxusb.cpp root_include.h README start.cxx windowed_test.C windowed_test.h wusbcc.h wusbxx_dll.c wusbxx_dll.h mpod/ MIKRO/ vxi11_x86_64/ vxi11_i686/ input/ fieldpoint/ ./camac_gui_windowed/  | 
        ||
| 135 | cd $startdir/camac_gui_windowed  | 
        ||
| 136 | echo "Cleaning the base directory in $startdir/camac_gui_windowed..."  | 
        ||
| 137 | rm -f *.bakc  | 
        ||
| 138 | cd $startdir/camac_gui_windowed/input  | 
        ||
| 139 | echo "Cleaning the input directory in $startdir/camac_gui_windowed/input..."  | 
        ||
| 140 | rm -f *.bak  | 
        ||
| 141 | cd $startdir/camac_gui_windowed/vxi11_x86_64  | 
        ||
| 142 | echo "Cleaning the 64 bit VXI11 directory in $startdir/camac_gui_windowed/vxi11_x86_64..."  | 
        ||
| 143 | rm -f *.bak  | 
        ||
| 144 | make clean  | 
        ||
| 145 | cd $startdir/camac_gui_windowed/vxi11_i686  | 
        ||
| 146 | echo "Cleaning the 32 bit VXI11 directory in $startdir/camac_gui_windowed/vxi11_i686..."  | 
        ||
| 147 | rm -f *.bak  | 
        ||
| 148 | make clean  | 
        ||
| 149 | cd $startdir  | 
        ||
| 150 | echo "Creating a tar-ball camac_gui_windowed.tar.gz..."  | 
        ||
| 151 | tar czf $startdir/camac_gui_windowed.tar.gz ./camac_gui_windowed  | 
        ||
| 152 | echo "Removing the temporary directory $startdir/camac_gui_windowed..."  | 
        ||
| 153 | rm -r $startdir/camac_gui_windowed  | 
        ||
| 154 | exit 0  | 
        ||
| 155 | else  | 
        ||
| 156 | errorecho "Error! Directory ./camac_gui_windowed already exists."  | 
        ||
| 157 | exit 1  | 
        ||
| 158 | fi  | 
        ||
| 159 | fi  | 
        ||
| 160 | |||
| 161 | # Configure the workstation information and directory of program (0 if we find something and 1 otherwise)  | 
        ||
| 162 | basedir=$(echo $startdir | sed 's/\//\\\//g')  | 
        ||
| 163 | |||
| 164 | if [ "$1" == "nomake" ] || [ "$1" == "all" ]; then  | 
        ||
| 165 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then  | 
        ||
| 166 | # Setting up the current working computer  | 
        ||
| 167 | grep -q "#define WORKSTAT 'N'" $startdir/input/workstation.h.in  | 
        ||
| 168 | if [ $? == 0 ]; then  | 
        ||
| 169 | sed "s/define WORKSTAT 'N'/define WORKSTAT '$2'/" $startdir/input/workstation.h.in > $startdir/input/workstation.h.mid  | 
        ||
| 170 | fi  | 
        ||
| 171 | grep -q "#define rootdir \"path-to-installation\"" $startdir/input/workstation.h.in  | 
        ||
| 172 | if [ $? == 0 ]; then  | 
        ||
| 173 | sed "s/path-to-installation/$basedir/g" $startdir/input/workstation.h.mid > $startdir/input/workstation.h.mid2  | 
        ||
| 174 | rm $startdir/input/workstation.h.mid  | 
        ||
| 175 | fi  | 
        ||
| 176 | # Check if we are connected to IJS network  | 
        ||
| 177 | etnet=$(ifconfig | grep "178.172.43.")  | 
        ||
| 178 | if [ "$etnet" == "" ]; then  | 
        ||
| 179 | sed "s/define IJSNET 1/define IJSNET 0/" $startdir/input/workstation.h.mid2 > $startdir/workstation.h  | 
        ||
| 180 | rm $startdir/input/workstation.h.mid2  | 
        ||
| 181 | else  | 
        ||
| 182 | cp $startdir/input/workstation.h.mid2 $startdir/workstation.h  | 
        ||
| 183 | rm $startdir/input/workstation.h.mid2  | 
        ||
| 184 | fi  | 
        ||
| 185 | # Setting up the OS type specific files  | 
        ||
| 186 | grep -q "#include \"vxi11_user.h\"" $startdir/input/daqscope.C.in  | 
        ||
| 187 | if [ $? == 0 ]; then  | 
        ||
| 188 | sed "s/vxi11_user.h/.\/vxi11_$ostype\/vxi11_user.h/g" $startdir/input/daqscope.C.in > $startdir/daqscope.C  | 
        ||
| 189 | fi  | 
        ||
| 190 | grep -q "SHLIB = \$(LIBFILE) libvxi11.a" $startdir/input/Makefile.in  | 
        ||
| 191 | if [ $? == 0 ]; then  | 
        ||
| 192 | if [ "$2" == "I" ]; then  | 
        ||
| 193 | sed "s/SHLIB = \$(LIBFILE) libvxi11.a/SHLIB = \$(LIBFILE) libvxi11.a -lusb/g" $startdir/input/Makefile.in > $startdir/Makefile.mid  | 
        ||
| 194 | fi  | 
        ||
| 195 | fi  | 
        ||
| 196 | grep -q "CAMLIB = \$(LIBFILE)" $startdir/input/Makefile.in  | 
        ||
| 197 | if [ $? == 0 ]; then  | 
        ||
| 198 | if [ "$2" == "I" ]; then  | 
        ||
| 199 | sed "s/CAMLIB = \$(LIBFILE)/CAMLIB = \$(LIBFILE) -lusb/g" $startdir/Makefile.mid > $startdir/Makefile.mid2  | 
        ||
| 200 | rm $startdir/Makefile.mid  | 
        ||
| 201 | elif [ "$2" == "O" ] || [ "$2" == "S" ]; then  | 
        ||
| 202 | cp $startdir/input/Makefile.in $startdir/Makefile.mid2  | 
        ||
| 203 | fi  | 
        ||
| 204 | fi  | 
        ||
| 205 | sed "s/OSTYPE=none/OSTYPE=$ostype/g" $startdir/Makefile.mid2 > $startdir/Makefile  | 
        ||
| 206 | rm $startdir/Makefile.mid2  | 
        ||
| 207 | |||
| 208 | if [ "$2" == "O" ] || [ "$2" == "S" ]; then  | 
        ||
| 209 | cp $startdir/input/daqusb.C.offline $startdir/daqusb.C  | 
        ||
| 210 | cp $startdir/input/libxxusb.h.offline $startdir/libxxusb.h  | 
        ||
| 211 | cp $startdir/input/usb.h.offline $startdir/usb.h  | 
        ||
| 212 | elif [ "$2" == "I" ]; then  | 
        ||
| 213 | cp $startdir/input/daqusb.C.online $startdir/daqusb.C  | 
        ||
| 214 | cp $startdir/input/libxxusb.h.online $startdir/libxxusb.h  | 
        ||
| 215 | fi  | 
        ||
| 216 | |||
| 217 | echo "#!/bin/bash" > $startdir/start.sh  | 
        ||
| 218 | echo "dir=\`dirname \$0\`" >> $startdir/start.sh  | 
        ||
| 219 | echo "" >> $startdir/start.sh  | 
        ||
| 220 | echo "snmpdirectory=$snmpdirectory" >> $startdir/start.sh  | 
        ||
| 221 | echo "rootdirectory=$rootdirectory" >> $startdir/start.sh  | 
        ||
| 222 | echo "" >> $startdir/start.sh  | 
        ||
| 223 | cat $startdir/input/start.sh.in >> $startdir/start.sh  | 
        ||
| 224 | chmod a+x $startdir/start.sh  | 
        ||
| 225 | fi  | 
        ||
| 226 | fi  | 
        ||
| 227 | |||
| 228 | # In case we just want to set the workstation information, exit here  | 
        ||
| 229 | if [ "$1" == "nomake" ]; then  | 
        ||
| 230 | exit 0  | 
        ||
| 231 | fi  | 
        ||
| 232 | |||
| 233 | # 64 bit configuration rules  | 
        ||
| 234 | if [ $ostype == "x86_64" ]; then  | 
        ||
| 235 | vxidir=$startdir/vxi11_$ostype  | 
        ||
| 236 | if [ -d $vxidir ]; then  | 
        ||
| 237 | cd $vxidir  | 
        ||
| 238 | if [ "$1" == "clean" ]; then  | 
        ||
| 239 | make clean  | 
        ||
| 240 | cd $startdir  | 
        ||
| 241 | make clean  | 
        ||
| 242 | rm -f Makefile  | 
        ||
| 243 | else  | 
        ||
| 244 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then  | 
        ||
| 245 | make  | 
        ||
| 246 | else  | 
        ||
| 247 | errorecho "Error! No configuration type selected (second argument)."  | 
        ||
| 248 | echo ""  | 
        ||
| 249 | helptext  | 
        ||
| 250 | exit 1  | 
        ||
| 251 | fi  | 
        ||
| 252 | fi  | 
        ||
| 253 | cd $startdir  | 
        ||
| 254 | else  | 
        ||
| 255 | errorecho "No 64 bit VXI11 source folder."  | 
        ||
| 256 | exit 1  | 
        ||
| 257 | fi  | 
        ||
| 258 | # 32 bit configuration rules  | 
        ||
| 259 | elif [ $ostype == "i686" ]; then  | 
        ||
| 260 | vxidir=$startdir/vxi11_$ostype  | 
        ||
| 261 | if [ -d $vxidir ]; then  | 
        ||
| 262 | cd $vxidir  | 
        ||
| 263 | if [ "$1" == "clean" ]; then  | 
        ||
| 264 | make clean  | 
        ||
| 265 | cd $startdir  | 
        ||
| 266 | make clean  | 
        ||
| 267 | rm -f Makefile  | 
        ||
| 268 | else  | 
        ||
| 269 | if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then  | 
        ||
| 270 | make  | 
        ||
| 271 | else  | 
        ||
| 272 | errorecho "Error! No installation type selected (second argument)."  | 
        ||
| 273 | echo ""  | 
        ||
| 274 | helptext  | 
        ||
| 275 | exit 1  | 
        ||
| 276 | fi  | 
        ||
| 277 | fi  | 
        ||
| 278 | cd $startdir  | 
        ||
| 279 | else  | 
        ||
| 280 | errorecho "No 32 bit VXI11 source folder."  | 
        ||
| 281 | exit 1  | 
        ||
| 282 | fi  | 
        ||
| 283 | else  | 
        ||
| 284 | errorecho "No OS type information found."  | 
        ||
| 285 | exit 1  | 
        ||
| 286 | fi  | 
        ||
| 287 | fi  | 
        ||
| 288 | |||
| 289 | exit 0  |