Cleanup: bison and flex detection
[babeltrace.git] / configure.ac
index 016002d292b809bcc2dabb109e84d57c79bd8d63..25503768e1828d30d9c75fc8f2a0e8794d060472 100644 (file)
@@ -2,7 +2,7 @@ AC_PREREQ([2.50])
 m4_define([bt_version_major], [2])
 m4_define([bt_version_minor], [0])
 m4_define([bt_version_patch], [0])
-m4_define([bt_version_extra], [-pre])
+m4_define([bt_version_extra], [-pre1])
 m4_define([bt_version], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_extra)
 AC_INIT([babeltrace],bt_version,[jeremie dot galarneau at efficios dot com])
 
@@ -10,7 +10,7 @@ AC_INIT([babeltrace],bt_version,[jeremie dot galarneau at efficios dot com])
 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
 AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_version_major[:]bt_version_minor[:]bt_version_patch)
 
-AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_HEADERS([include/config.h])
 AC_CONFIG_AUX_DIR([config])
 AC_CONFIG_MACRO_DIR([m4])
 
@@ -22,7 +22,7 @@ AC_DEFINE([BT_VERSION_EXTRA], ["]bt_version_extra["], [Babeltrace library extra
 AC_CANONICAL_TARGET
 AC_CANONICAL_HOST
 
-AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar])
+AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar nostdinc])
 AM_MAINTAINER_MODE([enable])
 
 # Enable silent rules if available (Introduced in AM 1.11)
@@ -38,9 +38,7 @@ AC_PROG_CC_STDC
 
 # Checks for programs.
 AC_PROG_MAKE_SET
-LT_INIT
-AC_PROG_YACC
-AC_PROG_LEX
+LT_INIT(win32-dll)
 AC_PROG_MKDIR_P
 AC_PROG_LN_S
 
@@ -50,9 +48,6 @@ AS_IF([test "x$ax_cv___attribute__" = "xyes"],
        [AC_MSG_ERROR([The compiler does not support __attribute__ extensions])])
 
 AX_PTHREAD(,[AC_MSG_ERROR([Could not configure pthreads support])])
-LIBS="$PTHREAD_LIBS $LIBS"
-CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-CC="$PTHREAD_CC"
 
 # Check linker option
 AX_APPEND_LINK_FLAGS([-Wl,--no-as-needed], [LD_NO_AS_NEEDED])
