]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
[arm] Disable ACLE, UNALIGNED_OK and UNALIGNED64_OK on armv7 and earlier.
authorMika Lindqvist <postmaster@raasu.org>
Wed, 21 Jul 2021 16:26:43 +0000 (19:26 +0300)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Wed, 11 Aug 2021 10:07:33 +0000 (12:07 +0200)
* armv7 has partial support for unaligned reads, but compiler might use instructions that do not support unaligned accesses

CMakeLists.txt

index 8c4523b3de7b427807630e774f7258798e789713..b4eeaba81a19f71a4db25ebe171da634fb0d5ca8 100644 (file)
@@ -234,7 +234,7 @@ endif()
 
 # Set architecture alignment requirements
 if(WITH_UNALIGNED)
-    if(BASEARCH_ARM_FOUND OR (BASEARCH_PPC_FOUND AND "${ARCH}" MATCHES "powerpc64le") OR BASEARCH_X86_FOUND)
+    if((BASEARCH_ARM_FOUND AND NOT "${ARCH}" MATCHES "armv[2-7]") OR (BASEARCH_PPC_FOUND AND "${ARCH}" MATCHES "powerpc64le") OR BASEARCH_X86_FOUND)
         if(NOT DEFINED UNALIGNED_OK)
             set(UNALIGNED_OK TRUE)
         endif()
@@ -245,7 +245,9 @@ if(WITH_UNALIGNED)
     endif()
     if(BASEARCH_ARM_FOUND)
         if(NOT DEFINED UNALIGNED64_OK)
-            if("${ARCH}" MATCHES "(arm(v[8-9])?|aarch64)")
+            if("${ARCH}" MATCHES "armv[2-7]")
+                set(UNALIGNED64_OK FALSE)
+            elseif("${ARCH}" MATCHES "(arm(v[8-9])?|aarch64)")
                 set(UNALIGNED64_OK TRUE)
             endif()
         endif()
@@ -579,7 +581,7 @@ if(WITH_OPTIM)
         endif()
         list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm.h)
         list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/armfeature.c)
-        if(WITH_ACLE AND NOT MSVC)
+        if(WITH_ACLE AND NOT MSVC AND NOT "${ARCH}" MATCHES "armv[2-7]")
             check_acle_intrinsics()
             if(HAVE_ACLE_INTRIN)
                 add_definitions(-DARM_ACLE_CRC_HASH)
@@ -1336,7 +1338,8 @@ add_feature_info(WITH_MAINTAINER_WARNINGS WITH_MAINTAINER_WARNINGS "Build with p
 add_feature_info(WITH_CODE_COVERAGE WITH_CODE_COVERAGE "Enable code coverage reporting")
 add_feature_info(WITH_INFLATE_STRICT WITH_INFLATE_STRICT "Build with strict inflate distance checking")
 add_feature_info(WITH_INFLATE_ALLOW_INVALID_DIST WITH_INFLATE_ALLOW_INVALID_DIST "Build with zero fill for inflate invalid distances")
-add_feature_info(WITH_UNALIGNED WITH_UNALIGNED "Support unaligned reads on platforms that support it")
+add_feature_info(WITH_UNALIGNED UNALIGNED_OK "Support unaligned reads on platforms that support it")
+add_feature_info(WITH_UNALIGNED64 UNALIGNED64_OK "Support unaligned 64-bit reads on platforms that support it")
 
 if(BASEARCH_ARM_FOUND)
     add_feature_info(WITH_ACLE WITH_ACLE "Build with ACLE")