+AC_FUNC_REALLOC
+AC_FUNC_STRERROR_R
+AC_CHECK_FUNCS([ \
+ atexit \
+ dirfd \
+ dup2 \
+ ftruncate \
+ gethostbyname \
+ gethostname \
+ gettimeofday \
+ localtime_r \
+ memchr \
+ memset \
+ mkdir \
+ mkdtemp \
+ munmap \
+ rmdir \
+ setenv \
+ socket \
+ strchr \
+ strdup \
+ strerror \
+ strndup \
+ strnlen \
+ strrchr \
+ strtoul \
+ strtoull \
+ tzset \
+ uname \
+])
+
+MINGW32=no
+DEFAULT_ENABLE_DEBUG_INFO=yes
+AS_CASE([$host_os],
+ [solaris*|darwin*],
+ [
+ DEFAULT_ENABLE_DEBUG_INFO=no
+ ],
+ [mingw*],
+ [
+ MINGW32=yes
+ ]
+)
+
+AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
+
+# Check for uuid in system libs
+AC_CHECK_FUNCS([uuid_generate],
+[
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
+ link_with_libuuid=no
+],
+[
+ # First, check the pkg-config module is available, otherwise explicitly check
+ # for libuuid, or uuid support in the C-library.
+ PKG_CHECK_MODULES([UUID], [uuid],
+ [
+ LIBS="${UUID_LIBS} ${LIBS}"
+ CFLAGS="${CFLAGS} ${UUID_CFLAGS}"
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
+ link_with_libuuid=yes
+ ],
+ [
+ # Check for libuuid
+ AC_CHECK_LIB([uuid], [uuid_generate],
+ [
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
+ link_with_libuuid=yes
+ ],
+ [
+ # libuuid not found, check for uuid_create in libc.
+ AC_CHECK_LIB([c], [uuid_create],
+ [
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
+ link_with_libc_uuid=yes
+ ],
+ [
+ # for MinGW32 we have our own internal implementation of uuid using Windows functions.
+ if test "x$MINGW32" = xno; then
+ AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.])
+ fi
+ ])
+ ])
+ ])
+])
+
+AM_CONDITIONAL([BABELTRACE_BUILD_WITH_LIBUUID], [test "x$link_with_libuuid" = "xyes"])
+AM_CONDITIONAL([BABELTRACE_BUILD_WITH_LIBC_UUID], [test "x$link_with_libc_uuid" = "xyes"])
+
+# Check for fmemopen
+AC_CHECK_LIB([c], [fmemopen],
+[
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FMEMOPEN], 1, [Has fmemopen support.])
+]
+)
+
+# Check for open_memstream
+AC_CHECK_LIB([c], [open_memstream],
+[
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_OPEN_MEMSTREAM], 1, [Has open_memstream support.])
+]
+)
+
+# Check for posix_fallocate
+AC_CHECK_LIB([c], [posix_fallocate],
+[
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_POSIX_FALLOCATE], 1, [Has posix_fallocate support.])
+]
+)
+
+# Check for faccessat
+AC_CHECK_LIB([c], [faccessat],
+[
+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_FACCESSAT], 1, [Has faccessat support.])
+]
+)
+
+AC_CHECK_LIB([popt], [poptGetContext], [],
+ [AC_MSG_ERROR([Cannot find popt.])]
+)
+
+# Plugins
+AC_ARG_VAR([PLUGINSDIR], [built-in plugins install directory [LIBDIR/babeltrace/plugins]])
+AS_IF([test "x$PLUGINSDIR" = x], [PLUGINSDIR='$(libdir)/babeltrace/plugins'])
+
+# For Python
+# SWIG version needed or newer:
+swig_version=2.0.0
+
+AC_ARG_ENABLE([python-bindings],
+ [AC_HELP_STRING([--enable-python-bindings],
+ [generate Python bindings])],
+ [enable_python_bindings=yes], [enable_python_bindings=no])
+
+AM_CONDITIONAL([USE_PYTHON], [test "x${enable_python_bindings:-yes}" = xyes])
+
+AC_ARG_ENABLE(
+ [python-plugins],
+ [AC_HELP_STRING(
+ [--enable-python-plugins],
+ [add support for the Babeltrace library and converter to load Python plugins])
+ ],
+ [enable_python_plugins=yes],
+ [enable_python_plugins=no]
+)
+
+if test "x${enable_python_bindings:-yes}" = xyes; then
+ AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
+else
+ AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
+[if you want Python bindings.])
+fi
+
+if test "x$enable_python_bindings" != xno || test "x$enable_python_plugins" != xno; then
+ AM_PATH_PYTHON([3.0], , [AC_MSG_ERROR(Python3 is not available or is not the default Python interpreter on your system. See the README file to learn how to override your distribution's default Python interpreter.)])
+
+ AM_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
+ AC_ARG_VAR([PYTHON_INCLUDE], [Include flags for Python, bypassing python-config])
+ AC_ARG_VAR([PYTHON_LIBS], [Library flags for Python, bypassing python-config])
+ AC_ARG_VAR([PYTHON_CONFIG], [Path to python-config])
+ AS_IF([test -z "$PYTHON_INCLUDE"], [
+ AS_IF([test -z "$PYTHON_CONFIG"], [
+ AC_PATH_PROGS([PYTHON_CONFIG],
+ [python$PYTHON_VERSION-config python-config],
+ [no],
+ [`dirname $PYTHON`])
+ AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
+ ])
+ AC_MSG_CHECKING([Python include flags])
+ PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
+ AC_MSG_RESULT([$PYTHON_INCLUDE])
+ ])
+ AS_IF([test -z "$PYTHON_LIBS"], [
+ AS_IF([test -z "$PYTHON_CONFIG"], [
+ AC_PATH_PROGS([PYTHON_CONFIG],
+ [python$PYTHON_VERSION-config python-config],
+ [no],
+ [`dirname $PYTHON`])
+ AS_IF([test "$PYTHON_CONFIG" = no], [AC_MSG_ERROR([cannot find python-config for $PYTHON. Do you have python-dev installed?])])
+ ])
+ AC_MSG_CHECKING([Python library flags])
+ PYTHON_LIBS=`$PYTHON_CONFIG --libs`
+ AC_MSG_RESULT([$PYTHON_LIBS])
+ ])
+fi
+
+AM_CONDITIONAL([WITH_PYTHON_PLUGINS], [test "x$enable_python_plugins" != xno])
+AS_IF(
+ [test "x$enable_python_plugins" != xno],
+ AC_DEFINE_UNQUOTED([WITH_PYTHON_PLUGINS], [1], [Python plugin support.])
+)
+
+AC_ARG_ENABLE([python-bindings-doc],
+ [AC_HELP_STRING([--enable-python-bindings-doc],
+ [generate Python bindings documentation])],
+ [enable_python_bindings_doc=yes], [enable_python_bindings_doc=no])
+
+AM_CONDITIONAL([BUILD_PYTHON_BINDINGS_DOC], [test "x${enable_python_bindings_doc:-yes}" = xyes])
+
+AC_ARG_ENABLE([python-bindings-tests],
+ [AC_HELP_STRING([--enable-python-bindings-tests],
+ [test Python bindings])],
+ [enable_python_bindings_tests=yes], [enable_python_bindings_tests=no])