+AC_CHECK_TYPES([ptrdiff_t])
+
+
+## ##
+## C++ compiler checks ##
+## ##
+
+# Require a C++11 compiler without GNU extensions (-std=c++11)
+AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
+
+
+## ##
+## Header checks ##
+## ##
+
+AC_HEADER_STDBOOL
+AC_CHECK_HEADERS([ \
+ fcntl.h \
+ float.h \
+ ftw.h \
+ libintl.h \
+ limits.h \
+ malloc.h \
+ netdb.h \
+ netinet/in.h \
+ stddef.h \
+ sys/socket.h \
+ sys/time.h
+])
+
+
+## ##
+## Linker checks ##
+## ##
+
+# Check if the linker supports no-as-needed
+AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
+AC_SUBST([LD_NO_AS_NEEDED])
+
+# Check if the linker supports whole-archive
+AX_CHECK_LINK_FLAG([-Wl,--whole-archive,--no-whole-archive],
+ [
+ AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,--whole-archive,])
+ AC_SUBST([LD_NO_WHOLE_ARCHIVE], [,--no-whole-archive])
+ ],[
+ # Fallback to force_load for the macOS linker
+ AX_CHECK_LINK_FLAG([-Wl,-force_load],
+ [
+ AC_SUBST([LD_WHOLE_ARCHIVE], [-Wl,-force_load,])
+ AC_SUBST([LD_NO_WHOLE_ARCHIVE], [])
+ ],[
+ AC_MSG_WARN([Can't find a linker option to force the inclusion of the static plugin archive objects.])
+ ]
+ )
+ ]
+)
+
+# Check if the linker supports the "notext" keyword
+AX_CHECK_LINK_FLAG([-Wl,-z,notext],[
+ AC_SUBST([LD_NOTEXT], [-Wl,-z,notext])
+])
+
+
+## ##
+## Programs checks ##
+## ##
+
+AM_PROG_AR
+AC_PROG_MAKE_SET
+AC_PROG_MKDIR_P
+AC_PROG_LN_S
+AC_PROG_SED
+AC_CHECK_PROGS([FOLD], [fold])
+AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
+AC_CHECK_PROGS([XMLTO], [xmlto])
+
+# check for bison
+AC_PROG_YACC
+AX_PROG_BISON_VERSION([2.5], [have_bison=yes])
+
+AS_IF([test "x$have_bison" != "xyes"], [
+ AE_IF_IN_GIT_REPO([
+ AC_MSG_FAILURE([dnl
+Bison >= 2.4 is required when building from the Git repository. You can
+set the YACC variable to override automatic detection.
+ ])
+ ], [
+ AC_MSG_WARN([dnl
+Missing Bison >= 2.4. Note that the parser files are already built in
+this distribution tarball, so Bison is only needed if you intend to
+modify their sources. You can set the YACC variable to override automatic
+detection.
+ ])
+ ])
+])
+AM_CONDITIONAL([HAVE_BISON], [test "x$have_bison" = "xyes"])
+
+# check for flex
+# Prior to autoconf 2.70, AC_PROG_FLEX did not take an argument. This is not a
+# problem since the argument is silently ignored by older versions.
+AC_PROG_LEX([noyywrap])
+AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
+
+AS_IF([test "x$have_flex" != "xyes"], [
+ AE_IF_IN_GIT_REPO([
+ AC_MSG_FAILURE([dnl
+Flex >= 2.5.35 is required when building from the Git repository. You can
+set the LEX variable to override automatic detection.
+ ])
+ ], [
+ AC_MSG_WARN([dnl
+Missing Flex >= 2.5.35. Note that the lexer files are already built in
+this distribution tarball, so Flex is only needed if you intend to
+modify their sources. You can set the LEX variable to override automatic
+detection.
+ ])
+ ])
+])
+AM_CONDITIONAL([HAVE_FLEX], [test "x$have_flex" = "xyes"])
+
+# Always check for python, we will fail later if some features require it and
+# it's unavailable.
+AM_PATH_PYTHON([3.0], [
+ AE_PATH_PYTHON_MODULES([PYTHON])
+
+ # pythondir is the path where extra modules are to be installed
+ pythondir=$PYTHON_PREFIX/$PYTHON_MODULES_PATH
+
+ # pyexecdir is the path that contains shared objects used by the extra modules
+ pyexecdir=$PYTHON_EXEC_PREFIX/$PYTHON_MODULES_PATH
+
+ # If no PYTHON_CONFIG was specified by the user, try to find it, starting
+ # with the one specific to the configured python version.
+ AS_IF([test "x$PYTHON_CONFIG" = "x"], [
+ AC_CHECK_PROGS([PYTHON_CONFIG], [python$PYTHON_VERSION-config python-config])
+ ])
+
+ # If PYTHON_CONFIG is set use it to get the includes and ld flags, unless
+ # they were specified by the user.
+ AS_IF([test "x$PYTHON_CONFIG" != "x" ], [
+ AS_IF([test "x$PYTHON_INCLUDE" = "x"], [
+ AC_MSG_CHECKING([Python include flags])
+ PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
+ AC_MSG_RESULT([$PYTHON_INCLUDE])
+ ])
+
+ AS_IF([test "x$PYTHON_LDFLAGS" = "x"], [
+ AC_MSG_CHECKING([Python library flags])
+ # Python 3.8+ requires that we pass --embed to get the -lpython3.x flag.
+ AS_IF([! PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags --embed`], [
+ PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
+ ])
+ AC_MSG_RESULT([$PYTHON_LDFLAGS])
+ ])
+ ])
+], [:])
+
+# Initialize and configure libtool
+LT_INIT([win32-dll])
+
+
+## ##
+## Library checks ##
+## ##
+
+# Check what libraries are required on this platform to link sockets programs.
+AX_LIB_SOCKET_NSL
+
+# Check for glib >= 2.28 with gmodule support
+AM_PATH_GLIB_2_0([2.28.0], [],
+ AC_MSG_ERROR([glib >= 2.28 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
+ [gmodule-no-export]
+)