Merge commit 'charm/charm' into virtualDebug
[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     --build-shared|-bs)
304                 # obsolete, do nothing
305                 shift
306                 ;;
307     --destination)
308                 shift
309                 DESTINATION="$1"
310                 shift
311                 ;;
312     --destination=*)
313                 DESTINATION="`echo $1 | awk -F= '{print $2}'`"
314                 shift
315                 ;;
316     --suffix)
317                 shift
318                 DESTINATION_SUFFIX="$1"
319                 shift
320                 ;;
321     --suffix=*)
322                 DESTINATION_SUFFIX="`echo $1 | awk -F= '{print $2}'`"
323                 shift
324                 ;;
325     --tau-makefile)
326                 TAU_MAKEFILE=$1
327                 shift
328                 ;;
329     --tau-makefile=*)
330                 TAU_MAKEFILE=`echo $1 | awk -F= '{print $2}'`
331                 shift
332                 ;;
333     --quiet)
334                 MAKEOPTS="$MAKEOPTS --quiet"
335                 QUIET="--quiet"
336                 shift;
337                 ;;
338     --enable-tracing|--enable-tracing=*)
339                 CONFIG_OPTS="$CONFIG_OPTS $1"
340                 ENABLE_TRACING=yes
341                 shift
342                 ;;
343     --enable-*)
344                 CONFIG_OPTS="$CONFIG_OPTS $1"
345                 shift
346                 ;;
347     --disable-*)
348                 CONFIG_OPTS="$CONFIG_OPTS $1"
349                 shift
350                 ;;
351     -j*)
352                 PMAKENUM=`echo $1 | awk -Fj '{print $2}'`
353                 MAKEOPTS="$MAKEOPTS -j $PMAKENUM"
354                 shift;
355                 ;;
356     -*) 
357 # We hit a real compiler option (like -g, or -Dfoo),
358 # so just copy over all remaining options
359           while [ ! $# -eq 0 ]
360           do
361             OPTS="$OPTS $1"; shift
362           done
363           ;;
364     "help")
365         printOption
366         ;;
367     *)
368 # This has to be a build-time option (like "smp", "gcc3", or "kcc")
369         TestIfCompiler $1
370         if [ $? -eq 1 ] 
371         then
372 # It specifies a compiler:
373           if [ ! -z "$COMPILER" ] 
374           then
375               echo "Error> Tried to specify two compilers: $COMPILER and $1"
376               printOption
377           fi
378           COMPILER=$1
379         else
380 # It specifies some other option:
381           TestIfOption $1
382           BOPTS="$BOPTS $1"
383           [ $1 =  "bigemulator" ] && BUILD_EMULATOR=1
384           [ $1 =  "bigsim" ] && BUILD_EMULATOR=1
385         fi
386         shift
387         ;;
388   esac
389 done
390
391 [ "x$VERSION" = "x" ] && syntax && exit 1
392
393 if test -n "$WITH_PRODUCTION" -a $BUILD_EMULATOR -eq 1 -a -z "$ENABLE_TRACING"
394 then
395   echo "Error: bigemulator requires tracing modules, --with-production must be used with --enable-tracing"
396   exit 1
397 fi
398
399 if [ -z "$MAKE" ] 
400 then
401   # prefer gmake
402   MAKE=`which gmake 2>/dev/null`
403   [ -z "$MAKE" -o ! -x "$MAKE" ] && MAKE='make'
404 fi
405
406 if [ ! -f $src/$BASEVERSION/conv-mach.h ] 
407 then
408   if [ "x_$BASEVERSION" = "x_net-rs6k" ]
409   then
410     echo "Error> build net-aix-ppc instead of net-rs6k!" 
411   else
412     echo "Error> build can not find arch: $BASEVERSION!" 
413   fi
414   exit 1
415 fi
416
417 #generate VERSION name combining all the build-time options.
418 if [ -n "$BOPTS" -o -n "$COMPILER" ]
419 then
420   echo "Selected Compiler: $COMPILER"
421   echo "Selected Options: $BOPTS"
422   SORTED=`echo $BOPTS | awk  '{ for (i = 1; i <= NF; ++i) print $i }' | sort`
423   BOPTS_WITHCOMPILER=`echo $SORTED $COMPILER`
424   for i in $BOPTS_WITHCOMPILER
425   do
426     VERSION=$VERSION-$i
427   done
428 fi
429
430 #echo "|$DESTINATION|$DESTINATION_SUFFIX|"
431
432 if [ -z "$DESTINATION" ]
433 then
434   DESTINATION="$VERSION"
435 fi
436
437 if [ -n "$DESTINATION_SUFFIX" ]
438 then
439   DESTINATION="$DESTINATION-$DESTINATION_SUFFIX"
440 fi
441
442 [ -d $DESTINATION ] || Echo "Creating dir: $DESTINATION"
443 [ -d $DESTINATION ] || mkdir $DESTINATION
444 [ -d $DESTINATION/tmp ] || Echo "Creating dir: $DESTINATION/tmp"
445 [ -d $DESTINATION/tmp ] || mkdir $DESTINATION/tmp
446
447 Echo "Copying src/scripts/Makefile to $DESTINATION/tmp"
448 rm -f $DESTINATION/tmp/Makefile
449 rm -f $DESTINATION/tmp/Make.depends
450 rm -f $DESTINATION/tmp/Make.lb
451 rm -f $DESTINATION/tmp/Make.machine
452
453
454 # Create the bin, lib, include, etc. links:
455 WINNAME=`echo $VERSION | awk -F- '{print $2}'`
456 if [ "x_$WINNAME" = "x_win32" -o "x_$WINNAME" = "x_win64" ]
457 then
458 #Win32/64 version needs special compilers and *copied* (not linked)
459 # source files.
460         echo "Copying compilers for $WINNAME into cygwin /bin directory"
461         cp -f $src/$WINNAME/unix2nt* /bin
462         cp $src/win32/system_ln $DESTINATION/tmp
463         cp $src/win32/unistd.h $DESTINATION/tmp
464         echo "Compiling createlink.cpp ..."
465         (cd $src/win32; unix2nt_cc  -c createlink.cpp -o createlink.o -D_WIN32_WINNT=0x0500; unix2nt_cc createlink.o)
466         if test ! -x $src/win32/createlink.exe
467         then
468                 echo "VC++ is not properly installed!"
469                 exit 1
470         fi
471         echo "Copying $src/win32/createlink.exe to /bin directory"
472         cp $src/win32/createlink.exe /bin
473         chmod +x $DESTINATION/tmp/system_ln
474 else
475         cat > $DESTINATION/tmp/system_ln <<EOF
476 #!/bin/sh
477 ln -f -s \$@
478 EOF
479   chmod +x $DESTINATION/tmp/system_ln
480   for newdir in `echo bin lib lib_so include tmp`
481   do
482     Echo "Soft-linking over $newdir"
483     if [ -r $newdir ]
484     then
485       rm -fr $newdir || exit 1
486     fi
487     $DESTINATION/tmp/system_ln $DESTINATION/$newdir $newdir
488   done
489   rm -f VERSION
490   $DESTINATION/tmp/system_ln $DESTINATION/include/VERSION VERSION
491 fi
492
493 $DESTINATION/tmp/system_ln "../../src/scripts/Make.depends" $DESTINATION/tmp/Make.depends
494 $DESTINATION/tmp/system_ln "../../src/ck-ldb/Make.lb" $DESTINATION/tmp/Make.lb
495 $DESTINATION/tmp/system_ln "../../src/scripts/Makefile" $DESTINATION/tmp/Makefile
496 $DESTINATION/tmp/system_ln "../../src/scripts/Make.tau" $DESTINATION/tmp/Make.tau
497 touch $DESTINATION/tmp/Makefile.machine
498
499 ConvUsr="$DESTINATION/tmp/conv-mach-pre.sh"
500 Echo "Generating $ConvUsr"
501 echo > $ConvUsr
502 if test -n "$LIBDIR" 
503 then
504   echo 'USER_OPTS_LD="$USER_OPTS_LD '$LIBDIR'"' >> $ConvUsr
505   echo 'USER_OPTS_LDXX="$USER_OPTS_LDXX '$LIBDIR'"' >> $ConvUsr
506 fi
507 if test -n "$INCDIR" 
508 then
509   echo 'USER_OPTS_CC="$USER_OPTS_CC '$INCDIR'"' >> $ConvUsr
510   echo 'USER_OPTS_CXX="$USER_OPTS_CXX '$INCDIR'"' >> $ConvUsr
511 fi
512 chmod +x $ConvUsr
513
514 # Create conv-mach-opt headers with special build-time options
515 ConvHeader="$DESTINATION/tmp/conv-mach-opt.h"
516 ConvSh="$DESTINATION/tmp/conv-mach-opt.sh"
517 if [ ! -f $ConvSh -o ! -f $ConvHeader ]
518 then
519   Echo "Generating $ConvHeader, conv-mach-opt.sh"
520   echo '/* Build-time options header, automatically generated by charm/build*/'> $ConvHeader
521   echo '# Built-time options header, automatically generated by charm/build'> $ConvSh
522   echo '[ -z "$CHARMINC" ] && CHARMINC="."' >> $ConvSh
523 fi
524 if test -n "$COMPILER"
525 then
526       i="$COMPILER"
527       echo '#include "'cc-$i.h'"' >> $ConvHeader
528       echo '. $CHARMINC/'"cc-$i.sh" >> $ConvSh
529 fi
530 if test -n "$BOPTS"
531 then
532     for i in $BOPTS
533     do
534       echo '#include "'conv-mach-$i.h'"' >> $ConvHeader
535       echo '. $CHARMINC/'"conv-mach-$i.sh" >> $ConvSh
536     done
537 fi
538
539 if test  -n "$BUILD_SHARED" 
540 then
541     echo "CMK_NO_BUILD_SHARED=true" >> $ConvSh
542 fi
543
544 if test  -n "$WITH_ROMIO" 
545 then
546     echo "CMK_AMPI_WITH_ROMIO=\"true\"" >> $ConvSh
547 fi
548
549 if test -n "$WITH_PRODUCTION"
550 then
551     echo '#define CMK_OPTIMIZE 1' >> $ConvHeader
552     # Prepend optimize so that an explicit -no-optimize still works
553     OPTS="-optimize $OPTS"
554     CONFIG_OPTS="--disable-tracing --disable-charmdebug --disable-replay $CONFIG_OPTS"
555 fi
556
557 # build with Tau
558 WITH_TAU=0
559 if [ "$PROGRAM" = "Tau" ]
560 then
561         Echo "TAU>>>> makefile config option: $TAU_MAKEFILE"
562         if [ -n "$TAU_MAKEFILE" -a -f $TAU_MAKEFILE ]
563         then
564           #Setting up TAU trace library:
565           Echo "TAU>>>> configuring with this TAU makefile: $TAU_MAKEFILE"
566
567           WITH_TAU=1
568         else
569           Echo "TAU>>>> ERROR could not find Makefile: $TAU_MAKEFILE, ignored"
570           TAU_MAKEFILE=""
571         fi
572 fi
573 [ -z "$TAU_MAKEFILE" ] && TAU_MAKEFILE="Make.tau"
574 SED_CHARMC="s@TAU_MAKEFILE=\(.*\)@TAU_MAKEFILE=$TAU_MAKEFILE@"
575
576 sed -e $SED_CHARMC src/scripts/Makefile > .Makefile.$$ && cp .Makefile.$$ src/scripts/Makefile && rm -f  .Makefile.$$
577 sed -e $SED_CHARMC src/scripts/charmc > .charmc.$$ && cp .charmc.$$ src/scripts/charmc && rm -f .charmc.$$
578
579 if test $WITH_TAU -eq 1
580 then
581     echo "#define CMK_WITH_TAU               1" >> $ConvHeader
582     echo "#define pthread_create             tau_pthread_create" >> $ConvHeader
583     echo "#define pthread_exit               tau_pthread_exit" >> $ConvHeader
584
585     echo "CMK_WITH_TAU=\"true\"" >> $ConvSh
586 fi
587
588
589 echo $BASEVERSION > $DESTINATION/tmp/.vdir
590 echo $VERSION | sed -e 's@-.*@@' > $DESTINATION/tmp/.gdir
591
592 if test $BUILD_EMULATOR = 1
593 then
594   PROGRAM="$PROGRAM bigsim"
595 #  CONFIG_OPTS="--disable-charmdebug $CONFIG_OPTS"
596 fi
597
598 printError()
599 {
600         Echo "-------------------------------------------------"
601         Echo "Charm++ NOT BUILT. Either cd into $DESTINATION/tmp and try"
602         Echo "to resolve the problems yourself, visit"
603         Echo "    http://charm.cs.uiuc.edu/"
604         Echo "for more information. Otherwise, email the developers at charm@cs.uiuc.edu"
605         exit $MAKEEXIT
606 }
607
608 echo 'BUILDOPTS="'$OPTS'"'  >> $ConvSh
609
610 Echo "Performing '$MAKE $MAKEOPTS basics OPTS="$OPTS" QUIET="$QUIET" CONFIG_OPTS="$CONFIG_OPTS"' in $DESTINATION/tmp"
611 cd $DESTINATION/tmp 
612 echo "CONFIG_OPTS=\"$CONFIG_OPTS\"" > config_opts.sh
613 chmod +x config_opts.sh
614 $MAKE $MAKEOPTS basics OPTS="$OPTS $BUILD_SHARED" QUIET="$QUIET"
615 MAKEEXIT=$?
616 [ $MAKEEXIT -ne 0 ] && printError
617
618 Echo "Performing '$MAKE $MAKEOPTS $PROGRAM OPTS="$OPTS" QUIET="$QUIET"' in $DESTINATION/tmp"
619 $MAKE $MAKEOPTS $PROGRAM OPTS="$OPTS $BUILD_SHARED" QUIET="$QUIET"
620 MAKEEXIT=$?
621 if [ $MAKEEXIT -eq 0 ]
622 then
623         Echo "-------------------------------------------------"
624         Echo "$PROGRAM built successfully."
625         Echo "Next, try out a sample program like" \
626              "$DESTINATION/tests/charm++/simplearrayhello"
627 else
628         printError
629 fi