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