Blame configure.ac

Packit Service 3b8507
dnl Process this file with autoconf 2.69 or later to produce
Packit Service 3b8507
dnl a configure script.
Packit Service 3b8507
AC_PREREQ(2.69)
Packit Service 3b8507
AC_INIT([config/config.h.in])
Packit Service 3b8507
AC_CONFIG_HEADERS([config/config.h])
Packit Service 3b8507
AC_PREFIX_PROGRAM(nasm)
Packit Service 3b8507
AC_CONFIG_AUX_DIR(autoconf/helpers)
Packit Service 3b8507
Packit Service 3b8507
dnl Mark where in config.h.in macros auto-generated by the configuration
Packit Service 3b8507
dnl start; this is used to generate config/unconfig.h.
Packit Service 3b8507
AH_BOTTOM([
Packit Service 3b8507
/* Begin unconfig.h */])
Packit Service 3b8507
Packit Service 3b8507
dnl Save initial CFLAGS, to see if -g -O2 came from configure or not
Packit Service 3b8507
pa_init_cflags="$CFLAGS"
Packit Service 3b8507
Packit Service 3b8507
dnl This prevents us from running Wine and thinking we are not
Packit Service 3b8507
dnl cross-compiling when in fact we are; running Wine here is at
Packit Service 3b8507
dnl the best very slow and doesn't buy us a single thing at all.
Packit Service 3b8507
WINELOADER=/dev/null
Packit Service 3b8507
export WINELOADER
Packit Service 3b8507
Packit Service 3b8507
dnl Get the canonical target system name
Packit Service 3b8507
AC_CANONICAL_HOST
Packit Service 3b8507
Packit Service 3b8507
dnl Enable any available C extensions
Packit Service 3b8507
AC_USE_SYSTEM_EXTENSIONS
Packit Service 3b8507
AC_SYS_LARGEFILE
Packit Service 3b8507
AC_PROG_CC
Packit Service 3b8507
AC_PROG_CC_STDC
Packit Service 3b8507
PA_ADD_CFLAGS([-std=c17], [], [],
Packit Service 3b8507
[PA_ADD_CFLAGS([-std=c11], [], [],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-std=c99])])])
Packit Service 3b8507
Packit Service 3b8507
dnl If the user did not specify a CFLAGS default, change default
Packit Service 3b8507
dnl to -O0 for debugging
Packit Service 3b8507
PA_ARG_DISABLED([optimization],
Packit Service 3b8507
 [compile without optimization (-O0) to help debugging],
Packit Service 3b8507
 [pa_no_optimize=true])
Packit Service 3b8507
Packit Service 3b8507
dnl Other programs
Packit Service 3b8507
pa_no_optimize=false
Packit Service 3b8507
Packit Service 3b8507
dnl Compile and link with dwarf debug
Packit Service 3b8507
PA_ARG_ENABLED([gdb],
Packit Service 3b8507
 [disable optimization and compile with extra debug information for GDB debugger],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-ggdb3])
Packit Service 3b8507
  pa_no_optimize=true])
Packit Service 3b8507
Packit Service 3b8507
AS_IF([$pa_no_optimize],
Packit Service 3b8507
      [PA_ADD_CFLAGS([-O0])
Packit Service 3b8507
       PA_ADD_CFLAGS([-fno-omit-frame-pointer])])
Packit Service 3b8507
Packit Service 3b8507
dnl Profiling
Packit Service 3b8507
PA_ARG_ENABLED([profiling],
Packit Service 3b8507
 [compile with profiling (-pg option)],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-pg])])
Packit Service 3b8507
Packit Service 3b8507
dnl Abort on panic
Packit Service 3b8507
PA_ARG_ENABLED([panic-abort],
Packit Service 3b8507
 [call abort() on panic to trap in the debugger],
Packit Service 3b8507
 [AC_DEFINE(ABORT_ON_PANIC)])
