configure.ac 16.1 KB
Newer Older
Ondřej Surý's avatar
Ondřej Surý committed
1 2
#                                               -*- Autoconf -*-

3
AC_PREREQ([2.60])
4
AC_INIT([knot], [2.0.0-beta], [knot-dns@labs.nic.cz])
5
AM_INIT_AUTOMAKE([gnits subdir-objects no-dist-gzip dist-xz -Wall -Werror])
6
AM_SILENT_RULES([yes])
7
AC_CONFIG_SRCDIR([src/knot/main.c])
Ondřej Surý's avatar
Ondřej Surý committed
8 9
AC_CONFIG_HEADERS([src/config.h])
AC_CONFIG_MACRO_DIR([m4])
10
AC_USE_SYSTEM_EXTENSIONS([_GNU_SOURCE])
11
AC_CANONICAL_HOST
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

# Here are a set of rules to help you update your library version
# information:
#
# 1. Start with version information of ‘0:0:0’ for each libtool library.
#
# 2. Update the version information only immediately before a public
#    release of your software. More frequent updates are unnecessary,
#    and only guarantee that the current interface number gets larger
#    faster.
#
# 3. If the library source code has changed at all since the last
#    update, then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
#
# 4. If any interfaces have been added, removed, or changed since the
#    last update, increment current, and set revision to 0.
#
# 5. If any interfaces have been added since the last public release,
#    then increment age.
#
# 6. If any interfaces have been removed or changed since the last
#    public release, then set age to 0.

35
AC_SUBST([libknot_VERSION_INFO],["-version-info 1:0:0"])
36 37
AC_SUBST([libdnssec_VERSION_INFO],["-version-info 0:0:0"])
AC_SUBST([libzscanner_VERSION_INFO],["-version-info 0:1:0"])
38

39
# Automatically update release date based on configure.ac date
40 41
AC_PROG_SED
release_date=$($SED -n 's/^Knot DNS .* (\(.*\))/\1/p;q;' ${srcdir}/NEWS)
42 43
AC_SUBST([RELEASE_DATE], $release_date)

44 45 46 47
# Set compiler compatibility flags
AC_PROG_CC_C99
AM_PROG_CC_C_O
AC_PROG_CPP_WERROR
Ondřej Surý's avatar
Ondřej Surý committed
48

49
# Default compiler flags
50
CFLAGS="$CFLAGS -Wall -Werror=format-security -Werror=implicit"
51

52
# Checks for programs.
53
m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) # call AM_PROG_AR only if available
54

Ondřej Surý's avatar
Ondřej Surý committed
55
# Initialize libtool
56
AC_PROG_LIBTOOL
Ondřej Surý's avatar
Ondřej Surý committed
57 58
LT_INIT

59
# Use pkg-config
60
PKG_PROG_PKG_CONFIG
61
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_SUBST([pkgconfigdir], ['${libdir}/pkgconfig'])])
62
AC_CONFIG_FILES([src/libknot.pc
63 64 65
		 src/dnssec/libdnssec.pc
		 src/zscanner/libzscanner.pc
		 ])
66

67 68
# Get Bash completion scripts directory
bash_completion_dir=""
69 70
PKG_CHECK_VAR([bash_completion_dir], [bash-completion], [completionsdir],[
  PKG_CHECK_VAR([bash_completion_prefix], [bash-completion], [prefix], [
71
    AC_SUBST([BASH_COMPLETION_DIR], ["${prefix}"/$(echo "$bash_completion_dir" | $SED -e "s,^$bash_completion_prefix,,")])
72
  ])],[:])
73
AM_CONDITIONAL([HAVE_BASH_COMPLETION], [test -n "$bash_completion_dir"])
74

