blob: fc688f3f541c687d9606d061688742cd8fa0096f [file] [log] [blame]
# Initialization
AC_PREREQ([2.69])
AC_INIT([libmctp], 0.10, [https://github.com/openbmc/libmctp/issues])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([m4])
AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror -Wno-portability foreign dist-xz])
AM_SILENT_RULES([yes])
# Checks for programs.
AC_PROG_CC
AM_PROG_AR
AC_PROG_INSTALL
AC_PROG_MAKE_SET
# libtool init
LT_INIT
AC_CHECK_HEADERS_ONCE([endian.h])
AC_CHECK_HEADERS_ONCE([unistd.h fcntl.h])
# pkg-config
PKG_PROG_PKG_CONFIG
PKG_INSTALLDIR
PKG_CHECK_MODULES(udev,
udev,
[PKG_CHECK_VAR(udevdir, udev, udevdir)],
[])
AC_SUBST([udevrulesdir], [$udevdir/rules.d])
AC_ARG_ENABLE([capture],
[AC_HELP_STRING([--enable-capture],
[Use libpcap to capture messages and packets])])
AS_IF([test "x$enable_capture" = "xyes"],
[PKG_CHECK_MODULES(pcap, libpcap,
[AC_DEFINE([HAVE_PCAP], [1],
[Define to 1 if you have libpcap])],
[])],
[])
AC_SUBST([pcap_CFLAGS])
AC_SUBST([pcap_LIBS])
AM_CONDITIONAL([HAVE_PCAP], [test "x$enable_capture" = "xyes"])
AC_ARG_ENABLE([astlpc-raw-kcs],
[AS_HELP_STRING([--enable-astlpc-raw-kcs],
[Use udev rules to symlink raw-kcs device nodes for the astlpc binding])])
AM_CONDITIONAL([LIBMCTP_UDEV_RAW_KCS], [test -n "$udevdir" -a "x$enable_astlpc_raw_kcs" = "xyes"])
AC_ARG_WITH([systemdsystemunitdir],
[AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],
[],
[with_systemdsystemunitdir=auto]
)
AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"],
[def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
AS_IF([test "x$def_systemdsystemunitdir" = "x"],
[AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
[AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])]
)
with_systemdsystemunitdir=no],
[with_systemdsystemunitdir="$def_systemdsystemunitdir"]
)]
)
AC_CHECK_HEADER([systemd/sd-daemon.h],
[AC_DEFINE([HAVE_SYSTEMD_SD_DAEMON_H], [1],
[Define to 1 if you have <systemd/sd-daemon.h>.])],
[])
AC_CHECK_LIB([systemd], [sd_listen_fds])
AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
[AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]
)
AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
AC_ARG_WITH([syslog],
[AS_HELP_STRING([--with-syslog], [Support logging to syslog])],
[],
[with_syslog=check])
AS_IF([test "x$with_syslog" != "xno"],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#include <stdarg.h>
#include <syslog.h>
void check_vsyslog(int level, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vsyslog(0, fmt, ap);
va_end(ap);
}
]],[[
check_vsyslog(0, "\n");
]])],
[AC_DEFINE([MCTP_HAVE_SYSLOG], [1], [Define to enable syslog])],
[])],
[])
AC_ARG_WITH([fileio],
[AS_HELP_STRING([--with-fileio],
[Support interfaces based on file-descriptors])],
[],
[with_fileio=check])
AS_IF([test "x$with_fileio" = "xcheck"],
[AC_DEFINE([MCTP_HAVE_FILEIO], [(HAVE_UNISTD_H && HAVE_FCNTL_H)],
[Support interfaces based on file-descriptors])],
[AS_IF([test "x$with_fileio" = "xyes"],
[AC_DEFINE([MCTP_HAVE_FILEIO], [1],
[Support interfaces based on file-descriptors])],
[])])
AC_ARG_WITH([stdio],
[AS_HELP_STRING([--with-stdio], [Support logging to stdio])],
[],
[with_stdio=check])
AS_IF([test "x$with_stdio" != "xno"],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#include <stdarg.h>
#include <stdio.h>
void check_vprintf(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
}
]],[[
check_vprintf("\n");
]])],
[AC_DEFINE([MCTP_HAVE_STDIO], [1], [Define to enable stdio functions])],
[])],
[])
AC_ARG_WITH([default-alloc],
[AS_HELP_STRING([--with-default-alloc],
[Use libc malloc and free for heap memory])],
[],
[with_default_alloc=check])
AS_IF([test "x$with_default_alloc" != "xno"],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[
#include <stdlib.h>
]], [[
free(malloc(4096));
]])],
[AC_DEFINE([MCTP_DEFAULT_ALLOC],
[1],
[Define to use libc malloc and free for heap memory])],
[])],
[])
# Enable all bindings. AC_ARG_ENABLE in future.
AM_CONDITIONAL([LIBMCTP_BINDING_serial], [true])
AM_CONDITIONAL([LIBMCTP_BINDING_astlpc], [true])
# Check for valgrind
AS_IF([test "x$enable_tests" = "xno"], [enable_valgrind=no])
m4_foreach([vgtool], [valgrind_tool_list],
[AX_VALGRIND_DFLT(vgtool, [off])])
AX_VALGRIND_DFLT([memcheck], [on])
AX_VALGRIND_CHECK
AM_EXTRA_RECURSIVE_TARGETS([check-valgrind])
m4_foreach([vgtool], [valgrind_tool_list],
[AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)])
AX_CODE_COVERAGE
m4_ifdef([_AX_CODE_COVERAGE_RULES],
[AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])],
[AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])])
AX_ADD_AM_MACRO_STATIC([])
AC_CONFIG_FILES([Makefile libmctp.pc udev/rules.d/mctp0-raw-kcs3.rules
udev/rules.d/mctp0-raw-kcs4.rules])
AC_OUTPUT