Merge branch 'minas' into charm
[charm.git] / build
1 #!/bin/sh
2
3 # Silly shorthand, used for source reorganization
4 src="src/arch"
5
6 more=0
7
8 syntax() {
9   echo ''
10   echo 'Usage: build <target> <version> <options> [charmc-options ...]'
11   echo ''
12   echo '<targets>: converse charm++ LIBS AMPI FEM bigemulator pose jade msa'
13   echo '<targets>: doc ps-doc pdf-doc html-doc'
14   if test $more = 1
15   then
16   echo ''
17   echo '  charm++         compile Charm++ core only'
18   echo '  AMPI            compile Adaptive MPI on top of Charm++'
19   echo '  FEM             compile FEM framework'
20   echo '  LIBS            compile additional parallel libraries with Charm++ core'
21   echo '  bigemulator     build additional BigSim libraries'
22   echo '  pose            build POSE parallel discrete event simulator'
23   echo '  jade            build Jade compiler (auto-builds charm++, msa)'
24   echo '  msa             build Multiphase Shared Arrays(MSA) library'
25   echo '  Tau             build the TAU tracing library for generating TAU performance data' 
26   echo '  ChaNGa          compile Charm++ core and necessary libraries for ChaNGa'
27   echo ''
28   fi
29   echo '<versions>: ' 
30   ( cd $src ; ls -1 | egrep -v '(^CVS)|(^shmem$)|(^mpi$)|(^sim$)|(^net$)|(^multicore$)|(^elan$)|(^util$)|(^common$)|(^uth$)|(^conv-mach-fix.sh$)|(^win32$)|(^win64$)|(^paragon$)|(^vmi$)|(^lapi$)|(^cell$)|(^template$)|(^cuda$)' | pr -3 -t )
31   echo ''
32   echo '<options>: compiler and platform specific options'
33   echo 'cc cc64 cxx kcc pgcc acc icc ecc gcc3 gcc4 mpcc pathscale'
34   echo 'help smp gm tcp vmi scyld clustermatic bigemulator ooc syncft mlogft causalft papi'
35   echo 'pthreads lam'
36   echo '--incdir --libdir --basedir --no-build-shared --destination --suffix -j'
37   if test $more = 1
38   then
39   echo ''
40   echo 'For platform specific options, use help option:'
41   echo '  help            platform specific help, e.g. ./build charm++ net-linux-x86_64 help'
42   echo ''
43   echo 'Choose a compiler (only one option is allowed from this section):'
44   echo '  cc, cc64        For Sun WorkShop C++ 32/64 bit compilers'
45   echo '  cxx             DIGITAL C++ compiler (DEC Alpha)'
46   echo '  kcc             KAI C++ compiler'
47   echo "  pgcc            Portland Group's C++ compiler"
48   echo '  acc             HP aCC compiler'
49   echo '  icc             Intel C/C++ compiler for Linux IA32'
50   echo '  ecc             Intel C/C++ compiler for Linux IA64'
51   echo '  gcc3            use gcc3 - GNU GCC/G++ version 3'
52   echo '  gcc4            use gcc4 - GNU GCC/G++ version 4 (only mpi-crayxt3)'
53   echo '  mpcc            SUN Solaris C++ compiler for MPI'
54   echo '  pathscale       use pathscale compiler suite'
55   echo ''
56   echo 'Choose a fortran compile (only one option is allowed from this section):'
57   echo '  g95             G95 at http://ww.g95.org'
58   echo '  absoft          Absoft fortran compiler'
59   echo "  pgf90           Portland Group\'s Fortran compiler"
60   echo '  ifc             Intel Fortran compiler (older versions)'
61   echo '  ifort           Intel Fortran compiler (newer versions)'
62   echo ''
63   echo 'Platform specific options (choose multiple if apply):'
64   echo '  lam             Use LAM MPI'
65   echo '  smp             support for SMP, multithreaded charm on each node'
66   echo '  mpt             use SGI Message Passing Toolkit (only for mpi version)'
67   echo '  gm              use Myrinet for communication'
68   echo '  tcp             use TCP sockets for communication (only for net version)'
69   echo '  ibverbs         use the Infiniband OpenIB layer for communication (only for net-linux-x86_64 currently)'
70   echo "  vmi             use NCSA's VMI for communication (only for mpi version)"
71   echo '  scyld           compile for Scyld Beowulf cluster based on bproc'
72   echo '  clustermatic    compile for Clustermatic (support version 3 and 4) '
73   echo '  pthreads        compile with pthreads Converse threads'
74   echo ''
75   echo 'Advanced options:'
76   echo '  bigemulator     compile for BigSim simulator'
77   echo '  ooc             compile with out of core support'
78   echo '  syncft          compile with Charm++ fault tolerance support'
79   echo '  mlogft          compile with Charm++ message logging fault tolerance support'
80   echo '  papi            compile with PAPI performance counter support (if any)'
81   echo ''
82   echo "Charm++ dynamic libraries:"
83   echo "  --build-shared     build Charm++ dynamic libraries (.so) (default)"
84   echo "  --no-build-shared  don't build Charm++'s shared libraries"
85   echo ''
86   echo 'Miscellaneous options:'
87   echo '  --incdir=DIR       specify additional include path for compiler'
88   echo '  --libdir=DIR       specify additional lib path for compiler'
89   echo '  --basedir=DIR      shortcut for the above two - DIR/include and DIR/lib'
90   echo '  -j[N]              parallel make, N is the number of paralle make jobs'
91   echo "  --with-romio       build AMPI with ROMIO library"
92   echo "  --with-production  build Charm++ with all optimizations for maximum performance"
93   echo "  --destination=DIR  build Charm++ inside DIR, by default the destination is <version>"
94   echo "  --suffix=DIR       append DIR to the destination directory of the Charm++ build"
95   echo "  --tau-makefile=FILE Specify which TAU stub makefile to use"
96   fi
97   echo ''
98   echo '<charmc-options>: normal compiler options e.g. -g -O -save -verbose'
99   if test $more = 1
100   then
101   echo ''
102   echo 'Examples:'
103   echo "1. display all supported options for net-linux-x86_64 using 'help':"
104   echo '  ./build charm++ net-linux-x86_64 help'
105   echo '2. compile Charm++ on Linux with optimizations:'
106   echo '  ./build charm++ net-linux-x86_64 -O -DCMK_OPTIMIZE'
107   echo '3. compile Charm++ for Linux (32bit) clustermatic Beowulf cluster with Intel compiler:'
108   echo '  ./build charm++ net-linux clustermatic icc -O'
109   echo '4. compile Charm++ for IA64 Linux cluster with MPICH-GM:'
110   echo '  ./build charm++ mpi-linux-ia64 gm -O'
111   echo '5. compile Charm++ for Windows with VC++ (Cygwin required):'
112   echo '  ./build charm++ net-win32 -O'
113   echo '6. compile on IBM SP with MPI using parallel gmake, 4 jobs simultaneously:'
114   echo '  MAKE=gmake  ./build charm++ mpi-sp -j4 -O            # sh'
115   echo '  setenv MAKE gmake;  ./build charm++ mpi-sp -j4 -O    # csh'
116   echo '7. compile Charm++ with MPI that is installed at /usr/local/mpich:'
117   echo '  ./build charm++ mpi-linux --incdir /usr/local/mpich/include --libdir /usr/local/mpich/lib -O'
118   echo '   or in short,'
119   echo '  ./build charm++ mpi-linux --basedir /usr/local/mpich -O'
120   echo '  ./build Tau --tau-makefile=/usr/local/packages/TAU/x86_64/lib/Makefile.tau-mpi'
121   echo ''
122   echo 'Note: This script:'
123   echo ' 1. Creates directories <destination> and <destination>/tmp'
124   echo ' 2. Copies src/scripts/Makefile into <destination>/tmp'
125   echo ' 3. Does a "make basics" in <destination>/tmp.'
126   echo ' 3. Does a "make -jN <target> <version> OPTS=<charmc-options>" in <destination>/tmp.'
127   echo "That's all build does.  The rest is handled by the Makefile."
128   echo ''
129   echo 'Thank you for using Charm++, please send questions or comments to '
130   echo 'Parallel Programming Lab at University of Illinois at Urbana-Champaign'
131   echo '(email: charm@cs.uiuc.edu).'
132
133   else
134   echo ''
135   echo "To get more detailed help, run ./build --help"
136   fi
137 }
138
139 Echo() {
140     [ "x$QUIET" = "x--quiet" ] || echo $*
141 }
142
143 printOption() {
144   for prefix in cc conv-mach
145   do
146     str="Supported compilers:"
147     [ "$prefix" = "conv-mach" ] && str="Supported options:"
148     opts=""
149     for dir in $OPT_DIRS
150     do
151 #         echo "Checking for $prefix in $dir"
152           files=`cd $dir; ls $prefix-*.h 2>/dev/null`
153           opts="$opts "`echo $files | sed 's/'$prefix'-\([^.]*\).h/\1/g'`
154     done 
155     tmp=.tmp.$$
156     rm -f $tmp; touch $tmp
157     for o in $opts
158     do
159       echo $o >> $tmp
160     done
161     opts=`sort $tmp | uniq`
162     rm -f $tmp
163     echo $str $opts
164   done
165   exit 1
166 }
167
168 CheckDir() {
169   for d in $*
170   do
171     if test ! -d $d
172     then
173       echo Error: cannot find $d!
174       exit 1
175     fi
176   done
177 }
178
179 TestIfCompiler() {
180   for dir in $OPT_DIRS
181   do
182     [ -f $dir/cc-$1.sh ] && return 1
183   done  
184   return 0
185 }
186
187 TestIfOption() {
188   for dir in $OPT_DIRS
189   do
190     [ -f $dir/conv-mach-$1.h ] && return 1 
191   done
192   
193   echo "Error> option: $1 is not supported in this version!"; 
194   printOption
195 }
196
197
198 # start
199
200 MAKEOPTS=""
201 OPTS=""
202 BOPTS=""
203 MORE=""
204 COMPILER=""
205 BASEDIR=
206 LIBDIR=
207 INCDIR=
208 ARCH=
209 BUILD_SHARED=
210 WITH_ROMIO=
211 WITH_PRODUCTION=
212 BUILD_EMULATOR=0
213 DESTINATION=""
214 DESTINATION_SUFFIX=""
215 TAU_MAKEFILE=""
216 QUIET=""
217
218 [ "$1" = '--help' -o "$1" = '-h' ] && more=1 && syntax | more && exit 1
219 [ $# -lt 2 ] && ./smart-build.pl && exit 1
220 PROGRAM=$1
221 shift
222 VERSION=$1; BASEVERSION=$1; 
223 if test -f $src/$BASEVERSION/vdir_link
224 then
225   BASEVERSION=`cat $src/$BASEVERSION/vdir_link`
226 fi
227 ARCH=`echo $1 | sed -e 's@-.*@@'`
228 shift
229
230 #echo $src
231 #echo $BASEVERSION
232 #echo $ARCH
233
234 OPT_DIRS="$src/$BASEVERSION $src/$ARCH $src/common"
235
236 while [ ! $# -eq 0 ]
237 do
238   case "$1" in
239     "--basedir")
240                 shift; 
241                 for dir in $1
242                 do
243                   CheckDir $dir/include $dir/lib
244                   LIBDIR="$LIBDIR -L$dir/lib";
245                   INCDIR="$INCDIR -I$dir/include"
246                 done
247                 shift
248                 ;;
249     --basedir=*)
250                 basedir=`echo $1 | awk -F= '{print $2}'`
251                 for dir in $basedir
252                 do
253                   CheckDir $dir/include $dir/lib
254                   LIBDIR="$LIBDIR -L$dir/lib";
255                   INCDIR="$INCDIR -I$dir/include"
256                 done
257                 shift
258                 ;;
259     "--libdir")
260                 shift; CheckDir $1
261                 for dir in $1
262                 do
263                   LIBDIR="$LIBDIR -L$dir"; 
264                 done
265                 shift
266                 ;;
267     --libdir=*)
268                 libdir=`echo $1 | awk -F= '{print $2}'`
269                 CheckDir $libdir
270                 for dir in $libdir
271                 do
272                   LIBDIR="$LIBDIR -L$dir"; 
273                 done
274                 shift
275                 ;;
276     "--incdir")
277                 shift; CheckDir $1
278                 for dir in $1
279                 do
280                   INCDIR="$INCDIR -I$dir"; 
281                 done
282                 shift
283                 ;;
284     --incdir=*)
285                 incdir=`echo $1 | awk -F= '{print $2}'`
286                 CheckDir $incdir
287                 for dir in $incdir
288                 do
289                   INCDIR="$INCDIR -I$dir"; 
290                 done
291                 shift
292                 ;;
293     --no-build-shared|-nobs|--no-shared)
294                 BUILD_SHARED="-nobs"; shift
295                 ;;
296     --with-romio)
297                 WITH_ROMIO="true"; shift
298                 ;;
299     --with-production)
300                 WITH_PRODUCTION="true" 
301                 shift
302                 ;;
303     --with-*)
304                 CONFIG_OPTS="$CONFIG_OPTS $1"
305                 shift
306                 ;;
307     --without-*)
308                 CONFIG_OPTS="$CONFIG_OPTS $1"
309                 shift
310                 ;;
311     --build-shared|-bs)
312                 # obsolete, do nothing
313                 shift
314                 ;;
315     --destination)
316                 shift
317                 DESTINATION="$1"
318                 shift
319                 ;;
320     --destination=*)
321                 DESTINATION="`echo $1 | awk -F= '{print $2}'`"
322                 shift
323                 ;;
324     --suffix)
325                 shift
326                 DESTINATION_SUFFIX="$1"
327                 shift
328                 ;;
329     --suffix=*)
330                 DESTINATION_SUFFIX="`echo $1 | awk -F= '{print $2}'`"
331                 shift
332                 ;;
333     --tau-makefile)
334                 TAU_MAKEFILE=$1
335                 shift
336                 ;;
337     --tau-makefile=*)
338                 TAU_MAKEFILE=`echo $1 | awk -F= '{print $2}'`
339                 shift
340                 ;;
341     --quiet)
342                 MAKEOPTS="$MAKEOPTS --quiet"
343                 QUIET="--quiet"
344                 shift;
345                 ;;
346     --enable-tracing|--enable-tracing=*)
347                 CONFIG_OPTS="$CONFIG_OPTS $1"
348                 ENABLE_TRACING=yes
349                 shift
350                 ;;
351     --enable-*)
352                 CONFIG_OPTS="$CONFIG_OPTS $1"
353                 shift
354                 ;;
355     --disable-*)
356                 CONFIG_OPTS="$CONFIG_OPTS $1"
357                 shift
358                 ;;
359     -j*)
360                 PMAKENUM=`echo $1 | awk -Fj '{print $2}'`
361                 MAKEOPTS="$MAKEOPTS -j $PMAKENUM"
362                 shift;
363                 ;;
364     -*) 
365 # We hit a real compiler option (like -g, or -Dfoo),
366 # so just copy over all remaining options
367           while [ ! $# -eq 0 ]
368           do
369             OPTS="$OPTS $1"; shift
370           done
371           ;;
372     "help")
373         printOption
374         ;;
375     *)
376 # This has to be a build-time option (like "smp", "gcc3", or "kcc")
377         TestIfCompiler $1
378         if [ $? -eq 1 ] 
379         then
380 # It specifies a compiler:
381           if [ ! -z "$COMPILER" ] 
382           then
383               echo "Error> Tried to specify two compilers: $COMPILER and $1"
384               printOption
385           fi
386           COMPILER=$1
387         else
388 # It specifies some other option:
389           TestIfOption $1
390           BOPTS="$BOPTS $1"
391           [ $1 =  "bigemulator" ] && BUILD_EMULATOR=1
392           [ $1 =  "bigsim" ] && BUILD_EMULATOR=1
393         fi
394         shift
395         ;;
396   esac
397 done
398
399 [ "x$VERSION" = "x" ] && syntax && exit 1
400
401 if test -n "$WITH_PRODUCTION" -a $BUILD_EMULATOR -eq 1 -a -z "$ENABLE_TRACING"
402 then
403   echo "Error: bigemulator requires tracing modules, --with-production must be used with --enable-tracing"
404   exit 1
405 fi
406
407 if [ -z "$MAKE" ] 
408 then
409   # prefer gmake
410   MAKE=`which gmake 2>/dev/null`
411   [ -z "$MAKE" -o ! -x "$MAKE" ] && MAKE='make'
412 fi
413
414 if [ ! -f $src/$BASEVERSION/conv-mach.h ] 
415 then
416   if [ "x_$BASEVERSION" = "x_net-rs6k" ]
417   then
418     echo "Error> build net-aix-ppc instead of net-rs6k!" 
419   else
420     echo "Error> build can not find arch: $BASEVERSION!" 
421   fi
422   exit 1
423 fi
424
425 #generate VERSION name combining all the build-time options.
426 if [ -n "$BOPTS" -o -n "$COMPILER" ]
427 then
428   echo "Selected Compiler: $COMPILER"
429   echo "Selected Options: $BOPTS"
430   SORTED=`echo $BOPTS | awk  '{ for (i = 1; i <= NF; ++i) print $i }' | sort`
431   BOPTS_WITHCOMPILER=`echo $SORTED $COMPILER`
432   for i in $BOPTS_WITHCOMPILER
433   do
434     VERSION=$VERSION-$i
435   done
436 fi
437
438 #echo "|$DESTINATION|$DESTINATION_SUFFIX|"
439
440 if [ -z "$DESTINATION" ]
441 then
442   DESTINATION="$VERSION"
443 fi
444
445 if [ -n "$DESTINATION_SUFFIX" ]
446 then
447   DESTINATION="$DESTINATION-$DESTINATION_SUFFIX"
448 fi
449
450 [ -d $DESTINATION ] || Echo "Creating dir: $DESTINATION"
451 [ -d $DESTINATION ] || mkdir $DESTINATION
452 [ -d $DESTINATION/tmp ] || Echo "Creating dir: $DESTINATION/tmp"
453 [ -d $DESTINATION/tmp ] || mkdir $DESTINATION/tmp
454
455 Echo "Copying src/scripts/Makefile to $DESTINATION/tmp"
456 rm -f $DESTINATION/tmp/Makefile
457 rm -f $DESTINATION/tmp/Make.depends
458 rm -f $DESTINATION/tmp/Make.lb
459 rm -f $DESTINATION/tmp/Make.machine
460
461
462 # Create the bin, lib, include, etc. links:
463 WINNAME=`echo $VERSION | awk -F- '{print $2}'`
464 if [ "x_$WINNAME" = "x_win32" -o "x_$WINNAME" = "x_win64" ]
465 then
466 #Win32/64 version needs special compilers and *copied* (not linked)
467 # source files.
468         echo "Copying compilers for $WINNAME into cygwin /bin directory"
469         cp -f $src/$WINNAME/unix2nt* /bin
470         cp $src/win32/system_ln $DESTINATION/tmp
471         cp $src/win32/unistd.h $DESTINATION/tmp
472         echo "Compiling createlink.cpp ..."
473         (cd $src/win32; unix2nt_cc  -c createlink.cpp -o createlink.o -D_WIN32_WINNT=0x0500; unix2nt_cc createlink.o)
474         if test ! -x $src/win32/createlink.exe
475         then
476                 echo "VC++ is not properly installed!"
477                 exit 1
478         fi
479         echo "Copying $src/win32/createlink.exe to /bin directory"
480         cp $src/win32/createlink.exe /bin
481         chmod +x $DESTINATION/tmp/system_ln
482 else
483         cat > $DESTINATION/tmp/system_ln <<EOF
484 #!/bin/sh
485 ln -f -s \$@
486 EOF
487   chmod +x $DESTINATION/tmp/system_ln
488   for newdir in `echo bin lib lib_so include tmp`
489   do
490     Echo "Soft-linking over $newdir"
491     if [ -r $newdir ]
492     then
493       rm -fr $newdir || exit 1
494     fi
495     $DESTINATION/tmp/system_ln $DESTINATION/$newdir $newdir
496   done
497   rm -f VERSION
498   $DESTINATION/tmp/system_ln $DESTINATION/include/VERSION VERSION
499 fi
500
501 $DESTINATION/tmp/system_ln "../../src/scripts/Make.depends" $DESTINATION/tmp/Make.depends
502 $DESTINATION/tmp/system_ln "../../src/ck-ldb/Make.lb" $DESTINATION/tmp/Make.lb
503 $DESTINATION/tmp/system_ln "../../src/scripts/Makefile" $DESTINATION/tmp/Makefile
504 $DESTINATION/tmp/system_ln "../../src/scripts/Make.tau" $DESTINATION/tmp/Make.tau
505 touch $DESTINATION/tmp/Makefile.machine
506
507 ConvUsr="$DESTINATION/tmp/conv-mach-pre.sh"
508 Echo "Generating $ConvUsr"
509 echo > $ConvUsr
510 if test -n "$LIBDIR" 
511 then
512   echo 'USER_OPTS_LD="$USER_OPTS_LD '$LIBDIR'"' >> $ConvUsr
513   echo 'USER_OPTS_LDXX="$USER_OPTS_LDXX '$LIBDIR'"' >> $ConvUsr
514 fi
515 if test -n "$INCDIR" 
516 then
517   echo 'USER_OPTS_CC="$USER_OPTS_CC '$INCDIR'"' >> $ConvUsr
518   echo 'USER_OPTS_CXX="$USER_OPTS_CXX '$INCDIR'"' >> $ConvUsr
519 fi
520 chmod +x $ConvUsr
521
522 # Create conv-mach-opt headers with special build-time options
523 ConvHeader="$DESTINATION/tmp/conv-mach-opt.h"
524 ConvSh="$DESTINATION/tmp/conv-mach-opt.sh"
525 if [ ! -f $ConvSh -o ! -f $ConvHeader ]
526 then
527   Echo "Generating $ConvHeader, conv-mach-opt.sh"
528   echo '/* Build-time options header, automatically generated by charm/build*/'> $ConvHeader
529   echo '# Built-time options header, automatically generated by charm/build'> $ConvSh
530   echo '[ -z "$CHARMINC" ] && CHARMINC="."' >> $ConvSh
531 fi
532 if test -n "$COMPILER"
533 then
534       i="$COMPILER"
535       echo '#include "'cc-$i.h'"' >> $ConvHeader
536       echo '. $CHARMINC/'"cc-$i.sh" >> $ConvSh
537 fi
538 if test -n "$BOPTS"
539 then
540     for i in $BOPTS
541     do
542       echo '#include "'conv-mach-$i.h'"' >> $ConvHeader
543       echo '. $CHARMINC/'"conv-mach-$i.sh" >> $ConvSh
544     done
545 fi
546
547 if test  -n "$BUILD_SHARED" 
548 then
549     echo "CMK_NO_BUILD_SHARED=true" >> $ConvSh
550 fi
551
552 if test  -n "$WITH_ROMIO" 
553 then
554     echo "CMK_AMPI_WITH_ROMIO=\"true\"" >> $ConvSh
555 fi
556
557 if test -n "$WITH_PRODUCTION"
558 then
559     echo '#define CMK_OPTIMIZE 1' >> $ConvHeader
560     # Prepend optimize so that an explicit -no-optimize still works
561     OPTS="-optimize $OPTS"
562     CONFIG_OPTS="--disable-tracing --disable-charmdebug --disable-replay --disable-error-checking $CONFIG_OPTS"
563 fi
564
565 # build with Tau
566 WITH_TAU=0
567 if [ "$PROGRAM" = "Tau" ]
568 then
569         Echo "TAU>>>> makefile config option: $TAU_MAKEFILE"
570         if [ -n "$TAU_MAKEFILE" -a -f $TAU_MAKEFILE ]
571         then
572           #Setting up TAU trace library:
573           Echo "TAU>>>> configuring with this TAU makefile: $TAU_MAKEFILE"
574
575           WITH_TAU=1
576         else
577           Echo "TAU>>>> ERROR could not find Makefile: $TAU_MAKEFILE, ignored"
578           TAU_MAKEFILE=""
579         fi
580 fi
581 [ -z "$TAU_MAKEFILE" ] && TAU_MAKEFILE="Make.tau"
582 SED_CHARMC="s@TAU_MAKEFILE=\(.*\)@TAU_MAKEFILE=$TAU_MAKEFILE@"
583
584 sed -e $SED_CHARMC src/scripts/Makefile > .Makefile.$$ && cp .Makefile.$$ src/scripts/Makefile && rm -f  .Makefile.$$
585 sed -e $SED_CHARMC src/scripts/charmc > .charmc.$$ && cp .charmc.$$ src/scripts/charmc && rm -f .charmc.$$
586
587 if test $WITH_TAU -eq 1
588 then
589     echo "#define CMK_WITH_TAU               1" >> $ConvHeader
590     echo "#define pthread_create             tau_pthread_create" >> $ConvHeader
591     echo "#define pthread_exit               tau_pthread_exit" >> $ConvHeader
592
593     echo "CMK_WITH_TAU=\"true\"" >> $ConvSh
594 fi
595
596
597 echo $BASEVERSION > $DESTINATION/tmp/.vdir
598 echo $VERSION | sed -e 's@-.*@@' > $DESTINATION/tmp/.gdir
599
600 if test $BUILD_EMULATOR = 1
601 then
602   PROGRAM="$PROGRAM bigsim"
603 #  CONFIG_OPTS="--disable-charmdebug $CONFIG_OPTS"
604 fi
605
606 printError()
607 {
608         Echo "-------------------------------------------------"
609         Echo "Charm++ NOT BUILT. Either cd into $DESTINATION/tmp and try"
610         Echo "to resolve the problems yourself, visit"
611         Echo "    http://charm.cs.uiuc.edu/"
612         Echo "for more information. Otherwise, email the developers at charm@cs.uiuc.edu"
613         exit $MAKEEXIT
614 }
615
616 echo 'BUILDOPTS="'$OPTS'"'  >> $ConvSh
617
618 Echo "Performing '$MAKE $MAKEOPTS basics OPTS="$OPTS" QUIET="$QUIET" CONFIG_OPTS="$CONFIG_OPTS"' in $DESTINATION/tmp"
619 cd $DESTINATION/tmp 
620 echo "CONFIG_OPTS=\"$CONFIG_OPTS\"" > config_opts.sh
621 chmod +x config_opts.sh
622 $MAKE $MAKEOPTS basics OPTS="$OPTS $BUILD_SHARED" QUIET="$QUIET"
623 MAKEEXIT=$?
624 [ $MAKEEXIT -ne 0 ] && printError
625
626 Echo "Performing '$MAKE $MAKEOPTS $PROGRAM OPTS="$OPTS" QUIET="$QUIET"' in $DESTINATION/tmp"
627 $MAKE $MAKEOPTS $PROGRAM OPTS="$OPTS $BUILD_SHARED" QUIET="$QUIET"
628 MAKEEXIT=$?
629 if [ $MAKEEXIT -eq 0 ]
630 then
631         Echo "-------------------------------------------------"
632         Echo "$PROGRAM built successfully."
633         Echo "Next, try out a sample program like" \
634              "$DESTINATION/tests/charm++/simplearrayhello"
635 else
636         printError
637 fi