75 76 77 78
# Build Knot DNS daemon
AC_ARG_ENABLE([daemon],
    AS_HELP_STRING([--disable-daemon], [Don't build Knot DNS main daemon]), [], [enable_daemon=yes])
AM_CONDITIONAL([HAVE_DAEMON], [test "$enable_daemon" = "yes"])
79

80 81 82 83
# Build Knot DNS utilities
AC_ARG_ENABLE([utilities],
    AS_HELP_STRING([--disable-utilities], [Don't build Knot DNS utilities]), [], [enable_utilities=yes])
AM_CONDITIONAL([HAVE_UTILS], [test "$enable_utilities" = "yes"])
84

85 86 87 88
# Build Knot DNS documentation
AC_ARG_ENABLE([documentation],
    AS_HELP_STRING([--disable-documentation], [Don't build Knot DNS documentation]), [], [enable_documentation=yes])
AM_CONDITIONAL([HAVE_DOCS], [test "$enable_documentation" = "yes"])
89

90 91 92
######################
# Generic dependencies
######################
93

Ondřej Surý's avatar
Ondřej Surý committed
94 95
AC_PROG_INSTALL

96 97
AX_CC_LLVM

98
AC_ARG_ENABLE([fastparser],
99 100 101 102 103 104 105 106
    AS_HELP_STRING([--disable-fastparser], [Disable use of fastest zone parser]),[],[
    # Set zone parser type - fastest on release build, slowest on dev build
    AS_IF([test -d ".git" -o "$PATCH_VERSION" = "dev"],[
        enable_fastparser=no
    	],[
    	enable_fastparser=yes
    	])
    ])
107 108 109 110 111 112 113 114

AS_IF([test "$enable_fastparser" = "yes"],[
    AS_IF([test "${CC_LLVM}" = "yes"],[
        AC_MSG_WARN([LLVM based compiler detected; disabling fastest zone parser, see https://gitlab.labs.nic.cz/labs/knot/issues/351])
        enable_fastparser=no
        ])
    ])

115
AM_CONDITIONAL([FAST_PARSER], [test "$enable_fastparser" = "yes"])
116 117 118 119 120 121 122

# GnuTLS crypto backend
PKG_CHECK_MODULES([gnutls], [gnutls >= 3.0 nettle])

# JSON for DNSSEC status storage
PKG_CHECK_MODULES([jansson], [jansson >= 2.3])

123 124
# Debug modules
AC_ARG_ENABLE([debug],
125
    AS_HELP_STRING([--enable-debug=server,zones,ns,loader,dnssec],
126
    [compile selected debug modules [default=none]]),
127
    [
128 129
    echo ${enableval}|tr "," "\n"|while read val; do
        case "${val}" in
130 131 132 133 134
            server) AC_DEFINE([KNOTD_SERVER_DEBUG], [1], [Server debug.]) ;;
            zones) AC_DEFINE([KNOT_ZONES_DEBUG], [1], [Zones debug.]) ;;
            ns) AC_DEFINE([KNOT_NS_DEBUG], [1], [Nameserver debug.]) ;;
            loader) AC_DEFINE([KNOT_LOADER_DEBUG], [1], [Zone loading debug.]) ;;
            dnssec) AC_DEFINE([KNOT_DNSSEC_DEBUG], [1], [DNSSEC debug.]) ;;
135 136
        esac
    done
137
    ], [])
Jan Kadlec's avatar
Jan Kadlec committed
138

139
# Debug level
140 141
AC_ARG_ENABLE([debuglevel],
    AS_HELP_STRING([--enable-debuglevel=brief|verbose|details], [enable given debug level [default=disabled]]),
142 143 144 145 146 147
    # Not all shells support fall-through with ;& so I have to duplicate
    [case "x${enableval}" in
      xdetails)
        AC_DEFINE([DEBUG_ENABLE_DETAILS], [1], [Enable details debugging messages.])
        AC_DEFINE([DEBUG_ENABLE_VERBOSE], [1], [Enable verbose debugging messages.])
        AC_DEFINE([DEBUG_ENABLE_BRIEF], [1], [Enable brief debugging messages.])
148
        ;;
149 150 151
      xverbose)
        AC_DEFINE([DEBUG_ENABLE_VERBOSE], [1], [Enable verbose debugging messages.])
        AC_DEFINE([DEBUG_ENABLE_BRIEF], [1], [Enable brief debugging messages.])
152
        ;;
153 154 155 156
      xbrief)
        AC_DEFINE([DEBUG_ENABLE_BRIEF], [1], [Enable brief debugging messages.])
        ;;
    esac], [])
157

158
# recvmmsg() (valgrind doesn't support it, so disable for debugging)
159
# The check for struct mmsghdr is required when libc doesn't have an API but the function links
160
AC_ARG_ENABLE([recvmmsg],
161
    AS_HELP_STRING([--enable-recvmmsg=yes|no], [enable recvmmsg() network API under Linux (kernel support required) (set to 'no' if you have trouble running server under valgrind) [default=yes]]),
162 163
    [case "${enableval}" in
      yes)
164 165 166
	  AC_CHECK_FUNCS([sendmmsg])
          AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[struct mmsghdr v; recvmmsg(0,0,0,0,0);]])],
          [AC_DEFINE(HAVE_RECVMMSG, 1, [Define if struct mmsghdr and recvmmsg() exists.])])
