dnl   configuration script for expat
dnl   Process this file with autoconf to produce a configure script.
dnl
dnl   Copyright 2000 Clark Cooper
dnl
dnl   This file is part of EXPAT.
dnl
dnl   EXPAT is free software; you can redistribute it and/or modify it
dnl   under the terms of the License (based on the MIT/X license) contained
dnl   in the file COPYING that comes with this distribution.
dnl

dnl Ensure that Expat is configured with autoconf 2.69 or newer.
AC_PREREQ(2.69)

dnl Get the version number of Expat, using m4's esyscmd() command to run
dnl the command at m4-generation time. This allows us to create an m4
dnl symbol holding the correct version number. AC_INIT() requires the
dnl version number at m4-time, rather than when ./configure is run, so
dnl all this must happen as part of m4, not as part of the shell code
dnl contained in ./configure.
dnl
dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate
dnl test. I believe this test will work, but I don't have a place with non-
dnl GNU M4 to test it right now.
m4_define([expat_version],
  m4_ifdef([__gnu__],
           [esyscmd(conftools/get-version.sh lib/expat.h)],
           [2.2.x]))
AC_INIT(expat, expat_version, expat-bugs@libexpat.org)
m4_undefine([expat_version])

AC_CONFIG_SRCDIR([Makefile.in])
AC_CONFIG_AUX_DIR([conftools])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE


dnl
dnl Increment LIBREVISION if source code has changed at all
dnl
dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0
dnl
dnl If the API changes compatibly (i.e. simply adding a new function
dnl without changing or removing earlier interfaces), then increment LIBAGE.
dnl
dnl If the API changes incompatibly set LIBAGE back to 0
dnl

LIBCURRENT=7   # sync
LIBREVISION=9  # with
LIBAGE=6       # CMakeLists.txt!

AX_APPEND_FLAG([-DHAVE_EXPAT_CONFIG_H], [CPPFLAGS])
AC_CONFIG_HEADER([expat_config.h])

AM_PROG_AR
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET

LT_PREREQ([2.4])
LT_INIT([win32-dll])

AC_SUBST(LIBCURRENT)
AC_SUBST(LIBREVISION)
AC_SUBST(LIBAGE)

AC_LANG([C])
AC_PROG_CC_C99
AS_IF([test "$GCC" = yes],
  [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [CFLAGS])
   dnl Be careful about adding the -fexceptions option; some versions of
   dnl GCC don't support it and it causes extra warnings that are only
   dnl distracting; avoid.
   AX_APPEND_COMPILE_FLAGS([-fexceptions], [CFLAGS])
   AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing -Wmissing-prototypes -Wstrict-prototypes], [CFLAGS])
   AX_APPEND_COMPILE_FLAGS([-pedantic -Wduplicated-cond -Wduplicated-branches -Wlogical-op], [CFLAGS])
   AX_APPEND_COMPILE_FLAGS([-Wrestrict -Wnull-dereference -Wjump-misses-init -Wdouble-promotion], [CFLAGS])
   AX_APPEND_COMPILE_FLAGS([-Wshadow -Wformat=2 -Wmisleading-indentation], [CFLAGS])])

AC_LANG_PUSH([C++])
AC_PROG_CXX
AS_IF([test "$GCC" = yes],
  [AX_APPEND_COMPILE_FLAGS([-Wall -Wextra], [CXXFLAGS])
   dnl Be careful about adding the -fexceptions option; some versions of
   dnl GCC don't support it and it causes extra warnings that are only
   dnl distracting; avoid.
   AX_APPEND_COMPILE_FLAGS([-fexceptions], [CXXFLAGS])
   AX_APPEND_COMPILE_FLAGS([-fno-strict-aliasing], [CXXFLAGS])])
AC_LANG_POP([C++])

AS_IF([test "$GCC" = yes],
  [AX_APPEND_LINK_FLAGS([-fno-strict-aliasing],[LDFLAGS])])

EXPATCFG_COMPILER_SUPPORTS_VISIBILITY([
  AX_APPEND_FLAG([-fvisibility=hidden],       [CFLAGS])
  AX_APPEND_FLAG([-DXML_ENABLE_VISIBILITY=1], [CFLAGS])])

dnl Checks for header files.
AC_HEADER_STDC

