configure.ac 52.9 KB
Newer Older
1
AC_PREREQ([2.63])
Dan Williams's avatar
Dan Williams committed
2

3
dnl The NM version number
4
dnl
5
dnl NOTE: When incrementing version also:
6 7 8
dnl  - add corresponding NM_VERSION_x_y_z macros in
dnl    "shared/nm-version-macros.h.in"
dnl  - update number in meson.build
9
m4_define([nm_major_version], [1])
10 11
m4_define([nm_minor_version], [19])
m4_define([nm_micro_version], [0])
12
m4_define([nm_version],
Dan Williams's avatar
Dan Williams committed
13
          [nm_major_version.nm_minor_version.nm_micro_version])
14 15

AC_INIT([NetworkManager], [nm_version],
Dan Williams's avatar
Dan Williams committed
16
        [http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager],
17
        [NetworkManager])
Dan Williams's avatar
Dan Williams committed
18

19
AC_CONFIG_HEADERS([config.h])
Michael Biebl's avatar
Michael Biebl committed
20
AC_CONFIG_MACRO_DIR([m4])
21
AC_CONFIG_AUX_DIR([build-aux])
Lubomir Rintel's avatar
Lubomir Rintel committed
22
AC_REQUIRE_AUX_FILE([tap-driver.sh])
Michael Biebl's avatar
Michael Biebl committed
23

24
AM_INIT_AUTOMAKE(1.12 tar-ustar no-dist-gzip dist-xz -Wno-portability)  dnl NB: Do not [quote] this parameter.
25
AM_MAINTAINER_MODE([enable])
Adrian Bunk's avatar
Adrian Bunk committed
26
AM_SILENT_RULES([yes])
27 28 29

dnl Define _SYSTEM_EXTENSIONS for various things like strcasestr()
AC_USE_SYSTEM_EXTENSIONS
Michael Biebl's avatar
Michael Biebl committed
30

31 32 33
dnl
dnl Require programs
dnl
Dan Williams's avatar
Dan Williams committed
34
AC_PROG_CC
35
AM_PROG_CC_C_O
36

37 38 39
# C++ only required if --enable-qt=yes
AC_PROG_CXX

Michael Biebl's avatar
Michael Biebl committed
40
AC_PROG_LN_S
41
AC_PROG_MKDIR_P
Michael Biebl's avatar
Michael Biebl committed
42

43 44 45
# Prefer gcc-* variants; the ones libtool would choose don't work with LTO
AC_CHECK_TOOLS(AR, [gcc-ar ar], false)
AC_CHECK_TOOLS(RANLIB, [gcc-ranlib ranlib], :)
46
AC_CHECK_TOOLS(NM, [$BINUTILS_NM gcc-nm nm])
47

48 49
dnl Initialize libtool
LT_PREREQ([2.2])
50
LT_INIT([disable-static])
51

52 53 54 55 56 57 58 59 60
dnl Version stuff
NM_MAJOR_VERSION=nm_major_version
NM_MINOR_VERSION=nm_minor_version
NM_MICRO_VERSION=nm_micro_version
NM_VERSION=nm_version
AC_SUBST(NM_MAJOR_VERSION)
AC_SUBST(NM_MINOR_VERSION)
AC_SUBST(NM_MICRO_VERSION)
AC_SUBST(NM_VERSION)
61 62

GIT_SHA_RECORD(NM_GIT_SHA)
63

64 65 66 67
dnl
dnl Checks for typedefs, structures, and compiler characteristics.
dnl
AC_TYPE_PID_T
68
AC_CHECK_SIZEOF(dev_t)
69
AC_CHECK_SIZEOF(time_t)
70
AC_CHECK_SIZEOF(pid_t)
71

72 73 74 75 76
AC_CHECK_DECLS([
	explicit_bzero],
	[], [], [[
#include <string.h>
]])
77

78 79 80 81 82 83
AC_CHECK_DECLS([
	reallocarray],
	[], [], [[
#include <malloc.h>
]])

84 85 86 87 88 89
AC_CHECK_DECLS([
	memfd_create],
	[], [], [[
#include <sys/mman.h>
]])

90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
AC_CHECK_HEADERS(sys/auxv.h)

AC_CHECK_DECLS([getrandom],
               [AC_DEFINE([USE_SYS_RANDOM_H], [1], [sys/random.h is usable])
                AC_DEFINE([HAVE_GETRANDOM], [1], [has getrandom])
               ],
               [AC_CHECK_DECLS([getrandom],
                               [AC_DEFINE([USE_SYS_RANDOM_H], [0], [sys/random.h is usable])
                                AC_DEFINE([HAVE_GETRANDOM], [1], [has getrandom])],
                               [AC_DEFINE([USE_SYS_RANDOM_H], [0], [sys/random.h is usable])
                                AC_DEFINE([HAVE_GETRANDOM], [0], [has getrandom])],
                               [[#include <linux/random.h>
                                 ]])],
               [[#include <sys/random.h>
                 ]])
105

106 107 108
dnl
dnl translation support
dnl
109 110 111 112 113
IT_PROG_INTLTOOL([0.40.0])

AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.17])

114 115 116 117
GETTEXT_PACKAGE=NetworkManager
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])

118 119 120 121
# Add runstatedir if not specified manually in autoconf < 2.70
AS_IF([test -z "$runstatedir"], runstatedir="$localstatedir/run")
AC_SUBST(runstatedir)

122
# NetworkManager paths
123 124 125 126 127 128
AC_SUBST(nmbinary, '${sbindir}'/$PACKAGE, [NetworkManager binary executable])
AC_SUBST(nmconfdir, '${sysconfdir}'/$PACKAGE, [NetworkManager configuration directory])
AC_SUBST(nmlibdir, '${prefix}'/lib/$PACKAGE, [NetworkManager library directory])
AC_SUBST(nmdatadir, '${datadir}'/$PACKAGE, [NetworkManager shared data directory])
AC_SUBST(nmstatedir, '${localstatedir}'/lib/$PACKAGE, [NetworkManager persistent state directory])
AC_SUBST(nmrundir, '${runstatedir}'/$PACKAGE, [NetworkManager runtime state directory])
129

130 131 132
AC_GNU_SOURCE
AC_CHECK_FUNCS([__secure_getenv secure_getenv])

133
# Alternative configuration plugins
134
AC_ARG_ENABLE(config-plugin-ibft, AS_HELP_STRING([--enable-config-plugin-ibft], [enable ibft configuration plugin]))
135 136 137
AC_ARG_ENABLE(ifcfg-rh, AS_HELP_STRING([--enable-ifcfg-rh], [enable ifcfg-rh configuration plugin (Fedora/RHEL)]))
AC_ARG_ENABLE(ifupdown, AS_HELP_STRING([--enable-ifupdown], [enable ifupdown configuration plugin (Debian/Ubuntu)]))
# Default alternative plugins by distribution
138 139
AS_IF([test -z "$enable_ifcfg_rh" -a -d /etc/sysconfig/network-scripts], enable_ifcfg_rh=yes)
AS_IF([test -z "$enable_ifupdown" -a -f /etc/debian_version],            enable_ifupdown=yes)
140 141 142
# Otherwise plugins default to "no"
AS_IF([test -z "$enable_ifcfg_rh"], enable_ifcfg_rh=no)
AS_IF([test -z "$enable_ifupdown"], enable_ifupdown=no)
143 144
# Disable obsolete ibft plugin by default
AS_IF([test -z "$enable_config_plugin_ibft"], enable_config_plugin_ibft="no")
145
# Create automake conditionals
146
AM_CONDITIONAL(CONFIG_PLUGIN_IBFT, test "$enable_config_plugin_ibft" = "yes")
147 148
AM_CONDITIONAL(CONFIG_PLUGIN_IFCFG_RH, test "$enable_ifcfg_rh" = "yes")
AM_CONDITIONAL(CONFIG_PLUGIN_IFUPDOWN, test "$enable_ifupdown" = "yes")
149

150 151 152 153
AC_ARG_WITH(config-plugins-default,
            AS_HELP_STRING([--with-config-plugins-default=PLUGINS],
                           [Default configuration option for main.plugins setting, used as fallback if the configuration option is unset]),
            [config_plugins_default="$withval"], [config_plugins_default=""])
