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