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