154
if test -z "$config_plugins_default" -o "$config_plugins_default" = no; then
155 156 157 158 159
	config_plugins_default=''
	test "$enable_ifcfg_rh" = "yes"           && config_plugins_default="$config_plugins_default,ifcfg-rh"
	test "$enable_ifupdown" = "yes"           && config_plugins_default="$config_plugins_default,ifupdown"
	test "$enable_config_plugin_ibft" = "yes" && config_plugins_default="$config_plugins_default,ibft"
	config_plugins_default="${config_plugins_default#,}"
160
fi
161 162 163 164 165

test "$enable_ifcfg_rh" = "yes"           && distro_plugins="$distro_plugins,ifcfg-rh"
test "$enable_ifupdown" = "yes"           && distro_plugins="$distro_plugins,ifupdown"
distro_plugins="${distro_plugins#,}"

166
AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_PLUGINS, "$config_plugins_default", [Default configuration option for main.plugins setting])
167 168 169 170 171
if test "${enable_config_plugin_ibft}" = yes; then
	AC_DEFINE(WITH_SETTINGS_PLUGIN_IBFT, 1, [Whether compilation of ibft setting plugin is enabled])
else
	AC_DEFINE(WITH_SETTINGS_PLUGIN_IBFT, 0, [Whether compilation of ibft setting plugin is enabled])
fi
172

173
if test "$enable_ifcfg_rh" = "yes"; then
174
	DISTRO_NETWORK_SERVICE=network.service
175 176 177
fi
AC_SUBST(DISTRO_NETWORK_SERVICE)

178 179
# Code coverage
GNOME_CODE_COVERAGE
180

181 182 183
dnl
dnl Distribution version string
dnl
184 185 186
AC_ARG_WITH(dist-version,
            AS_HELP_STRING([--with-dist-version=<NM-distribution-version>],
                           [Define the NM''s distribution version string]),
187 188 189
            ac_distver=$withval, ac_distver=$NM_VERSION)
AC_DEFINE_UNQUOTED(NM_DIST_VERSION, "$ac_distver", [Define the distribution version string])
AC_SUBST(NM_DIST_VERSION, "$ac_distver")
190

191 192 193 194 195 196 197 198 199
AC_ARG_ENABLE(wifi, AS_HELP_STRING([--enable-wifi], [enable Wi-Fi support]))
if test "${enable_wifi}" != "no"; then
	enable_wifi='yes'
	AC_DEFINE(WITH_WIFI, 1, [Define if you have Wi-Fi support])
else
	AC_DEFINE(WITH_WIFI, 0, [Define if you have Wi-Fi support])
fi
AM_CONDITIONAL(WITH_WIFI, test "${enable_wifi}" = "yes")

200 201 202
dnl
dnl Default to using WEXT but allow it to be disabled
dnl
203 204 205 206
AC_ARG_WITH(wext,
            AS_HELP_STRING([--with-wext=yes],
                           [Enable or disable Linux Wireless Extensions]),
            ac_with_wext=$withval, ac_with_wext="$enable_wifi")
207 208 209
if test "$ac_with_wext" != 'no'; then
	ac_with_wext='yes'
fi
210
if test x"$ac_with_wext" = x"yes"; then
211 212 213
	if test "$enable_wifi" != "yes"; then
		AC_MSG_ERROR(Enabling WEXT support and disabling Wi-Fi makes no sense)
	fi
214 215 216
	AC_DEFINE(HAVE_WEXT, 1, [Define if you have Linux Wireless Extensions support])
else
	AC_DEFINE(HAVE_WEXT, 0, [Define if you have Linux Wireless Extensions support])
Dan Williams's avatar
Dan Williams committed
217
fi
218
AM_CONDITIONAL(WITH_WEXT, test x"${ac_with_wext}" = x"yes")
Dan Williams's avatar
Dan Williams committed
219

220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
dnl
dnl Default to using wpa_supplicant but allow IWD as wifi backend
dnl
AC_ARG_WITH(iwd,
            AS_HELP_STRING([--with-iwd=yes],
                           [Support IWD as wifi-backend in addition to wpa_supplicant (experimental)]),
            ac_with_iwd=$withval, ac_with_iwd="no")
if test "$ac_with_iwd" != 'no'; then
	ac_with_iwd='yes'
fi
if test x"$ac_with_iwd" = x"yes"; then
	if test "$enable_wifi" != "yes"; then
		AC_MSG_ERROR(Enabling IWD support and disabling Wi-Fi makes no sense)
	fi
	AC_DEFINE(WITH_IWD, 1, [Define to compile with the IWD wifi-backend])
else
	AC_DEFINE(WITH_IWD, 0, [Define to compile without the IWD wifi-backend])
fi
AM_CONDITIONAL(WITH_IWD, test x"${ac_with_iwd}" = x"yes")

240 241 242
dnl
dnl Checks for libdl - on certain platforms its part of libc
dnl
243 244 245
AC_SEARCH_LIBS([dlopen], [dl dld],
	[test "$ac_cv_search_dlopen" = "none required" || AC_SUBST([DL_LIBS], "$ac_cv_search_dlopen"]),
	[])
246

247
PKG_CHECK_MODULES(GLIB, [gio-unix-2.0 >= 2.37.6 gmodule-2.0],
248 249
                  [AC_SUBST(LOG_DRIVER, '$(top_srcdir)/build-aux/tap-driver.sh')
                   AC_SUBST(AM_TESTS_FD_REDIRECT, '--tap')],
Lubomir Rintel's avatar
Lubomir Rintel committed
250
                  [PKG_CHECK_MODULES(GLIB, gio-unix-2.0 >= 2.40 gmodule-2.0)
251
                   AC_SUBST(LOG_DRIVER, '$(top_srcdir)/build-aux/test-driver')])
252

Lubomir Rintel's avatar
Lubomir Rintel committed
253
GLIB_CFLAGS="$GLIB_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40"
254

255 256 257
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)

258 259
GOBJECT_INTROSPECTION_CHECK([0.9.6])

260
PKG_CHECK_MODULES([LIBUDEV], [libudev >= 175])
Dan Williams's avatar
Dan Williams committed
261

262
# Qt4
263
PKG_CHECK_MODULES(QT, [QtCore >= 4 QtDBus QtNetwork], [have_qt=yes],[have_qt=no])
264 265 266
AC_ARG_ENABLE(qt,
              AS_HELP_STRING([--enable-qt], [enable Qt examples]),
              [enable_qt=${enableval}], [enable_qt=${have_qt}])
267 268 269 270
if (test "${enable_qt}" = "yes"); then
	if test x"$have_qt" = x"no"; then
		AC_MSG_ERROR(Qt development headers are required)
	fi
271
	# Check for moc-qt4 and if not found then moc
272
	QT4_BINDIR=`$PKG_CONFIG QtCore --variable moc_location`
273
	AC_CHECK_PROGS(MOC, [moc-qt4 moc],, [$QT4_BINDIR:$PATH])
274 275 276
fi
AM_CONDITIONAL(WITH_QT, test "${enable_qt}" = "yes")

277 278 279 280
AC_ARG_WITH(udev-dir,
            AS_HELP_STRING([--with-udev-dir=DIR],
                           [Absolute path of the udev base directory. Set to 'no' not to install the udev rules]),
            [], [with_udev_dir="yes"])
281
if (test "$with_udev_dir" != 'no'); then
282
	if (test "$with_udev_dir" != 'yes' && printf '%s' "$with_udev_dir" | grep -v -q '^/'); then
283 284 285
		AC_MSG_ERROR([--with-udev-dir must be an absolute path or 'yes' or 'no'. Instead it is '$with_udev_dir'])
	fi
	if (test "$with_udev_dir" = 'yes'); then
286
		with_udev_dir="\$(prefix)/lib/udev"
287 288 289
	fi
	UDEV_DIR="$with_udev_dir"
	AC_SUBST(UDEV_DIR)
290
fi
291
AM_CONDITIONAL(WITH_UDEV_DIR, test "$with_udev_dir" != 'no')
292

