3 # Silly shorthand, used for source reorganization
4 if [ $
(dirname $0) = "." ]
9 srcbaseabs
="$(cd $(dirname $0)/src/; pwd)"
12 src
="$srcbaseabs/arch/"
18 echo 'Usage: build <target> <version> <options> [charmc-options ...]'
20 echo '<targets>: converse charm++ LIBS AMPI FEM bigemulator pose msa'
21 echo '<targets>: doc ps-doc pdf-doc html-doc'
25 echo ' charm++ compile Charm++ core only'
26 echo ' AMPI compile Adaptive MPI on top of Charm++'
27 echo ' FEM compile FEM framework'
28 echo ' LIBS compile additional parallel libraries with Charm++ core'
29 echo ' bigemulator build additional BigSim libraries'
30 echo ' pose build POSE parallel discrete event simulator'
31 echo ' msa build Multiphase Shared Arrays(MSA) library'
32 echo ' Tau build the TAU tracing library for generating TAU performance data'
33 echo ' ChaNGa compile Charm++ core and necessary libraries for ChaNGa'
34 echo ' everylb compile EveryLB suite of load balancing strategies'
38 ( cd $src ; ls -1 |
egrep -v '(^shmem$)|(^mpi$)|(^sim$)|(^net(lrts)?$)|(^multicore$)|(^util$)|(^common$)|(^uth$)|(^conv-mach-fix.sh$)|(^win64$)|(^(gemini_)?gni$)|(^pami(lrts)?$)|(^verbs$)|(^template$)|(^cuda$)' |
pr -3 -t )
40 echo '<options>: compiler and platform specific options'
41 echo 'icc iccstatic xlc xlc64 gcc clang craycc pgcc pathscale cc cc64 mpcc gcc64 mpicxx'
42 echo 'help smp gm tcp scyld clustermatic bigemulator ooc syncft mlogft causalft'
43 echo 'papi pthreads lam'
44 echo '--incdir --libdir --basedir --build-shared --destination --suffix -j'
48 echo 'For platform specific options, use help option:'
49 echo ' help platform specific help, e.g. ./build charm++ net-linux-x86_64 help'
51 echo 'Choose a compiler (only one option is allowed from this section):'
52 echo ' icc, iccstatic Intel compilers (default or static linking)'
53 echo ' xlc, xlc64 IBM XL compilers (with 64-bit option on architectures with 32-bit modes)'
54 echo ' gcc GNU compiler collection (on platforms where the default differs)'
55 echo ' clang Clang C/C++ compiler'
56 echo ' craycc Cray compilers'
57 echo ' pgcc Portland Group compilers'
58 echo ' pathscale Pathscale compiler suite'
59 echo ' cc, cc64 For Sun WorkShop C++ 32/64 bit compilers'
60 echo ' mpcc SUN Solaris C++ compiler for MPI'
62 echo 'Choose an alternative fortran compiler (only one option is allowed from this section):'
63 echo ' g95 G95 at http://ww.g95.org'
64 echo " pgf90 Portland Group Fortran compiler"
65 echo ' ifort Intel Fortran compiler'
67 echo 'Platform specific options (choose multiple if apply):'
68 echo ' smp support for SMP, multithreaded charm on each node'
69 echo ' ibverbs use Infiniband Verbs for communication (only for net-linux-x86_64; prefer verbs-*)'
70 echo ' lam Use LAM MPI'
71 echo ' mpt use SGI Message Passing Toolkit (only for mpi version)'
72 echo ' gm use Myrinet for communication'
73 echo ' tcp use TCP sockets for communication (only for net version)'
74 echo ' scyld compile for Scyld Beowulf cluster based on bproc'
75 echo ' clustermatic compile for Clustermatic (support version 3 and 4) '
76 echo ' pthreads compile with pthreads Converse threads'
78 echo 'Advanced options:'
79 echo ' bigemulator compile for BigSim simulator'
80 echo ' ooc compile with out of core support'
81 echo ' syncft compile with Charm++ fault tolerance support'
82 echo ' mlogft compile with Charm++ message logging fault tolerance support'
83 echo ' papi compile with PAPI performance counter support (if any)'
85 echo "Charm++ dynamic libraries:"
86 echo " --no-build-shared don't build Charm++'s shared libraries (default)"
87 echo " --build-shared build Charm++ dynamic libraries (.so) "
89 echo 'Enable/disable features:'
90 $srcbaseabs/scripts
/configure
--help |
grep enable-
91 $srcbaseabs/scripts
/configure
--help |
grep with-
92 echo " --with-production build Charm++ with all optimizations for maximum performance, and disabling all above features"
94 echo 'Miscellaneous options:'
95 echo ' --incdir=DIR specify additional include path for compiler'
96 echo ' --libdir=DIR specify additional lib path for compiler'
97 echo ' --basedir=DIR shortcut for the above two - DIR/include and DIR/lib'
98 echo ' -j[N] parallel make, N is the number of paralle make jobs'
99 echo " --with-lbtime-type specify real type for the load balancing timers"
100 echo " --destination=DIR build Charm++ inside DIR, by default the destination is <version>"
101 echo " --suffix=DIR append DIR to the destination directory of the Charm++ build"
102 echo " --tau-makefile=FILE Specify which TAU stub makefile to use"
105 echo '<charmc-options>: normal compiler options e.g. -g -optimize -save -verbose'
110 echo "1. display all supported options for net-linux-x86_64 using 'help':"
111 echo ' ./build charm++ net-linux-x86_64 help'
112 echo '2. compile Charm++ on Linux with all available tuning:'
113 echo ' ./build charm++ net-linux-x86_64 --with-production'
114 echo '3. compile Charm++ for Linux (32bit) clustermatic Beowulf cluster with Intel compiler and optimizations:'
115 echo ' ./build charm++ net-linux clustermatic icc -optimize'
116 echo '4. compile Charm++ for Windows with VC++ (Cygwin required):'
117 echo ' ./build charm++ net-win64 -optimize'
118 echo '5. compile Charm++ with MPI that is installed at /usr/local/mpich:'
119 echo ' ./build charm++ mpi-linux --incdir /usr/local/mpich/include --libdir /usr/local/mpich/lib -optimize'
121 echo ' ./build charm++ mpi-linux --basedir /usr/local/mpich -optimize'
122 echo ' ./build Tau --tau-makefile=/usr/local/packages/TAU/x86_64/lib/Makefile.tau-mpi'
124 echo 'Note: This script:'
125 echo ' 1. Creates directories <destination> and <destination>/tmp'
126 echo ' 2. Copies src/scripts/Makefile into <destination>/tmp'
127 echo ' 3. Does a "make basics" in <destination>/tmp.'
128 echo ' 3. Does a "make -jN <target> <version> OPTS=<charmc-options>" in <destination>/tmp.'
129 echo "That's all build does. The rest is handled by the Makefile."
131 echo 'Thank you for using Charm++, please send questions or comments to '
132 echo 'Parallel Programming Lab at University of Illinois at Urbana-Champaign'
133 echo '(email: charm@cs.illinois.edu).'
137 echo "To get more detailed help, run ./build --help"
142 [ "x$QUIET" = "x--quiet" ] ||
echo $
*
146 for prefix
in cc conv-mach
148 str
="Supported compilers:"
149 [ "$prefix" = "conv-mach" ] && str
="Supported options:"
153 # echo "Checking for $prefix in $dir"
154 files
=`cd $dir; ls $prefix-*.h 2>/dev/null`
155 opts
="$opts "`echo $files | sed 's/'$prefix'-\([^.]*\).h/\1/g'`
158 rm -f $tmp; touch $tmp
163 opts
=`sort $tmp | uniq`
175 echo Error
: cannot
find $d!
184 [ -f $dir/cc-
$1.sh
] && return 1
192 [ -f $dir/conv-mach-
$1.h
] && return 1
195 echo "Error> option: $1 is not supported in this version!";
212 BUILD_SHARED
="" # default no shared lib
213 WITH_ROMIO
="true" # default to building ROMIO on AMPI
217 DESTINATION_SUFFIX
=""
222 [ "$1" = '--help' -o "$1" = '-h' ] && more=1 && syntax |
( less ||
more ) && exit 1
223 [ $# -lt 2 ] && .
/smart-build.pl
&& exit 1
227 # find longest prefix of version argument that exists as a directory in $src
235 if [ -z "$testversion" ]; then
238 testversion
="$testversion-$w"
240 if [ -d $src/$testversion ]; then
244 VERSOPTS
="$VERSOPTS $w"
247 if [ $VERSION = $1 ]; then VERSOPTS
=""; fi
249 BASEVERSION
=$VERSION;
250 if test -f $src/$BASEVERSION/vdir_link
252 BASEVERSION
=`cat $src/$BASEVERSION/vdir_link`
254 ARCH
=`echo $BASEVERSION | sed -e 's@-.*@@'`
261 OPT_DIRS
="$src/$BASEVERSION $src/$ARCH $src/common"
263 # process remainder of version argument as options, copied from below
264 for w
in $VERSOPTS; do
265 # This has to be a build-time option (like "smp")
269 # It specifies a compiler:
270 if [ ! -z "$COMPILER" ]
272 echo "Error> Tried to specify two compilers: $COMPILER and $w"
277 # It specifies some other option:
280 [ $w = "bigemulator" ] && BUILD_EMULATOR
=1
281 [ $w = "bigsim" ] && BUILD_EMULATOR
=1
282 [ $w = "cuda" ] && BUILD_CUDA
=1
293 CheckDir
$dir/include
$dir/lib
294 LIBDIR
="$LIBDIR -L$dir/lib";
295 INCDIR
="$INCDIR -I$dir/include"
300 basedir
=`echo $1 | awk -F= '{print $2}'`
303 CheckDir
$dir/include
$dir/lib
304 LIBDIR
="$LIBDIR -L$dir/lib";
305 INCDIR
="$INCDIR -I$dir/include"
313 LIBDIR
="$LIBDIR -L$dir";
318 libdir
=`echo $1 | awk -F= '{print $2}'`
322 LIBDIR
="$LIBDIR -L$dir";
330 INCDIR
="$INCDIR -I$dir";
335 incdir
=`echo $1 | awk -F= '{print $2}'`
339 INCDIR
="$INCDIR -I$dir";
343 --no-build-shared|
--no-shared)
344 #BUILD_SHARED="-no-build-shared";
348 BUILD_SHARED
="-build-shared";
352 WITH_ROMIO
="true"; shift
358 WITH_PRODUCTION
="true"
362 CONFIG_OPTS
="$CONFIG_OPTS $1"
366 CONFIG_OPTS
="$CONFIG_OPTS $1"
375 DESTINATION
="`echo $1 | awk -F= '{print $2}'`"
380 DESTINATION_SUFFIX
="$1"
384 DESTINATION_SUFFIX
="`echo $1 | awk -F= '{print $2}'`"
392 TAU_MAKEFILE
=`echo $1 | awk -F= '{print $2}'`
396 MAKEOPTS
="$MAKEOPTS --quiet"
400 --enable-tracing|
--enable-tracing=*)
401 CONFIG_OPTS
="$CONFIG_OPTS $1"
406 CONFIG_OPTS
="$CONFIG_OPTS $1"
410 CONFIG_OPTS
="$CONFIG_OPTS $1"
414 PMAKENUM
=`echo $1 | awk -Fj '{print $2}'`
415 MAKEOPTS
="$MAKEOPTS -j $PMAKENUM"
419 # We hit a real compiler option (like -g, or -Dfoo),
420 # so just copy over all remaining options
423 OPTS
="$OPTS $1"; shift
430 # This has to be a build-time option (like "smp")
434 # It specifies a compiler:
435 if [ ! -z "$COMPILER" ]
437 echo "Error> Tried to specify two compilers: $COMPILER and $1"
442 # It specifies some other option:
445 [ $1 = "bigemulator" ] && BUILD_EMULATOR
=1
446 [ $1 = "bigsim" ] && BUILD_EMULATOR
=1
447 [ $1 = "cuda" ] && BUILD_CUDA
=1
454 if [ $BUILD_CUDA -eq 1 ]; then
455 echo "checking for CUDA toolkit directory"
456 CUDA_CANDIDATE_DIRS
="$CUDATOOLKIT_HOME /usr/local/cuda /usr/lib/nvidia-cuda-toolkit"
457 for dir
in $CUDA_CANDIDATE_DIRS; do
458 if test -d "$dir"; then
461 echo "CUDA_DIR=$CUDA_DIR"
467 [ "x$VERSION" = "x" ] && syntax
&& exit 1
469 if test -n "$WITH_PRODUCTION" -a $BUILD_EMULATOR -eq 1 -a -z "$ENABLE_TRACING"
471 echo "Error: bigemulator requires tracing modules, --with-production must be used with --enable-tracing"
478 MAKE
=`which gmake 2>/dev/null`
479 [ -z "$MAKE" -o ! -x "$MAKE" ] && MAKE
='make'
482 if [ ! -f $src/$BASEVERSION/conv-mach.h
]
484 echo "Error> build can not find arch: $BASEVERSION!"
488 #generate VERSION name combining all the build-time options.
489 if [ -n "$BOPTS" -o -n "$COMPILER" ]
491 echo "Selected Compiler: $COMPILER"
493 if test -n "$COMPILER" -a `echo "$BASEVERSION" | grep -c "cray\|gni\|gemini"` -gt 0
495 echo "Inserted explicit compiler options on Cray systems. Use compiler wrappers by loading PrgEnv-*"
496 echo "e.g.) module load PrgEnv-* (e.g. gnu for gcc, intel for icc, and pgi for pgcc)"
497 echo " ./build charm++ $BASEVERSION <other build options>"
498 echo "Charm++ uses the compiler wrapper 'CC' specified by the Cray system. Don't use explicit compiler options on Cray systems."
502 echo "Selected Options: $BOPTS"
503 SORTED
=`echo $BOPTS | awk '{ for (i = 1; i <= NF; ++i) print $i }' | sort`
504 BOPTS_WITHCOMPILER
=`echo $SORTED $COMPILER`
505 for i
in $BOPTS_WITHCOMPILER
511 #echo "|$DESTINATION|$DESTINATION_SUFFIX|"
513 if [ -z "$DESTINATION" ]
515 DESTINATION
="$VERSION"
518 if [ $
(dirname $DESTINATION) != "." ]
520 srcbaseabs
="$(cd $srcbaseabs; pwd)"
522 src
="$srcbaseabs/arch/"
525 if [ -n "$DESTINATION_SUFFIX" ]
527 DESTINATION
="$DESTINATION-$DESTINATION_SUFFIX"
530 [ -d $DESTINATION ] || Echo
"Creating dir: $DESTINATION"
531 [ -d $DESTINATION ] || mkdir
$DESTINATION
532 [ -d $DESTINATION/tmp
] || Echo
"Creating dir: $DESTINATION/tmp"
533 [ -d $DESTINATION/tmp
] || mkdir
$DESTINATION/tmp
535 Echo
"Copying src/scripts/Makefile to $DESTINATION/tmp"
536 rm -f $DESTINATION/tmp
/Makefile
537 rm -f $DESTINATION/tmp
/Make.depends
538 rm -f $DESTINATION/tmp
/Make.cidepends
539 rm -f $DESTINATION/tmp
/Make.lb
540 rm -f $DESTINATION/tmp
/Make.machine
541 rm -f $DESTINATION/tmp
/Make.extlib
544 # Create the bin, lib, include, etc. links:
545 WINNAME
=`echo $VERSION | awk -F- '{print $2}'`
546 if [ "x_$WINNAME" = "x_win32" -o "x_$WINNAME" = "x_win64" ]
548 #Win32/64 version needs special compilers and *copied* (not linked)
550 cp $src/win32
/system_ln
$DESTINATION/tmp
551 cp $src/win32
/unistd.h
$DESTINATION/tmp
552 echo "Compiling createlink.cpp ..."
553 (cd $src/win32
; ..
/$WINNAME/unix2nt_cc
-c createlink.cpp
-o createlink.o
-D_WIN32_WINNT=0x0500; ..
/$WINNAME/unix2nt_cc createlink.o
)
555 if test ! -x $src/win32
/createlink.exe
557 echo "VC++ is not properly installed!"
560 chmod +x
$DESTINATION/tmp
/system_ln
561 cp $src/win32
/gathertree.
local $DESTINATION/tmp
562 cp $src/win32
/gatherflat.
local $DESTINATION/tmp
564 cat > $DESTINATION/tmp
/system_ln
<<EOF
568 chmod +x
$DESTINATION/tmp
/system_ln
569 for newdir
in `echo bin lib lib_so include tmp`
571 Echo
"Soft-linking over $newdir"
574 rm -fr $newdir ||
exit 1
576 $DESTINATION/tmp
/system_ln
$DESTINATION/$newdir $newdir
579 $DESTINATION/tmp
/system_ln
$DESTINATION/include
/VERSION VERSION
582 $DESTINATION/tmp
/system_ln
"$srcbase/scripts/Make.depends" $DESTINATION/tmp
/Make.depends
583 $DESTINATION/tmp
/system_ln
"$srcbase/scripts/Make.cidepends" $DESTINATION/tmp
/Make.cidepends
584 if test -f "$srcbaseabs/ck-ldb/Make.lb"
586 $DESTINATION/tmp
/system_ln
"$srcbase/ck-ldb/Make.lb" $DESTINATION/tmp
/Make.lb
588 touch $DESTINATION/tmp
/Make.lb
590 $DESTINATION/tmp
/system_ln
"$srcbase/scripts/Makefile" $DESTINATION/tmp
/Makefile
591 $DESTINATION/tmp
/system_ln
"$srcbase/scripts/Make.tau" $DESTINATION/tmp
/Make.tau
592 touch $DESTINATION/tmp
/Makefile.machine
593 touch $DESTINATION/tmp
/Make.extlib
595 ConvUsr
="$DESTINATION/tmp/conv-mach-pre.sh"
596 Echo
"Generating $ConvUsr"
600 echo 'USER_OPTS_LD="$USER_OPTS_LD '$LIBDIR'"' >> $ConvUsr
601 echo 'USER_OPTS_LDXX="$USER_OPTS_LDXX '$LIBDIR'"' >> $ConvUsr
605 echo 'USER_OPTS_CC="$USER_OPTS_CC '$INCDIR'"' >> $ConvUsr
606 echo 'USER_OPTS_CXX="$USER_OPTS_CXX '$INCDIR'"' >> $ConvUsr
610 # Create conv-mach-opt headers with special build-time options
611 ConvHeader
="$DESTINATION/tmp/conv-mach-opt.h"
612 ConvSh
="$DESTINATION/tmp/conv-mach-opt.sh"
613 if [ ! -f $ConvSh -o ! -f $ConvHeader ]
615 Echo
"Generating $ConvHeader, conv-mach-opt.sh"
616 echo '/* Build-time options header, automatically generated by charm/build*/'> $ConvHeader
617 echo '# Built-time options header, automatically generated by charm/build'> $ConvSh
618 echo '[ -z "$CHARMINC" ] && CHARMINC="."' >> $ConvSh
620 if test -n "$COMPILER"
623 echo '#include "'cc-
$i.h
'"' >> $ConvHeader
624 echo '. $CHARMINC/'"cc-$i.sh" >> $ConvSh
625 elif test `echo "$BASEVERSION" | grep -c "bluegeneq"` -gt 0
628 echo '#include "'cc-
$i.h
'"' >> $ConvHeader
629 echo '. $CHARMINC/'"cc-$i.sh" >> $ConvSh
633 # pxshm+smp note: When combining the 'smp' and 'pxshm' directives, it is
634 # important that they be included in $ConvHeader in that
635 # exact order. See bug #717.
640 if [ "$i" = "smp" ]; then
642 elif [ "$i" = "pxshm" ]; then
644 elif [ "$i" = "omp" ]; then
651 if [ $HAS_PXSHM -eq 1 ]; then
654 if [ $HAS_SMP -eq 1 ]; then
656 elif [ $BUILD_OMP -eq 1 ]; then
657 BUILD_OMP
=2 #this means omp keyword inserted without smp keyword"
663 echo '#include "'conv-mach-
$i.h
'"' >> $ConvHeader
664 if [ $BUILD_CUDA -eq 1 ]; then
665 echo 'CUDA_DIR="'$CUDA_DIR'"'>>$ConvSh
667 echo '. $CHARMINC/'"conv-mach-$i.sh" >> $ConvSh
671 if test "$BUILD_SHARED" = "-build-shared"
673 echo "CMK_NO_BUILD_SHARED=false" >> $ConvSh
675 echo "CMK_NO_BUILD_SHARED=true" >> $ConvSh
678 if test -n "$WITH_ROMIO"
680 echo "CMK_AMPI_WITH_ROMIO=\"true\"" >> $ConvSh
683 if test -n "$WITH_PRODUCTION"
685 echo '#define CMK_OPTIMIZE 1' >> $ConvHeader
686 # Prepend optimize so that an explicit -no-optimize still works
687 OPTS
="-optimize -production $OPTS"
688 CONFIG_OPTS
="--disable-controlpoint --disable-tracing --disable-tracing-commthread --disable-charmdebug --disable-replay --disable-error-checking --disable-stats $CONFIG_OPTS"
693 if [ "$PROGRAM" = "Tau" ]
695 Echo
"TAU>>>> makefile config option: $TAU_MAKEFILE"
696 if [ -n "$TAU_MAKEFILE" -a -f $TAU_MAKEFILE ]
698 #Setting up TAU trace library:
699 Echo
"TAU>>>> configuring with this TAU makefile: $TAU_MAKEFILE"
703 Echo
"TAU>>>> ERROR could not find Makefile: $TAU_MAKEFILE, ignored"
708 if test $WITH_TAU -eq 1
710 [ -z "$TAU_MAKEFILE" ] && TAU_MAKEFILE
="Make.tau"
711 SED_CHARMC
="s@TAU_MAKEFILE=\(.*\)@TAU_MAKEFILE=$TAU_MAKEFILE@"
713 sed -e $SED_CHARMC $srcbaseabs/scripts
/Makefile
> .Makefile.$$
&& cp .Makefile.$$
$srcbaseabs/scripts
/Makefile
&& rm -f .Makefile.$$
714 sed -e $SED_CHARMC $srcbaseabs/scripts
/charmc
> .charmc.$$
&& cp .charmc.$$
$srcbaseabs/scripts
/charmc
&& rm -f .charmc.$$
716 echo "#define CMK_WITH_TAU 1" >> $ConvHeader
717 echo "#define pthread_create tau_pthread_create" >> $ConvHeader
718 echo "#define pthread_exit tau_pthread_exit" >> $ConvHeader
720 echo "CMK_WITH_TAU=\"true\"" >> $ConvSh
723 if [ "$PROGRAM" = "ChaNGa" ]
725 #Setting lbuserdata when the build is ChaNGa
726 CONFIG_OPTS
="--enable-lbuserdata $CONFIG_OPTS"
729 echo $BASEVERSION > $DESTINATION/tmp
/.
vdir
730 echo $BASEVERSION |
sed -e 's@-.*@@' > $DESTINATION/tmp
/.gdir
732 if test $BUILD_EMULATOR = 1
734 PROGRAM
="$PROGRAM bigsim"
735 # CONFIG_OPTS="--disable-charmdebug $CONFIG_OPTS"
739 if [ $BUILD_OMP = 2 ]
746 echo "OpenMP support should be built in SMP mode"
754 Echo
"-------------------------------------------------"
755 Echo
"Charm++ NOT BUILT. Either cd into $DESTINATION/tmp and try"
756 Echo
"to resolve the problems yourself, visit"
757 Echo
" http://charm.cs.illinois.edu/"
758 Echo
"for more information. Otherwise, email the developers at charm@cs.illinois.edu"
762 echo 'BUILDOPTS="'$OPTS'"' >> $ConvSh
763 echo "SRCBASE=$srcbase" > $DESTINATION/tmp
/charmpath.mk
765 Echo
"Performing '$MAKE $MAKEOPTS basics OPTS="$OPTS" QUIET="$QUIET" CONFIG_OPTS="$CONFIG_OPTS"' in $DESTINATION/tmp"
767 echo "CONFIG_OPTS=\"$CONFIG_OPTS\"" > config_opts.sh
768 chmod +x config_opts.sh
769 echo "OPTSATBUILDTIME += $OPTS" > buildopts.mk
770 $MAKE $MAKEOPTS basics OPTS
="$OPTS $BUILD_SHARED" QUIET
="$QUIET"
772 [ $MAKEEXIT -ne 0 ] && printError
774 Echo
"Performing '$MAKE $MAKEOPTS $PROGRAM OPTS="$OPTS" QUIET="$QUIET"' in $DESTINATION/tmp"
775 $MAKE $MAKEOPTS $PROGRAM OPTS
="$OPTS $BUILD_SHARED" QUIET
="$QUIET"
777 if [ $MAKEEXIT -eq 0 ]
779 if [ $BUILD_OMP = 1 ];
781 $MAKE MFLAGS
="$MAKEOPTS" openmp_llvm OPTS
="$OPTS $BUILD_SHARED" QUIET
="$QUIET"
783 Echo
"-------------------------------------------------"
784 Echo
"$PROGRAM built successfully."
785 Echo
"Next, try out a sample program like" \
786 "$DESTINATION/tests/charm++/simplearrayhello"