From fcc389490a4abe26c1efe6cc624dc2925ed6b670 Mon Sep 17 00:00:00 2001 From: Rui Chang Date: Tue, 18 May 2021 15:32:56 +0800 Subject: [PATCH] configure: add gcc version check for ARM Neoverse-N1 platform When doing debug build on ARM Neoverse-N1 platform, if gcc version is lower than 8.4.0, we may met following errors: /tmp/cc24qua1.s: Assembler messages: /tmp/cc24qua1.s:53: Error: selected processor does not support `casp x0,x1,x2,x3,[x4]' /tmp/cc24qua1.s:85: Error: selected processor does not support `caspa x0,x1,x2,x3,[x4]' /tmp/cc24qua1.s:117: Error: selected processor does not support `caspl x0,x1,x2,x3,[x4]' /tmp/cc24qua1.s:149: Error: selected processor does not support `caspal x0,x1,x2,x3,[x4]' The change also fix the problem by pass armv8.2-a+crypto as target architecture. Signed-off-by: Rui Chang Change-Id: I2053b9440e06873066480d63e471802df2e69d4e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7949 Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Reviewed-by: Ziye Yang Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot --- configure | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/configure b/configure index 7d063f4ef..a2d0c5a62 100755 --- a/configure +++ b/configure @@ -845,6 +845,20 @@ if [[ "${CONFIG[ISAL]}" = "y" ]]; then cd $rootdir fi +# For ARM Neoverse-N1 platform, debug build needs gcc version newer than 8.4 +if [[ "${CONFIG[DEBUG]}" = "y" && $arch = aarch64* && "$CC_TYPE" = "gcc" ]]; then + GCC_VERSION=$($CC -dumpfullversion) + PART_NUM=$(grep -i -m 1 "CPU part" /proc/cpuinfo | awk '{print $4}') + + if [[ "$(printf '%s\n' "8.4.0" "$GCC_VERSION" | sort -V | head -n1)" != "8.4.0" ]]; then + if [[ $PART_NUM = 0xd0c ]]; then + echo "WARNING: For ARM Neoverse-N1 platform, debug build needs GCC version newer than 8.4." + echo " Will work around this by using armv8.2-a+crypto as target architecture for now." + CONFIG[ARCH]=armv8.2-a+crypto + fi + fi +fi + # We are now ready to generate final configuration. But first do sanity # check to see if all keys in CONFIG array have its reflection in CONFIG file. if (($(grep -cE "^\s*CONFIG_[[:alnum:]_]+=" "$rootdir/CONFIG") != ${#CONFIG[@]})); then