blob: bbdc7b7dd1ed392b951975ffcba48f5337a9861a [file] [log] [blame]
Jeremy Kerrb2ef62b2019-05-28 09:38:25 +08001# Initialization
2AC_PREREQ([2.69])
Andrew Jeffery8536cfc2020-06-13 00:33:55 +09303AC_INIT([libmctp], 0.10, [https://github.com/openbmc/libmctp/issues])
Jeremy Kerrb2ef62b2019-05-28 09:38:25 +08004AC_CONFIG_HEADERS([config.h])
5AC_CONFIG_MACRO_DIRS([m4])
Andrew Jefferyd09253f2020-02-26 11:00:37 +10306AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror -Wno-portability foreign dist-xz])
Jeremy Kerrb2ef62b2019-05-28 09:38:25 +08007AM_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
Andrew Jeffery3286f172020-03-17 23:04:13 +103018AC_CHECK_HEADERS_ONCE([endian.h])
Andrew Jeffery7b087212020-03-17 23:09:43 +103019AC_CHECK_HEADERS_ONCE([unistd.h fcntl.h])
Andrew Jeffery3286f172020-03-17 23:04:13 +103020
Jeremy Kerr80971f82019-08-29 09:57:58 +053021# pkg-config
22PKG_PROG_PKG_CONFIG
23PKG_INSTALLDIR
Andrew Jeffery745b1d12021-05-11 11:14:53 +093024PKG_CHECK_MODULES(udev,
25 udev,
Andrew Jeffery9f5b47a2021-05-11 15:05:14 +093026 [PKG_CHECK_VAR(udevdir, udev, udevdir)],
Andrew Jeffery745b1d12021-05-11 11:14:53 +093027 [])
28
Andrew Jeffery9f5b47a2021-05-11 15:05:14 +093029AC_SUBST([udevrulesdir], [$udevdir/rules.d])
30
Andrew Jeffery745b1d12021-05-11 11:14:53 +093031AC_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])])
Andrew Jeffery9f5b47a2021-05-11 15:05:14 +093034AM_CONDITIONAL([LIBMCTP_UDEV_RAW_KCS], [test -n "$udevdir" -a "x$enable_astlpc_raw_kcs" = "xyes"])
Andrew Jeffery745b1d12021-05-11 11:14:53 +093035
Xiaochao Ma1e496c82020-01-16 17:19:11 +080036AC_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)
Andrew Jefferyd4103f82021-06-16 14:39:36 +093051
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])
Xiaochao Ma1e496c82020-01-16 17:19:11 +080057AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
58 [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]
59)
60AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
Jeremy Kerr80971f82019-08-29 09:57:58 +053061
Andrew Jeffery7b087212020-03-17 23:09:43 +103062AC_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 [])
Jeremy Kerrc7e764a2019-05-28 16:49:03 +0800143
144# Enable all bindings. AC_ARG_ENABLE in future.
Jeremy Kerrb2ef62b2019-05-28 09:38:25 +0800145AM_CONDITIONAL([LIBMCTP_BINDING_serial], [true])
146AM_CONDITIONAL([LIBMCTP_BINDING_astlpc], [true])
147
Andrew Jeffery8d53b1c2020-05-29 08:43:04 +0930148# 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
Andrew Jeffery7344ac22020-01-10 16:13:07 +1030158AX_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
Andrew Jeffery745b1d12021-05-11 11:14:53 +0930164AC_CONFIG_FILES([Makefile libmctp.pc udev/rules.d/mctp0-raw-kcs3.rules
165 udev/rules.d/mctp0-raw-kcs4.rules])
Jeremy Kerrb2ef62b2019-05-28 09:38:25 +0800166AC_OUTPUT