@@ -62,6 +57,7 @@ AC_HEADER_STDBOOL
 AC_CHECK_HEADERS([ \
        fcntl.h \
        float.h \
+       ftw.h \
        libintl.h \
        limits.h \
        malloc.h \
@@ -71,30 +67,55 @@ AC_CHECK_HEADERS([ \
        sys/socket.h \
 ])
 
-if test ! -f "$srcdir/plugins/ctf/common/metadata/parser.h"; then
-        if test x"$(basename "$YACC")" != "xbison -y"; then
-                AC_MSG_ERROR([[bison not found and is required when building from git.
-                Please install bison]])
-        fi
-        AC_PATH_PROG([BISON],[bison])
-        AX_PROG_BISON_VERSION([2.4], [],[
-                AC_MSG_ERROR([[Bison >= 2.4 is required when building from git]])
-        ])
-fi
+# 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"])
 
-if test ! -f "$srcdir/plugins/ctf/common/metadata/lexer.c"; then
-        if test x"$LEX" != "xflex"; then
-                AC_MSG_ERROR([[flex not found and is required when building from git.
-                Please install flex]])
-        fi
-        AC_PATH_PROG([FLEX],[flex])
-        AX_PROG_FLEX_VERSION([2.5.35], [],[
-                AC_MSG_ERROR([[Flex >= 2.5.35 is required when building from git]])
-        ])
-fi
+# 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([
+Bison >= 2.4 is required when building from the Git repository. You can
+set the YACC variable to override automatic detection.
+    ])
+  ], [
+    AC_MSG_WARN([
+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"])
 
-AM_PATH_GLIB_2_0(2.22.0, ,AC_MSG_ERROR([glib is required in order to compile BabelTrace - download it from ftp://ftp.gtk.org/pub/gtk]) , gmodule)
+# 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([
+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([
+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"])
+
+
+AM_PATH_GLIB_2_0(2.22.0, ,AC_MSG_ERROR([glib is required in order to compile BabelTrace - download it from ftp://ftp.gtk.org/pub/gtk]) , gmodule-no-export)
 
 # Check what libraries are required on this platform to link sockets programs.
 AX_LIB_SOCKET_NSL
@@ -117,14 +138,11 @@ AC_TYPE_UINT8_T
 # Checks for library functions.
 AC_FUNC_ALLOCA
 AC_FUNC_FORK
-AC_FUNC_MALLOC
 AC_FUNC_MKTIME
 AC_FUNC_MMAP
-AC_FUNC_REALLOC
 AC_FUNC_STRERROR_R
 AC_CHECK_FUNCS([ \
        atexit \
-       dirfd \
        dup2 \
        ftruncate \
        gethostbyname \
@@ -151,64 +169,78 @@ AC_CHECK_FUNCS([ \
        uname \
 ])
 
+# AC_FUNC_MALLOC causes problems when cross-compiling.
+#AC_FUNC_MALLOC
+#AC_FUNC_REALLOC
+
 MINGW32=no
 DEFAULT_ENABLE_DEBUG_INFO=yes
+LT_NO_UNDEFINED=""
 AS_CASE([$host_os],
   [solaris*|darwin*],
     [
        DEFAULT_ENABLE_DEBUG_INFO=no
     ],
+  [cygwin*],
+    [
+       DEFAULT_ENABLE_DEBUG_INFO=no
+       LT_NO_UNDEFINED="-no-undefined"
+    ],
   [mingw*],
     [
        MINGW32=yes
        DEFAULT_ENABLE_DEBUG_INFO=no
+       LT_NO_UNDEFINED="-no-undefined"
     ]
 )
 
 AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"])
+AC_SUBST(LT_NO_UNDEFINED)
 
-# Check for uuid in system libs
+# 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_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
+    AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+    UUID_LIBS=""
   ],
   [
-    # 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],
+    # 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_UNQUOTED([BABELTRACE_HAVE_LIBC_UUID], 1, [Has libc uuid support.])
-        link_with_libc_uuid=yes
+        AC_DEFINE([BABELTRACE_HAVE_LIBUUID], [1])
+        dnl PKG_CHECK_MODULES defines UUID_LIBS
       ],
       [
-        # 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"])
+        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.
+                if test "x$MINGW32" = xno; then
+                  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])
+               fi
+              ]
+            )
+          ]
+        )
+      ]
+    )
+  ]
+)
+AC_SUBST(UUID_LIBS)
 
 # Check for fmemopen
 AC_CHECK_LIB([c], [fmemopen],
@@ -231,16 +263,24 @@ AC_CHECK_LIB([c], [posix_fallocate],
 ]
 )
 
-# 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.])]
+# Check libpopt
+PKG_CHECK_MODULES([POPT], [popt],
+  [
+    dnl PKG_CHECK_MODULES defines POPT_LIBS
+  ],
+  [
+    AC_MSG_WARN([pkg-config was unable to find a valid .pc for libpopt. Set PKG_CONFIG_PATH to specify the pkgconfig configuration file location])
+    AC_MSG_WARN([Finding libpopt without pkg-config.])
+    AC_CHECK_LIB([popt],
+      [poptGetContext],
+      [POPT_LIBS="-lpopt"],
+      [
+        AC_MSG_FAILURE([Cannot find libpopt. Either set PKG_CONFIG_PATH to the configuration file location or use LDFLAGS=-Ldir to specify the library location])
+      ]
+    )
+  ]
 )
+AC_SUBST(POPT_LIBS)
 
 # Plugins
 AC_ARG_VAR([PLUGINSDIR], [built-in plugins install directory [LIBDIR/babeltrace/plugins]])
@@ -403,22 +443,23 @@ AS_IF([test "x$BUILT_IN_PYTHON_PLUGIN_SUPPORT" != x], [
 ])
 AM_CONDITIONAL([BUILT_IN_PYTHON_PLUGIN_SUPPORT], [test "x$built_in_python_plugin_support" = "xyes"])
 
-PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.0.0])
+PKG_CHECK_MODULES(GMODULE, [gmodule-no-export-2.0 >= 2.0.0])
 
 # Logging
 AC_ARG_VAR([BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level for Babeltrace program, library, and plugins (VERBOSE, DEBUG, INFO, WARN, ERROR (default), FATAL, or NONE)])
-AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = "x"], [BABELTRACE_MINIMAL_LOG_LEVEL=DEBUG])
+AS_IF([test "x$BABELTRACE_MINIMAL_LOG_LEVEL" = "x"], [BABELTRACE_MINIMAL_LOG_LEVEL=VERBOSE])
 AS_IF([test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "VERBOSE" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "DEBUG" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "INFO" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "WARN" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "ERROR" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "FATAL" && test "$BABELTRACE_MINIMAL_LOG_LEVEL" != "NONE"], [
        AC_MSG_ERROR([Invalid BABELTRACE_MINIMAL_LOG_LEVEL value ($BABELTRACE_MINIMAL_LOG_LEVEL): use VERBOSE, DEBUG, INFO, WARN, ERROR, FATAL, or NONE.])
 ])
 AC_DEFINE_UNQUOTED([BT_LOG_LEVEL], [BT_LOG_$BABELTRACE_MINIMAL_LOG_LEVEL], [Minimal log level])
 
