AC_PREREQ([2.50])
-AC_INIT([babeltrace],[2.0.0-pre],[jeremie dot galarneau at efficios dot com])
+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], bt_version_major[.]bt_version_minor[.]bt_version_patch[]bt_version_extra)
+AC_INIT([babeltrace],bt_version,[jeremie dot galarneau at efficios dot com])
# Following the numbering scheme proposed by libtool for the library version
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
-AC_SUBST([BABELTRACE_LIBRARY_VERSION], [1:0:0])
+AC_SUBST([BABELTRACE_LIBRARY_VERSION], bt_version_major[:]bt_version_minor[:]bt_version_patch)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
+AC_DEFINE([BT_VERSION_MAJOR], bt_version_major, [Babeltrace library major version])
+AC_DEFINE([BT_VERSION_MINOR], bt_version_minor, [Babeltrace library minor version])
+AC_DEFINE([BT_VERSION_PATCH], bt_version_patch, [Babeltrace library patch version])
+AC_DEFINE([BT_VERSION_EXTRA], ["]bt_version_extra["], [Babeltrace library extra version])
+
AC_CANONICAL_TARGET
AC_CANONICAL_HOST
sys/socket.h \
])
-if test ! -f "$srcdir/formats/ctf/metadata/ctf-parser.h"; then
+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
-if test ! -f "$srcdir/formats/ctf/metadata/ctf-lexer.c"; then
+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]])
[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=yes], [enable_python=no])
-
-AM_CONDITIONAL([USE_PYTHON], [test "x${enable_python:-yes}" = xyes])
-
-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])
+ [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:-no}" = xno && test "x${enable_python_bindings_doc:-yes}" = xyes; then
- AC_MSG_ERROR([--enable-python-bindings-doc was specified without --enable-python-bindings])
+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
-AM_CONDITIONAL([BUILD_PYTHON_BINDINGS_DOC], [test "x${enable_python_bindings_doc:-yes}" = xyes])
-
-if test "x${enable_python:-yes}" = xyes; then
- AX_PKG_SWIG($swig_version, [], [ AC_MSG_ERROR([SWIG $swig_version or newer is needed]) ])
+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=$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_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"], [
[`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])
+ AC_MSG_CHECKING([Python include flags])
PYTHON_INCLUDE=`$PYTHON_CONFIG --includes`
AC_MSG_RESULT([$PYTHON_INCLUDE])
])
-else
- AC_MSG_NOTICE([You may configure with --enable-python-bindings ]dnl
-[if you want Python bindings.])
+ 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])
+
+AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS_TESTS], [test "x${enable_python_bindings_tests:-yes}" = xyes])
+
+if test "x${enable_python_bindings:-no}" = xno; then
+ if test "x${enable_python_bindings_doc:-yes}" = xyes; then
+ AC_MSG_ERROR([--enable-python-bindings-doc was specified without --enable-python-bindings])
+ fi
+
+ if test "x${enable_python_bindings_tests:-yes}" = xyes; then
+ AC_MSG_ERROR([--enable-python-bindings-tests was specified without --enable-python-bindings])
+ fi
fi
if test "x${enable_python_bindings_doc:-yes}" = xyes; then
)
fi
+if test "x${enable_python_bindings_tests:-yes}" = xyes; then
+ AM_CHECK_PYTHON_TAPPY([PYTHON])
+ AS_IF([test "x$PYTHON_TAPPY_EXISTS" = xno],
+ AC_MSG_ERROR([You need the tappy Python project to test the Python bindings (see <https://github.com/python-tap/tappy>)])
+ )
+fi
+
# Set default enable state for debug info.
# The _enable_debug_info variable is prepended with an underscore to
# avoid clashing with the one generated by AC_ARG_ENABLE.
AC_DEFINE([ENABLE_DEBUG_INFO], [1], [Define to 1 if you enable the 'debug info' feature])
], [])
+AC_ARG_VAR([BUILT_IN_PLUGINS], [Statically-link in-tree plug-ins into the babeltrace binary])
+AS_IF([test "x$BUILT_IN_PLUGINS" != x], [
+# Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
+ AS_IF([test "x$enable_static" != "xyes"], [AC_MSG_ERROR(--enable-static must be used to bundle plug-ins in the babeltrace executable)])
+ AS_IF([test "x$enable_shared" = "xyes"], [AC_MSG_ERROR(--disable-shared must be used to bundle plug-ins in the babeltrace executable)])
+ built_in_plugins=yes
+ AC_DEFINE([BT_BUILT_IN_PLUGINS], [1], [Define to 1 to register plug-in attributes in static executable sections])
+])
+AM_CONDITIONAL([BUILT_IN_PLUGINS], [test "x$built_in_plugins" = "xyes"])
+
+AC_ARG_VAR([BUILT_IN_PYTHON_PLUGIN_SUPPORT], [Statically-link Python plugin support into the babeltrace binary])
+AS_IF([test "x$BUILT_IN_PYTHON_PLUGIN_SUPPORT" != x], [
+# Built-in plug-ins are only available when the --disable-shared --enable-static options are used.
+ AS_IF([test "x$enable_static" != "xyes"], [AC_MSG_ERROR(--enable-static must be used to bundle Python plugin support in the babeltrace executable)])
+ AS_IF([test "x$enable_shared" = "xyes"], [AC_MSG_ERROR(--disable-shared must be used to bundle Python plugin support in the babeltrace executable)])
+ built_in_python_plugin_support=yes
+ AC_DEFINE([BT_BUILT_IN_PYTHON_PLUGIN_SUPPORT], [1], [Define to 1 to register plug-in attributes in static executable sections])
+])
+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])
LIBS="$LIBS $GMODULE_LIBS"
babeltraceincludedir="${includedir}/babeltrace"
AC_SUBST(babeltraceincludedir)
-babeltracectfincludedir="${includedir}/babeltrace/ctf"
-AC_SUBST(babeltracectfincludedir)
-
babeltracectfwriterincludedir="${includedir}/babeltrace/ctf-writer"
AC_SUBST(babeltracectfwriterincludedir)
+babeltracectfincludedir="${includedir}/babeltrace/ctf"
+AC_SUBST(babeltracectfincludedir)
+
babeltracectfirincludedir="${includedir}/babeltrace/ctf-ir"
AC_SUBST(babeltracectfirincludedir)
babeltracepluginincludedir="${includedir}/babeltrace/plugin"
AC_SUBST(babeltracepluginincludedir)
+babeltracegraphincludedir="${includedir}/babeltrace/graph"
+AC_SUBST(babeltracegraphincludedir)
+
+program_transform_name="s&babeltrace\.bin&babeltrace&;$program_transform_name"
+AC_SUBST(program_transform_name)
+
+# check for Doxygen
+AC_ARG_ENABLE(
+ [api-doc],
+ [AC_HELP_STRING(
+ [--enable-api-doc],
+ [generate and install HTML API documentation]
+ )],
+ [enable_api_doc=$enableval],
+ [enable_api_doc=no]
+)
+AM_CONDITIONAL([ENABLE_API_DOC], [test "x$enable_api_doc" = "xyes"])
+
+AS_IF([test "x$enable_api_doc" = "xyes"], [
+ DX_DOXYGEN_FEATURE(ON)
+ DX_DOT_FEATURE(OFF)
+ DX_HTML_FEATURE(ON)
+ DX_CHM_FEATURE(OFF)
+ DX_CHI_FEATURE(OFF)
+ DX_MAN_FEATURE(OFF)
+ DX_RTF_FEATURE(OFF)
+ DX_XML_FEATURE(OFF)
+ DX_PDF_FEATURE(OFF)
+ DX_PS_FEATURE(OFF)
+ DX_INIT_DOXYGEN([Babeltrace], [$(srcdir)/Doxyfile], [output])
+])
+
AC_CONFIG_FILES([
Makefile
- types/Makefile
+ common/Makefile
compat/Makefile
- formats/Makefile
- formats/ctf/Makefile
- formats/ctf/types/Makefile
- formats/ctf-text/Makefile
- formats/ctf-text/types/Makefile
- formats/ctf-metadata/Makefile
- formats/bt-dummy/Makefile
- formats/lttng-live/Makefile
- formats/ctf/metadata/Makefile
- formats/ctf/writer/Makefile
- formats/ctf/ir/Makefile
- converter/Makefile
+ cli/Makefile
doc/Makefile
+ doc/api/Makefile
+ doc/api/Doxyfile
doc/bindings/Makefile
doc/bindings/python/Makefile
doc/images/Makefile
lib/Makefile
lib/prio_heap/Makefile
+ lib/plugin/Makefile
+ lib/graph/Makefile
+ lib/graph/notification/Makefile
+ lib/ctf-ir/Makefile
+ lib/ctf-writer/Makefile
include/Makefile
bindings/Makefile
bindings/python/Makefile
bindings/python/babeltrace/Makefile
+ bindings/python/bt2/Makefile
+ bindings/python/bt2/__init__.py
tests/Makefile
tests/bin/Makefile
tests/bin/intersection/Makefile
tests/lib/Makefile
+ tests/lib/writer/Makefile
+ tests/lib/test-plugin-plugins/Makefile
tests/utils/Makefile
tests/utils/tap/Makefile
+ tests/bindings/Makefile
+ tests/bindings/python/Makefile
+ tests/bindings/python/bt2/Makefile
extras/Makefile
extras/valgrind/Makefile
+ plugins/Makefile
+ plugins/ctf/Makefile
+ plugins/ctf/common/Makefile
+ plugins/ctf/common/btr/Makefile
+ plugins/ctf/common/metadata/Makefile
+ plugins/ctf/common/notif-iter/Makefile
+ plugins/ctf/fs/Makefile
+ plugins/ctf/lttng-live/Makefile
+ plugins/muxer/Makefile
+ plugins/text/Makefile
+ plugins/text/pretty/Makefile
+ plugins/writer/Makefile
+ plugins/utils/Makefile
+ plugins/utils/dummy/Makefile
+ plugins/utils/trimmer/Makefile
+ python-plugin-provider/Makefile
+ plugins/libctfcopytrace/Makefile
+ plugins/debug-info/Makefile
babeltrace.pc
babeltrace-ctf.pc
])
+#AC_CONFIG_FILES([converter/babeltrace], [chmod +x converter/babeltrace])
AC_CONFIG_FILES([tests/lib/test_ctf_writer_complete], [chmod +x tests/lib/test_ctf_writer_complete])
+AC_CONFIG_FILES([tests/lib/test_plugin_complete], [chmod +x tests/lib/test_plugin_complete])
AC_CONFIG_FILES([tests/lib/test_seek_big_trace], [chmod +x tests/lib/test_seek_big_trace])
AC_CONFIG_FILES([tests/lib/test_seek_empty_packet], [chmod +x tests/lib/test_seek_empty_packet])
AC_CONFIG_FILES([tests/lib/test_dwarf_complete], [chmod +x tests/lib/test_dwarf_complete])
AC_CONFIG_FILES([tests/bin/test_trace_read], [chmod +x tests/bin/test_trace_read])
AC_CONFIG_FILES([tests/bin/intersection/test_intersection], [chmod +x tests/bin/intersection/test_intersection])
AC_CONFIG_FILES([tests/bin/intersection/bt_python_helper.py])
+AC_CONFIG_FILES([tests/lib/writer/bt_python_helper.py])
AC_CONFIG_FILES([tests/bin/test_packet_seq_num], [chmod +x tests/bin/test_packet_seq_num])
-AC_CONFIG_FILES([tests/bin/test_formats], [chmod +x tests/bin/test_formats])
+
+AS_IF([test "x$enable_python" = "xyes"], [
+ AC_CONFIG_FILES(
+ [tests/bindings/python/bt2/testall.sh],
+ [chmod +x tests/bindings/python/bt2/testall.sh]
+ )
+])
AC_OUTPUT
]
PPRINT_PROP_STRING([Target architecture], $target_arch)
+# API doc
+test "x$enable_api_doc" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([HTML API documentation], $value)
+
# python bindings enabled/disabled
-test "x$enable_python" = "xyes" && value=1 || value=0
+test "x$enable_python_bindings" = "xyes" && value=1 || value=0
PPRINT_PROP_BOOL([Python bindings], $value)
# python bindings doc enabled/disabled
test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0
PPRINT_PROP_BOOL([Python bindings doc], $value)
+# python bindings tests enabled/disabled
+test "x$enable_python_bindings_tests" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([Python bindings tests], $value)
+
+# python plugins enabled/disabled
+test "x$enable_python_plugins" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([Python plugin support], $value)
+
+# built-in Python plugin support enabled/disabled
+test "x$built_in_python_plugin_support" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([Built-in Python plugin support], $value)
+
# debug info enabled/disabled
test "x$_enable_debug_info" = "xyes" && value=1 || value=0
PPRINT_PROP_BOOL([Debug information output], $value)
+# built-in plug-ins enabled/disabled
+test "x$built_in_plugins" = "xyes" && value=1 || value=0
+PPRINT_PROP_BOOL([Built-in plug-ins], $value)
report_bindir="`eval eval echo $bindir`"
report_libdir="`eval eval echo $libdir`"