dnl Checks for typedefs, structures, and compiler characteristics.

dnl We define BYTEORDER to 1234 when the platform is little endian; it
dnl defines it to 4321 when the  platform is big endian.  We also define
dnl WORDS_BIGENDIAN to 1 when the platform is big endian.
dnl
dnl A  long time  ago (early 2000  years) AC_C_BIGENDIAN  was considered
dnl wrong when cross compiling, now (2018, GNU Autoconf 2.69) we assume
dnl it is fine.
AC_C_BIGENDIAN([AC_DEFINE([WORDS_BIGENDIAN], 1)
                AS_VAR_SET([BYTEORDER], 4321)],
               [AS_VAR_SET([BYTEORDER], 1234)])
AC_DEFINE_UNQUOTED([BYTEORDER], $BYTEORDER, [1234 = LILENDIAN, 4321 = BIGENDIAN])

AC_C_CONST
AC_TYPE_SIZE_T

AC_ARG_WITH([xmlwf],
  [AS_HELP_STRING([--without-xmlwf], [do not build xmlwf])], [],
  [with_xmlwf=yes])
AM_CONDITIONAL([WITH_XMLWF], [test x${with_xmlwf} = xyes])

AC_ARG_WITH([examples], [
AS_HELP_STRING([--without-examples], [do not build examples @<:@default=included@:>@])], [], [with_examples=yes])
AM_CONDITIONAL([WITH_EXAMPLES], [test x${with_examples} = xyes])

AC_ARG_WITH([tests], [
AS_HELP_STRING([--without-tests], [do not build tests @<:@default=included@:>@])], [], [with_tests=yes])
AM_CONDITIONAL([WITH_TESTS], [test x${with_tests} = xyes])

AM_CONDITIONAL([MINGW], [echo -- "${host}" | ${FGREP} mingw >/dev/null])
AM_CONDITIONAL([UNICODE], [echo -- "${CPPFLAGS}${CFLAGS}" | ${FGREP} XML_UNICODE >/dev/null])


AC_ARG_WITH([libbsd],
  [AS_HELP_STRING([--with-libbsd], [utilize libbsd (for arc4random_buf)])],
  [],
  [with_libbsd=no])
AS_IF([test "x${with_libbsd}" != xno],
  [AC_CHECK_LIB([bsd],
     [arc4random_buf],
     [],
     [AS_IF([test "x${with_libbsd}" = xyes],
            [AC_MSG_ERROR([Enforced use of libbsd cannot be satisfied.])])])])
AC_MSG_CHECKING([for arc4random_buf (BSD or libbsd)])
AC_LINK_IFELSE([AC_LANG_SOURCE([
  #include <stdlib.h>  /* for arc4random_buf on BSD, for NULL */
  #if defined(HAVE_LIBBSD)
  # include <bsd/stdlib.h>
  #endif
  int main() {
    arc4random_buf(NULL, 0U);
    return 0;
  }
])],
  [AC_DEFINE([HAVE_ARC4RANDOM_BUF], [1], [Define to 1 if you have the `arc4random_buf' function.])
   AC_MSG_RESULT([yes])],
  [AC_MSG_RESULT([no])

   AC_MSG_CHECKING([for arc4random (BSD, macOS or libbsd)])
   AC_LINK_IFELSE([AC_LANG_SOURCE([
      #if defined(HAVE_LIBBSD)
      # include <bsd/stdlib.h>
      #else
      # include <stdlib.h>
      #endif
      int main() {
          arc4random();
          return 0;
      }
     ])],
     [AC_DEFINE([HAVE_ARC4RANDOM], [1], [Define to 1 if you have the `arc4random' function.])
      AC_MSG_RESULT([yes])],
     [AC_MSG_RESULT([no])])])