Packit Service 3b8507
AH_TEMPLATE(ABORT_ON_PANIC,
Packit Service 3b8507
[Define to 1 to call abort() on panics (internal errors), for debugging.])
Packit Service 3b8507
Packit Service 3b8507
dnl Checks for typedefs, structures, and compiler characteristics.
Packit Service 3b8507
AC_TYPE_SIZE_T
Packit Service 3b8507
AC_C_BIGENDIAN(AC_DEFINE(WORDS_BIGENDIAN),AC_DEFINE(WORDS_LITTLEENDIAN),,)
Packit Service 3b8507
AH_TEMPLATE(WORDS_BIGENDIAN,
Packit Service 3b8507
[Define to 1 if your processor stores words with the most significant
Packit Service 3b8507
byte first (like Motorola and SPARC, unlike Intel and VAX).])
Packit Service 3b8507
AH_TEMPLATE(WORDS_LITTLEENDIAN,
Packit Service 3b8507
[Define to 1 if your processor stores words with the least significant
Packit Service 3b8507
byte first (like Intel and VAX, unlike Motorola and SPARC).])
Packit Service 3b8507
Packit Service 3b8507
dnl LLVM doesn't error out on invalid -W options unless this option is
Packit Service 3b8507
dnl specified first.  Enable this so this script can actually discover
Packit Service 3b8507
dnl which -W options are possible for this compiler.
Packit Service 3b8507
PA_ADD_CFLAGS([-Werror=unknown-warning-option])
Packit Service 3b8507
Packit Service 3b8507
dnl Force gcc and gcc-compatible compilers treat signed integers
Packit Service 3b8507
dnl as 2's complement
Packit Service 3b8507
PA_ADD_CFLAGS([-fwrapv])
Packit Service 3b8507
Packit Service 3b8507
dnl Force clang to behave in a predictable manner, in order to make bugs
Packit Service 3b8507
dnl possible to track down. gcc appears to have this behavior by default.
Packit Service 3b8507
PA_ADD_CFLAGS([-ftrivial-auto-var-init=zero])
Packit Service 3b8507
Packit Service 3b8507
dnl Some environments abuse __STRICT_ANSI__ to disable some
Packit Service 3b8507
dnl function declarations
Packit Service 3b8507
PA_ADD_CFLAGS([-U__STRICT_ANSI__])
Packit Service 3b8507
Packit Service 3b8507
dnl Don't put things in common if we can avoid it.  We don't want to
Packit Service 3b8507
dnl assume all compilers support common, and this will help find those
Packit Service 3b8507
dnl problems.  This also works around an OSX linker problem.
Packit Service 3b8507
PA_ADD_CFLAGS([-fno-common])
Packit Service 3b8507
Packit Service 3b8507
dnl Check for library extension
Packit Service 3b8507
PA_LIBEXT
Packit Service 3b8507
Packit Service 3b8507
dnl Look for programs...
Packit Service 3b8507
AC_PROG_LN_S
Packit Service 3b8507
AC_PROG_MAKE_SET
Packit Service 3b8507
AC_PROG_INSTALL
Packit Service 3b8507
AC_PROG_MKDIR_P
Packit Service 3b8507
Packit Service 3b8507
AC_CHECK_PROGS(NROFF,    nroff,    false)
Packit Service 3b8507
AC_CHECK_PROGS(ASCIIDOC, asciidoc, false)
Packit Service 3b8507
AC_CHECK_PROGS(XMLTO,    xmlto,    false)
Packit Service 3b8507
AC_CHECK_PROGS(XZ,       xz,       false)
Packit Service 3b8507
Packit Service 3b8507
dnl Check for progs needed for manpage generation
Packit Service 3b8507
MANPAGES=manpages
Packit Service 3b8507
AS_IF([test x$ASCIIDOC = xfalse],
Packit Service 3b8507
  [AC_MSG_WARN([No asciidoc package found, cannot build man pages])
Packit Service 3b8507
   MANPAGES='']
Packit Service 3b8507
)
Packit Service 3b8507
AS_IF([test x"$XMLTO" = xfalse],
Packit Service 3b8507
  [AC_MSG_WARN([No xmlto package found, cannot build man pages])
Packit Service 3b8507
   MANPAGES='']
Packit Service 3b8507
)
Packit Service 3b8507
AC_SUBST([MANPAGES])
Packit Service 3b8507
Packit Service 3b8507
dnl Don't create .pdf.xz if there is no xz
Packit Service 3b8507
AS_IF([test x"$XZ" = xfalse],
Packit Service 3b8507
  [],
Packit Service 3b8507
  [XZFILES=xzfiles])