293
# systemd unit support
294 295 296
AC_ARG_WITH([systemdsystemunitdir],
            AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
                           [Directory for systemd service files]))
297 298
# default location
AS_IF([test -z "$with_systemdsystemunitdir" && $PKG_CONFIG systemd],
299
      with_systemdsystemunitdir="\$(prefix)/lib/systemd/system")
300 301 302 303
AS_IF([test -z "$with_systemdsystemunitdir"], with_systemdsystemunitdir=no)
# add conditional and subst
AM_CONDITIONAL(HAVE_SYSTEMD, [test "$with_systemdsystemunitdir" != no])
if test "$with_systemdsystemunitdir" != no; then
304
	AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
305 306 307
	AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd support is available])
else
	AC_DEFINE(HAVE_SYSTEMD, 0, [Define if systemd support is available])
308
fi
Dan Williams's avatar
Dan Williams committed
309

310
PKG_CHECK_MODULES(SYSTEMD_200, [systemd >= 200], [have_systemd_200=yes], [have_systemd_200=no])
311 312
AM_CONDITIONAL(HAVE_SYSTEMD_200, test "${have_systemd_200}" = "yes")

313
# Hostname persist mode
314 315 316
AC_ARG_WITH(hostname-persist,
            AS_HELP_STRING([--with-hostname-persist=default|suse|gentoo|slackware],
                           [Hostname persist method]))
317 318 319

AS_IF([test "$with_hostname_persist" = "suse"], hostname_persist=suse)
AS_IF([test "$with_hostname_persist" = "gentoo"], hostname_persist=gentoo)
320
AS_IF([test "$with_hostname_persist" = "slackware"], hostname_persist=slackware)
321 322
AS_IF([test "$with_hostname_persist" = "default"], hostname_persist=default)
# if the method was not explicitly set, try to guess it from the enabled plugins
323
AS_IF([test -z "$hostname_persist" -a -f /etc/SuSE-release], hostname_persist=suse)
324
AS_IF([test -z "$hostname_persist" -a -f /etc/gentoo-release], hostname_persist=gentoo)
325
AS_IF([test -z "$hostname_persist" -a -f /etc/slackware-version], hostname_persist=slackware)
326 327 328 329 330 331
AS_IF([test -z "$hostname_persist"], hostname_persist=default)

if test "$hostname_persist" = suse; then
	AC_DEFINE(HOSTNAME_PERSIST_SUSE, 1, [Enable SuSE hostname persist method])
elif test "$hostname_persist" = gentoo; then
	AC_DEFINE(HOSTNAME_PERSIST_GENTOO, 1, [Enable Gentoo hostname persist method])
332 333
elif test "$hostname_persist" = slackware; then
	AC_DEFINE(HOSTNAME_PERSIST_SLACKWARE, 1, [Enable Slackware hostname persist method])
334 335
fi

336
PKG_CHECK_MODULES(LIBSYSTEMD, [libsystemd >= 209],
337 338
                  [AC_DEFINE([HAVE_LIBSYSTEMD], 1, [Define to 1 if libsystemd is available])],
                  [AC_DEFINE([HAVE_LIBSYSTEMD], 0, [Define to 1 if libsystemd is available])])
339

340 341 342
AC_ARG_WITH(systemd-journal,
            AS_HELP_STRING([--with-systemd-journal=yes|no],
                           [Use systemd journal for logging]))
343 344
have_systemd_journal=no
if test "$with_systemd_journal" != "no"; then
345
	PKG_CHECK_MODULES(SYSTEMD_JOURNAL, [libsystemd >= 209], [have_systemd_journal=yes],
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361
	                  [PKG_CHECK_MODULES(SYSTEMD_JOURNAL,
	                                     [libsystemd-journal],
	                                     [have_systemd_journal=yes],
	                                     [have_systemd_journal=no])])
	if test "$have_systemd_journal" != "yes"; then
		if test "$with_systemd_journal" = "yes"; then
			AC_MSG_ERROR([Missing systemd-journald support])
		fi
	fi
fi
if test "$have_systemd_journal" = "yes"; then
	AC_DEFINE([SYSTEMD_JOURNAL], 1, [Define to 1 if libsystemd-journald is available])
else
	AC_DEFINE([SYSTEMD_JOURNAL], 0, [Define to 1 if libsystemd-journald is available])
fi

362 363 364 365 366
AC_ARG_WITH(config-logging-backend-default,
            AS_HELP_STRING([--with-config-logging-backend-default=backend],
                           [Default value for logging.backend]),
            nm_config_logging_backend_default="$withval",
            nm_config_logging_backend_default="")
367

368 369
if test "$nm_config_logging_backend_default" != 'syslog' \
     -a "$nm_config_logging_backend_default" != 'journal'; then
370 371 372 373 374 375
	# unknown backend. Reset to default. Silently accept the invalid value to
	# be future proof.
	nm_config_logging_backend_default=''
fi
if test "$nm_config_logging_backend_default" = ""; then
	if test "$have_systemd_journal" = "yes"; then
376
		nm_config_logging_backend_default='journal'
377 378 379 380
	else
		nm_config_logging_backend_default='syslog'
	fi
fi
381 382 383
AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_LOGGING_BACKEND, "$nm_config_logging_backend_default", [Default configuration option for logging.backend])
NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT="$nm_config_logging_backend_default"
AC_SUBST(NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT)
384

385
# Session tracking support
386 387 388 389 390 391 392 393 394
AC_ARG_WITH(systemd-logind,
            AS_HELP_STRING([--with-systemd-logind=yes|no],
                           [Support systemd session tracking]))
AC_ARG_WITH(consolekit,
            AS_HELP_STRING([--with-consolekit=yes|no],
                           [Support consolekit session tracking]))
AC_ARG_WITH(session-tracking,
            AS_HELP_STRING([--with-session-tracking=systemd|elogind|consolekit|no],
                           [Compatibility option to choose one session tracking module]))
395
# backwards compatibility
Sven Eden's avatar
Sven Eden committed
396 397 398 399 400 401
AS_IF([test "$with_session_tracking" = "ck"], [use_consolekit="yes" use_systemd_logind="no" use_elogind="no"])
AS_IF([test "$with_session_tracking" = "consolekit"], [use_consolekit="yes" use_systemd_logind="no" use_elogind="no"])
AS_IF([test "$with_session_tracking" = "systemd"], [use_consolekit="no" use_systemd_logind="yes" use_elogind="no"])
AS_IF([test "$with_session_tracking" = "elogind"], [use_consolekit="no" use_systemd_logind="no" use_elogind="yes"])
AS_IF([test "$with_session_tracking" = "no"], [use_consolekit="no" use_systemd_logind="no" use_elogind="no"])
AS_IF([test "$with_session_tracking" = "none"], [use_consolekit="no" use_systemd_logind="no" use_elogind="no"])
402 403 404 405
# current options
AS_IF([test -n "$with_systemd_logind" ], [use_systemd_logind="$with_systemd_logind"])
AS_IF([test -n "$with_consolekit" ], [use_consolekit="$with_consolekit"])
# defaults
406
AS_IF([test -z "$use_systemd_logind"], [use_systemd_logind="auto"])
407
AS_IF([test -z "$use_consolekit"], [use_consolekit="yes"])
408 409
# output
session_tracking=
410
if test "$use_systemd_logind" = "yes" -o "$use_systemd_logind" = "auto"; then
411
	PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd], [have_systemd_logind=yes], [PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libsystemd-login], [have_systemd_logind=yes], [have_systemd_logind=no])])
412
else
413
	have_systemd_logind=no
414 415
fi
if test "$use_systemd_logind" = "yes" -a "$have_systemd_logind" = "no"; then
416
	AC_MSG_ERROR([You must have libsystemd installed to build with systemd-logind support.])
417 418
fi
if test "$have_systemd_logind" = "yes"; then
419 420
	AC_DEFINE([SESSION_TRACKING_SYSTEMD], 1, [Define to 1 if libsystemd-login is available])
	session_tracking="$session_tracking, systemd-logind"
421 422
else
	AC_DEFINE([SESSION_TRACKING_SYSTEMD], 0, [Define to 1 if libsystemd-login is available])