167
          ;;
168
      no)
169
          ;;
170
      *)
171 172
          AC_MSG_ERROR([bad value ${enableval} for --enable-recvmmsg])
          ;;
173 174 175 176 177 178
    esac],
    [
      AC_CHECK_FUNCS([sendmmsg])
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[struct mmsghdr v; recvmmsg(0,0,0,0,0);]])],
      [AC_DEFINE(HAVE_RECVMMSG, 1, [Define if struct mmsghdr and recvmmsg() exists.])])
    ])
179

180
# Check for link time optimizations support and predictive commoning
181
AC_ARG_ENABLE([lto],
182
    AS_HELP_STRING([--enable-lto=yes|no], [enable link-time optimizations, enable if not broken for some extra speed [default=no]]),
183
    [case "${enableval}" in
184
      yes) AX_CHECK_COMPILE_FLAG("-flto", [CFLAGS="$CFLAGS -flto"], []) ;;
185
      no) ;;
186
      *)  AC_MSG_ERROR([bad value ${enableval} for --enable-lto]) ;;
187
    esac])
188

189
AX_CHECK_COMPILE_FLAG("-fpredictive-commoning", [CFLAGS="$CFLAGS -fpredictive-commoning"], [], "-Werror")
190

191 192 193
# Default directories
run_dir="${localstatedir}/run/knot"
AC_ARG_WITH([rundir],
194
        AC_HELP_STRING([--with-rundir=path], [Path to run-time variable data (pid, sockets...). [default=LOCALSTATEDIR/run/knot]]),
195 196 197
        [run_dir=$withval])
AC_SUBST(run_dir)

Ondřej Surý's avatar
Ondřej Surý committed
198
storage_dir="${localstatedir}/lib/knot"
199
AC_ARG_WITH([storage],
200
        AC_HELP_STRING([--with-storage=path], [Default storage directory (slave zones, persistent data). [default=LOCALSTATEDIR/lib/knot]]),
201 202 203
        [storage_dir=$withval])
AC_SUBST(storage_dir)

204 205
config_dir="${sysconfdir}/knot"
AC_ARG_WITH([configdir],
206
        AC_HELP_STRING([--with-configdir=path], [Default directory for configuration. [default=SYSCONFDIR/knot]]),
207 208 209
        [config_dir=$withval])
AC_SUBST(config_dir)

210 211 212 213 214 215 216 217 218 219 220
#########################################
# Dependencies needed for Knot DNS daemon
#########################################

# Systemd integration
AC_ARG_ENABLE([systemd],
    AS_HELP_STRING([--enable-systemd=auto|yes|no], [enable systemd integration [default=auto]]),
    [enable_systemd="$enableval"], [enable_systemd=auto])

AS_IF([test "$enable_daemon" = "yes"],[

221
AS_IF([test "$enable_systemd" != "no"],[
222 223 224 225 226 227 228 229 230
  AS_CASE([$enable_systemd],
    [auto],[PKG_CHECK_MODULES([systemd], [libsystemd-daemon libsystemd-journal], [enable_systemd=yes], [enable_systemd=no])],
    [yes],[PKG_CHECK_MODULES([systemd], [libsystemd-daemon libsystemd-journal])],
    [*],[AC_MSG_ERROR([Invalid value of --enable-systemd.])])
    ])

AS_IF([test "$enable_systemd" = "yes"],[
  AC_DEFINE([ENABLE_SYSTEMD], [1], [Use systemd integration.])])
])
231 232 233 234 235