Packit Service 3b8507
AC_SUBST([XZFILES])
Packit Service 3b8507
Packit Service 3b8507
dnl Can't create NSIS package if there is no makensis
Packit Service 3b8507
dnl ... but it only applies to a Windows target ...
Packit Service 3b8507
dnl Note: AC_CHECK_TOOLS is supposed to check for the "plain"
Packit Service 3b8507
dnl version of the program name, but it doesn't seem to.
Packit Service 3b8507
AC_ARG_WITH([nsis],
Packit Service 3b8507
[AS_HELP_STRING([[--with-nsis[=makensis]]],
Packit Service 3b8507
 [build an install .exe using NSIS on Windows hosts])],
Packit Service 3b8507
 [], [with_nsis=yes])
Packit Service 3b8507
AS_IF([test x"$MAKENSIS" = x], [],
Packit Service 3b8507
      [AS_IF([test x"$with_nsis" = xno], []
Packit Service 3b8507
             [with_nsis="$MAKENSIS"])])
Packit Service 3b8507
Packit Service 3b8507
MAKENSIS=false
Packit Service 3b8507
Packit Service 3b8507
AS_CASE([$host],
Packit Service 3b8507
	[*-win* | *-mingw*],
Packit Service 3b8507
	[AS_IF([test x"$with_nsis" = xno], [],
Packit Service 3b8507
	 [NSIS=nsis
Packit Service 3b8507
	  AS_IF([test x"$with_nsis" = xyes],
Packit Service 3b8507
	  [AC_CHECK_TOOL(MAKENSIS_TOOL, makensis, false)
Packit Service 3b8507
	   MAKENSIS="$MAKENSIS_TOOL"
Packit Service 3b8507
	   AS_IF([test x"$MAKENSIS" = xfalse],
Packit Service 3b8507
	       [AC_CHECK_PROGS(MAKENSIS_PLAIN, makensis, false)
Packit Service 3b8507
	         MAKENSIS="$MAKENSIS_PLAIN"])
Packit Service 3b8507
	   AS_IF([test x"$MAKENSIS" = xfalse],
Packit Service 3b8507
	         [AC_MSG_WARN([no makensis found, cannot build installer])
Packit Service 3b8507
	          NSIS=''])],
Packit Service 3b8507
	  [MAKENSIS="$with_nsis"])])])
