xref: /openbmc/libmctp/configure.ac (revision d4103f8f)
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