From 7b1da5254917a770e30f164cc3de49e774f7024a Mon Sep 17 00:00:00 2001 From: John Bowler Date: Thu, 25 Apr 2013 10:03:42 -0500 Subject: [PATCH] [libpng16] Ensure that NEON filter stuff is completely disabled when switched 'off'. Previously the ARM NEON specific files were still built if the option was switched 'off' as opposed to being explicitly disabled. --- ANNOUNCE | 3 +++ CHANGES | 3 +++ configure.ac | 36 +++++++++++++++++++++++++++--------- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index e8017667e..283f33398 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -27,6 +27,9 @@ Changes since the last public release (1.6.2): Version 1.6.3beta01 [April 25, 2013] Revised stack marking in arm/filter_neon.S and configure.ac. + Ensure that NEON filter stuff is completely disabled when switched 'off'. + Previously the ARM NEON specific files were still built if the option + was switched 'off' as opposed to being explicitly disabled. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index e822dd647..6f07cecab 100644 --- a/CHANGES +++ b/CHANGES @@ -4509,6 +4509,9 @@ Version 1.6.2 [April 25, 2013] Version 1.6.3beta01 [April 25, 2013] Revised stack marking in arm/filter_neon.S and configure.ac. + Ensure that NEON filter stuff is completely disabled when switched 'off'. + Previously the ARM NEON specific files were still built if the option + was switched 'off' as opposed to being explicitly disabled. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/configure.ac b/configure.ac index 66a69e050..1703c368a 100644 --- a/configure.ac +++ b/configure.ac @@ -226,30 +226,48 @@ AC_ARG_WITH(libpng-prefix, fi]) AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"]) +# HOST SPECIFIC OPTIONS +# ===================== +# +# ARM +# === +# +# ARM NEON (SIMD) support. + AC_ARG_ENABLE([arm-neon], AS_HELP_STRING([[[--enable-arm-neon]]], - [Enable ARM NEON optimizations: =off, check, api, on:] - [off: disable the optimizations; check: use internal checking code] + [Enable ARM NEON optimizations: =no/off, check, api, yes/on:] + [no/off: disable the optimizations; check: use internal checking code] [(deprecated and poorly supported); api: disable by default, enable by] - [a call to png_set_option; on: turn on unconditionally. The] - [default is 'on' if __ARM_NEON__ is defined, otherwise 'off'.]), + [a call to png_set_option; yes/on: turn on unconditionally.]), [case "$enableval" in - off) + no|off) + # disable the default enabling on __ARM_NEON__ systems: AC_DEFINE([PNG_NO_ARM_NEON], [], - [Disable ARM Neon optimizations]);; + [Disable ARM Neon optimizations]) + # Prevent inclusion of the assembler files below: + enable_arm_neon=no;; check) AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [], [Check for ARM Neon support at run-time]);; api) AC_DEFINE([PNG_ARM_NEON_API_SUPPORTED], [], [Turn on ARM Neon optimizations at run-time]);; - on) + yes|on) AC_DEFINE([PNG_ARM_NEON_SUPPORTED], [], [Enable ARM Neon optimizations]);; *) - AC_MSG_ERROR([arm-neon: option value required (off/check/api/on)]);; + AC_MSG_ERROR([--enable-arm-neon=${enable_arm_neon}: invalid value]) esac]) -AM_CONDITIONAL([PNG_ARM_NEON], [test "${enable_arm_neon:-no}" != "no"]) + +# If enable/disable was not specified default to using the optimizations if the +# host CPU is ARM and the compiler is targeting a NEON host. The latter test +# is done in scripts/pnglibconf.dfa by checking for __ARM_NEON__. The +# AM_CONDITIONAL below controls whether the ARM NEON source files are built. + +AM_CONDITIONAL([PNG_ARM_NEON], + [test "$enable_arm_neon" != 'no' && + test "$host_cpu" = 'arm' -o "$enable_arm_neon" != '']) AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]])