From 3531763af72712ba96bd810728c338ebf7250194 Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Mon, 19 Jan 2026 23:51:03 +1100 Subject: Enable SHA assembly for elf-aarch64 --- configure.ac | 2 ++ crypto/CMakeLists.txt | 12 ++++++++++++ crypto/Makefile.am | 3 +++ crypto/Makefile.am.elf-aarch64 | 15 +++++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 crypto/Makefile.am.elf-aarch64 diff --git a/configure.ac b/configure.ac index 8d347b0..eb2b9ce 100644 --- a/configure.ac +++ b/configure.ac @@ -115,6 +115,8 @@ AC_ARG_ENABLE([asm], AS_HELP_STRING([--disable-asm], [Disable assembly])) AM_CONDITIONAL([OPENSSL_NO_ASM], [test "x$enable_asm" = "xno"]) # Conditionally enable assembly by default +AM_CONDITIONAL([HOST_ASM_ELF_AARCH64], + [test "x$HOST_ABI" = "xelf" -a "$host_cpu" = "aarch64" -a "x$enable_asm" != "xno"]) AM_CONDITIONAL([HOST_ASM_ELF_MIPS], [test "x$HOST_ABI" = "xelf" -a "$host_cpu" = "mips" -a "x$enable_asm" != "xno"]) AM_CONDITIONAL([HOST_ASM_ELF_MIPS64], diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 2723d4c..d566182 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -15,6 +15,18 @@ add_definitions(-DLIBRESSL_CRYPTO_INTERNAL) +if(HOST_ASM_ELF_AARCH64) + set(CRYPTO_SRC ${CRYPTO_SRC} sha/sha1_aarch64.c sha/sha256_aarch64.c sha/sha512_aarch64.c) + + set( + ASM_AARCH64_ELF_SRC + sha/sha1_aarch64_ce.S + sha/sha256_aarch64_ce.S + sha/sha256_aarch64_ce.S + ) + set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_AARCH64_ELF_SRC}) +endif() + if(HOST_ASM_ELF_X86_64) set(CRYPTO_SRC ${CRYPTO_SRC} aes/aes_amd64.c) set(CRYPTO_SRC ${CRYPTO_SRC} bn/arch/amd64/bn_arch.c) diff --git a/crypto/Makefile.am b/crypto/Makefile.am index 1acf0f4..b03347a 100644 --- a/crypto/Makefile.am +++ b/crypto/Makefile.am @@ -205,6 +205,7 @@ include Makefile.am.arc4random libcrypto_la_SOURCES = EXTRA_libcrypto_la_SOURCES = +include Makefile.am.elf-aarch64 include Makefile.am.elf-mips include Makefile.am.elf-mips64 include Makefile.am.elf-x86_64 @@ -212,6 +213,7 @@ include Makefile.am.macosx-x86_64 include Makefile.am.masm-x86_64 include Makefile.am.mingw64-x86_64 +if !HOST_ASM_ELF_AARCH64 if !HOST_ASM_ELF_MIPS if !HOST_ASM_ELF_MIPS64 if !HOST_ASM_ELF_X86_64 @@ -225,6 +227,7 @@ endif endif endif endif +endif if HOST_AARCH64 if HOST_DARWIN diff --git a/crypto/Makefile.am.elf-aarch64 b/crypto/Makefile.am.elf-aarch64 new file mode 100644 index 0000000..650e6c6 --- /dev/null +++ b/crypto/Makefile.am.elf-aarch64 @@ -0,0 +1,15 @@ +ASM_AARCH64_ELF = sha/sha1_aarch64_ce.S +ASM_AARCH64_ELF += sha/sha256_aarch64_ce.S +ASM_AARCH64_ELF += sha/sha512_aarch64_ce.S + +EXTRA_DIST += $(ASM_AARCH64_ELF) + +if HOST_ASM_ELF_AARCH64 +libcrypto_la_SOURCES += sha/sha1_aarch64.c +libcrypto_la_SOURCES += sha/sha256_aarch64.c +libcrypto_la_SOURCES += sha/sha512_aarch64.c + +libcrypto_la_CPPFLAGS += -DLIBRESSL_USE_SHA_ASSEMBLY + +libcrypto_la_SOURCES += $(ASM_AARCH64_ELF) +endif -- cgit v1.2.3-55-g6feb