Packit Service 3b8507
AC_SUBST([MAKENSIS])
Packit Service 3b8507
AC_SUBST([NSIS])
Packit Service 3b8507
Packit Service 3b8507
dnl Check for host compiler tools
Packit Service 3b8507
AC_CHECK_TOOL(AR, ar)
Packit Service 3b8507
AC_CHECK_TOOL(RANLIB, ranlib, :)
Packit Service 3b8507
AC_CHECK_TOOL(STRIP, strip)
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl NOTE: the tests for header files and library functions use constructs
Packit Service 3b8507
dnl that create warnings on modern compilers, due to lack of prototypes,
Packit Service 3b8507
dnl etc. Therefore, do not add the -Werror options before this.
Packit Service 3b8507
dnl
Packit Service 3b8507
Packit Service 3b8507
dnl Tests which may trigger warnings on some compilers
Packit Service 3b8507
AC_C_CONST
Packit Service 3b8507
AC_C_INLINE
Packit Service 3b8507
AC_C_RESTRICT
Packit Service 3b8507
Packit Service 3b8507
dnl Checks for header files.
Packit Service 3b8507
AC_HEADER_STDC
Packit Service 3b8507
PA_ADD_HEADERS(string.h)
Packit Service 3b8507
PA_ADD_HEADERS(stdarg.h)
Packit Service 3b8507
AC_CHECK_HEADERS(inttypes.h)
Packit Service 3b8507
AC_CHECK_HEADERS(strings.h)
Packit Service 3b8507
AC_HEADER_STDBOOL
Packit Service 3b8507
AC_CHECK_HEADERS(stdnoreturn.h)
Packit Service 3b8507
AC_CHECK_HEADERS(io.h)
Packit Service 3b8507
AC_CHECK_HEADERS(fcntl.h)
Packit Service 3b8507
AC_CHECK_HEADERS(unistd.h)
Packit Service 3b8507
AC_CHECK_HEADERS(sys/mman.h)
Packit Service 3b8507
AC_CHECK_HEADERS(sys/types.h)
Packit Service 3b8507
AC_CHECK_HEADERS(sys/stat.h)
Packit Service 3b8507
AC_CHECK_HEADERS(sys/resource.h)
Packit Service 3b8507
Packit Service 3b8507
dnl Checks for library functions.
Packit Service 3b8507
AC_CHECK_FUNCS(strcasecmp stricmp)
Packit Service 3b8507
AC_CHECK_FUNCS(strncasecmp strnicmp)
Packit Service 3b8507
AC_CHECK_FUNCS(strsep)
Packit Service 3b8507
AC_CHECK_FUNCS(strnlen)
Packit Service 3b8507
AC_CHECK_FUNCS(strrchrnul)
Packit Service 3b8507
AC_CHECK_FUNCS(iscntrl)
Packit Service 3b8507
AC_CHECK_FUNCS(isascii)
Packit Service 3b8507
AC_CHECK_FUNCS(mempcpy)
Packit Service 3b8507
Packit Service 3b8507
AC_CHECK_FUNCS(getuid)
Packit Service 3b8507
AC_CHECK_FUNCS(getgid)
Packit Service 3b8507
AC_CHECK_FUNCS(getrlimit)
Packit Service 3b8507
Packit Service 3b8507
AC_CHECK_FUNCS(realpath)
Packit Service 3b8507
AC_CHECK_FUNCS(canonicalize_file_name)
Packit Service 3b8507
AC_CHECK_FUNCS(_fullpath)
Packit Service 3b8507
AC_CHECK_FUNCS(pathconf)
Packit Service 3b8507
Packit Service 3b8507
AC_FUNC_FSEEKO
Packit Service 3b8507
AC_CHECK_FUNCS([_fseeki64])
Packit Service 3b8507
AC_CHECK_FUNCS([ftruncate _chsize _chsize_s])
Packit Service 3b8507
AC_CHECK_FUNCS([fileno _fileno])
Packit Service 3b8507
Packit Service 3b8507
AC_FUNC_MMAP
Packit Service 3b8507
AC_CHECK_FUNCS(getpagesize)
Packit Service 3b8507
AC_CHECK_FUNCS(sysconf)
Packit Service 3b8507
Packit Service 3b8507
AC_CHECK_FUNCS([access _access faccessat])
Packit Service 3b8507
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_expect, (1,1))
Packit Service 3b8507
Packit Service 3b8507
dnl ilog2() building blocks
Packit Service 3b8507
PA_ADD_HEADERS(intrin.h)
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_clz, (0U))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_clzl, (0UL))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_clzll, (0ULL))
Packit Service 3b8507
PA_HAVE_FUNC(_BitScanReverse, (0))
Packit Service 3b8507
PA_HAVE_FUNC(_BitScanReverse64, (0))
Packit Service 3b8507
Packit Service 3b8507
PA_FUNC_SNPRINTF
Packit Service 3b8507
PA_FUNC_VSNPRINTF
Packit Service 3b8507
AC_CHECK_FUNCS([strlcpy])
Packit Service 3b8507
AC_CHECK_FUNCS([strrchrnul])
Packit Service 3b8507
Packit Service 3b8507
dnl These types are POSIX-specific, and Windows does it differently...
Packit Service 3b8507
AC_CHECK_TYPES([struct _stati64])
Packit Service 3b8507
AC_CHECK_TYPES([struct stat])
Packit Service 3b8507
AC_CHECK_FUNCS([stat _stati64])
Packit Service 3b8507
AC_CHECK_FUNCS([fstat _fstati64])
Packit Service 3b8507
AC_CHECK_FUNCS([S_ISREG])
Packit Service 3b8507
Packit Service 3b8507
dnl Check for functions that might not be declared in the headers for
Packit Service 3b8507
dnl various idiotic reasons (mostly because of library authors
Packit Service 3b8507
dnl abusing the meaning of __STRICT_ANSI__)
Packit Service 3b8507
AC_CHECK_DECLS(strcasecmp)
Packit Service 3b8507
AC_CHECK_DECLS(stricmp)
Packit Service 3b8507
AC_CHECK_DECLS(strncasecmp)
Packit Service 3b8507
AC_CHECK_DECLS(strnicmp)
Packit Service 3b8507
AC_CHECK_DECLS(strsep)
Packit Service 3b8507
AC_CHECK_DECLS(strlcpy)
Packit Service 3b8507
AC_CHECK_DECLS(strnlen)
Packit Service 3b8507
AC_CHECK_DECLS(strrchrnul)
Packit Service 3b8507
Packit Service 3b8507
dnl Check for missing types
Packit Service 3b8507
AC_TYPE_UINTPTR_T
Packit Service 3b8507
Packit Service 3b8507
dnl Documentation: should we generate an uncompressed PDF?  It is
Packit Service 3b8507
dnl about twice as big, but it can be externally compressed (e.g. with xz)
Packit Service 3b8507
dnl and becomes significantly smaller than the original.
Packit Service 3b8507
PA_ARG_DISABLED([pdf-compression],
Packit Service 3b8507
  [generate an uncompressed documentation PDF],
Packit Service 3b8507
  [PDFOPT='-nocompress'])
