blob: 7c6858c02abf0aef991ba59690316de477b108d5 [file] [log] [blame]
#!/bin/sh
# @@@ START COPYRIGHT @@@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# @@@ END COPYRIGHT @@@
{
PATH=${PATH}:/bin:/usr/bin
if [ "$HPMPI_MPICC_EXECED" != "1" ] ; then
if [ ! -z "${HPMPI_CC:-}" ] ; then
MPI_CC="$HPMPI_CC"
fi
else
if [ ! -z "${MPI_CXX:-}" ] ; then
MPI_CC="$MPI_CXX"
fi
if [ ! -z "${HPMPI_CXX:-}" ] ; then
MPI_CC="$HPMPI_CXX"
fi
fi
mpicc=${MPI_CC:-""}
sed=$(which sed 2>/dev/null)
mpih=${MPI_ROOT}/include
palevel=linux_amd64
prelib=""
postlib=""
ldopt=""
linker=1
evalcmd=eval
mpiCClib=-lmpiCC
if [ "$HPMPI_MPICC_EXECED" != "1" ] ; then
set -- "$@" ${MPI_CC_OPTIONS:-}
else
set -- "$@" ${MPI_CXX_OPTIONS:-}
fi
args=""
while [ $# -ge 1 ] ; do
arg="$1"
case "$arg" in
-c | -E | -P | -S) linker=0;;
-ldmpi) arg="";;
-lmtmpi) arg="";;
-lmtmpi_hmp) arg="";;
-non-standard-ext) arg="";;
-notv) arg="";;
-show) evalcmd=echo; arg="";;
-mpiCClib) mpiCClib="$2"; shift; arg="";;
-mpicxxlib) mpiCClib="$2"; shift; arg="";;
-mpicc)
if [ "$HPMPI_MPICC_EXECED" != "1" ] ; then
mpicc="$2"
fi
shift; arg="";;
-mpicxx)
if [ "$HPMPI_MPICC_EXECED" = "1" ] ; then
mpicc="$2"
fi
shift; arg="";;
-mpi32)
palevel=linux_ia32; arg="";;
-mpi64)
arg="";;
-static | -Wl,*-static)
;;
*\'* | *\\)
if [ ! -z "$sed" ] ; then
arg=$(printf "%s\n" "$arg" | $sed \
-e 's/\([^a-zA-Z0-9/._]\)/\\\1/g');
else
arg=\""$arg"\"
fi ;;
*[!a-zA-Z0-9/._]*)
arg=\'"$arg"\' ;;
esac
shift
args="$args $arg"
done
if [ -z "$mpicc" ] ; then
complist="icc ecc pgcc pathcc gcc"
if [ "$HPMPI_MPICC_EXECED" = "1" ] ; then
complist="icc ecc pgCC pathCC g++"
fi
dirs=$(IFS=: ; set -- $PATH ; echo "$@")
for dir in $dirs ; do
for comp in $complist ; do
if [ -z "$mpicc" ] ; then
if [ -x "$dir/$comp" ] ; then
mpicc="$dir/$comp"
fi
fi
done
done
if [ -z "$mpicc" ] ; then
echo "Error: no C compiler found;" \
"please specify one manually,"
if [ "$HPMPI_MPICC_EXECED" = "1" ] ; then
echo "for example using MPI_CXX."
else
echo "for example using MPI_CC."
fi
exit 1
fi
fi
mpilib=${MPI_ROOT}/lib/${palevel}
#
# Add in the mpi compilation options.
#
if [ $linker -eq 1 ]; then
prelib="${prelib} -L${mpilib}"
#
# Link with the MPI thread-compliant libraries or the regular libraries?
#
postlib="-lmtmpi -lpthread -ldl"
if [ "$HPMPI_MPICC_EXECED" = "1" ] ; then
case "/$mpicc" in
*/icc)
postlib="${postlib} -Kc++" ;;
esac
fi
fi
#
# Submit the resulting compilation command
#
cmd="$mpicc $prelib $postlib $args -I${mpih} $ldopt"
$evalcmd "$cmd"
ret=$?
exit $ret
}