423
fi
Sven Eden's avatar
Sven Eden committed
424

425
if test "$use_elogind" = "yes" -a "$have_systemd_logind" = "yes"; then
426
	AC_MSG_ERROR([Cannot enable systemd-logind together with elogind.])
427 428
fi
if test "$use_elogind" = "yes"; then
429
	PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libelogind], [have_elogind=yes], [PKG_CHECK_MODULES(SYSTEMD_LOGIN, [libelogind], [have_elogind=yes], [have_elogind=no])])
Sven Eden's avatar
Sven Eden committed
430
else
431
	have_elogind=no
Sven Eden's avatar
Sven Eden committed
432 433
fi
if test "$use_elogind" = "yes" -a "$have_elogind" = "no"; then
434
	AC_MSG_ERROR([You must have libelogind installed to build with elogind support.])
Sven Eden's avatar
Sven Eden committed
435 436
fi
if test "$have_elogind" = "yes"; then
437 438
	AC_DEFINE([SESSION_TRACKING_ELOGIND], 1, [Define to 1 if libelogin is available])
	session_tracking="$session_tracking, elogind"
439 440
else
	AC_DEFINE([SESSION_TRACKING_ELOGIND], 0, [Define to 1 if libelogin is available])
Sven Eden's avatar
Sven Eden committed
441 442
fi

443
if test "$use_consolekit" = "yes"; then
444 445
	AC_DEFINE([SESSION_TRACKING_CONSOLEKIT], 1, [Define to 1 if ConsoleKit is available])
	session_tracking="$session_tracking, consolekit"
446 447
else
	AC_DEFINE([SESSION_TRACKING_CONSOLEKIT], 0, [Define to 1 if ConsoleKit is available])
448
fi
449
session_tracking="$(printf '%s' "${session_tracking}" | sed 's/^, //')"
450

451 452 453
AC_ARG_WITH(suspend-resume,
            AS_HELP_STRING([--with-suspend-resume=upower|systemd|elogind|consolekit],
                           [Build NetworkManager with specific suspend/resume support]))
454
if test "z$with_suspend_resume" = "z"; then
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
	PKG_CHECK_EXISTS([libsystemd >= 209], [have_systemd_inhibit=yes],
	                 [PKG_CHECK_EXISTS([libsystemd-login >= 183], [have_systemd_inhibit=yes], [have_systemd_inhibit=no])])
	if test "z${have_systemd_inhibit}" = "zyes"; then
		# Use systemd if it's new enough
		with_suspend_resume="systemd"
	else
		PKG_CHECK_EXISTS([libelogind >= 219], [have_elogind_inhibit=yes],
		                 [PKG_CHECK_EXISTS([libelogind >= 219], [have_elogind_inhibit=yes], [have_elogind_inhibit=no])])
		if test "z${have_elogind_inhibit}" = "zyes"; then
			# Use elogind if it's new enough
			with_suspend_resume="elogind"
		else
			if test "$use_consolekit" = "yes"; then
				# Use consolekit suspend if session tracking is consolekit
				with_suspend_resume="consolekit"
			else
				# Fall back to upower
				with_suspend_resume="upower"
			fi
		fi
	fi
Sven Eden's avatar
Sven Eden committed
476
fi
477 478

case $with_suspend_resume in
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497
	upower)
		AC_DEFINE([SUSPEND_RESUME_UPOWER], 1, [Define to 1 to use UPower suspend api])
		;;
	systemd)
		PKG_CHECK_MODULES(SYSTEMD_INHIBIT, [libsystemd >= 209],,
		                  [PKG_CHECK_MODULES(SYSTEMD_INHIBIT, [libsystemd-login >= 183])])
		AC_DEFINE([SUSPEND_RESUME_SYSTEMD], 1, [Define to 1 to use systemd suspend api])
		;;
	elogind)
		PKG_CHECK_MODULES(ELOGIND_INHIBIT, [libelogind >= 219],,
		                  [PKG_CHECK_MODULES(ELOGIND_INHIBIT, [libelogind >= 219])])
		AC_DEFINE([SUSPEND_RESUME_ELOGIND], 1, [Define to 1 to use elogind suspend api])
		;;
	consolekit)
		AC_DEFINE([SUSPEND_RESUME_CONSOLEKIT], 1, [Define to 1 to use ConsoleKit2 suspend api])
		;;
	*)
		AC_MSG_ERROR(--with-suspend-resume must be one of [upower, systemd, elogind, consolekit])
		;;
498 499
esac

500 501
# eBPF support
AC_ARG_WITH(ebpf,
502 503
            AS_HELP_STRING([--with-ebpf=yes|no|auto], [Build with eBPF support (default: auto)]),
            [], [with_ebpf=auto])
Thomas Haller's avatar
Thomas Haller committed
504 505
# 'auto' means 'false' because there are still some issues.
if test "$with_ebpf" = "yes" ; then
506 507 508 509 510 511
	AC_CHECK_HEADER(linux/bpf.h, [have_ebpf=yes], [have_ebpf=no])
else
	have_ebpf=no
fi
if test "$with_ebpf" = "yes" -a "$have_ebpf" = "no"; then
	AC_MSG_ERROR([--with-ebpf=yes requires eBPF kernel header])
512
fi
513
AM_CONDITIONAL(WITH_EBPF, test "${have_ebpf}" = "yes")
514

515
# SELinux support
516 517 518
AC_ARG_WITH(selinux,
            AS_HELP_STRING([--with-selinux=yes|no|auto], [Build with SELinux (default: auto)]),
            [], [with_selinux=auto])
519
if test "$with_selinux" = "yes" -o "$with_selinux" = "auto"; then
520
	PKG_CHECK_MODULES(SELINUX, libselinux, [have_selinux=yes], [have_selinux=no])
521
else
522
	have_selinux=no
523 524
fi
if test "$with_selinux" = "yes" -a "$have_selinux" = "no"; then
525
	AC_MSG_ERROR([You must have libselinux installed to build --with-selinux=yes.])
526 527
fi
if test "$have_selinux" = "yes"; then
528
	AC_DEFINE(HAVE_SELINUX, 1, [Define if you have SELinux support])
529
else
530
	AC_DEFINE(HAVE_SELINUX, 0, [Define if you have SELinux support])
531 532
fi

Beniamino Galvani's avatar
Beniamino Galvani committed
533
# libaudit support
534
AC_ARG_WITH(libaudit, AS_HELP_STRING([--with-libaudit=yes|yes-disabled-by-default|no|auto], [Build with audit daemon support (default: auto). yes-disabled-by-default enables support, but disables it unless explicitly configured via NetworkManager.conf]),,[with_libaudit=auto])
535
if test "$with_libaudit" = "yes" -o "$with_libaudit" = "yes-disabled-by-default" -o "$with_libaudit" = "auto"; then
536 537 538 539
	PKG_CHECK_MODULES(LIBAUDIT, audit, [have_libaudit=yes], [have_libaudit=no])
	if test "$with_libaudit" != "auto" -a "$have_libaudit" = "no"; then
		AC_MSG_ERROR([You must have libaudit installed to build --with-libaudit=$with_libaudit.])
	fi
Beniamino Galvani's avatar
Beniamino Galvani committed
540
else
541
	have_libaudit=no
Beniamino Galvani's avatar
Beniamino Galvani committed
542 543
fi
if test "$have_libaudit" = "yes"; then
544 545 546 547 548 549 550 551
	AC_DEFINE(HAVE_LIBAUDIT, 1, [Define if you have libaudit support])
	if test "$with_libaudit" = "yes-disabled-by-default"; then
		AC_DEFINE(NM_CONFIG_DEFAULT_LOGGING_AUDIT, "false", [The default value of the logging.audit configuration option])
		NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT='false'
	else
		AC_DEFINE(NM_CONFIG_DEFAULT_LOGGING_AUDIT, "true",  [The default value of the logging.audit configuration option])
		NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT='true'
	fi
Beniamino Galvani's avatar
Beniamino Galvani committed
552
else
553 554 555
	AC_DEFINE(HAVE_LIBAUDIT, 0, [Define if you have libaudit support])
	AC_DEFINE(NM_CONFIG_DEFAULT_LOGGING_AUDIT, "false", [The default value of the logging.audit configuration option])
	NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT='false'
