configure.ac 8.2 KB
Newer Older
1 2 3 4 5
# configure.ac

dnl Process this file with autoconf to produce a configure script.
dnl
dnl Minor upgrades (compatible ABI): increment the package version
6
dnl (third field in two places below) and set the PNGLIB_RELEASE
7 8 9 10 11 12 13 14 15 16
dnl variable.
dnl
dnl Major upgrades (incompatible ABI): increment the package major
dnl version (second field, or first if desired), set the minor
dnl to 0, set PNGLIB_MAJOR below *and* follow the instructions in
dnl Makefile.am to upgrade the package name.

dnl This is here to prevent earlier autoconf from being used, it
dnl should not be necessary to regenerate configure if the time
dnl stamps are correct
17
AC_PREREQ([2.68])
18 19 20

dnl Version number stuff here:

21
AC_INIT([libpng],[1.6.0rc01],[png-mng-implement@lists.sourceforge.net])
22
AC_CONFIG_MACRO_DIR([scripts])
23 24 25 26 27

# libpng does not follow GNU file name conventions (hence 'foreign')
# color-tests requires automake 1.11 or later
# silent-rules requires automake 1.11 or later
# dist-xz requires automake 1.11 or later
28
# 1.12.2 fixes a security issue in 1.11.2 and 1.12.1
29
AM_INIT_AUTOMAKE([1.12.2 foreign dist-xz color-tests silent-rules])
30 31
# was:
# AM_INIT_AUTOMAKE
32 33
AM_MAINTAINER_MODE

34 35 36 37 38 39
dnl configure.ac and Makefile.am expect automake 1.11.2 or a compatible later
dnl version; aclocal.m4 will generate a failure if you use a prior version of
dnl automake, so the following is not necessary (and is not defined anyway):
dnl AM_PREREQ([1.11.2])
dnl stop configure from automagically running automake

40
PNGLIB_VERSION=1.6.0rc01
41
PNGLIB_MAJOR=1
42 43
PNGLIB_MINOR=6
PNGLIB_RELEASE=0
44 45 46

dnl End of version number stuff

47
AC_CONFIG_SRCDIR([pngget.c])
48
AC_CONFIG_HEADERS([config.h])
49 50

# Checks for programs.
51
AC_LANG([C])
52
AC_PROG_CC
53
AM_PROG_AS
54
LT_PATH_LD
55 56
AC_PROG_CPP
AC_CHECK_TOOL(SED, sed, :)
57
AC_CHECK_TOOL(AWK, awk, :)
58 59
AC_PROG_INSTALL
AC_PROG_LN_S
60
AC_PROG_MAKE_SET
61 62 63

dnl libtool/libtoolize; version 2.4.2 is the tested version, this or any
dnl compatible later version may be used
64
LT_INIT([win32-dll])
65
LT_PREREQ([2.4.2])
66

67 68 69 70 71
# On Solaris 10 and 12 CPP gets set to cc -E, however this still
# does some input parsing.  We need strict ANSI-C style tokenization,
# check this:
AC_REQUIRE_CPP
AC_MSG_CHECKING([for a C preprocessor that does not parse its input])
72
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[1.1.1 16BIT]])],
73
   [DFNCPP="$CPP"],
74 75 76 77 78 79 80 81 82 83
   [  DFNCPP=""
      sav_CPP="$CPP"
      for CPP in "${CC-cc} -E" "${CC-cc} -E -traditional-cpp" "/lib/cpp" "cpp"
      do
         AC_PREPROC_IFELSE([AC_LANG_SOURCE([[1.1.1 16BIT]])],
            [DFNCPP="$CPP"]
            [break],,)
      done
      CPP="$sav_CPP"
   ])
84 85 86 87 88 89 90
if test -n "$DFNCPP"; then
   AC_MSG_RESULT([$DFNCPP])
   AC_SUBST(DFNCPP)
else
   AC_MSG_FAILURE([not found], 1)
fi

91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
# -Werror cannot be passed to GCC in CFLAGS because configure will fail (it
# checks the compiler with a program that generates a warning), add the
# following option to deal with this
AC_ARG_VAR(PNG_COPTS,
   [additional flags for the C compiler, use this for options that would]
   [cause configure itself to fail])
AC_ARG_ENABLE(werror,
   AS_HELP_STRING([[[--enable-werror[=OPT]]]],
      [Pass -Werror or the given argument to the compiler if it is supported]),
   [test "$enable_werror" = "yes" && enable_werror="-Werror"
    if test "$enable_werror" != "no"; then
      sav_CFLAGS="$CFLAGS"
      CFLAGS="$enable_werror $CFLAGS"
      AC_MSG_CHECKING([if the compiler allows $enable_werror])
      AC_COMPILE_IFELSE(
         [AC_LANG_SOURCE([
            [int main(int argc, char **argv){]
            [return argv[argc-1][0];]
            [}]])],
         AC_MSG_RESULT(yes)
         PNG_COPTS="$PNG_COPTS $enable_werror",
         AC_MSG_RESULT(no))
      CFLAGS="$sav_CFLAGS"
    fi],)

116 117
# Checks for header files.
AC_HEADER_STDC
118
AC_CHECK_HEADERS([malloc.h stdlib.h string.h strings.h])
119 120 121 122 123

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_STRUCT_TM
J
John Bowler 已提交
124
AC_C_RESTRICT
125 126 127

# Checks for library functions.
AC_FUNC_STRTOD
128 129
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)) )
130
AC_ARG_WITH(zlib-prefix,
131 132 133 134
   AS_HELP_STRING([[[--with-zlib-prefix]]],
      [prefix that may have been used in installed zlib]),
      [ZPREFIX=${withval}],
      [ZPREFIX='z_'])
