X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=configure.ac;h=4adacc0be227e3e872623d1060cbaca04733e36b;hb=c1870f576149d488615883a7cfd12eddf78bd46a;hp=1b3c2af272a0ee6046cd3945d18b16b25699a38e;hpb=31510f02a9aa06fde317e56838979c31d5a0e4c0;p=babeltrace.git diff --git a/configure.ac b/configure.ac index 1b3c2af2..4adacc0b 100644 --- a/configure.ac +++ b/configure.ac @@ -1,40 +1,68 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - AC_PREREQ([2.50]) -AC_INIT([babeltrace],[1.3.0-pre],[jeremie dot galarneau at efficios dot com]) +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]) +AC_CONFIG_MACRO_DIR([m4]) + AC_CANONICAL_TARGET AC_CANONICAL_HOST -AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip]) -AM_MAINTAINER_MODE([enable]) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -AC_CONFIG_MACRO_DIR([m4]) -AC_PROG_MKDIR_P -AC_PROG_LN_S +AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar]) +AM_MAINTAINER_MODE([enable]) -AC_CONFIG_HEADERS([config.h]) +# Enable silent rules if available (Introduced in AM 1.11) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -AC_CHECK_HEADERS([fcntl.h limits.h netdb.h netinet/in.h stddef.h sys/socket.h]) +AC_REQUIRE_AUX_FILE([tap-driver.sh]) +# Checks for C compiler +AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE +AC_PROG_CC +AC_PROG_CC_STDC # Checks for programs. -AC_PROG_CC_STDC AC_PROG_MAKE_SET LT_INIT AC_PROG_YACC AC_PROG_LEX +AC_PROG_MKDIR_P +AC_PROG_LN_S + +AX_C___ATTRIBUTE__ +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]) +AC_SUBST([LD_NO_AS_NEEDED]) + +AC_HEADER_STDBOOL +AC_CHECK_HEADERS([ \ + fcntl.h \ + float.h \ + libintl.h \ + limits.h \ + malloc.h \ + netdb.h \ + netinet/in.h \ + stddef.h \ + sys/socket.h \ +]) if test ! -f "$srcdir/formats/ctf/metadata/ctf-parser.h"; then - if test x"$YACC" != "xbison -y"; 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 @@ -58,6 +86,9 @@ fi 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 what libraries are required on this platform to link sockets programs. +AX_LIB_SOCKET_NSL + # Checks for typedefs, structures, and compiler characteristics. AC_C_INLINE AC_TYPE_PID_T @@ -74,46 +105,99 @@ AC_TYPE_UINT64_T 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([ \ - bzero gettimeofday munmap strtoul ftruncate gethostbyname \ - localtime_r memset mkdir rmdir setenv socket \ - strchr strdup strerror strndup strrchr strtoull tzset \ + 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 \ ]) -# Check for MinGW32. MINGW32=no -case $host in - *-*-mingw*) - MINGW32=yes;; -esac +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 libuuid -AC_CHECK_LIB([uuid], [uuid_generate], +# Check for uuid in system libs +AC_CHECK_FUNCS([uuid_generate], [ - AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.]) - have_libuuid=yes + AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.]) + link_with_libuuid=no ], [ - # 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 - ]) -] -) -AM_CONDITIONAL([BABELTRACE_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"]) -AM_CONDITIONAL([BABELTRACE_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = "xyes"]) + # 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], @@ -129,10 +213,27 @@ AC_CHECK_LIB([c], [open_memstream], ] ) +# 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: @@ -192,14 +293,47 @@ if test "x${enable_python_bindings_doc:-yes}" = xyes; then ) fi -pkg_modules="gmodule-2.0 >= 2.0.0" -PKG_CHECK_MODULES(GMODULE, [$pkg_modules]) -AC_SUBST(PACKAGE_LIBS) +# 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. +AS_IF([test "x$DEFAULT_ENABLE_DEBUG_INFO" = xyes], [_enable_debug_info=yes], [_enable_debug_info=no]) + +# Optional debug info feature +# Do _not_ indent the help string below (appears in the configure --help +# output). +AC_ARG_ENABLE([debug-info], +[AC_HELP_STRING([--enable-debug-info], [enable the debug info feature (default on Linux)])] +[AC_HELP_STRING([--disable-debug-info], [disable the debug info feature (default on OS X and Solaris)])], + [AS_IF([test "x$enableval" = xyes], [_enable_debug_info=yes], [_enable_debug_info=no])], []) + +AM_CONDITIONAL([ENABLE_DEBUG_INFO], [test "x$_enable_debug_info" = xyes]) +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.)]) + 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"]) + +PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.0.0]) LIBS="$LIBS $GMODULE_LIBS" -PACKAGE_CFLAGS="$GMODULE_CFLAGS -Wall -Wformat -include config.h" +PACKAGE_CFLAGS="$GMODULE_CFLAGS -Wall -Wformat" AC_SUBST(PACKAGE_CFLAGS) +DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir) -I\$(top_builddir)/include -include config.h" +AC_SUBST(DEFAULT_INCLUDES) + babeltraceincludedir="${includedir}/babeltrace" AC_SUBST(babeltraceincludedir) @@ -212,6 +346,38 @@ AC_SUBST(babeltracectfwriterincludedir) babeltracectfirincludedir="${includedir}/babeltrace/ctf-ir" AC_SUBST(babeltracectfirincludedir) +babeltracepluginincludedir="${includedir}/babeltrace/plugin" +AC_SUBST(babeltracepluginincludedir) + +program_transform_name='s/babeltrace[\].bin/babeltrace/g' +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 @@ -229,21 +395,110 @@ AC_CONFIG_FILES([ 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-system/Makefile + lib/plugin-system/notification/Makefile include/Makefile bindings/Makefile bindings/python/Makefile + bindings/python/babeltrace/Makefile tests/Makefile tests/bin/Makefile + tests/bin/intersection/Makefile tests/lib/Makefile tests/utils/Makefile tests/utils/tap/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/trimmer/Makefile + plugins/writer/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_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/lib/test_bin_info_complete], [chmod +x tests/lib/test_bin_info_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/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]) + AC_OUTPUT + +# +# Mini-report on what will be built. +# + +PPRINT_INIT +PPRINT_SET_INDENT(1) +PPRINT_SET_TS(38) + +AS_ECHO +AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION$PPRINT_COLOR_RST") +AS_ECHO + +PPRINT_SUBTITLE([Features]) + +# Target architecture we're building for. +target_arch=$host_cpu +[ +for f in $CFLAGS; do + if test $f = "-m32"; then + target_arch="32-bit" + elif test $f = "-m64"; then + target_arch="64-bit" + fi +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 +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) + +# 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`" + +# Print the bindir and libdir this `make install' will install into. +AS_ECHO +PPRINT_SUBTITLE([Install directories]) +PPRINT_PROP_STRING([Binaries], [$report_bindir]) +PPRINT_PROP_STRING([Libraries], [$report_libdir])