-# Check for libuuid
-AC_CHECK_LIB([uuid], [uuid_generate],
-[
- AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.])
- have_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.])
- have_libc_uuid=yes
- ],
- [
- # for MinGW32 we have our own internal implemenation 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
- ])
-]
+
+## ##
+## Programs checks ##
+## ##
+
+AC_PROG_MAKE_SET
+AC_PROG_MKDIR_P
+AC_PROG_LN_S
+
+# set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file
+# is not distributed in tarballs
+AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no])
+AM_CONDITIONAL([IN_GIT_REPO], [test "x$in_git_repo" = "xyes"])
+
+# check for bison
+AC_PROG_YACC
+AX_PROG_BISON_VERSION([2.4], [have_bison=yes])
+
+AS_IF([test "x$have_bison" != "xyes"], [
+ AS_IF([test "x$in_git_repo" = "xyes"], [
+ 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
+AC_PROG_LEX
+AX_PROG_FLEX_VERSION([2.5.35], [have_flex=yes])
+
+AS_IF([test "x$have_flex" != "xyes"], [
+ AS_IF([test "x$in_git_repo" = "xyes"], [
+ 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"])
+
+
+## ##
+## Library checks ##
+## ##
+
+# Check what libraries are required on this platform to link sockets programs.
+AX_LIB_SOCKET_NSL
+
+# Check for glib >= 2.22 with gmodule support
+AM_PATH_GLIB_2_0([2.22.0], [],
+ AC_MSG_ERROR([glib >= 2.22 is required - download it from ftp://ftp.gtk.org/pub/gtk]),
+ [gmodule-no-export]
+)
+
+# Checks for library functions.
+AC_FUNC_ALLOCA
+AC_FUNC_FORK
+AC_FUNC_MKTIME
+AC_FUNC_MMAP
+AC_FUNC_STRERROR_R
+AC_FUNC_STRNLEN
+AC_CHECK_FUNCS([ \
+ atexit \
+ dup2 \
+ ftruncate \
+ gethostbyname \
+ gettimeofday \
+ localtime_r \
+ memchr \
+ memset \
+ mkdir \
+ mkdtemp \
+ munmap \
+ rmdir \
+ setenv \
+ socket \
+ strchr \
+ strdup \
+ strerror \
+ strndup \
+ strnlen \
+ strrchr \
+ strstr \
+ strtoul \
+ strtoull \
+ tzset \
+])
+
+# AC_FUNC_MALLOC causes problems when cross-compiling.
+#AC_FUNC_MALLOC
+#AC_FUNC_REALLOC
+
+# First, check for uuid in system libs
+AH_TEMPLATE([BABELTRACE_HAVE_LIBUUID], [Define if you have libuuid support])
+AC_CHECK_FUNCS([uuid_generate],
+ [
+ AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+ UUID_LIBS=""
+ ],
+ [
+ # Then, check if the pkg-config module is available, otherwise explicitly check
+ # for libuuid, or uuid support in the C-library.
+ PKG_CHECK_MODULES([UUID], [uuid],
+ [
+ AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+ dnl PKG_CHECK_MODULES defines UUID_LIBS
+ ],
+ [
+ AC_MSG_WARN([pkg-config was unable to find a valid .pc for libuuid. Set PKG_CONFIG_PATH to specify the pkgconfig configuration file location])
+ AC_MSG_WARN([Finding libuuid without pkg-config.])
+ AC_CHECK_LIB([uuid], [uuid_generate],
+ [
+ AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+ UUID_LIBS="-luuid"
+ ],
+ [
+ # libuuid not found, check for uuid_create in libc.
+ AC_CHECK_LIB([c], [uuid_create],
+ [
+ AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+ UUID_LIBS="-lc"
+ ],
+ [
+ # for MinGW32 we have our own internal implementation of uuid using Windows functions.
+ AS_IF([test "x$MINGW32" = xno],
+ [AC_MSG_FAILURE([Cannot find libuuid uuid_generate nor libc uuid_create. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])]
+ )
+ ]
+ )
+ ]
+ )
+ ]
+ )
+ ]