[libpng17] Attempt to fix the arm-neon configuration mess.

This commit is contained in:
John Bowler 2013-04-24 00:07:59 -05:00 committed by Glenn Randers-Pehrson
parent 3de174cd2f
commit e0f4aaa668
5 changed files with 31 additions and 15 deletions

View File

@ -263,6 +263,7 @@ Version 1.7.0beta09 [April 24, 2013]
was switched 'off' as opposed to being explicitly disabled. was switched 'off' as opposed to being explicitly disabled.
Version 1.7.0beta10 [April 24, 2013] Version 1.7.0beta10 [April 24, 2013]
Attempt to fix the PNG_ARM_NEON mess.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -4551,6 +4551,7 @@ Version 1.7.0beta09 [April 24, 2013]
was switched 'off' as opposed to being explicitly disabled. was switched 'off' as opposed to being explicitly disabled.
Version 1.7.0beta10 [April 24, 2013] Version 1.7.0beta10 [April 24, 2013]
Attempt to fix the PNG_ARM_NEON mess.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2013 Glenn Randers-Pehrson * Copyright (c) 2013 Glenn Randers-Pehrson
* Written by Mans Rullgard, 2011. * Written by Mans Rullgard, 2011.
* Last changed in libpng 1.5.15 [March 28, 2013] * Last changed in libpng 1.7.0 [(PENDING RELEASE)]
* *
* This code is released under the libpng license. * This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer * For conditions of distribution and use, see the disclaimer
@ -216,4 +216,4 @@ png_init_filter_functions_neon(png_structp pp, unsigned int bpp)
png_read_filter_row_paeth4_neon; png_read_filter_row_paeth4_neon;
} }
} }
#endif /* FILTER_OPTIMIZATIONS && __arm__ && __ARM_NEON__ */ #endif /* PNG_ARM_NEON_SUPPORTED */

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2013 Glenn Randers-Pehrson * Copyright (c) 2013 Glenn Randers-Pehrson
* Written by Mans Rullgard, 2011. * Written by Mans Rullgard, 2011.
* Last changed in libpng 1.6.2 [(PENDING RELEASE)] * Last changed in libpng 1.7.0 [(PENDING RELEASE)]
* *
* This code is released under the libpng license. * This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer * For conditions of distribution and use, see the disclaimer
@ -11,7 +11,7 @@
*/ */
/* This is required to get the symbol renames, which are #defines, and also /* This is required to get the symbol renames, which are #defines, and also
* includes the value of PNG_FILTER_OPTIMIZATIONS. * includes the definition (or not) of PNG_ARM_NEON_SUPPORTED.
*/ */
#define PNG_VERSION_INFO_ONLY #define PNG_VERSION_INFO_ONLY
#include "../pngpriv.h" #include "../pngpriv.h"
@ -20,8 +20,7 @@
.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */ .section .note.GNU-stack,"",%progbits /* mark stack as non-executable */
#endif #endif
#if defined(PNG_FILTER_OPTIMIZATIONS) && defined(__arm__) && \ #ifdef PNG_ARM_NEON_SUPPORTED
defined(__ARM_NEON__)
#ifdef __ELF__ #ifdef __ELF__
# define ELF # define ELF
@ -233,4 +232,4 @@ func png_read_filter_row_paeth3_neon, export=1
pop {r4,pc} pop {r4,pc}
endfunc endfunc
#endif /* FILTER_OPTIMIZATIONS && __arm__ && __ARM_NEON__ */ #endif /* PNG_ARM_NEON_SUPPORTED */

View File

@ -334,19 +334,26 @@ AC_ARG_WITH(libpng-prefix,
fi]) fi])
AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"]) AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"])
# HOST SPECIFIC OPTIONS
# =====================
#
# ARM
# ===
#
# ARM NEON (SIMD) support.
AC_ARG_ENABLE([arm-neon], AC_ARG_ENABLE([arm-neon],
AS_HELP_STRING([[[--enable-arm-neon]]], AS_HELP_STRING([[[--enable-arm-neon]]],
[Enable ARM NEON optimizations: =off, check, api, on:] [Enable ARM NEON optimizations: =no/off, check, api, yes/on:]
[off: disable the optimizations; check: use internal checking code] [no/off: disable the optimizations; check: use internal checking code]
[(deprecated and poorly supported); api: disable by default, enable by] [(deprecated and poorly supported); api: disable by default, enable by]
[a call to png_set_option; on: turn on unconditionally. The] [a call to png_set_option; yes/on: turn on unconditionally.]),
[default is 'on' if __ARM_NEON__ is defined, otherwise 'off'.]),
[case "$enableval" in [case "$enableval" in
no|off) no|off)
# disable the default enabling on __ARM_NEON__ systems: # disable the default enabling on __ARM_NEON__ systems:
AC_DEFINE([PNG_NO_ARM_NEON], [], AC_DEFINE([PNG_NO_ARM_NEON], [],
[Disable ARM Neon optimizations]) [Disable ARM Neon optimizations])
# Prevent use of the assembler files below: # Prevent inclusion of the assembler files below:
enable_arm_neon=no;; enable_arm_neon=no;;
check) check)
AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [], AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [],
@ -354,13 +361,21 @@ AC_ARG_ENABLE([arm-neon],
api) api)
AC_DEFINE([PNG_ARM_NEON_API_SUPPORTED], [], AC_DEFINE([PNG_ARM_NEON_API_SUPPORTED], [],
[Turn on ARM Neon optimizations at run-time]);; [Turn on ARM Neon optimizations at run-time]);;
on) yes|on)
AC_DEFINE([PNG_ARM_NEON_SUPPORTED], [], AC_DEFINE([PNG_ARM_NEON_SUPPORTED], [],
[Enable ARM Neon optimizations]);; [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]) 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 comppiler 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]]) AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]])