1# Initialization 2AC_PREREQ([2.71]) 3AC_INIT([libmctp],[0.11],[https://github.com/openbmc/libmctp/issues]) 4AC_CONFIG_HEADERS([config.h]) 5AC_CONFIG_MACRO_DIRS([m4]) 6AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror -Wno-portability foreign dist-xz]) 7AM_SILENT_RULES([yes]) 8 9# Checks for programs. 10AC_PROG_CC 11AM_PROG_AR 12AC_PROG_INSTALL 13AC_PROG_MAKE_SET 14 15# libtool init 16LT_INIT 17 18AC_CHECK_HEADERS_ONCE([endian.h]) 19AC_CHECK_HEADERS_ONCE([unistd.h fcntl.h]) 20 21# pkg-config 22PKG_PROG_PKG_CONFIG 23PKG_INSTALLDIR 24 25AC_ARG_ENABLE([capture], 26 [AS_HELP_STRING([--enable-capture],[Use libpcap to capture messages and packets])]) 27AS_IF([test "x$enable_capture" = "xyes"], 28 [PKG_CHECK_MODULES(pcap, libpcap, 29 [AC_DEFINE([HAVE_PCAP], [1], 30 [Define to 1 if you have libpcap])], 31 [])], 32 []) 33AC_SUBST([pcap_CFLAGS]) 34AC_SUBST([pcap_LIBS]) 35AM_CONDITIONAL([HAVE_PCAP], [test "x$enable_capture" = "xyes"]) 36 37AC_ARG_WITH([systemdsystemunitdir], 38 [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])], 39 [], 40 [with_systemdsystemunitdir=auto] 41) 42AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], 43 [def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) 44 AS_IF([test "x$def_systemdsystemunitdir" = "x"], 45 [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"], 46 [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])] 47 ) 48 with_systemdsystemunitdir=no], 49 [with_systemdsystemunitdir="$def_systemdsystemunitdir"] 50 )] 51) 52 53AC_CHECK_HEADER([systemd/sd-daemon.h], 54 [AC_DEFINE([HAVE_SYSTEMD_SD_DAEMON_H], [1], 55 [Define to 1 if you have <systemd/sd-daemon.h>.])], 56 []) 57AC_CHECK_LIB([systemd], [sd_listen_fds]) 58AS_IF([test "x$with_systemdsystemunitdir" != "xno"], 59 [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])] 60) 61AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"]) 62 63AC_ARG_WITH([syslog], 64 [AS_HELP_STRING([--with-syslog], [Support logging to syslog])], 65 [], 66 [with_syslog=check]) 67 68AS_IF([test "x$with_syslog" != "xno"], 69 [AC_COMPILE_IFELSE( 70 [AC_LANG_PROGRAM([[ 71#include <stdarg.h> 72#include <syslog.h> 73 74void check_vsyslog(int level, const char *fmt, ...) 75{ 76 va_list ap; 77 va_start(ap, fmt); 78 vsyslog(0, fmt, ap); 79 va_end(ap); 80} 81 ]],[[ 82 check_vsyslog(0, "\n"); 83 ]])], 84 [AC_DEFINE([MCTP_HAVE_SYSLOG], [1], [Define to enable syslog])], 85 [])], 86 []) 87 88AC_ARG_WITH([fileio], 89 [AS_HELP_STRING([--with-fileio], 90 [Support interfaces based on file-descriptors])], 91 [], 92 [with_fileio=check]) 93 94AS_IF([test "x$with_fileio" = "xcheck"], 95 [AC_DEFINE([MCTP_HAVE_FILEIO], [(HAVE_UNISTD_H && HAVE_FCNTL_H)], 96 [Support interfaces based on file-descriptors])], 97 [AS_IF([test "x$with_fileio" = "xyes"], 98 [AC_DEFINE([MCTP_HAVE_FILEIO], [1], 99 [Support interfaces based on file-descriptors])], 100 [])]) 101 102AC_ARG_WITH([stdio], 103 [AS_HELP_STRING([--with-stdio], [Support logging to stdio])], 104 [], 105 [with_stdio=check]) 106 107AS_IF([test "x$with_stdio" != "xno"], 108 [AC_COMPILE_IFELSE( 109 [AC_LANG_PROGRAM([[ 110#include <stdarg.h> 111#include <stdio.h> 112void check_vprintf(const char *fmt, ...) 113{ 114 va_list ap; 115 va_start(ap, fmt); 116 vprintf(fmt, ap); 117 va_end(ap); 118} 119 ]],[[ 120 check_vprintf("\n"); 121 ]])], 122 [AC_DEFINE([MCTP_HAVE_STDIO], [1], [Define to enable stdio functions])], 123 [])], 124 []) 125 126AC_ARG_WITH([default-alloc], 127 [AS_HELP_STRING([--with-default-alloc], 128 [Use libc malloc and free for heap memory])], 129 [], 130 [with_default_alloc=check]) 131 132AS_IF([test "x$with_default_alloc" != "xno"], 133 [AC_LINK_IFELSE( 134 [AC_LANG_PROGRAM([[ 135#include <stdlib.h> 136 ]], [[ 137free(malloc(4096)); 138 ]])], 139 [AC_DEFINE([MCTP_DEFAULT_ALLOC], 140 [1], 141 [Define to use libc malloc and free for heap memory])], 142 [])], 143 []) 144 145# Enable all bindings. AC_ARG_ENABLE in future. 146AM_CONDITIONAL([LIBMCTP_BINDING_serial], [true]) 147AM_CONDITIONAL([LIBMCTP_BINDING_astlpc], [true]) 148 149# Check for valgrind 150AS_IF([test "x$enable_tests" = "xno"], [enable_valgrind=no]) 151m4_foreach([vgtool], [valgrind_tool_list], 152 [AX_VALGRIND_DFLT(vgtool, [off])]) 153AX_VALGRIND_DFLT([memcheck], [on]) 154AX_VALGRIND_CHECK 155AM_EXTRA_RECURSIVE_TARGETS([check-valgrind]) 156m4_foreach([vgtool], [valgrind_tool_list], 157 [AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)]) 158 159AX_CODE_COVERAGE 160m4_ifdef([_AX_CODE_COVERAGE_RULES], 161 [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])], 162 [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])]) 163AX_ADD_AM_MACRO_STATIC([]) 164 165AC_CONFIG_FILES([Makefile libmctp.pc]) 166AC_OUTPUT 167