# configure.ac
+# Copyright (c) 2018 Cosmin Truta
+# Copyright (c) 2004-2016 Glenn Randers-Pehrson
+
+# This code is released under the libpng license.
+# For conditions of distribution and use, see the disclaimer
+# and license in png.h
+
dnl Process this file with autoconf to produce a configure script.
dnl
dnl Minor upgrades (compatible ABI): increment the package version
dnl Version number stuff here:
-AC_INIT([libpng],[1.6.13],[png-mng-implement@lists.sourceforge.net])
+AC_INIT([libpng],[1.6.37],[png-mng-implement@lists.sourceforge.net])
AC_CONFIG_MACRO_DIR([scripts])
# libpng does not follow GNU file name conventions (hence 'foreign')
# 1.13 is required for parallel tests
AM_INIT_AUTOMAKE([1.13 foreign dist-xz color-tests silent-rules subdir-objects])
# The following line causes --disable-maintainer-mode to be the default to
-# configure, this is necessary because libpng distributions cannot rely on the
+# configure. This is necessary because libpng distributions cannot rely on the
# time stamps of the autotools generated files being correct
AM_MAINTAINER_MODE
dnl AM_PREREQ([1.11.2])
dnl stop configure from automagically running automake
-PNGLIB_VERSION=1.6.13
+PNGLIB_VERSION=1.6.37
PNGLIB_MAJOR=1
PNGLIB_MINOR=6
-PNGLIB_RELEASE=13
+PNGLIB_RELEASE=37
dnl End of version number stuff
AC_PROG_LN_S
AC_PROG_MAKE_SET
-dnl libtool/libtoolize; version 2.4.2 is the tested version, this or any
+dnl libtool/libtoolize; version 2.4.2 is the tested version. This or any
dnl compatible later version may be used
LT_INIT([win32-dll])
LT_PREREQ([2.4.2])
CFLAGS="$sav_CFLAGS"
fi],)
+# For GCC 5 the default mode for C is -std=gnu11 instead of -std=gnu89
+# In pngpriv.h we request just the POSIX 1003.1 and C89 APIs by defining _POSIX_SOURCE to 1
+# This is incompatible with the new default mode, so we test for that and force the
+# "-std=c89" compiler option:
+AC_MSG_CHECKING([if we need to force back C standard to C89])
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+ [#define _POSIX_SOURCE 1]
+ [#include <stdio.h>]
+ ])],
+ AC_MSG_RESULT(no),[
+ if test "x$GCC" != "xyes"; then
+ AC_MSG_ERROR(
+ [Forcing back to C89 is required but the flags are only known for GCC])
+ fi
+ AC_MSG_RESULT(yes)
+ CFLAGS="$CFLAGS -std=c89"
+])
+
# Checks for header files.
AC_HEADER_STDC
# Checks for library functions.
AC_FUNC_STRTOD
-AC_CHECK_FUNCS([memset], , AC_MSG_ERROR(memset not found in libc))
AC_CHECK_FUNCS([pow], , AC_CHECK_LIB(m, pow, , AC_MSG_ERROR(cannot find pow)) )
+
+# Some later POSIX 1003.1 functions are required for test programs, failure here
+# is soft (the corresponding test program is not built).
+AC_CHECK_FUNC([clock_gettime],,[AC_MSG_WARN([not building timepng])])
+AM_CONDITIONAL([HAVE_CLOCK_GETTIME], [test "$ac_cv_func_clock_gettime" = "yes"])
+
AC_ARG_WITH(zlib-prefix,
AS_HELP_STRING([[[--with-zlib-prefix]]],
[prefix that may have been used in installed zlib]),
# HOST SPECIFIC OPTIONS
# =====================
#
+# DEFAULT
+# =======
+#
+AC_ARG_ENABLE([hardware-optimizations],
+ AS_HELP_STRING([[[--enable-hardware-optimizations]]],
+ [Enable hardware optimizations: =no/off, yes/on:]),
+ [case "$enableval" in
+ no|off)
+ # disable hardware optimization on all systems:
+ enable_arm_neon=no
+ AC_DEFINE([PNG_ARM_NEON_OPT], [0],
+ [Disable ARM_NEON optimizations])
+ enable_mips_msa=no
+ AC_DEFINE([PNG_MIPS_MSA_OPT], [0],
+ [Disable MIPS_MSA optimizations])
+ enable_powerpc_vsx=no
+ AC_DEFINE([PNG_POWERPC_VSX_OPT], [0],
+ [Disable POWERPC VSX optimizations])
+ enable_intel_sse=no
+ AC_DEFINE([PNG_INTEL_SSE_OPT], [0],
+ [Disable INTEL_SSE optimizations])
+ ;;
+ *)
+ # allow enabling hardware optimization on any system:
+ case "$host_cpu" in
+ arm*|aarch64*)
+ enable_arm_neon=yes
+ AC_DEFINE([PNG_ARM_NEON_OPT], [0],
+ [Enable ARM_NEON optimizations])
+ ;;
+ mipsel*|mips64el*)
+ enable_mips_msa=yes
+ AC_DEFINE([PNG_MIPS_MSA_OPT], [0],
+ [Enable MIPS_MSA optimizations])
+ ;;
+ i?86|x86_64)
+ enable_intel_sse=yes
+ AC_DEFINE([PNG_INTEL_SSE_OPT], [1],
+ [Enable Intel SSE optimizations])
+ ;;
+ powerpc*|ppc64*)
+ enable_powerpc_vsx=yes
+ AC_DEFINE([PNG_POWERPC_VSX_OPT], [2],
+ [Enable POWERPC VSX optimizations])
+ ;;
+ esac
+ ;;
+ esac])
+
# ARM
# ===
#
AM_CONDITIONAL([PNG_ARM_NEON],
[test "$enable_arm_neon" != 'no' &&
case "$host_cpu" in
- arm*) :;;
+ arm*|aarch64*) :;;
*) test "$enable_arm_neon" != '';;
esac])
+# MIPS
+# ===
+#
+# MIPS MSA (SIMD) support.
+
+AC_ARG_ENABLE([mips-msa],
+ AS_HELP_STRING([[[--enable-mips-msa]]],
+ [Enable MIPS MSA 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; yes/on: turn on unconditionally.]
+ [If not specified: determined by the compiler.]),
+ [case "$enableval" in
+ no|off)
+ # disable the default enabling on __mips_msa systems:
+ AC_DEFINE([PNG_MIPS_MSA_OPT], [0],
+ [Disable MIPS MSA optimizations])
+ # Prevent inclusion of the assembler files below:
+ enable_mips_msa=no;;
+ check)
+ AC_DEFINE([PNG_MIPS_MSA_CHECK_SUPPORTED], [],
+ [Check for MIPS MSA support at run-time]);;
+ api)
+ AC_DEFINE([PNG_MIPS_MSA_API_SUPPORTED], [],
+ [Turn on MIPS MSA optimizations at run-time]);;
+ yes|on)
+ AC_DEFINE([PNG_MIPS_MSA_OPT], [2],
+ [Enable MIPS MSA optimizations])
+ AC_MSG_WARN([--enable-mips-msa: please specify 'check' or 'api', if]
+ [you want the optimizations unconditionally pass '-mmsa -mfp64']
+ [to the compiler.]);;
+ *)
+ AC_MSG_ERROR([--enable-mips-msa=${enable_mips_msa}: invalid value])
+ esac])
+
+# Add MIPS specific files to all builds where the host_cpu is mips ('mips*') or
+# where MIPS optimizations were explicitly requested (this allows a fallback if a
+# future host CPU does not match 'mips*')
+
+AM_CONDITIONAL([PNG_MIPS_MSA],
+ [test "$enable_mips_msa" != 'no' &&
+ case "$host_cpu" in
+ mipsel*|mips64el*) :;;
+ esac])
+
+# INTEL
+# =====
+#
+# INTEL SSE (SIMD) support.
+
+AC_ARG_ENABLE([intel-sse],
+ AS_HELP_STRING([[[--enable-intel-sse]]],
+ [Enable Intel SSE optimizations: =no/off, yes/on:]
+ [no/off: disable the optimizations;]
+ [yes/on: enable the optimizations.]
+ [If not specified: determined by the compiler.]),
+ [case "$enableval" in
+ no|off)
+ # disable the default enabling:
+ AC_DEFINE([PNG_INTEL_SSE_OPT], [0],
+ [Disable Intel SSE optimizations])
+ # Prevent inclusion of the assembler files below:
+ enable_intel_sse=no;;
+ yes|on)
+ AC_DEFINE([PNG_INTEL_SSE_OPT], [1],
+ [Enable Intel SSE optimizations]);;
+ *)
+ AC_MSG_ERROR([--enable-intel-sse=${enable_intel_sse}: invalid value])
+ esac])
+
+# Add Intel specific files to all builds where the host_cpu is Intel ('x86*')
+# or where Intel optimizations were explicitly requested (this allows a
+# fallback if a future host CPU does not match 'x86*')
+AM_CONDITIONAL([PNG_INTEL_SSE],
+ [test "$enable_intel_sse" != 'no' &&
+ case "$host_cpu" in
+ i?86|x86_64) :;;
+ *) test "$enable_intel_sse" != '';;
+ esac])
+
+# PowerPC
+# ===
+#
+# PowerPC VSX (SIMD) support.
+
+AC_ARG_ENABLE([powerpc-vsx],
+AS_HELP_STRING([[[--enable-powerpc-vsx]]],
+ [Enable POWERPC VSX optimizations: =no/off, check, api, yes/on:]
+ [no/off: disable the optimizations; check: use internal checking code]
+ [api: disable by default, enable by a call to png_set_option]
+ [yes/on: turn on unconditionally.]
+ [If not specified: determined by the compiler.]),
+ [case "$enableval" in
+ no|off)
+ # disable the default enabling on __ppc64__ systems:
+ AC_DEFINE([PNG_POWERPC_VSX_OPT], [0],
+ [Disable POWERPC VSX optimizations])
+ # Prevent inclusion of the platform specific files below:
+ enable_powerpc_vsx=no;;
+ check)
+ AC_DEFINE([PNG_POWERPC_VSX_CHECK_SUPPORTED], [],
+ [Check for POWERPC VSX support at run-time])
+ AC_MSG_WARN([--enable-powerpc-vsx Please check contrib/powerpc/README file]
+ [for the list of supported OSes.]);;
+ api)
+ AC_DEFINE([PNG_POWERPC_VSX_API_SUPPORTED], [],
+ [Turn on POWERPC VSX optimizations at run-time]);;
+ yes|on)
+ AC_DEFINE([PNG_POWERPC_VSX_OPT], [2],
+ [Enable POWERPC VSX optimizations])
+ AC_MSG_WARN([--enable-powerpc-vsx: please specify 'check' or 'api', if]
+ [you want the optimizations unconditionally pass '-maltivec -mvsx']
+ [or '-mcpu=power8'to the compiler.]);;
+ *)
+ AC_MSG_ERROR([--enable-powerpc-vsx=${enable_powerpc_vsx}: invalid value])
+ esac])
+
+# Add PowerPC specific files to all builds where the host_cpu is powerpc('powerpc*') or
+# where POWERPC optimizations were explicitly requested (this allows a fallback if a
+# future host CPU does not match 'powerpc*')
+
+AM_CONDITIONAL([PNG_POWERPC_VSX],
+ [test "$enable_powerpc_vsx" != 'no' &&
+ case "$host_cpu" in
+ powerpc*|ppc64*) :;;
+ esac])
+
+
AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]])
# Config files, substituting as above