dnl Check for userspace-rcu library
AC_ARG_WITH(urcu,
[  --with-urcu=DIR        where to find userspace-rcu library])

236 237
AS_IF([test "$enable_daemon" = "yes"],[

238 239
AS_IF([test "$with_urcu" != "no"], [
  PKG_CHECK_MODULES([liburcu], liburcu, [
240
    liburcu_PKGCONFIG="liburcu >= 0.4.0"
241
    AC_SUBST([liburcu_PKGCONFIG])
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
    with_urcu=yes
  ],[
    for try_urcu in "$with_urcu" "" "/usr/local"; do
      save_LIBS="$LIBS"
      save_CPPFLAGS="$CPPFLAGS"

      AS_IF([test -d "$try_urcu"], [
        liburcu_CFLAGS="-I$try_urcu/include"
        liburcu_LIBS="-L$try_urcu/lib"
      ],[
        liburcu_CFLAGS=""
        liburcu_LIBS=""
      ])

      CPPFLAGS="$CPPFLAGS $liburcu_CFLAGS"
      LIBS="$LIBS $liburcu_LIBS"

      AC_SEARCH_LIBS([rcu_set_pointer_sym], [urcu], [
        with_urcu=yes
261
	liburcu_LIBS="$liburcu_LIBS -lurcu"
262 263
	AC_SUBST([liburcu_CFLAGS])
	AC_SUBST([liburcu_LIBS])
264 265
	break
      ],[
266 267
        CPPFLAGS="$save_CPPFLAGS"
        LIBS="$save_LIBS"
268 269 270 271 272
        with_urcu=no
	# do not cache result of AC_SEARCH_LIBS test
	unset ac_cv_search_rcu_set_pointer_sym
      ])
    done
273 274
    CPPFLAGS="$save_CPPFLAGS"
    LIBS="$save_LIBS"
275 276 277

    AS_IF([test "$with_urcu" = "no"],[
      AC_MSG_ERROR([liburcu is required])
278
      ])
279 280 281
  ])
])

282
AC_SEARCH_LIBS([urcu_init], [urcu], [AC_MSG_ERROR([liburcu is too old (< 0.4.0), urcu_init symbol found])])
283
])
284

285 286
opt_dnstap=no
AS_IF([test "$enable_daemon" = "yes"],[
287 288 289
dnl Check for dnstap.
dt_DNSTAP([
    AC_DEFINE([USE_DNSTAP], [1], [Define to 1 to enable dnstap support])
290 291
    AC_SUBST(DNSTAP_CFLAGS)
    AC_SUBST(DNSTAP_LIBS)
292
    ])
293
])
294

295 296
AM_CONDITIONAL([HAVE_DNSTAP], test "$opt_dnstap" != "no")

Jan Včelák's avatar
Jan Včelák committed
297
dnl Check for LMDB
298 299
AC_ARG_WITH([lmdb],
    AC_HELP_STRING([--with-lmdb=[DIR]], [Link with external LMDB]),[
300 301
    with_lmdb=$withval
    ],[
302 303 304 305
    with_lmdb=yes
    ])

have_lmdb=no
306

