fix compile fail for armclang
when target flags are not set at command line, armclang
will reports required feature not set error.
This is found and verified at 6.20.1. And it does not work
for 6.6
Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
diff --git a/library/aesce.c b/library/aesce.c
index 893ed17..babd9a6 100644
--- a/library/aesce.c
+++ b/library/aesce.c
@@ -66,9 +66,11 @@
# endif
#endif
+#include <arm_neon.h>
+
#if !defined(__ARM_FEATURE_AES) || defined(MBEDTLS_ENABLE_ARM_CRYPTO_EXTENSIONS_COMPILER_FLAG)
# if defined(__clang__)
-# pragma clang attribute push (__attribute__((target("aes"))), apply_to=function)
+# pragma clang attribute push (__attribute__((target("crypto,aes"))), apply_to=function)
# define MBEDTLS_POP_TARGET_PRAGMA
# elif defined(__GNUC__)
# pragma GCC push_options
@@ -79,8 +81,6 @@
# endif
#endif /* !__ARM_FEATURE_AES || MBEDTLS_ENABLE_ARM_CRYPTO_EXTENSIONS_COMPILER_FLAG */
-#include <arm_neon.h>
-
#if defined(__linux__)
#include <asm/hwcap.h>
#include <sys/auxv.h>
diff --git a/library/sha256.c b/library/sha256.c
index 169229c..ae1b35c 100644
--- a/library/sha256.c
+++ b/library/sha256.c
@@ -57,15 +57,18 @@
#include "mbedtls/platform.h"
#if defined(__aarch64__)
+
# if defined(MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT) || \
defined(MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY)
+
/* *INDENT-OFF* */
+# include <arm_neon.h>
# if !defined(__ARM_FEATURE_CRYPTO) || defined(MBEDTLS_ENABLE_ARM_CRYPTO_EXTENSIONS_COMPILER_FLAG)
# if defined(__clang__)
# if __clang_major__ < 4
# error "A more recent Clang is required for MBEDTLS_SHA256_USE_A64_CRYPTO_*"
# endif
-# pragma clang attribute push (__attribute__((target("crypto"))), apply_to=function)
+# pragma clang attribute push (__attribute__((target("crypto,sha2"))), apply_to=function)
# define MBEDTLS_POP_TARGET_PRAGMA
# elif defined(__GNUC__)
/* FIXME: GCC 5 claims to support Armv8 Crypto Extensions, but some
@@ -83,7 +86,7 @@
# endif
# endif
/* *INDENT-ON* */
-# include <arm_neon.h>
+
# endif
# if defined(MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT)
# if defined(__unix__)
diff --git a/library/sha512.c b/library/sha512.c
index ff92a1b..5174b65 100644
--- a/library/sha512.c
+++ b/library/sha512.c
@@ -60,6 +60,7 @@
# if defined(MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT) || \
defined(MBEDTLS_SHA512_USE_A64_CRYPTO_ONLY)
/* *INDENT-OFF* */
+# include <arm_neon.h>
/*
* Best performance comes from most recent compilers, with intrinsics and -O3.
* Must compile with -march=armv8.2-a+sha3, but we can't detect armv8.2-a, and
@@ -96,7 +97,6 @@
# endif
# endif
/* *INDENT-ON* */
-# include <arm_neon.h>
# endif
# if defined(MBEDTLS_SHA512_USE_A64_CRYPTO_IF_PRESENT)
# if defined(__unix__)