mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
[libpng17] Attempt to fix the arm-neon configuration mess.
This commit is contained in:
parent
3de174cd2f
commit
e0f4aaa668
1
ANNOUNCE
1
ANNOUNCE
@ -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
|
||||||
|
1
CHANGES
1
CHANGES
@ -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
|
||||||
|
@ -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 */
|
||||||
|
@ -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 */
|
||||||
|
31
configure.ac
31
configure.ac
@ -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]])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user