Beniamino Galvani's avatar
Beniamino Galvani committed
556
fi
557
AC_SUBST(NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT)
Beniamino Galvani's avatar
Beniamino Galvani committed
558

559
# uuid library
560 561
PKG_CHECK_MODULES(UUID, uuid)

Jiri Pirko's avatar
Jiri Pirko committed
562
# Teamd control checks
563

Lubomir Rintel's avatar
Lubomir Rintel committed
564
PKG_CHECK_MODULES(JANSSON, [jansson >= 2.5], [have_jansson=yes], [have_jansson=no])
565 566
if test "$have_jansson" = "yes"; then
	AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled])
Lubomir Rintel's avatar
Lubomir Rintel committed
567 568 569 570 571 572 573 574 575

	AC_CHECK_TOOLS(READELF, [eu-readelf readelf])
	JANSSON_LIBDIR=`$PKG_CONFIG --variable=libdir jansson`
	JANSSON_SONAME=`$READELF -d $JANSSON_LIBDIR/libjansson.so |sed -n 's/.*SONAME.*\[[\([^]]*\)]]/\1/p'`

	if test "$JANSSON_SONAME" = ""; then
		AC_MSG_ERROR(Unable to locate the Jansson library)
	fi
	AC_DEFINE_UNQUOTED(JANSSON_SONAME, "$JANSSON_SONAME", [Define to path to the Jansson shared library])
576 577 578 579 580
else
	AC_DEFINE(WITH_JANSSON, 0, [Define if JANSSON is enabled])
fi
AM_CONDITIONAL(WITH_JANSSON, test "${have_jansson}" = "yes")

581
PKG_CHECK_MODULES(LIBTEAMDCTL, [libteamdctl >= 1.9], [have_teamdctl=yes],[have_teamdctl=no])
582 583 584 585 586 587
if test "$have_jansson" = "yes" -a "$have_teamdctl" = "yes"; then
	have_team_prereq=yes
else
	have_team_prereq=no
fi

588 589 590 591
AC_ARG_ENABLE(teamdctl,
              AS_HELP_STRING([--enable-teamdctl], [enable Teamd control support]),
              [enable_teamdctl=${enableval}], [enable_teamdctl=${have_team_prereq}])
if (test "${enable_teamdctl}" = "yes"); then
592 593 594 595 596
	if test "$have_teamdctl" = "no"; then
		AC_MSG_ERROR(Libteamdctl is required for team support)
	fi
	if test "$have_jansson" = "no"; then
		AC_MSG_ERROR(Jansson is required for team support)
Jiri Pirko's avatar
Jiri Pirko committed
597 598 599
	fi
	# temporary bug workaround
	LIBTEAMDCTL_CFLAGS=`echo $LIBTEAMDCTL_CFLAGS | sed -e 's:/teamdctl.h::'`
600 601 602 603 604 605 606 607 608 609 610 611 612 613 614
fi
AM_CONDITIONAL(WITH_TEAMDCTL, test "${enable_teamdctl}" = "yes")

# Jansson for team configuration validation
AC_ARG_ENABLE(json-validation,
              AS_HELP_STRING([--enable-json-validation], [Enable JSON validation in libnm]),
              [enable_json_validation=${enableval}],
              [enable_json_validation=${have_jansson}])
if (test "${enable_json_validation}" == "no"); then
	AC_DEFINE(WITH_JSON_VALIDATION, 0, [Define if JSON validation in libnm is enabled])
else
	if test "$have_jansson" = "no"; then
		AC_MSG_ERROR([jansson is needed for team configuration validation. Use --disable-json-validation to build without it.])
	fi
		AC_DEFINE(WITH_JSON_VALIDATION, 1, [Define if JSON validation in libnm is enabled])
615
fi
616
AM_CONDITIONAL(WITH_JSON_VALIDATION, test "${enable_json_validation}" != "no")
617

618 619
# we usually compile with polkit support. --enable-polkit=yes|no only sets the
# default configuration for main.auth-polkit. User can always enable/disable polkit
luz.paz's avatar
luz.paz committed
620
# authorization via config.
621
AC_ARG_ENABLE(polkit,
622 623
              AS_HELP_STRING([--enable-polkit=yes|no],
                             [set default value for auth-polkit configuration option. This value can be overwritten by NM configuration. 'disabled' is an alias for 'no']),
624
              [enable_polkit=${enableval}], [enable_polkit=yes])
625
if (test "${enable_polkit}" != "no" -a "${enable_polkit}" != "disabled"); then
626
	enable_polkit=true
627 628
	AC_DEFINE(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT, "true", [The default value of the auth-polkit configuration option])
	AC_SUBST(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT, true)
629
else
630
	enable_polkit=false
631 632
	AC_DEFINE(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT, "false", [The default value of the auth-polkit configuration option])
	AC_SUBST(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT, false)
633
fi
634

635
PKG_CHECK_MODULES(POLKIT, [polkit-agent-1 >= 0.97], [have_pk_agent=yes],[have_pk_agent=no])
636 637 638
AC_ARG_ENABLE(polkit-agent,
              AS_HELP_STRING([--enable-polkit-agent], [enable polkit agent for clients]),
              [enable_polkit_agent=${enableval}], [enable_polkit_agent=${have_pk_agent}])
639 640 641 642 643 644 645 646 647 648
if (test "${enable_polkit_agent}" = "yes"); then
	if test x"$have_pk_agent" = x"no"; then
		AC_MSG_ERROR(Polkit agent is required)
	fi
	AC_DEFINE(WITH_POLKIT_AGENT, 1, [Define if you have polkit agent])
else
	AC_DEFINE(WITH_POLKIT_AGENT, 0, [Define if you have polkit agent])
fi
AM_CONDITIONAL(WITH_POLKIT_AGENT, test "${enable_polkit_agent}" = "yes")

649
AC_ARG_ENABLE(modify-system, AS_HELP_STRING([--enable-modify-system], [Allow users to modify system connections]))
650 651 652 653 654 655 656
if test "${enable_modify_system}" = "yes"; then
	NM_MODIFY_SYSTEM_POLICY="yes"
else
	NM_MODIFY_SYSTEM_POLICY="auth_admin_keep"
fi
AC_SUBST(NM_MODIFY_SYSTEM_POLICY)

657 658 659 660 661 662 663 664 665 666 667 668
PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.12], [have_crypto_gnutls=yes], [have_crypto_gnutls=no])
PKG_CHECK_MODULES(NSS, [nss], [have_crypto_nss=yes], [have_crypto_nss=yes])
if test "${have_crypto_nss}" = "yes"; then
	# Work around a pkg-config bug (fdo #29801) where exists != usable
	FOO=`$PKG_CONFIG --cflags --libs nss`
	if test x"$?" != "x0"; then
		have_crypto_nss=no
	fi
fi
AM_CONDITIONAL(HAVE_CRYPTO_GNUTLS, test "${have_crypto_gnutls}" = 'yes')
AM_CONDITIONAL(HAVE_CRYPTO_NSS, test "${have_crypto_nss}" = 'yes')

669 670 671
AC_ARG_WITH(crypto,
            AS_HELP_STRING([--with-crypto=nss|gnutls],
                           [Cryptography library to use for certificate and key operations]),
672 673 674
            with_crypto=$withval,
            with_crypto=nss)
if test "$with_crypto" = 'nss'; then
675 676
	if test "${have_crypto_nss}" != "yes"; then
		AC_MSG_ERROR([No usable NSS found for --with-crypto=nss])
677
	fi
678
elif test "$with_crypto" = 'gnutls'; then
679 680 681
	if test "${have_crypto_gnutls}" != "yes"; then
		AC_MSG_ERROR([No usable gnutls found for --with-crypto=gnutls])
	fi
682
else
683
	AC_MSG_ERROR([Please choose either 'nss' or 'gnutls' for certificate and crypto operations])
684
fi
685 686
AM_CONDITIONAL(WITH_NSS, test "$with_crypto" = 'nss')
AM_CONDITIONAL(WITH_GNUTLS, test "$with_crypto" = 'gnutls')
687

