From: richael02 Date: Fri, 16 Feb 2018 10:53:22 +0000 (+0800) Subject: Fix build problems about NEON (#149) X-Git-Tag: 1.9.9-b1~644 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd3236bbf58e56ff045cab0323728f0386092179;p=thirdparty%2Fzlib-ng.git Fix build problems about NEON (#149) * Fix build problems about NEON on AArch64 NEON is enabled by default on armv8-a platforms, and so NEON related objects should be included when the platform is armv8-a. Errors about adler32_neon will occur when you run ./configure on armv8-a platforms without --neon option, because zlib-ng uses --neon option to include NEON related objects regardless of Arm architecture. You will have similar issue when you build the project with cmake. This patch fixes the problem by including NEON related objects when the platform is armv8-a(including aarch64). Use adler32_neon only when zlib-ng is configured with --neon (or -DWITH_NEON=ON if using cmake), or else use the default adler32 no matter what Arm architecture is. Signed-off-by: Richael Zhuang --- diff --git a/configure b/configure index 595713f2..4ed7d87c 100755 --- a/configure +++ b/configure @@ -851,7 +851,7 @@ case "${ARCH}" in ;; # ARM specific optimizations - arm | armv[3467]l | armv4b | armv4tl | armv5tel | armv5tejl | armv[67]hl | armv7hnl | armv[78]-a | armv8-a+* | armv8.[12]-a) + arm | armv[3467]l | armv4b | armv4tl | armv5tel | armv5tejl | armv[67]hl | armv7hnl | armv[78]-a | armv8-a+* | armv8.[1234]-a | armv8.[1234]-a+*) ARCHDIR=arch/arm ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} fill_window_arm.o" ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} fill_window_arm.lo" @@ -871,7 +871,7 @@ case "${ARCH}" in CFLAGS="${CFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" SFLAGS="${SFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" ;; - arm | armv7* | armv8-a | armv8-a+simd) + arm | armv7*) CFLAGS="${CFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" SFLAGS="${SFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" @@ -883,7 +883,19 @@ case "${ARCH}" in ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_neon.lo" fi ;; - armv8-a+crc | armv8-a+crc+simd | armv8.[12]-a) + armv8-a | armv8-a+simd) + CFLAGS="${CFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" + SFLAGS="${SFLAGS} -DUNALIGNED_OK -DUNROLL_LESS" + + if test $buildneon -eq 1; then + CFLAGS="${CFLAGS} ${floatabi} -DARM_NEON_ADLER32" + SFLAGS="${SFLAGS} ${floatabi} -DARM_NEON_ADLER32" + + ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_neon.o" + ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_neon.lo" + fi + ;; + armv8-a+crc | armv8-a+crc+simd | armv8.[1234]-a | armv8.[1234]-a+simd) CFLAGS="-march=${ARCH} ${CFLAGS} -DARM_ACLE_CRC_HASH -DUNALIGNED_OK -DUNROLL_LESS" SFLAGS="-march=${ARCH} ${SFLAGS} -DARM_ACLE_CRC_HASH -DUNALIGNED_OK -DUNROLL_LESS" @@ -891,9 +903,8 @@ case "${ARCH}" in ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} crc32_acle.lo insert_string_acle.lo" if test $buildneon -eq 1; then - CFLAGS="${CFLAGS} ${floatabi} -mfpu=neon -DARM_NEON_ADLER32" - SFLAGS="${SFLAGS} ${floatabi} -mfpu=neon -DARM_NEON_ADLER32" - + CFLAGS="${CFLAGS} ${floatabi} -DARM_NEON_ADLER32" + SFLAGS="${SFLAGS} ${floatabi} -DARM_NEON_ADLER32" ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_neon.o" ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_neon.lo" fi