]>
Commit | Line | Data |
---|---|---|
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 | |
8 | AC_PREREQ([2.64]) | |
4593c0dc | 9 | |
4593c0dc | 10 | AC_INIT([lldpd], |
a888bea6 | 11 | [m4_esyscmd_s([./get-version])], |
4593c0dc VB |
12 | [bernat@luffy.cx]) |
13 | ||
4b292b55 | 14 | AC_CONFIG_SRCDIR([src/log.c]) |
43c02e7b | 15 | AC_CONFIG_HEADER([config.h]) |
4b292b55 VB |
16 | AC_CONFIG_FILES([Makefile src/Makefile src/compat/Makefile src/daemon/Makefile |
17 | src/lib/Makefile src/lib/lldpctl.pc src/client/Makefile | |
e9f4d63c VB |
18 | tests/Makefile]) |
19 | AC_CONFIG_FILES([osx/Makefile osx/distribution.xml osx/im.bernat.lldpd.plist]) | |
20 | AC_CONFIG_FILES([osx/scripts/preinstall], [chmod +x osx/scripts/preinstall]) | |
21 | AC_CONFIG_FILES([osx/scripts/postinstall], [chmod +x osx/scripts/postinstall]) | |
2acc1418 | 22 | AC_CONFIG_MACRO_DIR([m4]) |
fa71a00c | 23 | AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args]) |
43c02e7b | 24 | |
d38eae28 VB |
25 | # Configure automake |
26 | AM_INIT_AUTOMAKE([foreign -Wall -Werror]) | |
33aa26d0 | 27 | AM_MAINTAINER_MODE |
44cd2bed | 28 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) |
d38eae28 | 29 | |
0339b9a2 VB |
30 | # Automake 1.12... |
31 | m4_pattern_allow([AM_PROG_AR]) | |
32 | AM_PROG_AR | |
33 | ||
d38eae28 | 34 | # Configure libtool |
d38eae28 VB |
35 | LT_INIT |
36 | ||
37 | ####################### | |
38 | ### Checks | |
39 | ||
43c02e7b VB |
40 | # Checks for programs. |
41 | AC_PROG_CC | |
6c586123 | 42 | AC_PROG_CC_C99 |
223227c8 | 43 | AC_PROG_CXX |
d38eae28 | 44 | AM_PROG_CC_C_O |
f5bc67ee | 45 | AC_PROG_LIBTOOL |
fe80711e | 46 | AC_PROG_LN_S |
7ba4a183 | 47 | AC_PROG_EGREP |
2acc1418 | 48 | |
4b292b55 VB |
49 | # Doxygen |
50 | DX_HTML_FEATURE(ON) | |
51 | DX_DOT_FEATURE(OFF) | |
52 | DX_CHM_FEATURE(OFF) | |
53 | DX_CHI_FEATURE(OFF) | |
54 | DX_MAN_FEATURE(OFF) | |
55 | DX_RTF_FEATURE(OFF) | |
56 | DX_XML_FEATURE(OFF) | |
57 | DX_PDF_FEATURE(ON) | |
58 | DX_PS_FEATURE(OFF) | |
59 | DX_INIT_DOXYGEN([lldpd], [doxygen.cfg], [doxygen]) | |
60 | ||
45e89c8c VB |
61 | # Check some compiler flags |
62 | AX_CFLAGS_GCC_OPTION([-fdiagnostics-show-option]) | |
45e89c8c VB |
63 | AX_CFLAGS_GCC_OPTION([-pipe]) |
64 | AX_CFLAGS_GCC_OPTION([-Wall]) | |
65 | AX_CFLAGS_GCC_OPTION([-W]) | |
66 | AX_CFLAGS_GCC_OPTION([-Wextra]) | |
67 | AX_CFLAGS_GCC_OPTION([-Wformat]) | |
68 | AX_CFLAGS_GCC_OPTION([-Wformat-security]) | |
d56bb3bd | 69 | AX_CFLAGS_GCC_OPTION([-Wfatal-errors]) |
45e89c8c VB |
70 | AX_CFLAGS_GCC_OPTION([-Wcast-align]) |
71 | AX_CFLAGS_GCC_OPTION([-Winline]) | |
72 | AX_CFLAGS_GCC_OPTION([-fstack-protector]) | |
73 | AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2]) | |
74 | AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter]) | |
d56bb3bd | 75 | AX_CFLAGS_GCC_OPTION([-Wno-missing-field-initializers]) |
45e89c8c | 76 | AX_CFLAGS_GCC_OPTION([-Wno-sign-compare]) dnl Should be fixed later |
a37f8fd6 VB |
77 | AX_LDFLAGS_OPTION([-Wl,-z,relro]) |
78 | AX_LDFLAGS_OPTION([-Wl,-z,now]) | |
45e89c8c | 79 | |
e12c2365 VB |
80 | # OS |
81 | lldp_CHECK_OS | |
82 | ||
8e4b9031 VB |
83 | AC_CACHE_SAVE |
84 | ||
d38eae28 VB |
85 | # Checks for header files. |
86 | AC_HEADER_RESOLV | |
396cfdfe | 87 | AC_CHECK_HEADERS([valgrind/valgrind.h]) |
c3e340b6 | 88 | lldp_CHECK_STDINT |
43c02e7b | 89 | |
8e4b9031 VB |
90 | AC_CACHE_SAVE |
91 | ||
43c02e7b | 92 | # Checks for typedefs, structures, and compiler characteristics. |
6bb9c4e0 | 93 | lldp_CHECK___PROGNAME |
43c02e7b VB |
94 | |
95 | # Checks for library functions. | |
4b292b55 | 96 | AC_CONFIG_LIBOBJ_DIR([src/compat]) |
d38eae28 VB |
97 | AC_FUNC_MALLOC |
98 | AC_FUNC_REALLOC | |
66879d46 | 99 | AC_SEARCH_LIBS([setproctitle], [util bsd]) |
1e0d651f VB |
100 | AC_REPLACE_FUNCS([setproctitle]) |
101 | AC_CHECK_FUNCS([setproctitle_init]) | |
102 | AC_REPLACE_FUNCS([strlcpy strnlen strndup fgetln]) | |
8dab5698 | 103 | AC_CHECK_FUNCS([setresuid setresgid]) |
e66b7f34 | 104 | |
66879d46 VB |
105 | case " $LIBS " in |
106 | *\ -lbsd\ *) | |
107 | AC_DEFINE(HAVE_LIBBSD, 1, [Define if libbsd is used]) | |
108 | ;; | |
109 | esac | |
110 | ||
d0a03372 VB |
111 | # Check for res_init. On OSX, res_init is a symbol in libsystem_info |
112 | # and a macro in resolv.h. We need to ensure we test with resolv.h. | |
113 | m4_pushdef([AC_LANG_CALL(C)], [ | |
114 | AC_LANG_PROGRAM([$1 | |
115 | @%:@include <resolv.h>], [return $2 ();])]) | |
116 | AC_SEARCH_LIBS([res_init], resolv bind, | |
117 | AC_DEFINE([HAVE_RES_INIT], 1, | |
118 | [Define to indicate that res_init() exists])) | |
119 | m4_popdef([AC_LANG_CALL(C)]) | |
e66b7f34 | 120 | |
8e4b9031 VB |
121 | AC_CACHE_SAVE |
122 | ||
d38eae28 VB |
123 | ## Unit tests wich check |
124 | PKG_CHECK_MODULES([CHECK], [check >= 0.9.4], [have_check=yes], [have_check=no]) | |
43c02e7b | 125 | |
e5c94652 | 126 | # Libevent |
c461e5da | 127 | lldp_CHECK_LIBEVENT |
e5c94652 | 128 | |
d38eae28 VB |
129 | ####################### |
130 | ### Options | |
43c02e7b | 131 | |
35f6f4fb VB |
132 | # Readline |
133 | AC_ARG_WITH([readline], | |
134 | AS_HELP_STRING( | |
135 | [--with-readline], | |
136 | [Enable the use of readline-like library @<:@default=check@:>@]), | |
137 | [], | |
138 | [with_readline=check]) | |
139 | if test x"$with_readline" != x"no"; then | |
140 | AX_LIB_READLINE | |
141 | if test x"$with_readline" != x"check"; then | |
142 | if test x"$ax_cv_lib_readline" = x"no"; then | |
143 | AC_MSG_FAILURE([*** no readline support found]) | |
144 | fi | |
145 | fi | |
146 | else | |
147 | ax_cv_lib_readline="no" | |
148 | fi | |
149 | ||
d38eae28 VB |
150 | # SNMP |
151 | AC_ARG_WITH([snmp], | |
152 | AS_HELP_STRING( | |
153 | [--with-snmp], | |
154 | [Enable the use of SNMP @<:@default=no@:>@] | |
155 | )) | |
156 | if test x"$with_snmp" = x"yes"; then | |
157 | lldp_CHECK_SNMP | |
315587ef VB |
158 | fi |
159 | ||
8beb9a73 | 160 | # XML |
1480ce74 AH |
161 | AC_ARG_WITH([xml], |
162 | AC_HELP_STRING( | |
163 | [--with-xml], | |
5a9cb3db | 164 | [Enable XML output via libxml2 @<:@default=no@:>@] |
1480ce74 AH |
165 | )) |
166 | if test x"$with_xml" = x"yes"; then | |
167 | lldp_CHECK_XML2 | |
168 | fi | |
169 | ||
8b7150e4 VB |
170 | # JSON |
171 | AC_ARG_WITH([json], | |
172 | AC_HELP_STRING( | |
173 | [--with-json], | |
174 | [Enable JSON output via Jansson @<:@default=no@:>@] | |
175 | )) | |
176 | if test x"$with_json" = x"yes"; then | |
177 | lldp_CHECK_JANSSON | |
178 | fi | |
179 | ||
c3f85560 VB |
180 | # OS X launchd support |
181 | lldp_ARG_WITH([launchd-daemons-path], [Path to system-wide daemons configuration files (OSX)], [/Library/LaunchDaemons]) | |
182 | ||
d38eae28 VB |
183 | # Privsep settings |
184 | lldp_ARG_WITH([privsep-user], [Which user to use for privilege separation], [_lldpd]) | |
185 | lldp_ARG_WITH([privsep-group], [Which group to use for privilege separation], [_lldpd]) | |
186 | lldp_ARG_WITH([privsep-chroot], [Which directory to use to chroot lldpd], [/var/run/lldpd]) | |
89840df0 | 187 | |
d38eae28 VB |
188 | # CDP/FDP/EDP/SONMP |
189 | lldp_ARG_ENABLE([cdp], [Cisco Discovery Protocol], [yes]) | |
190 | lldp_ARG_ENABLE([fdp], [Foundry Discovery Protocol], [yes]) | |
191 | lldp_ARG_ENABLE([edp], [Extreme Discovery Protocol], [yes]) | |
192 | lldp_ARG_ENABLE([sonmp], [SynOptics Network Management Protocol], [yes]) | |
a1347cd8 | 193 | |
d38eae28 VB |
194 | # LLDPMED/Dot1/Dot3 |
195 | lldp_ARG_ENABLE([lldpmed], [LLDP-MED extension], [yes]) | |
196 | lldp_ARG_ENABLE([dot1], [Dot1 extension (VLAN stuff)], [yes]) | |
197 | lldp_ARG_ENABLE([dot3], [Dot3 extension (PHY stuff)], [yes]) | |
a1347cd8 | 198 | |
184bd199 | 199 | # Oldies |
fda729fd | 200 | lldp_ARG_ENABLE([oldies], [compatibility with Linux kernel older than 2.6.18], [no]) |
184bd199 | 201 | |
d38eae28 VB |
202 | ####################### |
203 | # Output results | |
204 | AM_CONDITIONAL([HAVE_CHECK], [test x"$have_check" = x"yes"]) | |
205 | AM_CONDITIONAL([USE_SNMP], [test x"$with_snmp" = x"yes"]) | |
1480ce74 | 206 | AM_CONDITIONAL([USE_XML], [test x"$with_xml" = x"yes"]) |
8b7150e4 | 207 | AM_CONDITIONAL([USE_JSON], [test x"$with_json" = x"yes"]) |
43c02e7b | 208 | AC_OUTPUT |
d38eae28 | 209 | |
4c1a8c61 | 210 | if test x"$LIBEVENT_EMBEDDED" = x; then |
e5c94652 VB |
211 | libevent=system |
212 | else | |
213 | libevent=embedded | |
214 | fi | |
215 | ||
d38eae28 VB |
216 | cat <<EOF |
217 | ||
218 | ------------------ Summary ------------------ | |
219 | $PACKAGE_NAME version $PACKAGE_VERSION | |
91e0280a | 220 | OS.............: $os |
d38eae28 VB |
221 | Prefix.........: $prefix |
222 | C Compiler.....: $CC $CFLAGS $CPPFLAGS | |
223 | Linker.........: $LD $LDFLAGS $LIBS | |
e5c94652 | 224 | Libevent.......: $libevent |
35f6f4fb | 225 | Readline.......: ${ax_cv_lib_readline} |
d38eae28 VB |
226 | Optional features: |
227 | SNMP support...: ${with_snmp-no} | |
228 | CDP............: $enable_cdp | |
229 | FDP............: $enable_fdp | |
230 | EDP............: $enable_edp | |
231 | SONMP..........: $enable_sonmp | |
232 | LLDPMED........: $enable_lldpmed | |
233 | DOT1...........: $enable_dot1 | |
234 | DOT3...........: $enable_dot3 | |
1480ce74 | 235 | XML output.....: ${with_xml-no} |
8b7150e4 | 236 | JSON output....: ${with_json-no} |
184bd199 | 237 | Oldies support.: $enable_oldies |
d38eae28 VB |
238 | --------------------------------------------- |
239 | ||
240 | Check the above options and compile with: | |
241 | ${MAKE-make} | |
242 | ||
243 | EOF |