-LIBS="$LIBS $GMODULE_LIBS"
-PACKAGE_CFLAGS="$GMODULE_CFLAGS -Wall -Wformat"
-AC_SUBST(PACKAGE_CFLAGS)
+AM_CFLAGS="-Wall -Wformat $PTHREAD_CFLAGS $GLIB_CFLAGS"
+AC_SUBST(AM_CFLAGS)
+
+AM_CPPFLAGS="-I\$(top_builddir)/include -I\$(top_srcdir)/include -include config.h"
+AC_SUBST(AM_CPPFLAGS)
 
-DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir) -I\$(top_builddir)/include -include config.h"
-AC_SUBST(DEFAULT_INCLUDES)
+LIBS="$GLIB_LIBS"
 
 babeltraceincludedir="${includedir}/babeltrace"
 AC_SUBST(babeltraceincludedir)
@@ -438,7 +479,7 @@ AC_SUBST(babeltracepluginincludedir)
 babeltracegraphincludedir="${includedir}/babeltrace/graph"
 AC_SUBST(babeltracegraphincludedir)
 
-program_transform_name="s&babeltrace\.bin&babeltrace&;$program_transform_name"
+program_transform_name="s&babeltrace\.bin&babeltrace&;s&babeltrace-log\.bin&babeltrace-log&;$program_transform_name"
 AC_SUBST(program_transform_name)
 
 # check for Doxygen
@@ -467,6 +508,11 @@ AS_IF([test "x$enable_api_doc" = "xyes"], [
   DX_INIT_DOXYGEN([Babeltrace], [$(srcdir)/Doxyfile], [output])
 ])
 
+       #TODO: removed, work in progress
+       #bindings/python/Makefile
+       #bindings/python/babeltrace/Makefile
+       #bindings/python/bt2/Makefile
+       #bindings/python/bt2/__init__.py
 AC_CONFIG_FILES([
        Makefile
        common/Makefile
@@ -488,10 +534,6 @@ AC_CONFIG_FILES([
        include/Makefile
        logging/Makefile
        bindings/Makefile
-       bindings/python/Makefile
-       bindings/python/babeltrace/Makefile
-       bindings/python/bt2/Makefile
-       bindings/python/bt2/__init__.py
        tests/Makefile
        tests/cli/Makefile
        tests/cli/intersection/Makefile
@@ -516,9 +558,11 @@ AC_CONFIG_FILES([
        plugins/ctf/fs-sink/Makefile
        plugins/ctf/lttng-live/Makefile
        plugins/text/Makefile
+  plugins/text/dmesg/Makefile
        plugins/text/pretty/Makefile
        plugins/utils/Makefile
        plugins/utils/dummy/Makefile
+       plugins/utils/counter/Makefile
        plugins/utils/trimmer/Makefile
        plugins/utils/muxer/Makefile
        python-plugin-provider/Makefile
@@ -537,9 +581,15 @@ AC_CONFIG_FILES([tests/lib/test_bin_info_complete], [chmod +x tests/lib/test_bin
 AC_CONFIG_FILES([tests/plugins/test-utils-muxer-complete], [chmod +x tests/plugins/test-utils-muxer-complete])
 
 AC_CONFIG_FILES([tests/cli/test_trace_read], [chmod +x tests/cli/test_trace_read])
+AC_CONFIG_FILES([tests/cli/test_trace_copy], [chmod +x tests/cli/test_trace_copy])
+AC_CONFIG_FILES([tests/cli/test_debug_info], [chmod +x tests/cli/test_debug_info])
+AC_CONFIG_FILES([tests/cli/test_trimmer], [chmod +x tests/cli/test_trimmer])
 AC_CONFIG_FILES([tests/cli/intersection/test_intersection], [chmod +x tests/cli/intersection/test_intersection])
+AC_CONFIG_FILES([tests/cli/test_convert_args], [chmod +x tests/cli/test_convert_args])
 AC_CONFIG_FILES([tests/cli/intersection/bt_python_helper.py])
 AC_CONFIG_FILES([tests/lib/writer/bt_python_helper.py])
+AC_CONFIG_FILES([tests/lib/writer/test_ctf_writer_empty_packet.py])
+AC_CONFIG_FILES([tests/lib/writer/test_ctf_writer_no_packet_context.py])
 AC_CONFIG_FILES([tests/cli/test_packet_seq_num], [chmod +x tests/cli/test_packet_seq_num])
 
 AS_IF([test "x$enable_python" = "xyes"], [
This page took 0.026815 seconds and 4 git commands to generate.