135
AC_CHECK_LIB(z, zlibVersion, ,
136
    AC_CHECK_LIB(z, ${ZPREFIX}zlibVersion, , AC_MSG_ERROR(zlib not installed)))
137

J
John Bowler 已提交
138 139 140 141 142
# The following is for pngvalid, to ensure it catches FP errors even on
# platforms that don't enable FP exceptions, the function appears in the math
# library (typically), it's not an error if it is not found.
AC_CHECK_LIB([m], [feenableexcept])
AC_CHECK_FUNCS([feenableexcept])
143

144 145 146 147 148 149 150 151 152 153 154
AC_MSG_CHECKING([if using Solaris linker])
SLD=`$LD --version 2>&1 | grep Solaris`
if test "$SLD"; then
    have_solaris_ld=yes
    AC_MSG_RESULT(yes)
else
    have_solaris_ld=no
    AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(HAVE_SOLARIS_LD, test "$have_solaris_ld" = "yes")

155
AC_MSG_CHECKING([if libraries can be versioned])
156 157 158 159 160 161 162 163 164 165
# Special case for PE/COFF platforms: ld reports
# support for version-script, but doesn't actually
# DO anything with it.
case $host in
*cygwin* | *mingw32* | *interix* )
    have_ld_version_script=no
    AC_MSG_RESULT(no)
;;
* )

166 167 168 169 170 171
if test "$have_solaris_ld" = "yes"; then
    GLD=`$LD --help < /dev/null 2>&1 | grep 'M mapfile'`
else
    GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
fi

172 173 174 175 176 177
if test "$GLD"; then
    have_ld_version_script=yes
    AC_MSG_RESULT(yes)
else
    have_ld_version_script=no
    AC_MSG_RESULT(no)
178
    AC_MSG_WARN(*** You have not enabled versioned symbols.)
179
fi
180 181 182
;;
esac

183
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
184

185 186 187
if test "$have_ld_version_script" = "yes"; then
    AC_MSG_CHECKING([for symbol prefix])
    SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \
188 189 190
                  | ${CPP-${CC-gcc} -E} - 2>&1 \
                  | ${EGREP-grep} "^PREFIX=" \
                  | ${SED-sed} -e "s:^PREFIX=::" -e "s:__USER_LABEL_PREFIX__::"`
191 192 193 194
    AC_SUBST(SYMBOL_PREFIX)
    AC_MSG_RESULT($SYMBOL_PREFIX)
fi

195 196 197 198
# Substitutions for .in files
AC_SUBST(PNGLIB_VERSION)
AC_SUBST(PNGLIB_MAJOR)
AC_SUBST(PNGLIB_MINOR)
199
AC_SUBST(PNGLIB_RELEASE)
200 201 202 203

# Additional arguments (and substitutions)
# Allow the pkg-config directory to be set
AC_ARG_WITH(pkgconfigdir,
204 205 206 207
   AS_HELP_STRING([[[--with-pkgconfigdir]]],
      [Use the specified pkgconfig dir (default is libdir/pkgconfig)]),
   [pkgconfigdir=${withval}],
   [pkgconfigdir='${libdir}/pkgconfig'])
208

209
AC_SUBST([pkgconfigdir])
210
AC_MSG_NOTICE([[pkgconfig directory is ${pkgconfigdir}]])
211

212 213
# Make the *-config binary config scripts optional
AC_ARG_WITH(binconfigs,
214 215 216 217 218 219 220 221 222 223
   AS_HELP_STRING([[[--with-binconfigs]]],
      [Generate shell libpng-config scripts as well as pkg-config data]
      [@<:@default=yes@:>@]),
   [if test "${withval}" = no; then
      binconfigs=
      AC_MSG_NOTICE([[libpng-config scripts will not be built]])
    else
      binconfigs='${binconfigs}'
    fi],
   [binconfigs='${binconfigs}'])
224
AC_SUBST([binconfigs])
225

226 227 228 229 230 231 232 233
# Support for prefixes to the API function names; this will generate defines
# at the start of the build to rename exported library functions
AC_ARG_WITH(libpng-prefix,
   AS_HELP_STRING([[[--with-libpng-prefix]]],
      [prefix libpng exported function (API) names with the given value]),
   [if test "${withval:-no}" != "no"; then
      AC_SUBST([PNG_PREFIX], [${withval}])
    fi])
234
AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"])
235

236 237 238
# Because GCC by default assembles code with an executable stack, even though it
# compiles C code with a non-executable stack, it is necessary to do a fixup
# here (this may by GCC specific)
239
AC_SUBST([AM_CCASFLAGS], [-Wa,--noexecstack])
240

241
AC_ARG_ENABLE([arm-neon],
242 243
   AS_HELP_STRING([[[--enable-arm-neon]]], [Enable ARM NEON optimizations]),
   [if test "${enableval}" = "yes"; then
244 245 246 247 248
      AC_DEFINE([PNG_FILTER_OPTIMIZATIONS],
                [png_init_filter_functions_neon],
                [ARM NEON filter initialization function])
      AC_DEFINE([PNG_ALIGNED_MEMORY_SUPPORTED], [1],
                [Align row buffers])
249
    fi])
250 251
AM_CONDITIONAL([PNG_ARM_NEON], [test "${enable_arm_neon:-no}" = yes])

252 253
AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]])

254
# Config files, substituting as above
255
AC_CONFIG_FILES([Makefile libpng.pc:libpng.pc.in])
256
AC_CONFIG_FILES([libpng-config:libpng-config.in],
257
   [chmod +x libpng-config])
258 259

AC_OUTPUT