AC_MSG_CHECKING([for getrandom (Linux 3.17+, glibc 2.25+)])
AC_LINK_IFELSE([AC_LANG_SOURCE([
  #include <stdlib.h>  /* for NULL */
  #include <sys/random.h>
  int main() {
    return getrandom(NULL, 0U, 0U);
  }
  ])],
  [AC_DEFINE([HAVE_GETRANDOM], [1], [Define to 1 if you have the `getrandom' function.])
   AC_MSG_RESULT([yes])],
  [AC_MSG_RESULT([no])

   AC_MSG_CHECKING([for syscall SYS_getrandom (Linux 3.17+)])
   AC_LINK_IFELSE([AC_LANG_SOURCE([
      #include <stdlib.h>  /* for NULL */
      #include <unistd.h>  /* for syscall */
      #include <sys/syscall.h>  /* for SYS_getrandom */
      int main() {
        syscall(SYS_getrandom, NULL, 0, 0);
        return 0;
      }
   ])],
   [AC_DEFINE([HAVE_SYSCALL_GETRANDOM], [1], [Define to 1 if you have `syscall' and `SYS_getrandom'.])
    AC_MSG_RESULT([yes])],
   [AC_MSG_RESULT([no])])])


dnl Only needed for xmlwf:
AC_CHECK_HEADERS(fcntl.h unistd.h)
AC_TYPE_OFF_T
AC_FUNC_MMAP

AS_IF([test "$ac_cv_func_mmap_fixed_mapped" = "yes"],
  [AS_VAR_SET(FILEMAP,unixfilemap)],
  [AS_VAR_SET(FILEMAP,readfilemap)])
AC_SUBST(FILEMAP)


dnl Some basic configuration:
AC_DEFINE([XML_NS], 1,
          [Define to make XML Namespaces functionality available.])
AC_DEFINE([XML_DTD], 1,
          [Define to make parameter entity parsing functionality available.])
AC_DEFINE([XML_DEV_URANDOM], 1,
          [Define to include code reading entropy from `/dev/urandom'.])

AC_ARG_ENABLE([xml-context],
  AS_HELP_STRING([--enable-xml-context @<:@COUNT@:>@],
    [Retain context around the current parse point;
     default is enabled and a size of 1024 bytes])
AS_HELP_STRING([--disable-xml-context],
    [Do not retain context around the current parse point]),
    [enable_xml_context=${enableval}])
AS_IF([test "x${enable_xml_context}" != "xno"],
  [AS_IF([test "x${enable_xml_context}" = "xyes" \
            -o "x${enable_xml_context}" = "x"],
     [AS_VAR_SET(enable_xml_context,1024)])
   AC_DEFINE_UNQUOTED([XML_CONTEXT_BYTES], [${enable_xml_context}],
     [Define to specify how much context to retain around the current parse point.])])

AC_ARG_WITH([docbook],
  [AS_HELP_STRING([--with-docbook],
                  [enforce XML to man page compilation @<:@default=check@:>@])
AS_HELP_STRING([--without-docbook],
               [skip XML to man page compilation @<:@default=check@:>@])], [],
               [with_docbook=check])

AC_ARG_VAR([DOCBOOK_TO_MAN], [docbook2x-man command])
AS_IF([test "x$with_docbook" != xno],
  [AC_CHECK_PROGS([DOCBOOK_TO_MAN], [docbook2x-man db2x_docbook2man docbook2man docbook-to-man])])
AS_IF([test "x${DOCBOOK_TO_MAN}" = x -a "x$with_docbook" = xyes],
  [AC_MSG_ERROR([Required program 'docbook2x-man' not found.])])
AS_IF([test "x${DOCBOOK_TO_MAN}" != x -a "x$with_docbook" != xno],
  [AS_IF([${DOCBOOK_TO_MAN} --help | grep -i -q -F sgmlbase],
    [AC_MSG_ERROR([Your local ${DOCBOOK_TO_MAN} was found to work with SGML rather
  than XML. Please install docbook2X and use variable DOCBOOK_TO_MAN to point
  configure to command docbook2x-man of docbook2X.
  Or use DOCBOOK_TO_MAN="xmlto man --skip-validation" if you have xmlto around.
  You can also configure using --without-docbook if you can do without a man
  page for xmlwf.])])])

AM_CONDITIONAL(WITH_DOCBOOK, [test "x${DOCBOOK_TO_MAN}" != x])

AC_CONFIG_FILES([Makefile]
  [expat.pc]
  [doc/Makefile]
  [examples/Makefile]
  [lib/Makefile]
  [tests/Makefile]
  [tests/benchmark/Makefile]
  [xmlwf/Makefile])
AC_CONFIG_FILES([run.sh], [chmod +x run.sh])
AC_OUTPUT