Packit Service 3b8507
AC_SUBST([PDFOPT])
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl Look for byte-swapping support...
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ADD_HEADERS(endian.h sys/endian.h machine/endian.h)
Packit Service 3b8507
PA_HAVE_FUNC(cpu_to_le16, (0))
Packit Service 3b8507
PA_HAVE_FUNC(cpu_to_le32, (0))
Packit Service 3b8507
PA_HAVE_FUNC(cpu_to_le64, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__cpu_to_le16, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__cpu_to_le32, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__cpu_to_le64, (0))
Packit Service 3b8507
PA_HAVE_FUNC(htole16, (0))
Packit Service 3b8507
PA_HAVE_FUNC(htole32, (0))
Packit Service 3b8507
PA_HAVE_FUNC(htole64, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__bswap_16, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__bswap_32, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__bswap_64, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_bswap16, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_bswap32, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_bswap64, (0))
Packit Service 3b8507
PA_HAVE_FUNC(_byteswap_ushort, (0))
Packit Service 3b8507
PA_HAVE_FUNC(_byteswap_ulong, (0))
Packit Service 3b8507
PA_HAVE_FUNC(_byteswap_uint64, (0))
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl Some rather useful gcc extensions...
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_constant_p, (0))
Packit Service 3b8507
PA_HAVE_FUNC(__builtin_choose_expr, (0,1,2))
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl Check for supported gcc attributes; some compilers (e.g. Sun CC)
Packit Service 3b8507
dnl support these, but don't define __GNUC__ as they don't support
Packit Service 3b8507
dnl some other features of gcc.
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ADD_CFLAGS([-Werror=attributes])
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(noreturn)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(returns_nonnull,,,,,never_null)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(malloc)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(alloc_size,[1])
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(alloc_size,[1,2])
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(sentinel,,, [const char *, ...], ["a","b",NULL],end_with_null)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(format, [printf,1,2], int, [const char *, ...], ["%d",1])
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(const)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(pure)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(cold,,,,,unlikely_func)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE(unused)
Packit Service 3b8507
PA_FUNC_ATTRIBUTE_ERROR
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl support function sections (if available)
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ARG_DISABLED([sections],
Packit Service 3b8507
 [do not try to compile with function/data section support],
Packit Service 3b8507
 [],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-ffunction-sections])
Packit Service 3b8507
  PA_ADD_CFLAGS([-fdata-sections])
Packit Service 3b8507
  PA_ADD_LDFLAGS([-Wl,--gc-sections])]
Packit Service 3b8507
 )
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl support LTO
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ARG_ENABLED([lto],
Packit Service 3b8507
 [compile with gcc-style link time optimization],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-flto])
Packit Service 3b8507
  dnl Note: we use _PROG rather than _TOOL since we are prepending the full
Packit Service 3b8507
  dnl CC name which ought to already contain the host triplet if needed
Packit Service 3b8507
  ccbase=`echo "$CC" | awk '{ print $1; }'`
Packit Service 3b8507
  AC_CHECK_PROGS(CC_AR, [${ccbase}-ar], [$ac_cv_prog_AR])