307 308 309 310 311
AS_IF([test "$with_lmdb" != "no"],[
    save_CPPFLAGS=$CPPFLAGS
    save_LIBS=$LIBS
    for try_lmdb in "$with_lmdb" "" "/usr/local"; do

312 313 314
      AS_IF([test -d "$try_lmdb"], [
        lmdb_CFLAGS="-I$try_lmdb/include"
        lmdb_LIBS="-L$try_lmdb/lib"
315 316 317 318 319 320 321 322 323 324 325
        ],[
        lmdb_CFLAGS=""
        lmdb_LIBS=""
	])

      CPPFLAGS="$CPPFLAGS $lmdb_CFLAGS"
      LIBS="$LIBS $lmdb_LIBS"

      AC_SEARCH_LIBS([mdb_env_open], [lmdb], [
          AC_CHECK_HEADERS([lmdb.h], [], [
              AC_ERROR([lmdb headers not found in `$try_lmdb', is your installation complete?])])
326
	  lmdb_LIBS="$lmdb_LIBS -llmdb"
327 328 329 330 331
          have_lmdb=yes
          break
          ],[
	  have_lmdb=no
	  # do not cache result of AC_SEARCH_LIBS test
332
	  unset ac_cv_search_mdb_env_open
333 334 335 336 337
	  ])

      CPPFLAGS="$save_CPPFLAGS"
      LIBS="$save_LIBS"
    done
338 339
    CPPFLAGS="$save_CPPFLAGS"
    LIBS="$save_LIBS"
340 341 342
    ])

AS_IF([test "$have_lmdb" != "no"],[
343 344 345 346
    AC_SUBST([lmdb_CFLAGS])
    AC_SUBST([lmdb_LIBS])
    enable_lmdb=shared
    ],[enable_lmdb=embedded])
347
AM_CONDITIONAL([HAVE_LMDB], test "$have_lmdb" != "no")
348

349 350
AS_IF([test "$enable_daemon" = "yes"],[

351
dnl Check for rosedb module
352
AC_ARG_ENABLE([rosedb],
353
    AS_HELP_STRING([--enable-rosedb], [Enable static RR query module.]),
354
    [], [enable_rosedb=no])
355 356
]) # Knot DNS daemon dependencies

357
AS_IF([test "$enable_rosedb" = yes], [AC_DEFINE([HAVE_ROSEDB], [1], [Define to 1 to enable static RR query module.])])
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
AM_CONDITIONAL([HAVE_ROSEDB], [test "$enable_rosedb" = yes])

############################################
# Dependencies needed for Knot DNS utilities
############################################

dnl Check for libidn.
AC_ARG_WITH(libidn,
    AC_HELP_STRING([--with-libidn=[DIR]], [Support IDN (needs GNU Libidn)]),
    with_libidn=$withval,
    with_libidn=yes
    )

AS_IF([test "$enable_utilities" = "yes"],[
AS_IF([test "$with_libidn" != "no"],[
    PKG_CHECK_MODULES([libidn], [libidn >= 0.0.0], [
        with_libidn=yes
        AC_DEFINE([LIBIDN], [1], [Define to 1 to enable IDN support])
        ],[
        with_libidn=no
        AC_MSG_WARN([libidn not found])
	])])

]) # Knot DNS utilities dependencies
382

383 384
AC_SEARCH_LIBS([pow], [m])
AC_SEARCH_LIBS([pthread_create], [pthread], [], [AC_MSG_ERROR([pthreads not found])])
385
AC_SEARCH_LIBS([dlopen], [dl])
Marek Vavrusa's avatar
Marek Vavrusa committed
386
AC_SEARCH_LIBS([clock_gettime], [rt])
387
AC_SEARCH_LIBS([capng_apply], [cap-ng])
Ondřej Surý's avatar
Ondřej Surý committed
388 389 390

# Checks for header files.
AC_HEADER_RESOLV
391
AC_CHECK_HEADERS_ONCE([cap-ng.h netinet/in_systm.h pthread_np.h signal.h sys/select.h sys/time.h sys/wait.h sys/uio.h])
Ondřej Surý's avatar
Ondřej Surý committed
392 393 394 395 396 397 398 399

# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T

# Checks for library functions.
400
AC_CHECK_FUNCS([clock_gettime gettimeofday fgetln getline madvise malloc_trim poll posix_memalign pthread_setaffinity_np regcomp select setgroups strlcat strlcpy initgroups])
Ondřej Surý's avatar
Ondřej Surý committed
401

402 403
# Check for be64toh function
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <endian.h>]], [[return be64toh(0);]])],
404
[AC_DEFINE(HAVE_BE64TOH, 1, [Define to 1 if you have the 'be64toh' function.])])
405

406 407 408 409 410 411 412 413
# Check for cpu_set_t/cpuset_t compatibility
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[cpu_set_t set; CPU_ZERO(&set);]])],
[AC_DEFINE(HAVE_CPUSET_LINUX, 1, [Define if Linux-like cpu_set_t exists.])])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread_np.h>]], [[cpuset_t set; CPU_ZERO(&set);]])],
[AC_DEFINE(HAVE_CPUSET_BSD, 1, [Define if FreeBSD-like cpuset_t exists.])])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sched.h>]], [[cpuset_t* set = cpuset_create(); cpuset_destroy(set);]])],
[AC_DEFINE(HAVE_CPUSET_NETBSD, 1, [Define if cpuset_t and cpuset(3) exists.])])

414
# Prepare CFLAG_VISIBILITY to be used where needed
415
gl_VISIBILITY()
416

417 418 419
# Add code coverage macro
AX_CODE_COVERAGE

420 421
AS_IF([test "$enable_documentation" = "yes"],[

422
AC_PATH_PROGS([SPHINXBUILD], [sphinx-build sphinx-build-3], [false])
423 424 425 426 427 428 429 430 431 432
AS_IF([test "$SPHINXBUILD" = "false"],
  [AC_MSG_WARN([Could not find the 'sphinx-build' executable, you will be unable to regenerate documentation.])],
  [AC_PATH_PROG([PDFLATEX], [pdflatex], [false])
   AS_IF([test "$PDFLATEX" = ""],
     [AC_MSG_WARN([Could not find the 'pdflatex' executable, you will be unable to generate PDF documentation.])])
   AC_PATH_PROG([MAKEINFO], [makeinfo], [false])
   AS_IF([test "$MAKEINFO" = "false"],
     [AC_MSG_WARN([Could not find the 'makeinfo' executable, you will be unable to generate info documentation.])])
  ])

433 434
])

435 436 437 438
AM_CONDITIONAL([HAVE_SPHINXBUILD], test "$SPHINXBUILD" != "false")
AM_CONDITIONAL([HAVE_PDFLATEX], test "$PDFLATEX" != "false")
AM_CONDITIONAL([HAVE_MAKEINFO], test "$MAKEINFO" != "false")

Ondřej Surý's avatar
Ondřej Surý committed
439
AC_CONFIG_FILES([Makefile
440
		 doc/Makefile
441
		 samples/Makefile
442 443 444
		 libtap/Makefile
		 src/Makefile
		 tests/Makefile
445
		 tests-fuzz/Makefile
446
		 src/dnstap/Makefile
447
		 src/zscanner/Makefile
Ondřej Surý's avatar
Ondřej Surý committed
448 449 450
		 src/dnssec/Makefile
		 src/dnssec/tests/Makefile
		 src/dnssec/utils/Makefile
451
		 ])
452

Ondřej Surý's avatar
Ondřej Surý committed
453
AC_OUTPUT
454

455 456 457 458 459
AC_MSG_RESULT([
  $PACKAGE $VERSION

    Target:   $host_os $host_cpu
    Compiler: ${CC}
460
    CFLAGS:   ${CFLAGS} ${CPPFLAGS}
461 462 463 464 465
    LIBS:     ${LIBS} ${LDFLAGS}
    LibURCU:  ${liburcu_LIBS} ${liburcu_CFLAGS}
    GnuTLS:   ${gnutls_LIBS} ${gnutls_CFLAGS}
    Jansson:  ${jansson_LIBS} ${jansson_CFLAGS}
    LMDB:     ${enable_lmdb} ${lmdb_LIBS} ${lmdb_CFLAGS}
466 467 468 469 470 471

    Prefix:      ${prefix}
    Run dir:     ${run_dir}
    Storage dir: ${storage_dir}
    Config dir:  ${config_dir}

472 473 474 475 476
    Knot DNS libraries:     yes
    Knot DNS daemon:        ${enable_daemon}
    Knot DNS utils:         ${enable_utilities}
    Knot DNS documentation: ${enable_documentation}

477 478 479 480 481
    Fast zone parser:    ${enable_fastparser}
    Utilities with IDN:  ${with_libidn}
    Systemd integration: ${enable_systemd}
    Dnstap support:      ${opt_dnstap}
    Code coverage:       ${enable_code_coverage}
482 483 484

  Continue with 'make' command
])