X-Git-Url: http://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=configure.ac;h=d9bba968899596a1af571f752a83bd083a1f7cb2;hp=38d6b8b0e9de2dcff27acac10644e138a7de53d4;hb=HEAD;hpb=b4512257eb71d0432554047acf6278dc42a15a75 diff --git a/configure.ac b/configure.ac index 38d6b8b..d9bba96 100644 --- a/configure.ac +++ b/configure.ac @@ -1,12 +1,24 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -#AC_PREREQ([2.63]) -AC_INIT([ust], [0.0], [pierre-marc dot fournier at polymtl dot ca]) -AC_CONFIG_AUX_DIR(make_scripts) -AM_INIT_AUTOMAKE([0.0 foreign]) -AC_CONFIG_SRCDIR([ust/localerr.h]) -AC_CONFIG_HEADERS([config.h]) +AC_INIT([ust], [0.16], [mathieu dot desnoyers at efficios dot com]) +AC_CONFIG_AUX_DIR([config]) +AC_CANONICAL_TARGET +AC_CANONICAL_HOST +AC_CONFIG_MACRO_DIR([config]) +AM_INIT_AUTOMAKE([foreign]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AC_CONFIG_SRCDIR([ustctl/ustctl.c]) +AC_CONFIG_HEADERS([config.h include/ust/config.h]) +AH_TEMPLATE([HAVE_EFFICIENT_UNALIGNED_ACCESS], [Use efficient unaligned access.]) +# Compute minor/major version numbers +major_version=`echo AC_PACKAGE_VERSION | sed 's/\..*//'` +minor_version=`echo AC_PACKAGE_VERSION | sed 's/.*\.//' | sed 's/^0//'` +AC_SUBST([MAJOR_VERSION], [$major_version]) +AC_SUBST([MINOR_VERSION], [$minor_version]) +AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [UST major version number]) +AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [UST minor version number]) + # Checks for programs. AC_PROG_CC @@ -49,19 +61,125 @@ AC_C_INLINE AC_FUNC_MALLOC AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol]) -AC_ARG_WITH(urcu, [ --with-urcu path Path to userspace RCU source], URCU_PATH="$withval", AC_MSG_ERROR([Must specify urcu path.])) -AC_ARG_WITH(kcompat, [ --with-kcompat path Path to userspace kcompat source], KCOMPAT_PATH="$withval", AC_MSG_ERROR([Must specify kcompat path.])) -AC_SUBST(URCU_PATH) -AC_SUBST(KCOMPAT_PATH) - -#AC_CONFIG_FILES([Makefile -# hello/Makefile -# libmallocwrap/Makefile -# libmarkers/Makefile -# libtracectl/Makefile -# libtracing/Makefile -# ust/Makefile -# ustd/Makefile]) - -AC_CONFIG_FILES([Makefile libust/Makefile hello/Makefile libmallocwrap/Makefile]) +CFLAGS="-Wall $CFLAGS" + +# URCU + +# urcu - check if we just find the headers it out of the box. +AC_CHECK_HEADERS([urcu-bp.h], [], [AC_MSG_ERROR([Cannot find [URCU] headers (urcu-bp.h). Use [CFLAGS]=-Idir to specify their location. +This error can also occur when the liburcu package's configure script has not been run.])]) + +# urcu - check that URCU lib is available to compilation +AC_CHECK_LIB([urcu-bp], [synchronize_rcu_bp], [], [AC_MSG_ERROR([Cannot find liburcu-bp lib. Use [LDFLAGS]=-Ldir to specify its location.])]) + +# urcu - check that URCU lib is at least version 0.6 +AC_CHECK_LIB([urcu-bp], [call_rcu_bp], [], [AC_MSG_ERROR([liburcu 0.6 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])]) + + +# Check for various supplementary host information (beyond the +# triplet) which might affect the library format choices. E.g., we +# can be building with `i686-unknown-linux-gnu-gcc -m64' + +case "${host}" in +changequote(,)dnl + i[34567]86-*-linux*) +changequote([,])dnl + AC_CACHE_CHECK([if building for x86-64], [ust_cv_i386_is_x86_64], + [save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $CFLAGS" + AC_EGREP_CPP([got it], [ +#if __x86_64__ +got it +#endif + ], [ust_cv_i386_is_x86_64=yes], + [ust_cv_i386_is_x86_64=no]) + CPPFLAGS="$save_CPPFLAGS"]) + ;; +esac + +AC_MSG_CHECKING([library format for the host system]) +case $host_cpu in +changequote(,)dnl + i[3456]86) +changequote([,])dnl + if test "$ust_cv_i386_is_x86_64" = yes ; then + LIBFORMAT="elf64-x86-64" + else + LIBFORMAT="elf32-i386" + fi + ;; + x86_64) LIBFORMAT="elf64-x86-64" ;; + powerpc) LIBFORMAT="elf32-powerpc" ;; + ppc64) LIBFORMAT="elf64-powerpc" ;; + powerpc64) LIBFORMAT="elf64-powerpc" ;; + s390) LIBFORMAT="elf32-s390" ;; + s390x) LIBFORMAT="elf64-s390" ;; + armv5) LIBFORMAT="elf32-littlearm"; NO_UNALIGNED_ACCESS=1 ;; + arm) LIBFORMAT="elf32-littlearm" ;; + mips*) LIBFORMAT="" ;; + *) AC_MSG_ERROR([unable to detect library format (unsupported architecture ($host_cpu)?)]) ;; +esac +AC_SUBST(LIBFORMAT) +AC_MSG_RESULT($LIBFORMAT) + +if test "x$host_cpu" = "xarm" ; then +AC_MSG_CHECKING([checking for armv5]) +AC_TRY_COMPILE( +[ +], +[ +#ifndef __ARM_ARCH_5TEJ__ +#error "no arm5 here" +#endif +], +[ + AC_MSG_RESULT([yes]) + NO_UNALIGNED_ACCESS=1 +] +, +[ + AC_MSG_RESULT([no]) +] +) +fi +if test x$NO_UNALIGNED_ACCESS = x ; then +AC_DEFINE([HAVE_EFFICIENT_UNALIGNED_ACCESS], [1]) +fi + +AC_CONFIG_FILES([ + Makefile + doc/Makefile + doc/man/Makefile + doc/info/Makefile + include/Makefile + libust/Makefile + tests/Makefile + tests/hello/Makefile + tests/hello2/Makefile + tests/basic/Makefile + tests/basic_long/Makefile + tests/fork/Makefile + tests/simple_include/Makefile + tests/snprintf/Makefile + tests/test-nevents/Makefile + tests/test-libustinstr-malloc/Makefile + tests/dlopen/Makefile + tests/same_line_marker/Makefile + tests/trace_event/Makefile + tests/tracepoint/Makefile + tests/tracepoint/benchmark/Makefile + tests/register_test/Makefile + tests/libustctl_function_tests/Makefile + tests/exit-fast/Makefile + libustinstr-malloc/Makefile + libustfork/Makefile + libustconsumer/Makefile + ust-consumerd/Makefile + ustctl/Makefile + libustcomm/Makefile + libustctl/Makefile + snprintf/Makefile + ust.pc + include/ust/version.h +]) AC_OUTPUT