build: Detect compiler toolchain in configure
We need to know this up front. Change-Id: I3a9ceb90cf62eacbf3fdf518a9ccb4c4978b3a05 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463014 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
f89166c089
commit
73439e6f46
12
Makefile
12
Makefile
@ -43,7 +43,7 @@ DIRS-$(CONFIG_TESTS) += test
|
|||||||
DIRS-$(CONFIG_IPSEC_MB) += ipsecbuild
|
DIRS-$(CONFIG_IPSEC_MB) += ipsecbuild
|
||||||
DIRS-$(CONFIG_ISAL) += isalbuild
|
DIRS-$(CONFIG_ISAL) += isalbuild
|
||||||
|
|
||||||
.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk mk/cc.mk \
|
.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk \
|
||||||
cc_version cxx_version .libs_only_other .ldflags ldflags install \
|
cc_version cxx_version .libs_only_other .ldflags ldflags install \
|
||||||
uninstall
|
uninstall
|
||||||
|
|
||||||
@ -72,9 +72,8 @@ LIB += isalbuild
|
|||||||
DPDK_DEPS += isalbuild
|
DPDK_DEPS += isalbuild
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: $(DIRS-y)
|
all: mk/cc.mk $(DIRS-y)
|
||||||
clean: $(DIRS-y)
|
clean: $(DIRS-y)
|
||||||
$(Q)rm -f mk/cc.mk
|
|
||||||
$(Q)rm -f include/spdk/config.h
|
$(Q)rm -f include/spdk/config.h
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
@ -95,12 +94,11 @@ examples: $(LIB)
|
|||||||
pkgdep:
|
pkgdep:
|
||||||
sh ./scripts/pkgdep.sh
|
sh ./scripts/pkgdep.sh
|
||||||
|
|
||||||
$(DIRS-y): mk/cc.mk include/spdk/config.h
|
$(DIRS-y): include/spdk/config.h
|
||||||
|
|
||||||
mk/cc.mk:
|
mk/cc.mk:
|
||||||
$(Q)scripts/detect_cc.sh --cc="$(CC)" --cxx="$(CXX)" --lto="$(CONFIG_LTO)" --ld="$(LD)" > $@.tmp; \
|
$(Q)echo "Please run configure prior to make"
|
||||||
cmp -s $@.tmp $@ || mv $@.tmp $@ ; \
|
false
|
||||||
rm -f $@.tmp
|
|
||||||
|
|
||||||
include/spdk/config.h: mk/config.mk scripts/genconfig.py
|
include/spdk/config.h: mk/config.mk scripts/genconfig.py
|
||||||
$(Q)PYCMD=$$(cat PYTHON_COMMAND 2>/dev/null) ; \
|
$(Q)PYCMD=$$(cat PYTHON_COMMAND 2>/dev/null) ; \
|
||||||
|
14
configure
vendored
14
configure
vendored
@ -86,8 +86,11 @@ function usage()
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Environment variables:"
|
echo "Environment variables:"
|
||||||
echo ""
|
echo ""
|
||||||
|
echo "CC C compiler"
|
||||||
echo "CFLAGS C compiler flags"
|
echo "CFLAGS C compiler flags"
|
||||||
|
echo "CXX C++ compiler"
|
||||||
echo "CXXFLAGS C++ compiler flags"
|
echo "CXXFLAGS C++ compiler flags"
|
||||||
|
echo "LD Linker"
|
||||||
echo "LDFLAGS Linker flags"
|
echo "LDFLAGS Linker flags"
|
||||||
echo "DESTDIR Destination for 'make install'"
|
echo "DESTDIR Destination for 'make install'"
|
||||||
echo ""
|
echo ""
|
||||||
@ -100,8 +103,6 @@ declare -A CONFIG
|
|||||||
source CONFIG.sh
|
source CONFIG.sh
|
||||||
rm CONFIG.sh
|
rm CONFIG.sh
|
||||||
|
|
||||||
BUILD_CMD="${CC:-cc} -o /dev/null -x c $CPPFLAGS $CFLAGS $LDFLAGS"
|
|
||||||
|
|
||||||
function check_dir() {
|
function check_dir() {
|
||||||
arg="$1"
|
arg="$1"
|
||||||
dir="${arg#*=}"
|
dir="${arg#*=}"
|
||||||
@ -340,6 +341,14 @@ for i in "$@"; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Detect the compiler toolchain
|
||||||
|
scripts/detect_cc.sh --cc="$CC" --cxx="$CXX" --lto="${CONFIG[LTO]}" --ld="$LD" > mk/cc.mk
|
||||||
|
|
||||||
|
CC=$(cat mk/cc.mk | grep "CC=" | cut -d "=" -f 2)
|
||||||
|
CC_TYPE=$(cat mk/cc.mk | grep "CC_TYPE=" | cut -d "=" -f 2)
|
||||||
|
|
||||||
|
BUILD_CMD="$CC -o /dev/null -x c $CPPFLAGS $CFLAGS $LDFLAGS"
|
||||||
|
|
||||||
# Detect architecture and force no isal if non x86 archtecture
|
# Detect architecture and force no isal if non x86 archtecture
|
||||||
arch=$(uname -m)
|
arch=$(uname -m)
|
||||||
if [[ $arch != x86_64* ]]; then
|
if [[ $arch != x86_64* ]]; then
|
||||||
@ -625,7 +634,6 @@ if [[ "${CONFIG[PGO_CAPTURE]}" = "y" && "${CONFIG[PGO_USE]}" = "y" ]]; then
|
|||||||
echo "ERROR: --enable-pgo-capture and --enable-pgo-use are mutually exclusive."
|
echo "ERROR: --enable-pgo-capture and --enable-pgo-use are mutually exclusive."
|
||||||
exit 1
|
exit 1
|
||||||
elif [[ "${CONFIG[PGO_USE]}" = "y" ]]; then
|
elif [[ "${CONFIG[PGO_USE]}" = "y" ]]; then
|
||||||
CC_TYPE=$($rootdir/scripts/detect_cc.sh --cc="$CC" --cxx="$CXX" --lto="${CONFIG[LTO]}" --ld="$LD" | grep "CC_TYPE" | cut -d "=" -f 2)
|
|
||||||
if [[ "$CC_TYPE" = "clang" ]]; then
|
if [[ "$CC_TYPE" = "clang" ]]; then
|
||||||
# For clang we need to run an extra step on gathered profiling data.
|
# For clang we need to run an extra step on gathered profiling data.
|
||||||
echo "Generating suitable profile data"
|
echo "Generating suitable profile data"
|
||||||
|
@ -138,10 +138,6 @@ endif
|
|||||||
ifeq ($(OS),FreeBSD)
|
ifeq ($(OS),FreeBSD)
|
||||||
SYS_LIBS += -L/usr/local/lib
|
SYS_LIBS += -L/usr/local/lib
|
||||||
COMMON_CFLAGS += -I/usr/local/include
|
COMMON_CFLAGS += -I/usr/local/include
|
||||||
# Default to lld on FreeBSD
|
|
||||||
ifeq ($(origin LD),default)
|
|
||||||
LD = ld.lld
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Attach only if PMDK lib specified with configure
|
# Attach only if PMDK lib specified with configure
|
||||||
|
@ -61,11 +61,22 @@ for i in "$@"; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
OS=$(uname)
|
||||||
|
|
||||||
: ${CC=cc}
|
: ${CC=cc}
|
||||||
: ${CXX=c++}
|
: ${CXX=c++}
|
||||||
: ${LD=ld}
|
: ${LD=}
|
||||||
: ${LTO=n}
|
: ${LTO=n}
|
||||||
|
|
||||||
|
if [ -z "$LD" ]; then
|
||||||
|
if [ "$OS" = "Linux" ]; then
|
||||||
|
LD=ld
|
||||||
|
fi
|
||||||
|
if [ "$OS" = "FreeBSD" ]; then
|
||||||
|
LD=ld.lld
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
CC_TYPE=$($CC -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
|
CC_TYPE=$($CC -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
|
||||||
CXX_TYPE=$($CXX -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
|
CXX_TYPE=$($CXX -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
|
||||||
if [ "$CC_TYPE" != "$CXX_TYPE" ]; then
|
if [ "$CC_TYPE" != "$CXX_TYPE" ]; then
|
||||||
@ -104,7 +115,7 @@ fi
|
|||||||
|
|
||||||
function set_default() {
|
function set_default() {
|
||||||
echo "ifeq (\$(origin $1),default)"
|
echo "ifeq (\$(origin $1),default)"
|
||||||
echo "$1 = $2"
|
echo "$1=$2"
|
||||||
echo "endif"
|
echo "endif"
|
||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user