]> git.ipfire.org Git - thirdparty/lldpd.git/blame - configure.ac
lldpd: on exit, remove remote ports before removing local ones
[thirdparty/lldpd.git] / configure.ac
CommitLineData
43c02e7b
VB
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
d38eae28
VB
4#######################
5### Base configuration
6
7# Configure autoconf
8AC_PREREQ([2.64])
4593c0dc
VB
9
10dnl Use something like this if you need to patch autoconf files and
11dnl regenerate configure outside upstream git tree:
12dnl AC_INIT([lldpd], [0.5.7], [bernat@luffy.cx])
13AC_INIT([lldpd],
14 [m4_esyscmd_s([git describe --tags --always 2> /dev/null || date +%F])],
15 [bernat@luffy.cx])
16
43c02e7b
VB
17AC_CONFIG_SRCDIR([src/lldpd.c])
18AC_CONFIG_HEADER([config.h])
2acc1418
VB
19AC_CONFIG_FILES([Makefile src/Makefile man/Makefile tests/Makefile])
20AC_CONFIG_MACRO_DIR([m4])
43c02e7b 21
d38eae28
VB
22# Configure automake
23AM_INIT_AUTOMAKE([foreign -Wall -Werror])
33aa26d0 24AM_MAINTAINER_MODE
44cd2bed 25m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
d38eae28
VB
26
27# Configure libtool
8c37e19a 28#LT_PREREQ([2.2])
d38eae28
VB
29LT_INIT
30
31#######################
32### Checks
33
43c02e7b 34# Checks for programs.
d38eae28 35AC_PROG_AWK
43c02e7b 36AC_PROG_CC
d38eae28
VB
37AC_PROG_CPP
38AC_PROG_INSTALL
39AC_PROG_LN_S
40AC_PROG_MAKE_SET
41AC_PROG_CXX
d38eae28 42AM_PROG_CC_C_O
f5bc67ee 43AC_PROG_LIBTOOL
2acc1418 44
45e89c8c
VB
45# Check some compiler flags
46AX_CFLAGS_GCC_OPTION([-fdiagnostics-show-option])
47AX_CFLAGS_GCC_OPTION([-std=gnu99])
48AX_CFLAGS_GCC_OPTION([-pipe])
49AX_CFLAGS_GCC_OPTION([-Wall])
50AX_CFLAGS_GCC_OPTION([-W])
51AX_CFLAGS_GCC_OPTION([-Wextra])
52AX_CFLAGS_GCC_OPTION([-Wformat])
53AX_CFLAGS_GCC_OPTION([-Wformat-security])
54AX_CFLAGS_GCC_OPTION([-Wcast-align])
55AX_CFLAGS_GCC_OPTION([-Winline])
56AX_CFLAGS_GCC_OPTION([-fstack-protector])
57AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2])
58AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter])
59AX_CFLAGS_GCC_OPTION([-Wno-sign-compare]) dnl Should be fixed later
a37f8fd6
VB
60AX_LDFLAGS_OPTION([-Wl,-z,relro])
61AX_LDFLAGS_OPTION([-Wl,-z,now])
45e89c8c 62
8e4b9031
VB
63AC_CACHE_SAVE
64
d38eae28
VB
65# Checks for header files.
66AC_HEADER_RESOLV
67AC_CHECK_HEADERS([ \
68 arpa/inet.h \
69 fcntl.h \
70 malloc.h \
71 netdb.h \
72 netinet/in.h \
73 stdlib.h \
74 string.h \
75 sys/ioctl.h \
76 sys/param.h \
77 sys/socket.h \
78 sys/time.h \
79 sys/queue.h \
80 syslog.h \
81 unistd.h \
d38eae28 82 net/if.h \
b56625e6 83 linux/sockios.h \
d38eae28
VB
84],,AC_MSG_ERROR([Required header missing.]))
85AC_CHECK_HEADERS([ \
86 linux/wireless.h \
87 linux/if_bonding.h \
d38eae28
VB
88 linux/if_bridge.h \
89 linux/if_packet.h \
90],,AC_MSG_ERROR([Required header missing.]),[
91@%:@include <arpa/inet.h>
92@%:@include <linux/if.h>
93])
b56625e6
VB
94AC_CHECK_HEADERS([ \
95 linux/filter.h \
96],,AC_MSG_ERROR([Required header missing.]),[
97@%:@include <linux/types.h>
98])
35097709
VB
99AC_CHECK_HEADERS([ \
100 linux/if_vlan.h \
101],,AC_MSG_ERROR([You should get linux/if_vlan.h from some other place. See README file.]),[
102@%:@include <arpa/inet.h>
103@%:@include <linux/if.h>
104])
396cfdfe 105AC_CHECK_HEADERS([valgrind/valgrind.h])
43c02e7b 106
8e4b9031 107AC_CACHE_SAVE
b5562b23 108
d38eae28 109# Check for sys/queue.h completeness, missing bits will be in compat.h
2d2f913b
VB
110AC_CHECK_DECLS([
111TAILQ_FIRST,
112TAILQ_NEXT,
113TAILQ_FOREACH,
114TAILQ_EMPTY,
115SLIST_HEAD,
116SLIST_ENTRY,
117SLIST_INIT,
118SLIST_INSERT_HEAD,
119SLIST_FIRST,
120SLIST_NEXT,
121SLIST_REMOVE_HEAD,
122SLIST_EMPTY],[],[],[[@%:@include <sys/queue.h>]])
d38eae28 123
35097709 124# On some systems, some ioctl are not declared
2d2f913b
VB
125AC_CHECK_DECLS([
126SIOCGIFVLAN,
127SIOCBONDINFOQUERY,
128SIOCBONDSLAVEINFOQUERY],[],[],[[@%:@include <linux/sockios.h>]])
35097709
VB
129AC_CHECK_MEMBERS([ifslave.slave_name, ifbond.num_slaves], [],
130 [AC_MSG_ERROR([linux/if_bonding.h is incomplete. See README file.])],
131 [
132@%:@include <arpa/inet.h>
133@%:@include <linux/if.h>
134@%:@include <linux/if_bonding.h>
135])
136
d38eae28
VB
137# Do we have PACKET_ORIGDEV (it can be present at runtime, put it in compat.h)
138AC_CHECK_DECLS([PACKET_ORIGDEV],[],[],[[@%:@include <linux/if_packet.h>]])
139
140# Check for ethtool stuff
141lldp_CHECK_HEADER_ETHTOOL
2d2f913b
VB
142AC_CHECK_DECLS([
143ADVERTISED_2500baseX_Full,
144ADVERTISED_Pause,
145ADVERTISED_Asym_Pause,
146ADVERTISED_10000baseT_Full,
147SPEED_10000],[],[],[[@%:@include <linux/ethtool.h>]])
d38eae28
VB
148
149# Check for ETHERTYPE_VLAN, put it in compat.h if not defined
150AC_CHECK_DECLS([ETHERTYPE_VLAN],[],[],[[@%:@include <net/ethernet.h>]])
151
152# Check some stuff in linux/if_vlan.h
2d2f913b
VB
153AC_CHECK_DECLS([GET_VLAN_REALDEV_NAME_CMD,GET_VLAN_VID_CMD],[],[],
154 [[@%:@include <linux/if_vlan.h>]])
43c02e7b 155
8e4b9031
VB
156AC_CACHE_SAVE
157
43c02e7b 158# Checks for typedefs, structures, and compiler characteristics.
d38eae28
VB
159AC_TYPE_UID_T
160AC_C_INLINE
161AC_TYPE_INT16_T
162AC_TYPE_INT32_T
163AC_TYPE_PID_T
164AC_TYPE_SIZE_T
165AC_TYPE_SSIZE_T
166AC_TYPE_UINT16_T
167AC_TYPE_UINT32_T
168AC_TYPE_UINT8_T
6bb9c4e0 169lldp_CHECK___PROGNAME
bc598c23 170lldp_CHECK_FD_SETSIZE
43c02e7b
VB
171
172# Checks for library functions.
d38eae28
VB
173AC_FUNC_CHOWN
174AC_FUNC_FORK
175AC_FUNC_MALLOC
176AC_FUNC_REALLOC
177AC_CHECK_FUNCS([ \
178 atexit \
179 gethostbyname \
180 inet_ntoa memset \
181 regcomp \
182 select \
183 setenv \
184 socket \
185 strchr \
186 strdup \
187 strerror \
188 strndup \
189 tzset \
190 uname \
191],,[AC_MSG_ERROR(Required function not found.)])
192
43c02e7b 193AC_REPLACE_FUNCS([strlcpy])
b7997528 194AC_REPLACE_FUNCS([getifaddrs])
43c02e7b 195
8e4b9031
VB
196AC_CACHE_SAVE
197
d38eae28
VB
198## Unit tests wich check
199PKG_CHECK_MODULES([CHECK], [check >= 0.9.4], [have_check=yes], [have_check=no])
43c02e7b 200
d38eae28
VB
201#######################
202### Options
43c02e7b 203
d38eae28
VB
204# SNMP
205AC_ARG_WITH([snmp],
206 AS_HELP_STRING(
207 [--with-snmp],
208 [Enable the use of SNMP @<:@default=no@:>@]
209 ))
210if test x"$with_snmp" = x"yes"; then
211 lldp_CHECK_SNMP
315587ef
VB
212fi
213
1480ce74
AH
214AC_ARG_WITH([xml],
215 AC_HELP_STRING(
216 [--with-xml],
5a9cb3db 217 [Enable XML output via libxml2 @<:@default=no@:>@]
1480ce74
AH
218 ))
219if test x"$with_xml" = x"yes"; then
220 lldp_CHECK_XML2
221fi
222
d38eae28
VB
223# Privsep settings
224lldp_ARG_WITH([privsep-user], [Which user to use for privilege separation], [_lldpd])
225lldp_ARG_WITH([privsep-group], [Which group to use for privilege separation], [_lldpd])
226lldp_ARG_WITH([privsep-chroot], [Which directory to use to chroot lldpd], [/var/run/lldpd])
89840df0 227
d38eae28
VB
228# CDP/FDP/EDP/SONMP
229lldp_ARG_ENABLE([cdp], [Cisco Discovery Protocol], [yes])
230lldp_ARG_ENABLE([fdp], [Foundry Discovery Protocol], [yes])
231lldp_ARG_ENABLE([edp], [Extreme Discovery Protocol], [yes])
232lldp_ARG_ENABLE([sonmp], [SynOptics Network Management Protocol], [yes])
a1347cd8 233
d38eae28
VB
234# LLDPMED/Dot1/Dot3
235lldp_ARG_ENABLE([lldpmed], [LLDP-MED extension], [yes])
236lldp_ARG_ENABLE([dot1], [Dot1 extension (VLAN stuff)], [yes])
237lldp_ARG_ENABLE([dot3], [Dot3 extension (PHY stuff)], [yes])
a1347cd8 238
d38eae28
VB
239#######################
240# Output results
241AM_CONDITIONAL([HAVE_CHECK], [test x"$have_check" = x"yes"])
242AM_CONDITIONAL([USE_SNMP], [test x"$with_snmp" = x"yes"])
1480ce74 243AM_CONDITIONAL([USE_XML], [test x"$with_xml" = x"yes"])
43c02e7b 244AC_OUTPUT
d38eae28
VB
245
246cat <<EOF
247
248------------------ Summary ------------------
249 $PACKAGE_NAME version $PACKAGE_VERSION
250 Prefix.........: $prefix
251 C Compiler.....: $CC $CFLAGS $CPPFLAGS
252 Linker.........: $LD $LDFLAGS $LIBS
253 Optional features:
254 SNMP support...: ${with_snmp-no}
255 CDP............: $enable_cdp
256 FDP............: $enable_fdp
257 EDP............: $enable_edp
258 SONMP..........: $enable_sonmp
259 LLDPMED........: $enable_lldpmed
260 DOT1...........: $enable_dot1
261 DOT3...........: $enable_dot3
1480ce74 262 XML output.....: ${with_xml-no}
d38eae28
VB
263---------------------------------------------
264
265Check the above options and compile with:
266 ${MAKE-make}
267
268EOF