Subversion Repositories f9daq

Rev

Rev 127 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
117 f9daq 1
#!/bin/bash
2
 
129 f9daq 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
 
117 f9daq 13
function helptext()
14
{
129 f9daq 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 "#------------------------------"
117 f9daq 45
}
46
 
47
# Check for arguments
48
if [ "$1" == "" ]; then
129 f9daq 49
  errorecho "Error! No arguments supplied."
117 f9daq 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
129 f9daq 62
    errorecho "Error! Wrong configuration option selected (first argument)."
117 f9daq 63
    echo ""
64
    helptext
65
    exit 1
66
  fi
67
 
68
  startdir=$PWD
69
 
129 f9daq 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
117 f9daq 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..."
129 f9daq 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/
117 f9daq 135
      cd $startdir/camac_gui_windowed
136
      echo "Cleaning the base directory in $startdir/camac_gui_windowed..."
129 f9daq 137
      rm -f *.bakc
117 f9daq 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
129 f9daq 156
      errorecho "Error! Directory ./camac_gui_windowed already exists."
117 f9daq 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
127 f9daq 165
    if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then
129 f9daq 166
      # Setting up the current working computer
117 f9daq 167
      grep -q "#define WORKSTAT 'N'" $startdir/input/workstation.h.in
168
      if [ $? == 0 ]; then
129 f9daq 169
        sed "s/define WORKSTAT 'N'/define WORKSTAT '$2'/" $startdir/input/workstation.h.in > $startdir/input/workstation.h.mid
117 f9daq 170
      fi
171
      grep -q "#define rootdir \"path-to-installation\"" $startdir/input/workstation.h.in
172
      if [ $? == 0 ]; then
129 f9daq 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
117 f9daq 175
      fi
129 f9daq 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
117 f9daq 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
129 f9daq 199
	  sed "s/CAMLIB = \$(LIBFILE)/CAMLIB = \$(LIBFILE) -lusb/g" $startdir/Makefile.mid > $startdir/Makefile.mid2
117 f9daq 200
	  rm $startdir/Makefile.mid
127 f9daq 201
        elif [ "$2" == "O" ] || [ "$2" == "S" ]; then
129 f9daq 202
	  cp $startdir/input/Makefile.in $startdir/Makefile.mid2
117 f9daq 203
        fi
204
      fi
129 f9daq 205
      sed "s/OSTYPE=none/OSTYPE=$ostype/g" $startdir/Makefile.mid2 > $startdir/Makefile
206
      rm $startdir/Makefile.mid2
117 f9daq 207
 
127 f9daq 208
      if [ "$2" == "O" ] || [ "$2" == "S" ]; then
117 f9daq 209
        cp $startdir/input/daqusb.C.offline $startdir/daqusb.C
127 f9daq 210
	cp $startdir/input/libxxusb.h.offline $startdir/libxxusb.h
211
	cp $startdir/input/usb.h.offline $startdir/usb.h
117 f9daq 212
      elif [ "$2" == "I" ]; then
213
        cp $startdir/input/daqusb.C.online $startdir/daqusb.C
127 f9daq 214
	cp $startdir/input/libxxusb.h.online $startdir/libxxusb.h
117 f9daq 215
      fi
129 f9daq 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
117 f9daq 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
127 f9daq 244
        if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then
117 f9daq 245
          make
246
	else
129 f9daq 247
          errorecho "Error! No configuration type selected (second argument)."
117 f9daq 248
	  echo ""
249
	  helptext
250
	  exit 1
251
	fi
252
      fi
253
      cd $startdir
254
    else
129 f9daq 255
      errorecho "No 64 bit VXI11 source folder."
117 f9daq 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
127 f9daq 269
        if [ "$2" == "O" ] || [ "$2" == "I" ] || [ "$2" == "S" ]; then
117 f9daq 270
          make
271
	else
129 f9daq 272
          errorecho "Error! No installation type selected (second argument)."
117 f9daq 273
	  echo ""
274
	  helptext
275
	  exit 1
276
	fi
277
      fi
278
      cd $startdir
279
    else
129 f9daq 280
      errorecho "No 32 bit VXI11 source folder."
117 f9daq 281
      exit 1
282
    fi
283
  else
129 f9daq 284
    errorecho "No OS type information found."
117 f9daq 285
    exit 1
286
  fi
287
fi
288
 
289
exit 0