1# Initialization 2AC_PREREQ([2.69]) 3AC_INIT([libmctp], 0.10, [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 24PKG_CHECK_MODULES(udev, 25 udev, 26 [PKG_CHECK_VAR(udevdir, udev, udevdir)], 27 []) 28 29AC_SUBST([udevrulesdir], [$udevdir/rules.d]) 30 31AC_ARG_ENABLE([astlpc-raw-kcs], 32 [AS_HELP_STRING([--enable-astlpc-raw-kcs], 33 [Use udev rules to symlink raw-kcs device nodes for the astlpc binding])]) 34AM_CONDITIONAL([LIBMCTP_UDEV_RAW_KCS], [test -n "$udevdir" -a "x$enable_astlpc_raw_kcs" = "xyes"]) 35 36AC_ARG_WITH([systemdsystemunitdir], 37 [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])], 38 [], 39 [with_systemdsystemunitdir=auto] 40) 41AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], 42 [def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) 43 AS_IF([test "x$def_systemdsystemunitdir" = "x"], 44 [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"], 45 [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])] 46 ) 47 with_systemdsystemunitdir=no], 48 [with_systemdsystemunitdir="$def_systemdsystemunitdir"] 49 )] 50) 51 52AC_CHECK_HEADER([systemd/sd-daemon.h], 53 [AC_DEFINE([HAVE_SYSTEMD_SD_DAEMON_H], [1], 54 [Define to 1 if you have <systemd/sd-daemon.h>.])], 55 []) 56AC_CHECK_LIB([systemd], [sd_listen_fds]) 57AS_IF([test "x$with_systemdsystemunitdir" != "xno"], 58 [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])] 59) 60AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"]) 61 62AC_ARG_WITH([syslog], 63 [AS_HELP_STRING([--with-syslog], [Support logging to syslog])], 64 [], 65 [with_syslog=check]) 66 67AS_IF([test "x$with_syslog" != "xno"], 68 [AC_COMPILE_IFELSE( 69 [AC_LANG_PROGRAM([[ 70#include <stdarg.h> 71#include <syslog.h> 72 73void check_vsyslog(int level, const char *fmt, ...) 74{ 75 va_list ap; 76 va_start(ap, fmt); 77 vsyslog(0, fmt, ap); 78 va_end(ap); 79} 80 ]],[[ 81 check_vsyslog(0, "\n"); 82 ]])], 83 [AC_DEFINE([MCTP_HAVE_SYSLOG], [1], [Define to enable syslog])], 84 [])], 85 []) 86 87AC_ARG_WITH([fileio], 88 [AS_HELP_STRING([--with-fileio], 89 [Support interfaces based on file-descriptors])], 90 [], 91 [with_fileio=check]) 92 93AS_IF([test "x$with_fileio" = "xcheck"], 94 [AC_DEFINE([MCTP_HAVE_FILEIO], [(HAVE_UNISTD_H && HAVE_FCNTL_H)], 95 [Support interfaces based on file-descriptors])], 96 [AS_IF([test "x$with_fileio" = "xyes"], 97 [AC_DEFINE([MCTP_HAVE_FILEIO], [1], 98 [Support interfaces based on file-descriptors])], 99 [])]) 100 101AC_ARG_WITH([stdio], 102 [AS_HELP_STRING([--with-stdio], [Support logging to stdio])], 103 [], 104 [with_stdio=check]) 105 106AS_IF([test "x$with_stdio" != "xno"], 107 [AC_COMPILE_IFELSE( 108 [AC_LANG_PROGRAM([[ 109#include <stdarg.h> 110#include <stdio.h> 111void check_vprintf(const char *fmt, ...) 112{ 113 va_list ap; 114 va_start(ap, fmt); 115 vprintf(fmt, ap); 116 va_end(ap); 117} 118 ]],[[ 119 check_vprintf("\n"); 120 ]])], 121 [AC_DEFINE([MCTP_HAVE_STDIO], [1], [Define to enable stdio functions])], 122 [])], 123 []) 124 125AC_ARG_WITH([default-alloc], 126 [AS_HELP_STRING([--with-default-alloc], 127 [Use libc malloc and free for heap memory])], 128 [], 129 [with_default_alloc=check]) 130 131AS_IF([test "x$with_default_alloc" != "xno"], 132 [AC_LINK_IFELSE( 133 [AC_LANG_PROGRAM([[ 134#include <stdlib.h> 135 ]], [[ 136free(malloc(4096)); 137 ]])], 138 [AC_DEFINE([MCTP_DEFAULT_ALLOC], 139 [1], 140 [Define to use libc malloc and free for heap memory])], 141 [])], 142 []) 143 144# Enable all bindings. AC_ARG_ENABLE in future. 145AM_CONDITIONAL([LIBMCTP_BINDING_serial], [true]) 146AM_CONDITIONAL([LIBMCTP_BINDING_astlpc], [true]) 147 148# Check for valgrind 149AS_IF([test "x$enable_tests" = "xno"], [enable_valgrind=no]) 150m4_foreach([vgtool], [valgrind_tool_list], 151 [AX_VALGRIND_DFLT(vgtool, [off])]) 152AX_VALGRIND_DFLT([memcheck], [on]) 153AX_VALGRIND_CHECK 154AM_EXTRA_RECURSIVE_TARGETS([check-valgrind]) 155m4_foreach([vgtool], [valgrind_tool_list], 156 [AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)]) 157 158AX_CODE_COVERAGE 159m4_ifdef([_AX_CODE_COVERAGE_RULES], 160 [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])], 161 [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])]) 162AX_ADD_AM_MACRO_STATIC([]) 163 164AC_CONFIG_FILES([Makefile libmctp.pc udev/rules.d/mctp0-raw-kcs3.rules 165 udev/rules.d/mctp0-raw-kcs4.rules]) 166AC_OUTPUT 167