688 689
GLIB_MAKEFILE='$(top_srcdir)/Makefile.glib'
AC_SUBST(GLIB_MAKEFILE)
690
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
691
AC_SUBST(GLIB_MKENUMS)
692

693 694
AC_ARG_WITH(dbus-sys-dir,
            AS_HELP_STRING([--with-dbus-sys-dir=DIR], [where D-BUS system.d directory is]))
Bryan W. Clark's avatar
Bryan W. Clark committed
695

696
if test -n "$with_dbus_sys_dir" ; then
697
	DBUS_SYS_DIR="$with_dbus_sys_dir"
Bryan W. Clark's avatar
Bryan W. Clark committed
698
else
699
	DBUS_SYS_DIR="${sysconfdir}/dbus-1/system.d"
Bryan W. Clark's avatar
Bryan W. Clark committed
700 701 702
fi
AC_SUBST(DBUS_SYS_DIR)

703
# pppd
704 705 706
AC_ARG_ENABLE(ppp,
              AS_HELP_STRING([--enable-ppp], [enable PPP/PPPoE support]),
              [enable_ppp=${enableval}], [enable_ppp=yes])
707 708
if (test "${enable_ppp}" = "yes"); then
	AC_CHECK_HEADERS(pppd/pppd.h,,
709
	                 AC_MSG_ERROR("couldn't find pppd.h. pppd development headers are required."))
710 711

	AC_DEFINE(WITH_PPP, 1, [Define if you have PPP support])
712 713
else
	AC_DEFINE(WITH_PPP, 0, [Define if you have PPP support])
714 715
fi
AM_CONDITIONAL(WITH_PPP, test "${enable_ppp}" = "yes")
716

717 718
AC_ARG_WITH([pppd-plugin-dir],
            AS_HELP_STRING([--with-pppd-plugin-dir=DIR], [path to the pppd plugins directory]))
719 720 721 722

if test -n "$with_pppd_plugin_dir" ; then
	PPPD_PLUGIN_DIR="$with_pppd_plugin_dir"
else
723
	PPPD_PLUGIN_DIR="${libdir}/pppd/2.4.5"
724 725
fi
AC_SUBST(PPPD_PLUGIN_DIR)
726

727 728
AC_ARG_WITH(pppd, AS_HELP_STRING([--with-pppd=/path/to/pppd], [path to pppd binary]))
if test "x${with_pppd}" = x; then
729
	AC_PATH_PROG(PPPD_PATH, pppd, [], $PATH:/sbin:/usr/sbin)
730
else
731
	PPPD_PATH="$with_pppd"
732 733 734 735
fi
AC_DEFINE_UNQUOTED(PPPD_PATH, "$PPPD_PATH", [Define to path of pppd binary])
AC_SUBST(PPPD_PATH)

736
# ModemManager1 with libmm-glib
737 738 739 740
AC_ARG_WITH(modem-manager-1,
            AS_HELP_STRING([--with-modem-manager-1],
                           [Enable new ModemManager1 interface support]),
            [], [with_modem_manager_1=auto])
