319 |
) |
) |
320 |
} |
} |
321 |
|
|
322 |
|
symlink_mpifiles() |
323 |
|
{ |
324 |
|
# Put special links so that MPI specific files are used |
325 |
|
# This MUST be invoked between makeclean and makelinks because |
326 |
|
# the Makefile will link to non-mpi files by default |
327 |
|
|
328 |
|
dir=$1 |
329 |
|
code_dir=$2 |
330 |
|
BUILD_DIR=$dir/$3 |
331 |
|
CODE_DIR=$dir/$code_dir |
332 |
|
|
333 |
|
# These are files that should replace their counter-part when using -mpi |
334 |
|
MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")` |
335 |
|
|
336 |
|
# Is this an MPI run? |
337 |
|
if test "x$MPI" = xt ; then |
338 |
|
# YES: We symbolically link these files to the build |
339 |
|
# dir so long as there is no real file in place |
340 |
|
for ii in $MPI_FILES ; do |
341 |
|
i=`echo $ii | sed 's:^\./::'` |
342 |
|
name=`echo $i | sed 's:_mpi::' ` |
343 |
|
cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1 |
344 |
|
RETVAL=$? |
345 |
|
if test "x$RETVAL" != x0 ; then |
346 |
|
if ! test -f $BUILD_DIR/$i ; then |
347 |
|
#echo Linking $name to $i |
348 |
|
(cd $BUILD_DIR; ln -sf ../$code_dir/$i $name) |
349 |
|
fi |
350 |
|
fi |
351 |
|
done |
352 |
|
else |
353 |
|
# NO: We undo any _mpi symbolically linked files |
354 |
|
for ii in $MPI_FILES ; do |
355 |
|
i=`echo $ii | sed 's:^\./::'` |
356 |
|
name=`echo $i | sed 's:_mpi::' ` |
357 |
|
if test -L $BUILD_DIR/$name ; then |
358 |
|
linktarg=`(cd $BUILD_DIR; readlink $name)` |
359 |
|
if test $linktarg = "../$code_dir/$name"_mpi ; then |
360 |
|
#echo Un-linking $name from $linktarg |
361 |
|
rm -f $BUILD_DIR/$name |
362 |
|
fi |
363 |
|
fi |
364 |
|
done |
365 |
|
fi |
366 |
|
|
367 |
|
} |
368 |
|
|
369 |
linkdata() |
linkdata() |
370 |
{ |
{ |
371 |
# linkdata flag |
# linkdata flag |
792 |
fi |
fi |
793 |
|
|
794 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x ; then |
795 |
|
code_dir=code |
796 |
CODE_DIR=$dir/code |
CODE_DIR=$dir/code |
797 |
else |
else |
798 |
|
code_dir=code_ad |
799 |
CODE_DIR=$dir/code_ad |
CODE_DIR=$dir/code_ad |
800 |
fi |
fi |
801 |
BUILD_DIR=$dir/$builddir |
BUILD_DIR=$dir/$builddir |
|
MPI_FILES="CPP_EEOPTIONS.h_mpi SIZE.h_mpi" |
|
|
NOMPI_FILES="CPP_EEOPTIONS.h_nompi SIZE.h_nompi" |
|
802 |
|
|
|
# Is this an MPI run? |
|
|
if test "x$MPI" = xt ; then |
|
|
FILES=$MPI_FILES |
|
|
endings="_mpi" |
|
|
else |
|
|
FILES=$NOMPI_FILES |
|
|
endings="_nompi" |
|
|
fi |
|
|
|
|
|
# Check to see that we have the files |
|
|
have_files=t |
|
|
for i in $FILES ; do |
|
|
if test ! -r $CODE_DIR/$i ; then |
|
|
echo "Warning: can't read file $CODE_DIR/$i" |
|
|
have_files=f |
|
|
fi |
|
|
done |
|
|
if test "x$have_files" != xt -a "x$MPI" = xt ; then |
|
|
echo "Skipping $dir due to lack of input files (see above warning)" |
|
|
continue |
|
|
fi |
|
|
|
|
|
# If we have the $FILES and they differ, copy the $FILES to $BUILD_DIR |
|
|
if test "x$have_files" = xt ; then |
|
|
for i in $FILES ; do |
|
|
sstr="s|$endings||" |
|
|
name=`echo $i | sed -e $sstr ` |
|
|
cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1 |
|
|
RETVAL=$? |
|
|
if test "x$RETVAL" != x0 ; then |
|
|
cp $CODE_DIR/$i $BUILD_DIR/$name |
|
|
fi |
|
|
done |
|
|
fi |
|
|
|
|
803 |
# Create an output dir for each OPTFILE/tdir combination |
# Create an output dir for each OPTFILE/tdir combination |
804 |
rel_CDIR=$DRESULTS"/"$dir |
rel_CDIR=$DRESULTS"/"$dir |
805 |
mkdir $rel_CDIR |
mkdir $rel_CDIR |
810 |
else |
else |
811 |
genmakemodel $dir/$builddir && genmake=Y \ |
genmakemodel $dir/$builddir && genmake=Y \ |
812 |
&& makeclean $dir/$builddir \ |
&& makeclean $dir/$builddir \ |
813 |
|
&& symlink_mpifiles $dir $code_dir $builddir \ |
814 |
&& makedependmodel $dir/$builddir && makedepend=Y \ |
&& makedependmodel $dir/$builddir && makedepend=Y \ |
815 |
&& makemodel $dir/$builddir && make=Y \ |
&& makemodel $dir/$builddir && make=Y \ |
816 |
&& linkdata $use_seperate_build $dir/$rundir \ |
&& linkdata $use_seperate_build $dir/$rundir \ |