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