741
if (test "${with_modem_manager_1}" != "no"); then
742 743 744 745 746 747 748 749 750 751 752 753 754 755
	PKG_CHECK_MODULES(MM_GLIB,
	                  [mm-glib >= 0.7.991],
	                  [have_libmm_glib=yes],
	                  [have_libmm_glib=no])

	if (test "${have_libmm_glib}" = "no"); then
		if (test "${with_modem_manager_1}" = "yes"); then
			AC_MSG_ERROR([Couldn't find libmm-glib])
		else
			with_modem_manager_1="no"
		fi
	else
		with_modem_manager_1="yes"
	fi
756 757
fi
AM_CONDITIONAL(WITH_MODEM_MANAGER_1, test "${with_modem_manager_1}" = "yes")
758

759 760
# Bluez5 DUN support
PKG_CHECK_MODULES(BLUEZ5, [bluez >= 5], [have_bluez5=yes],[have_bluez5=no])
761 762 763
AC_ARG_ENABLE(bluez5-dun,
              AS_HELP_STRING([--enable-bluez5-dun], [enable Bluez5 DUN support]),
              [enable_bluez5_dun=${enableval}], [enable_bluez5_dun=${have_bluez5}])
764 765 766 767 768 769
if (test "${enable_bluez5_dun}" = "yes"); then
	if test x"$have_bluez5" = x"no"; then
		AC_MSG_ERROR(Bluez 5.x development headers are required)
	fi
	AC_DEFINE(WITH_BLUEZ5_DUN, 1, [Define if you have Bluez 5 libraries])
else
770
	AC_DEFINE(WITH_BLUEZ5_DUN, 0, [Define if you have Bluez 5 libraries])
771 772 773
fi
AM_CONDITIONAL(WITH_BLUEZ5_DUN, test "${enable_bluez5_dun}" = "yes")

774
# OFONO
775 776 777
AC_ARG_WITH(ofono,
            AS_HELP_STRING([--with-ofono], [Enable oFono support (experimental)]),
            [], [with_ofono=no])
778
if (test "${with_ofono}" = "yes"); then
779
	AC_DEFINE(WITH_OFONO, 1, [Define if you have oFono support (experimental)])
780
else
781
	AC_DEFINE(WITH_OFONO, 0, [Define if you have oFono support (experimental)])
782 783 784
fi
AM_CONDITIONAL(WITH_OFONO, test "${with_ofono}" = "yes")

juga's avatar
juga committed
785 786 787 788 789 790 791 792 793 794 795 796 797 798 799
# DHCP client support with dhcpcanon
AC_ARG_WITH([dhcpcanon],
            AS_HELP_STRING([--with-dhcpcanon=yes|no|path], [Enable dhcpcanon support (experimental)]))
if test "$with_dhcpcanon" != "no"; then
    with_dhcpcanon_="$with_dhcpcanon"
    AC_PATH_PROGS(with_dhcpcanon, dhcpcanon, no, /sbin:/usr/sbin:/usr/local/sbin:/usr/bin:/usr/local/bin)
    if test "$with_dhcpcanon" == "no"; then
        if test "$with_dhcpcanon_" == yes; then
            AC_MSG_WARN([dhcpcanon not found, assume path /sbin/dhcpcanon])
            with_dhcpcanon=/sbin/dhcpcanon
        fi
    fi
fi
if test "$with_dhcpcanon" != "no"; then
    AC_DEFINE(WITH_DHCPCANON, 1, [Define if you have dhcpcanon])
800
    AC_DEFINE_UNQUOTED(DHCPCANON_PATH, "$with_dhcpcanon", [Define path to dhcpcanon])
juga's avatar
juga committed
801 802 803
else
    AC_DEFINE(WITH_DHCPCANON, 0, [Define if you have dhcpcanon])
fi
804

805 806
# Open vSwitch integration
AC_ARG_ENABLE(ovs, AS_HELP_STRING([--enable-ovs], [enable Open vSwitch support]))
807 808 809 810 811 812 813 814
if test "${enable_ovs}" != "no"; then
	enable_ovs='yes'
	if test "$have_jansson" = "no"; then
		AC_MSG_ERROR(Jansson is required for ovs support)
	fi
fi
AM_CONDITIONAL(WITH_OPENVSWITCH, test "${enable_ovs}" = "yes")

815
# DHCP client support
816
AC_ARG_WITH([dhclient],
817
            AS_HELP_STRING([--with-dhclient=yes|no|path], [Enable dhclient support]))
818 819
if test "$with_dhclient" != "no"; then
	with_dhclient_="$with_dhclient"
820
	AC_PATH_PROGS(with_dhclient, dhclient, no, /sbin:/usr/sbin:/usr/local/sbin)
821 822 823 824 825
	if test "$with_dhclient" == "no"; then
		if test "$with_dhclient_" == yes; then
			AC_MSG_WARN([dhclient not found, assume path /usr/sbin/dhclient])
			with_dhclient=/usr/sbin/dhclient
		fi
826 827
	fi
fi
828 829
if test "$with_dhclient" != "no"; then
	AC_DEFINE(WITH_DHCLIENT, 1, [Define if you have dhclient])
830
	AC_DEFINE_UNQUOTED(DHCLIENT_PATH, "$with_dhclient", [Define path to dhclient])
831 832 833 834
else
	AC_DEFINE(WITH_DHCLIENT, 0, [Define if you have dhclient])
fi

835 836
AC_ARG_WITH([dhcpcd],
            AS_HELP_STRING([--with-dhcpcd=yes|no|path], [Enable dhcpcd 4.x support]))
837 838
if test "$with_dhcpcd" != "no"; then
	with_dhcpcd_="$with_dhcpcd"
839
	AC_PATH_PROGS(with_dhcpcd, dhcpcd, no, /sbin:/usr/sbin:/usr/local/sbin)
840 841 842 843
	if test "$with_dhcpcd" == "no"; then
		if test "$with_dhcpcd_" == yes; then
			AC_MSG_WARN([dhcpcd not found, assume path /usr/sbin/dhcpcd])
			with_dhcpcd=/usr/sbin/dhcpcd
844 845 846 847
		fi
	fi
fi
if test "$with_dhcpcd" != "no"; then
848
	AC_DEFINE(WITH_DHCPCD, 1, [Define if you have dhcpcd])
849
	AC_DEFINE_UNQUOTED(DHCPCD_PATH, "$with_dhcpcd", [Define path to dhcpcd])
850
else
851
	AC_DEFINE(WITH_DHCPCD, 0, [Define if you have dhcpcd])
852 853
fi

854 855 856 857
AC_ARG_WITH(config-dhcp-default,
            AS_HELP_STRING([--with-config-dhcp-default=dhclient|dhcpcd|internal],
                           [Default configuration option for main.dhcp setting, used as fallback if the configuration option is unset]),
            [config_dhcp_default="$withval"], [config_dhcp_default=""])
858 859 860
if test "$config_dhcp_default" = yes -o "$config_dhcp_default" = no; then
	config_dhcp_default=''
fi
juga's avatar
juga committed
861
test -z "$config_dhcp_default" -a "$with_dhcpcanon" != "no" && config_dhcp_default='dhcpcanon'
862 863 864
test -z "$config_dhcp_default" -a "$with_dhclient" != "no" && config_dhcp_default='dhclient'
test -z "$config_dhcp_default" -a "$with_dhcpcd"   != "no" && config_dhcp_default='dhcpcd'
test -z "$config_dhcp_default"                             && config_dhcp_default='internal'
865 866
AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_DHCP, "$config_dhcp_default", [Default configuration option for main.dhcp setting])
AC_SUBST(NM_CONFIG_DEFAULT_MAIN_DHCP, $config_dhcp_default)
867

868 869
AC_ARG_WITH(resolvconf, AS_HELP_STRING([--with-resolvconf=yes|no|path], [Enable resolvconf support]))
AC_ARG_WITH(netconfig, AS_HELP_STRING([--with-netconfig=yes|no], [Enable SUSE netconfig support]))
870
AC_ARG_WITH(config-dns-rc-manager-default, AS_HELP_STRING([--with-config-dns-rc-manager-default=symlink|file|netconfig|resolvconf], [Configure default value for main.rc-manager setting]), [config_dns_rc_manager_default=$withval])
871
if test "$config_dns_rc_manager_default" != "" -a \
872
        "$config_dns_rc_manager_default" != file -a \
873
        "$config_dns_rc_manager_default" != symlink -a \
874 875
        "$config_dns_rc_manager_default" != netconfig -a \
        "$config_dns_rc_manager_default" != resolvconf; then
876 877 878
	AC_MSG_WARN([Unknown --with-config-dns-rc-manager-default=$config_dns_rc_manager_default setting.])
	config_dns_rc_manager_default=
fi
879
# Use netconfig by default on SUSE
880
AS_IF([test -z "$with_netconfig" -a -f /etc/SuSE-release], with_netconfig=yes)
881 882 883
# Otherwise default to "no"
AS_IF([test -z "$with_resolvconf"], with_resolvconf=no)
AS_IF([test -z "$with_netconfig"], with_netconfig=no)
884

885
if test "$with_resolvconf" = "yes"; then
886 887 888 889
	AC_PATH_PROGS(with_resolvconf, resolvconf, 'yes', /sbin:/usr/sbin:/usr/local/sbin)
	if test "$with_resolvconf" = "yes"; then
		AC_MSG_ERROR(cannot find resolvconf in path. Set the path explicitly via --with-resolvconf=PATH.)
	fi
890
fi
891 892 893
if test "$with_resolvconf" != "no"; then
	AS_IF([test -z "$config_dns_rc_manager_default"], config_dns_rc_manager_default=resolvconf)
fi
894

895
if test "$with_netconfig" = "yes"; then
896 897 898 899
	AC_PATH_PROGS(with_netconfig, netconfig, yes, /sbin:/usr/sbin:/usr/local/sbin)
	if test "$with_netconfig" = "yes"; then
		AC_MSG_ERROR(cannot find netconfig in path. Set the path explicitly via --with-netconfig=PATH.)
	fi
900
fi
901 902 903
if test "$with_netconfig" != "no"; then
	AS_IF([test -z "$config_dns_rc_manager_default"], config_dns_rc_manager_default=netconfig)
fi
904

905
AS_IF([test -z "$config_dns_rc_manager_default"], config_dns_rc_manager_default=symlink)
906

907
if test "$with_resolvconf" != "no"; then
908
	AC_DEFINE_UNQUOTED(RESOLVCONF_PATH, "$with_resolvconf", [Path to resolvconf])
909
fi
910
if test "$with_netconfig" != "no"; then
911
	AC_DEFINE_UNQUOTED(NETCONFIG_PATH, "$with_netconfig", [Path to netconfig])
912
fi
913 914
AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_RC_MANAGER, "$config_dns_rc_manager_default", [Default value for main.rc-manager setting (--with-config-dns-rc-manager-default)])
AC_SUBST(NM_CONFIG_DEFAULT_MAIN_RC_MANAGER, $config_dns_rc_manager_default)
915

916
# iptables path
917 918
AC_ARG_WITH(iptables,
            AS_HELP_STRING([--with-iptables=/path/to/iptables], [path to iptables]))
919
if test "x${with_iptables}" = x; then
920 921 922 923
	AC_PATH_PROG(IPTABLES_PATH, iptables, [], $PATH:/sbin:/usr/sbin)
	if ! test -x "$IPTABLES_PATH"; then
		AC_MSG_ERROR(iptables was not installed.)
	fi
924
else
925
	IPTABLES_PATH="$with_iptables"
926 927 928 929
fi
AC_DEFINE_UNQUOTED(IPTABLES_PATH, "$IPTABLES_PATH", [Define to path of iptables binary])
AC_SUBST(IPTABLES_PATH)

930
# dnsmasq path
931 932
AC_ARG_WITH(dnsmasq,
            AS_HELP_STRING([--with-dnsmasq=/path/to/dnsmasq], [path to dnsmasq]))
933
if test "x${with_dnsmasq}" = x; then
934
	AC_PATH_PROG(DNSMASQ_PATH, dnsmasq, [], $PATH:/sbin:/usr/sbin)
935
else
936
	DNSMASQ_PATH="$with_dnsmasq"
937 938 939 940
fi
AC_DEFINE_UNQUOTED(DNSMASQ_PATH, "$DNSMASQ_PATH", [Define to path of dnsmasq binary])
AC_SUBST(DNSMASQ_PATH)

941
# dnssec-trigger-script path
942 943
AC_ARG_WITH(dnssec_trigger,
            AS_HELP_STRING([--with-dnssec-trigger=/path/to/dnssec-trigger-script], [path to unbound dnssec-trigger-script]))
944
if test "x${with_dnssec_trigger}" = x; then
945
	AC_PATH_PROG(DNSSEC_TRIGGER_PATH, dnssec-trigger-script, /usr/libexec/dnssec-trigger-script,
946
	             /usr/local/libexec:/usr/local/lib:/usr/local/lib/dnssec-trigger:/usr/libexec:/usr/lib:/usr/lib/dnssec-trigger)
