X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=configure.ac;h=0e0ddbef53db930faeb402b8de8d1441bd680d84;hp=d6216430d17d9221ac858fe0b384d50f4aec7851;hb=dc3fffef7b84cc4af1a7c99828fd57a106cd2257;hpb=23f88ce2911775fcbaaef422fa31cbcfcb79d920 diff --git a/configure.ac b/configure.ac index d6216430..0e0ddbef 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_INIT([babeltrace],[2.0.0-pre],[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], [2:0:0]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([config]) @@ -61,7 +61,7 @@ AC_CHECK_HEADERS([ \ 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]]) @@ -72,7 +72,7 @@ if test ! -f "$srcdir/formats/ctf/metadata/ctf-parser.h"; then ]) 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]]) @@ -231,6 +231,10 @@ 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 @@ -238,23 +242,28 @@ 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]) @@ -262,7 +271,8 @@ if test "x${enable_python:-yes}" = xyes; then 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"], [ @@ -272,14 +282,52 @@ if test "x${enable_python:-yes}" = xyes; then [`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 @@ -289,6 +337,13 @@ 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 )]) + ) +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. @@ -307,10 +362,30 @@ AS_IF([test "x$_enable_debug_info" = xyes], [ # Check if libelf and libdw are present AC_CHECK_LIB([elf], [elf_version], [], [AC_MSG_ERROR(Missing libelf (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)]) AC_CHECK_LIB([dw], [dwarf_begin], [], [AC_MSG_ERROR(Missing libdw (from elfutils >= 0.154) which is required by debug info. You can disable this feature using --disable-debug-info.)]) - AX_LIB_ELFUTILS([0], [154], [:], [AC_MSG_ERROR(elfutils >= 0.154 is required to use the debug info feature. You can disable this feature using --disable-debug-info.)]) + BT_LIB_ELFUTILS([0], [154], [:], [AC_MSG_ERROR(elfutils >= 0.154 is required to use the debug info feature. You can disable this feature using --disable-debug-info.)]) 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" @@ -323,54 +398,109 @@ AC_SUBST(DEFAULT_INCLUDES) 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 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/component/Makefile + lib/component/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/writer/Makefile + plugins/utils/Makefile + plugins/utils/dummy/Makefile + plugins/utils/trimmer/Makefile + python-plugin-provider/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]) @@ -379,8 +509,15 @@ AC_CONFIG_FILES([tests/lib/test_bin_info_complete], [chmod +x tests/lib/test_bin 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 @@ -411,18 +548,37 @@ done ] 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`"