Packit Service 3b8507
  AR="$CC_AR"
Packit Service 3b8507
  AC_CHECK_PROGS(CC_RANLIB, [${ccbase}-ranlib], [$ac_cv_prog_RANLIB])
Packit Service 3b8507
  RANLIB="$CC_RANLIB"], [])
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl support sanitizers (if available)
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ARG_ENABLED([sanitizer],
Packit Service 3b8507
 [compile with sanitizers enabled],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-fno-omit-frame-pointer])
Packit Service 3b8507
  PA_ADD_CFLAGS([-fsanitize=address])
Packit Service 3b8507
  PA_ADD_CFLAGS([-fsanitize=undefined])])
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl Don't make symbols visible, there is no point and it just
Packit Service 3b8507
dnl makes the code slower. This mainly affects ELF.
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ADD_CFLAGS([-fvisibility=hidden])
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl If we have gcc, add appropriate code cleanliness options.  Do this
Packit Service 3b8507
dnl here at the end, because configure relies on being able to use
Packit Service 3b8507
dnl some very, very old C constructs.
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ADD_CFLAGS([-Wall])
Packit Service 3b8507
PA_ARG_DISABLED([pedantic],
Packit Service 3b8507
[disable some extra paranoid compiler warnings],
Packit Service 3b8507
[],
Packit Service 3b8507
[PA_ADD_CFLAGS([-W])
Packit Service 3b8507
 PA_ADD_CFLAGS([-pedantic])
Packit Service 3b8507
 PA_ADD_CFLAGS([-Wc90-c99-compat])
Packit Service 3b8507
 PA_ADD_CFLAGS([-Wc99-compat])
Packit Service 3b8507
 PA_ADD_CFLAGS([-Wc99-extensions])
Packit Service 3b8507
])
Packit Service 3b8507
dnl Suppress format warning on Windows targets due to their <inttypes.h>
Packit Service 3b8507
PA_ADD_CFLAGS([-Wpedantic-ms-format],[-Wno-pedantic-ms-format])
Packit Service 3b8507
PA_ADD_CFLAGS([-Wlong-long],[-Wno-long-long])
Packit Service 3b8507
dnl This is needed because we intentionally expect strncpy() to fill
Packit Service 3b8507
dnl in a zero-padded (not zero-terminated) buffer in several backends
Packit Service 3b8507
PA_ADD_CFLAGS([-Wstringop-truncation],[-Wno-stringop-truncation])
Packit Service 3b8507
dnl This is needed because we assume 2's-completement signed arithmetic;
Packit Service 3b8507
dnl on compilers with gcc-like command line syntax we pass the -fwrapv
Packit Service 3b8507
dnl option for exactly that reason.
Packit Service 3b8507
PA_ADD_CFLAGS([-Wshift-negative-value],[-Wno-shift-negative-value])
Packit Service 3b8507
Packit Service 3b8507
dnl Want to turn this on at some point...
Packit Service 3b8507
dnl PA_ADD_CFLAGS([-Wwrite-strings])
Packit Service 3b8507
PA_ARG_ENABLED([werror],
Packit Service 3b8507
 [compile with -Werror to error out on any warning],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-Werror])],
Packit Service 3b8507
 [PA_ADD_CFLAGS([-Werror=implicit])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=missing-braces])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=return-type])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=trigraphs])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=pointer-arith])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=strict-prototypes])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=missing-prototypes])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=missing-declarations])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=comment])
Packit Service 3b8507
  PA_ADD_CFLAGS([-Werror=vla])]
Packit Service 3b8507
)
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl Test compiler features. On some compilers, this can be affected
Packit Service 3b8507
dnl by -Werror options, so run this *after* those options are added.
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_CHECK_BAD_STDC_INLINE
Packit Service 3b8507
PA_C_TYPEOF
Packit Service 3b8507
Packit Service 3b8507
dnl
Packit Service 3b8507
dnl support ccache
Packit Service 3b8507
dnl
Packit Service 3b8507
PA_ARG_ENABLED([ccache], [compile with ccache], [CC="ccache $CC"], [])
Packit Service 3b8507
Packit Service 3b8507
AC_CONFIG_FILES([Makefile doc/Makefile])
Packit Service 3b8507
AC_OUTPUT