947
else
948
	DNSSEC_TRIGGER_PATH="$with_dnssec_trigger"
949
fi
950 951
AC_DEFINE_UNQUOTED(DNSSEC_TRIGGER_PATH, "$DNSSEC_TRIGGER_PATH", [Define to path of unbound dnssec-trigger-script])
AC_SUBST(DNSSEC_TRIGGER_PATH)
952

953
# system CA certificates path
954
AC_ARG_WITH(system-ca-path,
juga's avatar
juga committed
955
            AS_HELP_STRING([--with-system-ca-path=/path/to/ssl/certs], [path to system CA certificates]))
956
if test "x${with_system_ca_path}" = x; then
957
	SYSTEM_CA_PATH=/etc/ssl/certs
958
else
959
	SYSTEM_CA_PATH="$with_system_ca_path"
960 961 962 963
fi
AC_DEFINE_UNQUOTED(SYSTEM_CA_PATH, "$SYSTEM_CA_PATH", [Define to path to system CA certificates])
AC_SUBST(SYSTEM_CA_PATH)

964 965
AC_ARG_WITH(kernel-firmware-dir,
            AS_HELP_STRING([--with-kernel-firmware-dir=DIR], [where kernel firmware directory is (default is /lib/firmware)]))
966
if test -n "$with_kernel_firmware_dir" ; then
967
	KERNEL_FIRMWARE_DIR="$with_kernel_firmware_dir"
968
else
969
	KERNEL_FIRMWARE_DIR="/lib/firmware"
970 971 972 973
fi
AC_DEFINE_UNQUOTED(KERNEL_FIRMWARE_DIR, "$KERNEL_FIRMWARE_DIR", [Define to path of the kernel firmware directory])
AC_SUBST(KERNEL_FIRMWARE_DIR)

974
PKG_CHECK_MODULES(LIBPSL, [libpsl >= 0.1], [have_libpsl=yes],[have_libpsl=no])
975 976 977
AC_ARG_WITH(libpsl,
            AS_HELP_STRING([--with-libpsl=yes|no], [Link against libpsl]),
            [], [with_libpsl=${have_libpsl}])
978 979 980 981 982 983 984 985 986 987 988
if test "$with_libpsl" != "no"; then
	if test "$have_libpsl" != "yes"; then
		AC_MSG_ERROR(libpsl library not found)
	fi
	with_libpsl='yes'
	AC_DEFINE(WITH_LIBPSL, 1, [Define if you have libpsl])
else
	AC_DEFINE(WITH_LIBPSL, 0, [Define if you have libpsl])
fi
AM_CONDITIONAL(WITH_LIBPSL, test "$with_libpsl" != "no")

989

990 991
AC_ARG_ENABLE(concheck,
              AS_HELP_STRING([--enable-concheck], [enable connectivity checking support]),
992
              [enable_concheck=${enableval}], [enable_concheck=yes])
993
if test "${enable_concheck}" = "yes"; then
994
	PKG_CHECK_MODULES(LIBCURL, [libcurl >= 7.24.0], [have_libcurl=yes], [have_libcurl=no])
995
	if test "$have_libcurl" != "yes"; then
996
		AC_MSG_ERROR(--enable-concheck requires libcurl library.)
997
	fi
998 999
	AC_DEFINE(WITH_CONCHECK, 1, [Define if you want connectivity checking support])
else
1000
	enable_concheck=no
1001 1002 1003
	AC_DEFINE(WITH_CONCHECK, 0, [Define if you want connectivity checking support])
fi

Dan Winship's avatar
Dan Winship committed
1004
PKG_CHECK_MODULES(LIBNDP, [libndp])
1005

1006 1007
AC_ARG_WITH(nmcli,
            AS_HELP_STRING([--with-nmcli=yes|no], [Build nmcli]))
1008
if test "$with_nmcli" != no; then
1009 1010
	AX_LIB_READLINE
	build_nmcli=yes
1011
else
1012
	build_nmcli=no
1013 1014 1015
fi
AM_CONDITIONAL(BUILD_NMCLI, test "$build_nmcli" = yes)

1016 1017
AC_ARG_WITH(nmtui,
            AS_HELP_STRING([--with-nmtui=yes|no], [Build nmtui]))
Dan Winship's avatar
Dan Winship committed
1018
if test "$with_nmtui" != no; then
1019
	PKG_CHECK_MODULES(NEWT, [libnewt >= 0.52.15], [build_nmtui=yes], [build_nmtui=no])
Dan Winship's avatar
Dan Winship committed
1020
else
1021
	build_nmtui=no
Dan Winship's avatar
Dan Winship committed
1022 1023
fi
if test "$with_nmtui" = yes -a "$build_nmtui" = no; then
1024
	AC_MSG_ERROR([You must have libnewt installed to build nmtui.])
Dan Winship's avatar
Dan Winship committed
1025 1026 1027
fi
AM_CONDITIONAL(BUILD_NMTUI, test "$build_nmtui" = yes)

1028
if test $(( ${NM_MINOR_VERSION} % 2 )) = "1"; then
1029 1030 1031 1032
	# A development version
	more_warnings_default=error
	more_asserts_default=100
	more_logging_default=yes
1033
else
1034 1035 1036 1037
	# A release version
	more_warnings_default=yes
	more_asserts_default=0
	more_logging_default=no
1038
fi
1039

1040
NM_COMPILER_WARNINGS(AM_CFLAGS, ${more_warnings_default})
1041

1042 1043 1044
NM_COMPILER_FLAG(LIBSYSTEMD_NM_CFLAGS, "-Wno-gnu-variable-sized-type-not-at-end")
AC_SUBST(LIBSYSTEMD_NM_CFLAGS)

1045 1046 1047
CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
	-fno-strict-aliasing \
])
1048
AM_CFLAGS="$AM_CFLAGS $with_cflags"
1049

1050
AC_ARG_ENABLE(more-asserts,
1051 1052
              AS_HELP_STRING([--enable-more-asserts],
                             [Enable more assertions for debugging (default: auto). Deprecated option. Use --with-more-asserts=level]))
1053
if test "${enable_more_asserts}" = "yes"; then
1054
	more_asserts=100
1055 1056
fi
AC_ARG_WITH(more-asserts,
1057
            AS_HELP_STRING([--with-more-asserts=level], [Enable more assertions for debugging (0 = none, 100 = all, default: auto)]),
1058 1059 1060
            [more_asserts=${with_more_asserts}],
            [])
if test "${more_asserts}" = "no"; then
1061
	more_asserts=0
1062
else
1063 1064 1065
	if test "${more_asserts}" = "yes"; then
		more_asserts=100
	fi
1066
fi
1067
if test "${more_asserts}" = ""; then
1068
	more_asserts=${more_asserts_default}
1069
fi
1070
AC_DEFINE_UNQUOTED(NM_MORE_ASSERTS, $more_asserts, [Define if more asserts are enabled])
1071

1072
AC_ARG_ENABLE(more-logging, AS_HELP_STRING([--enable-more-logging], [Enable more debug logging (default: auto)]))
1073
if test "${enable_more_logging}" = ""; then
1074
	enable_more_logging=${more_logging_default}
1075
fi
1076
if test "${enable_more_logging}" = "yes"; then
1077
	AC_DEFINE(NM_MORE_LOGGING, [1], [Define if more debug logging is enabled])
1078 1079
else
	AC_DEFINE(NM_MORE_LOGGING, [0], [Define if more debug logging is enabled])
1080 1081
fi

1082 1083
NM_LTO
NM_LD_GC
1084

1085 1086 1087
AC_ARG_WITH(address-sanitizer,
            AS_HELP_STRING([--with-address-sanitizer=yes|no|exec], [Enable address sanitizer (default: no)]))
if test "$with_address_sanitizer" = yes -o "$with_address_sanitizer" = "exec"; then
1088 1089 1090 1091
	CC_CHECK_FLAGS_APPEND([asan_cflags], [CFLAGS], [-fsanitize=address])
	AS_IF([test -z "$asan_cflags"],
		[AC_MSG_ERROR([*** -fsanitize=address is not supported])])

Beniamino Galvani's avatar