Spdk/scripts/detect_cc.sh
Jim Harris 3510268bf7 detect_cc.sh: fix CC_TYPE generation
Some compilers will emit version info with a --with-pkgversion
parameter.  So grep for "version" with -w.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I7bfc37322483b97443985f1103ff753d1b18a879
2017-05-11 10:22:08 -07:00

82 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
function err()
{
echo "$@" >&2
}
function usage()
{
err "Detect compiler and linker versions, generate mk/cc.mk"
err ""
err "Usage: ./detect_cc.sh [OPTION]..."
err ""
err "Defaults for the options are specified in brackets."
err ""
err "General:"
err " -h, --help Display this help and exit"
err " --cc=path C compiler to use"
err " --cxx=path C++ compiler to use"
err " --lto=[y|n] Attempt to configure for LTO"
}
CC=cc
CXX=c++
LTO=n
for i in "$@"; do
case "$i" in
-h|--help)
usage
exit 0
;;
--cc=*)
CC="${i#*=}"
;;
--cxx=*)
CXX="${i#*=}"
;;
--lto=*)
LTO="${i#*=}"
;;
--)
break
;;
*)
err "Unrecognized option $i"
usage
exit 1
esac
done
CC_TYPE=$($CC -v 2>&1 | grep -w version | awk '{print $1}')
CXX_TYPE=$($CXX -v 2>&1 | grep -w version | awk '{print $1}')
LD_TYPE=$(ld -v 2>&1 | awk '{print $2}')
if [ "$CC_TYPE" != "$CXX_TYPE" ]; then
err "C compiler is $CC_TYPE but C++ compiler is $CXX_TYPE"
err "This may result in errors"
exit 1
fi
CCAR="ar"
if [ "$LTO" = "y" ]; then
if [ "$CC_TYPE" = "clang" ]; then
if [ "$LD_TYPE" != "gold" ]; then
err "Using LTO with clang requires the gold linker."
exit 1
fi
CCAR="llvm-ar"
else
CCAR="gcc-ar"
fi
fi
echo "CC=$CC"
echo "CXX=$CXX"
echo "CCAR=$CCAR"
echo "CC_TYPE=$CC_TYPE"