1# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 2 3dnl Libabigail version number is handled here with the major and minor 4dnl version numbers. 5m4_define([version_major], [2]) 6m4_define([version_minor], [2]) 7 8dnl Below are the numbers to handle libabigail.so's versionning 9dnl following the libtool's versionning scheme to handle shared 10dnl libraries' compatibility. 11dnl 12dnl Below are the rules to follow to update the three numbers 13dnl (LIBABIGAIL_SO_CURRENT, LIBABIGAIL_SO_REVISION and LIBABIGAIL_SO_AGE): 14dnl 15dnl 1. If the library source code has changed at all since the last 16dnl update, then increment LIBABIGAIL_SO_REVISION ('C:R:A' becomes 17dnl 'C:R+1:A'). 18dnl 19dnl 2. If any interfaces have been added, removed, or changed since 20dnl the last update, increment LIBABIGAIL_SO_CURRENT, and set 21dnl LIBABIGAIL_REVISION to 0. 22dnl 23dnl 3. If any interfaces have been added since the last public release, 24dnl then increment LIBABIGAIL_SO_AGE. 25dnl 26dnl 4. If any interfaces have been removed or changed since the last 27dnl public release, then set LIBABIGAIL_SO_AGE to 0. 28m4_define([libabigail_so_current], [1]) 29m4_define([libabigail_so_revision], [0]) 30m4_define([libabigail_so_age], [0]) 31 32AC_INIT([libabigail], 33 [version_major.version_minor], 34 [http://sourceware.org/bugzilla], 35 [libabigail], 36 [http://sourceware.org/libabigail]) 37 38AC_PREREQ([2.63]) 39AC_CONFIG_AUX_DIR([build-aux]) 40AC_CONFIG_HEADERS([config.h]) 41AC_CONFIG_SRCDIR([README]) 42AC_CONFIG_MACRO_DIR([m4]) 43 44dnl Include some autoconf macros to check for python modules. 45dnl 46dnl These macros are coming from the autoconf archive at 47dnl http://www.gnu.org/software/autoconf-archive 48 49dnl This one is for the AX_CHECK_PYTHON_MODULES() macro. 50m4_include([autoconf-archive/ax_check_python_modules.m4]) 51 52dnl These two below are for the AX_PROG_PYTHON_VERSION() module. 53m4_include([autoconf-archive/ax_compare_version.m4]) 54m4_include([autoconf-archive/ax_prog_python_version.m4]) 55 56dnl This one is to be able to run "make check-valgrind" 57dnl and have unit tests run under der Valgrind. 58m4_include([autoconf-archive/ax_valgrind_check.m4]) 59 60AM_INIT_AUTOMAKE([1.11.1 foreign subdir-objects dist-xz tar-ustar parallel-tests]) 61AM_MAINTAINER_MODE([enable]) 62 63AM_SILENT_RULES([yes]) 64 65VERSION_MAJOR=version_major 66VERSION_MINOR=version_minor 67VERSION_REVISION=0 68ABIXML_VERSION_MAJOR=2 69ABIXML_VERSION_MINOR=1 70LIBABIGAIL_SO_CURRENT=libabigail_so_current 71LIBABIGAIL_SO_REVISION=libabigail_so_revision 72LIBABIGAIL_SO_AGE=libabigail_so_age 73 74AC_SUBST(VERSION_MAJOR) 75AC_SUBST(VERSION_MINOR) 76AC_SUBST(VERSION_REVISION) 77AC_SUBST(ABIXML_VERSION_MAJOR) 78AC_SUBST(ABIXML_VERSION_MINOR) 79AC_SUBST(LIBABIGAIL_SO_CURRENT) 80AC_SUBST(LIBABIGAIL_SO_REVISION) 81AC_SUBST(LIBABIGAIL_SO_AGE) 82 83dnl This VERSION_SUFFIX environment variable is to allow appending 84dnl arbitrary text to the libabigail version string representation. 85dnl That is useful to identify custom versions of the library 86dnl (e.g. development versions or versions of a particular origin). 87dnl 88dnl The feature can be enabled by passing VERSION_SUFFIX to `configure`, 89dnl e.g. 90dnl 91dnl $ configure VERSION_SUFFIX="-dev" 92AC_SUBST(VERSION_SUFFIX) 93 94AC_ARG_ENABLE(rpm, 95 AS_HELP_STRING([--enable-rpm=yes|no|auto], 96 [enable the support of rpm in abipkgdiff (default is auto)]), 97 ENABLE_RPM=$enableval, 98 ENABLE_RPM=auto) 99 100# '--enable-rpm415' option name preserved for backwards compatibility. 101AC_ARG_ENABLE(rpm415, 102 AS_HELP_STRING([--enable-rpm415=yes|no|auto], 103 [enable rpm/zstd in abipkgdiff testing (default is auto)]), 104 ENABLE_RPM_ZSTD=$enableval, 105 ENABLE_RPM_ZSTD=auto) 106 107AC_ARG_ENABLE(debug-self-comparison, 108 AS_HELP_STRING([--enable-debug-self-comparison=yes|no], 109 [enable debugging of self comparison with 'abidw --debug-abidiff'(default is no)]), 110 ENABLE_DEBUG_SELF_COMPARISON=$enableval, 111 ENABLE_DEBUG_SELF_COMPARISON=no) 112 113AC_ARG_ENABLE(debug-type-canonicalization, 114 AS_HELP_STRING([--enable-debug-type-canonicalization=yes|no], 115 [enable debugging of type canonicalization 'abidw --debug-tc'(default is no)]), 116 ENABLE_DEBUG_TYPE_CANONICALIZATION=$enableval, 117 ENABLE_DEBUG_TYPE_CANONICALIZATION=no) 118 119AC_ARG_ENABLE(show-type-use-in-abilint, 120 AS_HELP_STRING([--enable-show-type-use-in-abilint=yes|no], 121 ['enable abilint --show-type-use'(default is no)]), 122 ENABLE_SHOW_TYPE_USE_IN_ABILINT=$enableval, 123 ENABLE_SHOW_TYPE_USE_IN_ABILINT=no) 124 125AC_ARG_ENABLE(deb, 126 AS_HELP_STRING([--enable-deb=yes|no|auto], 127 [enable the support of deb in abipkgdiff (default is auto)]), 128 ENABLE_DEB=$enableval, 129 ENABLE_DEB=auto) 130 131AC_ARG_ENABLE(tar, 132 AS_HELP_STRING([--enable-tar=yes|no|auto], 133 [enable the support of GNU tar archives in abipkgdiff (default is auto)]), 134 ENABLE_TAR=$enableval, 135 ENABLE_TAR=auto) 136 137AC_ARG_ENABLE(apidoc, 138 AS_HELP_STRING([--enable-apidoc=yes|no|auto], 139 [enable generation of the apidoc in html]), 140 ENABLE_APIDOC=$enableval, 141 ENABLE_APIDOC=auto) 142 143AC_ARG_ENABLE(manual, 144 AS_HELP_STRING([--enable-manual=yes|no|auto], 145 [enable generation of the manual in html]), 146 ENABLE_MANUAL=$enableval, 147 ENABLE_MANUAL=auto) 148 149AC_ARG_ENABLE([bash-completion], 150 AS_HELP_STRING([--enable-bash-completion=yes|no|auto], 151 [enable using completion files for tools]), 152 ENABLE_BASH_COMPLETION=$enableval, 153 ENABLE_BASH_COMPLETION=auto) 154 155AC_ARG_ENABLE([fedabipkgdiff], 156 AS_HELP_STRING([--enable-fedabipkgdiff=yes|no|auto], 157 [enable the fedabipkgdiff tool]), 158 ENABLE_FEDABIPKGDIFF=$enableval, 159 ENABLE_FEDABIPKGDIFF=auto) 160 161AC_ARG_ENABLE([python3], 162 AS_HELP_STRING([--enable-python3=yes|no|auto], 163 [enable running abigail tools with python3 (default is auto)]), 164 ENABLE_PYTHON3=$enableval, 165 ENABLE_PYTHON3=auto) 166 167AC_ARG_ENABLE(asan, 168 AS_HELP_STRING([--enable-asan=yes|no], 169 [enable the support of building with -fsanitize=address)]), 170 ENABLE_ASAN=$enableval, 171 ENABLE_ASAN=no) 172 173AC_ARG_ENABLE(msan, 174 AS_HELP_STRING([--enable-msan=yes|no], 175 [enable the support of building with -fsanitize=memory)]), 176 ENABLE_MSAN=$enableval, 177 ENABLE_MSAN=no) 178 179AC_ARG_ENABLE(tsan, 180 AS_HELP_STRING([--enable-tsan=yes|no], 181 [enable the support of building with -fsanitize=thread)]), 182 ENABLE_TSAN=$enableval, 183 ENABLE_TSAN=no) 184 185AC_ARG_ENABLE(ubsan, 186 AS_HELP_STRING([--enable-ubsan=yes|no], 187 [enable the support of building with -fsanitize=undefined)]), 188 ENABLE_UBSAN=$enableval, 189 ENABLE_UBSAN=no) 190 191dnl check if user has enabled CTF code 192AC_ARG_ENABLE(ctf, 193 AS_HELP_STRING([--enable-ctf=yes|no], 194 [disable support of ctf files)]), 195 ENABLE_CTF=$enableval, 196 ENABLE_CTF=no) 197 198dnl ************************************************* 199dnl check for dependencies 200dnl ************************************************* 201 202AC_PROG_CXX 203AC_CANONICAL_HOST 204AC_USE_SYSTEM_EXTENSIONS 205AC_PROG_INSTALL 206 207LT_PREREQ([2.2]) 208LT_INIT 209 210AC_LANG([C++]) 211AC_LANG_COMPILER_REQUIRE 212 213dnl 214dnl We use C++11 215dnl 216CXX_STANDARD=c++11 217 218dnl 219dnl check if the c++ compiler has support __attribute__((visibility("hidden"))) 220dnl 221AC_MSG_NOTICE([checking for GCC visibility attribute support ...]) 222AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 223struct __attribute__((visibility("hidden"))) Foo 224{ 225 int m0; 226 227 Foo() 228 : m0() 229 {} 230}; 231 ]])], 232 [SUPPORTS_GCC_VISIBILITY_ATTRIBUTE=yes], 233 [SUPPORTS_GCC_VISIBILITY_ATTRIBUTE=no] 234) 235 236if test x$SUPPORTS_GCC_VISIBILITY_ATTRIBUTE = xyes; then 237 AC_MSG_NOTICE([GCC visibility attribute is supported]) 238 AC_DEFINE([HAS_GCC_VISIBILITY_ATTRIBUTE], 1, 239 [Defined if the compiler supports the attribution visibility syntax __attribute__((visibility("hidden")))]) 240 VISIBILITY_FLAGS="-fvisibility=hidden" 241else 242 AC_MSG_NOTICE([GCC visibility attribute is not supported]) 243 VISIBILITY_FLAGS= 244fi 245 246AC_SUBST(VISIBILITY_FLAGS) 247 248dnl Older glibc had a broken fts that didn't work with Large File Systems. 249dnl We want the version that can handler LFS, but include workaround if we 250dnl get a bad one. Add define to CFLAGS (not AC_DEFINE it) since we need to 251dnl check it before including config.h (which might define _FILE_OFFSET_BITS). 252AC_CACHE_CHECK([whether including fts.h with _FILE_OFFSET_BITS set breaks], ac_cv_bad_fts, 253 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 254 #define _FILE_OFFSET_BITS 64 255 #include <fts.h> 256 ]])], 257 ac_cv_bad_fts=no, ac_cv_bad_fts=yes)]) 258AS_IF([test "x$ac_cv_bad_fts" = "xyes"], 259 [CFLAGS="$CFLAGS -DBAD_FTS=1", 260 CXXFLAGS="$CXXFLAGS -DBAD_FTS=1"]) 261 262dnl On musl, we need to find fts-standalone 263AS_CASE( 264 [${host_os}], [*-musl*], [ 265 PKG_CHECK_MODULES([FTS], [fts-standalone]) 266]) 267 268dnl Check for dependency: libelf, libdw, libebl (elfutils) 269dnl Note that we need to use at least elfutils 0.159 but 270dnl at that time elfutils didnt have pkgconfig capabilities 271dnl to easily query for its version. 272ELF_LIBS= 273AC_CHECK_LIB([elf], [elf_end], [ELF_LIBS="-lelf"]) 274AC_CHECK_HEADER([libelf.h], 275 [], 276 [AC_MSG_ERROR([could not find libelf.h])]) 277 278DW_LIBS= 279AC_CHECK_LIB(dw, dwfl_begin, [DW_LIBS=-ldw]) 280AC_CHECK_LIB(dw, dwarf_getalt, 281 [FOUND_DWARF_GETALT_IN_LIBDW=yes], 282 [FOUND_DWARF_GETALT_IN_LIBDW=no]) 283 284AC_CHECK_HEADER(elfutils/libdwfl.h, 285 [], 286 [AC_MSG_ERROR([could not find elfutils/libdwfl.h installed])]) 287 288dnl Allow users to compile with the NDEBUG macro defined, 289dnl meaning they are compiling in a mode where the 290dnl assert call does nothing. With the directive below, 291dnl users just need to pass the --disable-assert 292dnl option to configure. 293AC_HEADER_ASSERT 294 295if test x$ELF_LIBS = x; then 296 AC_MSG_ERROR([could not find elfutils elf library installed]) 297fi 298 299if test x$DW_LIBS = x; then 300 AC_MSG_ERROR([could not find elfutils dwarf library installed]) 301fi 302 303if test x$FOUND_DWARF_GETALT_IN_LIBDW = xyes; then 304 AC_DEFINE([LIBDW_HAS_DWARF_GETALT], 1, 305 [Defined if libdw has the function dwarf_getalt]) 306fi 307 308AC_SUBST(DW_LIBS) 309AC_SUBST([ELF_LIBS]) 310 311dnl check for libctf presence if CTF code has been enabled by command line 312dnl argument, and then define CTF flag (to build CTF file code) if libctf is 313dnl found on the system 314CTF_LIBS= 315if test x$ENABLE_CTF = xyes; then 316 LIBCTF= 317 AC_CHECK_LIB(ctf, ctf_open, [LIBCTF=yes], [LIBCTF=no]) 318 if test x$LIBCTF = xyes; then 319 AC_MSG_NOTICE([activating CTF code]) 320 AC_DEFINE([WITH_CTF], 1, 321 [Defined if user enables and system has the libctf library]) 322 CTF_LIBS=-lctf 323 else 324 AC_MSG_NOTICE([CTF enabled but no libctf found]) 325 ENABLE_CTF=no 326 fi 327fi 328 329dnl Check for dependency: libxml 330LIBXML2_VERSION=2.6.22 331PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_VERSION) 332 333AC_SUBST(LIBXML2_VERSION) 334AC_SUBST(XML_LIBS) 335AC_SUBST(XML_CFLAGS) 336 337dnl Check for some programs like rm, mkdir, etc ... 338AC_CHECK_PROG(HAS_RM, rm, yes, no) 339if test x$HAS_RM = xno; then 340 AC_MSG_ERROR([could not find the program 'rm' installed]) 341fi 342 343AC_CHECK_PROG(HAS_MKDIR, mkdir, yes, no) 344if test x$HAS_MKDIR = xno; then 345 AC_MSG_ERROR([could not find the program 'mkdir' installed]) 346fi 347 348dnl Check for the rpm2cpio and cpio programs 349if test x$ENABLE_RPM = xyes -o x$ENABLE_RPM = xauto; then 350 AC_CHECK_PROG(HAS_RPM2CPIO, rpm2cpio, yes, no) 351 AC_CHECK_PROG(HAS_CPIO, cpio, yes, no) 352 AC_CHECK_PROG(HAS_RPM, rpm, yes, no) 353 354 if test x$HAS_RPM2CPIO = xyes -a x$HAS_CPIO = xyes -a x$HAS_RPM = xyes; then 355 ENABLE_RPM=yes 356 else 357 if test x$ENABLE_RPM = xyes; then 358 AC_MSG_ERROR([rpm support in abipkgdiff needs 'rpm2cpio', 'cpio' and 'rpm' programs to be installed]) 359 fi 360 ENABLE_RPM=no 361 fi 362fi 363 364dnl Point to a rpm/zstd file, that is: 365dnl $ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' [rpm_zstd_file] 366dnl zstd 367m4_define([rpm_zstd_file], [tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm]) 368AC_CONFIG_SRCDIR([rpm_zstd_file]) 369if test x$ENABLE_RPM_ZSTD = xyes -o x$ENABLE_RPM_ZSTD = xauto; then 370 if test x$ENABLE_RPM = xno; then 371 if test x$ENABLE_RPM_ZSTD = xyes; then 372 AC_MSG_ERROR([rpm/zstd support needs rpm support]) 373 fi 374 ENABLE_RPM_ZSTD=n/a 375 else 376 AC_MSG_CHECKING([for rpm/zstd support]) 377 rpm2cpio > /dev/null 2>&AS_MESSAGE_LOG_FD "$srcdir"/rpm_zstd_file 378 if test $? -eq 0; then 379 enable_rpm_zstd=yes 380 else 381 enable_rpm_zstd=no 382 fi 383 AC_MSG_RESULT([$enable_rpm_zstd]) 384 if test x$ENABLE_RPM_ZSTD:$enable_rpm_zstd = xyes:no; then 385 AC_MSG_ERROR([rpm/zstd support not available]) 386 fi 387 ENABLE_RPM_ZSTD=$enable_rpm_zstd 388 fi 389fi 390 391if test x$ENABLE_RPM = xyes; then 392 AC_DEFINE([WITH_RPM], 1, [compile the rpm package support in abipkgdiff]) 393 AC_MSG_NOTICE([rpm support in abipkgdiff is enabled]); 394 395 if test x$ENABLE_RPM_ZSTD = xyes; then 396 AC_DEFINE([WITH_RPM_ZSTD], 1, [has rpm/zstd support]) 397 AC_MSG_NOTICE([rpm/zstd in abipkgdiff testing is enabled]) 398 fi 399else 400 AC_MSG_NOTICE([rpm support in abipkgdiff is disabled]); 401fi 402 403AM_CONDITIONAL(ENABLE_RPM, test x$ENABLE_RPM = xyes) 404 405dnl enable the debugging of self comparison when doing abidw --debug-abidiff <binary> 406if test x$ENABLE_DEBUG_SELF_COMPARISON = xyes; then 407 AC_DEFINE([WITH_DEBUG_SELF_COMPARISON], 1, [compile support of debugging abidw --abidiff]) 408 AC_MSG_NOTICE([support of debugging self comparison is enabled]) 409else 410 AC_MSG_NOTICE([support of debugging self comparison is disabled]) 411fi 412 413AM_CONDITIONAL(ENABLE_DEBUG_SELF_COMPARISON, test x$ENABLE_DEBUG_SELF_COMPARISON = xyes) 414 415dnl enable support of abilint --show-type-use <type-id> 416if test x$ENABLE_SHOW_TYPE_USE_IN_ABILINT = xyes; then 417 AC_DEFINE([WITH_SHOW_TYPE_USE_IN_ABILINT], 1, [compile support of abilint --show-type-use]) 418 AC_MSG_NOTICE([support of abilint --show-type-use <type-id> is enabled]) 419else 420 AC_MSG_NOTICE([support of abilint --show-type-use <type-id> is disabled]) 421fi 422 423AM_CONDITIONAL(ENABLE_SHOW_TYPE_USE_IN_ABILINT, test x$ENABLE_SHOW_TYPE_USE_IN_ABILINT = xyes) 424 425dnl enable the debugging of type canonicalization when doing abidw --debug-tc <binary> 426if test x$ENABLE_DEBUG_TYPE_CANONICALIZATION = xyes; then 427 AC_DEFINE([WITH_DEBUG_TYPE_CANONICALIZATION], 428 1, 429 [compile support of debugging type canonicalization while using abidw --debug-tc]) 430 AC_MSG_NOTICE([support of debugging type canonicalization is enabled]) 431else 432 AC_MSG_NOTICE([support of debugging type canonicalization is disabled]) 433fi 434 435AM_CONDITIONAL(ENABLE_DEBUG_TYPE_CANONICALIZATION, test x$ENABLE_DEBUG_TYPE_CANONICALIZATION = xyes) 436 437dnl Check for the dpkg program 438if test x$ENABLE_DEB = xauto -o x$ENABLE_DEB = xyes; then 439 AC_CHECK_PROG(HAS_DPKG, dpkg, yes, no) 440 441 if test x$ENABLE_DEB = xauto; then 442 if test x$HAS_DPKG = xyes; then 443 ENABLE_DEB=yes 444 else 445 ENABLE_DEB=no 446 fi 447 fi 448fi 449 450if test x$ENABLE_DEB = xyes; then 451 AC_DEFINE([WITH_DEB], 1, [compile the deb package support in abipkgdiff]) 452 AC_MSG_NOTICE(deb support in abipkgdiff is enabled); 453else 454 AC_MSG_NOTICE(deb support in abipkgdiff is disabled); 455fi 456 457AM_CONDITIONAL(ENABLE_DEB, test x$ENABLE_DEB = xyes) 458 459dnl Check for the tar program 460if test x$ENABLE_TAR = xauto -o x$ENABLE_TAR = xyes; then 461 AC_CHECK_PROG(HAS_TAR, tar, yes, no) 462 463 if test x$ENABLE_TAR = xauto; then 464 if test x$HAS_TAR = xyes; then 465 ENABLE_TAR=yes 466 fi 467 fi 468fi 469 470if test x$ENABLE_TAR = xyes; then 471 AC_DEFINE([WITH_TAR], 1, [compile the GNU tar archive support in abipkgdiff]) 472 AC_MSG_NOTICE(GNU tar support in abipkgdiff is enabled); 473else 474 AC_MSG_NOTICE(GNU tar support in abipkgdiff is disabled); 475fi 476 477AM_CONDITIONAL(ENABLE_TAR, test x$ENABLE_TAR = xyes) 478 479dnl Check for the bash-completion package 480if test x$ENABLE_BASH_COMPLETION = xauto -o x$ENABLE_BASH_COMPLETION = xyes; then 481 AC_CHECK_PROG(HAS_BASH_COMPLETION, bash-completion, yes, no) 482 483 if test x$ENABLE_BASH_COMPLETION = xauto; then 484 if test x$HAS_BASH_COMPLETION = xyes; then 485 ENABLE_BASH_COMPLETION=yes 486 else 487 ENABLE_BASH_COMPLETION=no 488 fi 489 fi 490fi 491 492if test x$ENABLE_BASH_COMPLETION = xyes; then 493 AC_MSG_NOTICE(bash-completion support in libabigail is enabled); 494else 495 AC_MSG_NOTICE(bash-completion support in libabigail is disabled); 496fi 497 498AM_CONDITIONAL(ENABLE_BASH_COMPLETION, test x$ENABLE_BASH_COMPLETION = xyes) 499 500# The minimal python 2 version we want to support is 2.6.6 because EL6 501# distributions have that version installed. 502MINIMAL_PYTHON2_VERSION="2.6.6" 503 504AC_PATH_PROG(PYTHON, python, no) 505AX_PROG_PYTHON_VERSION($MINIMAL_PYTHON2_VERSION, 506 [MINIMAL_PYTHON_VERSION_FOUND=yes], 507 [MINIMAL_PYTHON_VERSION_FOUND=no]) 508 509# The minimal python 3 version we want to support is 3.5, which is 510# available in Fedora releases and in EL7. 511if test x$ENABLE_PYTHON3 != xno; then 512 AC_CHECK_PROGS(PYTHON3_INTERPRETER, [python3 python3.5 python3.6 python3.7], no) 513else 514 PYTHON3_INTERPRETER=no 515fi 516 517if test x$ENABLE_PYTHON3 = xauto; then 518 if test x$PYTHON3_INTERPRETER != xno; then 519 ENABLE_PYTHON3=yes 520 else 521 # When enabling python3 is auto, tests only run if the 522 # python3 interpreter was found on the system. Otherwise, 523 # just ignore it. 524 ENABLE_PYTHON3=no 525 AC_MSG_NOTICE([Python 3 was not found. Skip running tests with Python 3.]) 526 fi 527fi 528 529if test x$ENABLE_PYTHON3 = xyes; then 530 if test x$PYTHON3_INTERPRETER != xno; then 531 # We were asked to enable python3 implicitely (auto and 532 # python3 was found) or explicitly. So enable running tests 533 # using python3 then. 534 RUN_TESTS_WITH_PY3=yes 535 else 536 AC_MSG_ERROR([Python 3 was not found]) 537 fi 538fi 539 540if test x$PYTHON3_INTERPRETER = xyes; then 541 MINIMAL_PYTHON_VERSION_FOUND=yes 542fi 543 544if test x$MINIMAL_PYTHON_VERSION_FOUND = xno; then 545 AC_MSG_NOTICE([no minimal version of python found]) 546 if test x$PYTHON = xno; then 547 AC_MSG_NOTICE([python binary wasn't found]) 548 if test x$PYTHON3_INTERPRETER != xno; then 549 AC_MSG_NOTICE([using $PYTHON3_INTERPRETER instead]) 550 PYTHON=$PYTHON3_INTERPRETER 551 MINIMAL_PYTHON_VERSION_FOUND=yes 552 MISSING_FEDABIPKGDIFF_DEP=no 553 fi 554 fi 555else 556 AC_MSG_NOTICE([a minimal version of python was found ...]) 557 if test x$PYTHON3_INTERPRETER != xno; then 558 # We were instructed to use python3 and it's present on the 559 # system. Let's update the PYTHON variable that points to the 560 # actual python interpreter we are going to be using 561 AC_MSG_NOTICE([... and it was $PYTHON3_INTERPRETER]) 562 PYTHON=$PYTHON3_INTERPRETER 563 fi 564fi 565 566dnl if --enable-fedabipkgdiff has the 'auto' value, then check for the required 567dnl python modules. If they are present, then enable the fedabipkgdiff program. 568dnl If they are not then disable the program. 569dnl 570dnl If --enable-fedabipkgdiff has the 'yes' value, then check for the required 571dnl python modules and whatever dependency fedabipkgdiff needs. If they are 572dnl not present then the configure script will error out. 573 574if test x$ENABLE_FEDABIPKGDIFF = xauto -o x$ENABLE_FEDABIPKGDIFF = xyes; then 575 CHECK_DEPS_FOR_FEDABIPKGDIFF=yes 576else 577 CHECK_DEPS_FOR_FEDABIPKGDIFF=no 578fi 579 580if test x$CHECK_DEPS_FOR_FEDABIPKGDIFF = xyes; then 581 MISSING_FEDABIPKGDIFF_DEP=no 582 583 if test x$ENABLE_FEDABIPKGDIFF = xyes; then 584 MISSING_FEDABIPKGDIFF_DEP_FATAL=yes 585 else 586 MISSING_FEDABIPKGDIFF_DEP_FATAL=no 587 fi 588 589 AC_PATH_PROG(WGET, wget, no) 590 591 if test x$WGET = xno; then 592 MISSING_FEDABIPKGDIFF_DEP=yes 593 if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then 594 AC_MSG_ERROR(could not find the wget program) 595 else 596 AC_MSG_NOTICE([could not find the wget program]) 597 AC_MSG_NOTICE([disabling fedabipkgdiff as a result]) 598 fi 599 fi 600 601 if test x$MINIMAL_PYTHON_VERSION_FOUND = xno; then 602 MISSING_FEDABIPKGDIFF_DEP=yes 603 if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then 604 AC_MSG_ERROR([could not find a python program of version at least $MINIMAL_PYTHON2_VERSION]) 605 fi 606 fi 607 608 ################################################################### 609 # Now we are going to check the presence of the required python 610 # modules using either python2 or python3 as required until now. 611 ################################################################### 612 613 # Grrr, the urlparse python2 module got renamed in python3 as 614 # urllib.parse. Oh well. 615 if test x$PYTHON = xpython3; then 616 URLPARSE_MODULE=urllib.parse 617 else 618 URLPARSE_MODULE=urlparse 619 fi 620 621 REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF="\ 622 argparse logging os re subprocess sys $URLPARSE_MODULE \ 623 xdg koji mock rpm imp tempfile mimetypes shutil six" 624 625 AX_CHECK_PYTHON_MODULES([$REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF], 626 [$PYTHON], 627 [FOUND_ALL_PYTHON_MODULES=yes], 628 [FOUND_ALL_PYTHON_MODULES=no]) 629 630 if test x$FOUND_ALL_PYTHON_MODULES = xno; then 631 MISSING_FEDABIPKGDIFF_DEP=yes 632 if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then 633 AC_MSG_ERROR([missing python modules: $MISSING_PYTHON_MODULES]); 634 else 635 AC_MSG_NOTICE([missing python modules: $MISSING_PYTHON_MODULES]) 636 AC_MSG_NOTICE([disabling fedabipkgdiff as a result]) 637 fi 638 else 639 # On some old platforms, the koji client object doesn't have 640 # the required .read_config method. Alas, that module doesn't 641 # have any __version__ string either. So we do as well as we 642 # can to try and detect that case and disable fedabipkgdiff if 643 # necessary. 644 AC_MSG_CHECKING([if koji client is recent enough]) 645 $PYTHON 2>&AS_MESSAGE_LOG_FD -c " 646import koji 647try: 648 koji.read_config('koji') 649except koji.ConfigurationError: 650 # See 'tools/fedabipkgdiff'. 651 pass" 652 if test $? -eq 0; then 653 koji_version_check_ok=yes 654 else 655 koji_version_check_ok=no 656 fi 657 AC_MSG_RESULT([$koji_version_check_ok]) 658 if test x$koji_version_check_ok = xno; then 659 MISSING_FEDABIPKGDIFF_DEP=yes 660 if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then 661 AC_MSG_ERROR([unsuitable koji client]) 662 else 663 AC_MSG_WARN([disabling fedabipkgdiff]) 664 fi 665 fi 666 fi 667 668 if test x$MISSING_FEDABIPKGDIFF_DEP = xno; then 669 ENABLE_FEDABIPKGDIFF=yes 670 else 671 ENABLE_FEDABIPKGDIFF=no 672 fi 673fi 674 675AM_CONDITIONAL(ENABLE_FEDABIPKGDIFF, test x$ENABLE_FEDABIPKGDIFF = xyes) 676AM_CONDITIONAL(ENABLE_RUNNING_TESTS_WITH_PY3, test x$RUN_TESTS_WITH_PY3 = xyes) 677AM_CONDITIONAL(ENABLE_PYTHON3_INTERPRETER, test x$PYTHON3_INTERPRETER != xno) 678AC_SUBST(PYTHON) 679 680DEPS_CPPFLAGS="$XML_CFLAGS" 681AC_SUBST(DEPS_CPPFLAGS) 682 683dnl Check for the presence of doxygen program 684 685if test x$ENABLE_APIDOC != xno; then 686 AC_CHECK_PROG(FOUND_DOXYGEN, doxygen, yes, no) 687 if test x$ENABLE_APIDOC = xauto; then 688 if test x$FOUND_DOXYGEN = xyes; then 689 ENABLE_APIDOC=yes 690 else 691 ENABLE_APIDOC=no 692 fi 693 fi 694fi 695AM_CONDITIONAL(ENABLE_APIDOC, test x$ENABLE_APIDOC = xyes) 696 697dnl Check for the presence of the sphinx-build program 698 699if test x$ENABLE_MANUAL != xno; then 700 AC_CHECK_PROG(FOUND_SPHINX_BUILD, sphinx-build, yes, no) 701 if test x$ENABLE_MANUAL = xauto; then 702 if test x$FOUND_SPHINX_BUILD = xyes; then 703 ENABLE_MANUAL=yes 704 else 705 ENABLE_MANUAL=no 706 fi 707 fi 708fi 709AM_CONDITIONAL(ENABLE_MANUAL, test x$ENABLE_MANUAL = xyes) 710 711dnl Check for the presence of Valgrind and do the plumbing to allow 712dnl the running of "make check-valgrind". 713AX_VALGRIND_DFLT(memcheck, on) 714AX_VALGRIND_DFLT(helgrind, on) 715AX_VALGRIND_DFLT(drd, off) 716AX_VALGRIND_DFLT(sgcheck, off) 717 718AX_VALGRIND_CHECK 719 720dnl Set the list of libraries libabigail depends on 721 722DEPS_LIBS="$XML_LIBS $ELF_LIBS $DW_LIBS $CTF_LIBS" 723AC_SUBST(DEPS_LIBS) 724 725if test x$ABIGAIL_DEVEL != x; then 726 CFLAGS="-g -Og -Wall -Wextra -Werror -D_FORTIFY_SOURCE=2" 727 CXXFLAGS="-g -Og -Wall -Wextra -Werror -D_FORTIFY_SOURCE=2 -D_GLIBCXX_DEBUG" 728fi 729 730if test x$ABIGAIL_DEBUG != x; then 731 CFLAGS="$CFLAGS -Og -g3 -ggdb" 732 CXXFLAGS="$CXXFLAGS -Og -g3 -ggdb" 733fi 734 735if test x$ABIGAIL_NO_OPTIMIZATION_DEBUG != x; then 736 CFLAGS="-g -O0 -Wall -Wextra -Werror" 737 CXXFLAGS="-g -O0 -Wall -Wextra -Werror" 738fi 739 740if test x$ENABLE_ASAN = xyes; then 741 CFLAGS="$CFLAGS -fsanitize=address" 742 CXXFLAGS="$CXXFLAGS -fsanitize=address" 743fi 744 745if test x$ENABLE_MSAN = xyes; then 746 CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins" 747 CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins" 748fi 749 750if test x$ENABLE_TSAN = xyes; then 751 CFLAGS="$CFLAGS -fsanitize=thread" 752 CXXFLAGS="$CXXFLAGS -fsanitize=thread" 753fi 754 755if test x$ENABLE_UBSAN = xyes; then 756 CFLAGS="$CFLAGS -fsanitize=undefined" 757 CXXFLAGS="$CXXFLAGS -fsanitize=undefined" 758fi 759 760dnl Set a few Automake conditionals 761 762AM_CONDITIONAL([CTF_READER],[test "x$ENABLE_CTF" = "xyes"]) 763 764dnl Set the level of C++ standard we use. 765CXXFLAGS="$CXXFLAGS -std=$CXX_STANDARD" 766 767dnl Check if several decls and constant are defined in dependant 768dnl libraries 769HAS_EM_AARCH64=no 770AC_CHECK_DECL([EM_AARCH64], 771 [HAS_EM_AARCH64=yes], 772 [HAS_EM_AARCH64=no], 773 [[#include <elf.h>]]) 774 775if test x$HAS_EM_AARCH64 = xyes; then 776 AC_DEFINE([HAVE_EM_AARCH64_MACRO], 777 1, 778 [Defined to 1 if elf.h has EM_AARCH64 macro defined]) 779fi 780 781HAS_EM_TILEPRO=no 782AC_CHECK_DECL([EM_TILEPRO], 783 [HAS_EM_TILEPRO=yes], 784 [HAS_EM_TILEPRO=no], 785 [[#include <elf.h>]]) 786 787if test x$HAS_EM_TILEPRO = xyes; then 788 AC_DEFINE([HAVE_EM_TILEPRO_MACRO], 789 1, 790 [Defined to 1 if elf.h has EM_TILEPR0 macro defined]) 791fi 792 793HAS_EM_TILEGX=no 794AC_CHECK_DECL([EM_TILEGX], 795 [HAS_EM_TILEGX=yes], 796 [HAS_EM_TILEGX=no], 797 [[#include <elf.h>]]) 798 799if test x$HAS_EM_TILEGX = xyes; then 800 AC_DEFINE([HAVE_EM_TILEGX_MACRO], 801 1, 802 [Defined to 1 if elf.h has EM_TILEGX macro defined]) 803fi 804 805HAS_R_AARCH64_ABS64=no 806AC_CHECK_DECL([R_AARCH64_ABS64], 807 [HAS_R_AARCH64_ABS64=yes], 808 [HAS_R_AARCH64_ABS64=no], 809 [[#include <elf.h>]]) 810 811if test x$HAS_R_AARCH64_ABS64 = xyes; then 812 AC_DEFINE([HAVE_R_AARCH64_ABS64_MACRO], 813 1, 814 [Defined to 1 if elf.h has R_AARCH64_ABS64 macro defined]) 815fi 816 817HAS_R_AARCH64_PREL32=no 818AC_CHECK_DECL([R_AARCH64_PREL32], 819 [HAS_R_AARCH64_PREL32=yes], 820 [HAS_R_AARCH64_PREL32=no], 821 [[#include <elf.h>]]) 822 823if test x$HAS_R_AARCH64_PREL32 = xyes; then 824 AC_DEFINE([HAVE_R_AARCH64_PREL32_MACRO], 825 1, 826 [Defined to 1 if elf.h has R_AARCH64_PREL32 macro defined]) 827fi 828 829HAS_DW_LANG_UPC=no 830AC_CHECK_DECL([DW_LANG_UPC], 831 [HAS_DW_LANG_UPC=yes], 832 [HAS_DW_LANG_UPC=no], 833 [[#include <dwarf.h>]]) 834if test x$HAS_DW_LANG_UPC = xyes; then 835 AC_DEFINE([HAVE_DW_LANG_UPC_enumerator], 836 1, 837 [Define to 1 if dwarf.h has the DW_LANG_UPC enumerator]) 838fi 839 840HAS_DW_LANG_D=no 841AC_CHECK_DECL([DW_LANG_D], 842 [HAS_DW_LANG_D=yes], 843 [HAS_DW_LANG_D=no], 844 [[#include <dwarf.h>]]) 845if test x$HAS_DW_LANG_D = xyes; then 846 AC_DEFINE([HAVE_DW_LANG_D_enumerator], 847 1, 848 [Define to 1 if dwarf.h has the DW_LANG_D enumerator]) 849fi 850 851HAS_DW_LANG_Python=no 852AC_CHECK_DECL([DW_LANG_Python], 853 [HAS_DW_LANG_Python=yes], 854 [HAS_DW_LANG_Python=no], 855 [[#include <dwarf.h>]]) 856if test x$HAS_DW_LANG_Python = xyes; then 857 AC_DEFINE([HAVE_DW_LANG_Python_enumerator], 858 1, 859 [Define to 1 if dwarf.h has the DW_LANG_Python enumerator]) 860fi 861 862HAS_DW_LANG_Go=no 863AC_CHECK_DECL([DW_LANG_Go], 864 [HAS_DW_LANG_Go=yes], 865 [HAS_DW_LANG_Go=no], 866 [[#include <dwarf.h>]]) 867if test x$HAS_DW_LANG_Go = xyes; then 868 AC_DEFINE([HAVE_DW_LANG_Go_enumerator], 869 1, 870 [Define to 1 if dwarf.h has the DW_LANG_Go enumerator]) 871fi 872 873HAS_DW_LANG_C11=no 874AC_CHECK_DECL([DW_LANG_C11], 875 [HAS_DW_LANG_C11=yes], 876 [HAS_DW_LANG_C11=no], 877 [[#include <dwarf.h>]]) 878if test x$HAS_DW_LANG_C11 = xyes; then 879 AC_DEFINE([HAVE_DW_LANG_C11_enumerator], 880 1, 881 [Define to 1 if dwarf.h has the DW_LANG_C11 enumerator]) 882fi 883 884HAS_DW_LANG_C_plus_plus_03=no 885AC_CHECK_DECL([DW_LANG_C_plus_plus_03], 886 [HAS_DW_LANG_C_plus_plus_03=yes], 887 [HAS_DW_LANG_C_plus_plus_03=no], 888 [[#include <dwarf.h>]]) 889if test x$HAS_DW_LANG_C_plus_plus_03 = xyes; then 890 AC_DEFINE([HAVE_DW_LANG_C_plus_plus_03_enumerator], 891 1, 892 [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_03 enumerator]) 893fi 894 895HAS_DW_LANG_C_plus_plus_11=no 896AC_CHECK_DECL([DW_LANG_C_plus_plus_11], 897 [HAS_DW_LANG_C_plus_plus_11=yes], 898 [HAS_DW_LANG_C_plus_plus_11=no], 899 [[#include <dwarf.h>]]) 900if test x$HAS_DW_LANG_C_plus_plus_11 = xyes; then 901 AC_DEFINE([HAVE_DW_LANG_C_plus_plus_11_enumerator], 902 1, 903 [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_11 enumerator]) 904fi 905 906HAS_DW_LANG_C_plus_plus_14=no 907AC_CHECK_DECL([DW_LANG_C_plus_plus_14], 908 [HAS_DW_LANG_C_plus_plus_14=yes], 909 [HAS_DW_LANG_C_plus_plus_14=no], 910 [[#include <dwarf.h>]]) 911if test x$HAS_DW_LANG_C_plus_plus_14 = xyes; then 912 AC_DEFINE([HAVE_DW_LANG_C_plus_plus_14_enumerator], 913 1, 914 [Define to 1 if dwarf.h has the DW_LANG_C_plus_plus_14 enumerator]) 915fi 916 917HAS_DW_LANG_Mips_Assembler=no 918AC_CHECK_DECL([DW_LANG_Mips_Assembler], 919 [HAS_DW_LANG_Mips_Assembler=yes], 920 [HAS_DW_LANG_Mips_Assembler=no], 921 [[#include <dwarf.h>]]) 922if test x$HAS_DW_LANG_Mips_Assembler = xyes; then 923 AC_DEFINE([HAVE_DW_LANG_Mips_Assembler_enumerator], 924 1, 925 [Define to 1 if dwarf.h has the DW_LANG_Mips_Assembler enumerator]) 926fi 927 928HAS_DW_LANG_Rust=no 929AC_CHECK_DECL([DW_LANG_Rust], 930 [HAS_DW_LANG_Rust=yes], 931 [HAS_DW_LANG_Rust=no], 932 [[#include <dwarf.h>]]) 933 934if test x$HAS_DW_LANG_Rust = xyes; then 935 AC_DEFINE([HAVE_DW_LANG_Rust_enumerator], 936 1, 937 [Define to 1 if dwarf.h has the DW_LANG_Rust enumerator]) 938fi 939 940HAS_DW_FORM_strx1=no 941HAS_DW_FORM_strx2=no 942HAS_DW_FORM_strx3=no 943HAS_DW_FORM_strx4=no 944HAS_DW_FORM_line_strp=no 945 946AC_CHECK_DECL([DW_FORM_strx1], 947 [HAS_DW_FORM_strx1=yes], 948 [HAS_DW_FORM_strx1=no], 949 [[#include <dwarf.h>]]) 950 951if test x$HAS_DW_FORM_strx1 = xyes; then 952 AC_DEFINE([HAVE_DW_FORM_strx1], 953 1, 954 [Define to 1 if dwarf.h has the DW_FORM_strx1 enumerator]) 955fi 956 957AC_CHECK_DECL([DW_FORM_strx2], 958 [HAS_DW_FORM_strx2=yes], 959 [HAS_DW_FORM_strx2=no], 960 [[#include <dwarf.h>]]) 961 962if test x$HAS_DW_FORM_strx2 = xyes; then 963 AC_DEFINE([HAVE_DW_FORM_strx2], 964 1, 965 [Define to 1 if dwarf.h has the DW_FORM_strx2 enumerator]) 966fi 967 968AC_CHECK_DECL([DW_FORM_strx3], 969 [HAS_DW_FORM_strx3=yes], 970 [HAS_DW_FORM_strx3=no], 971 [[#include <dwarf.h>]]) 972 973if test x$HAS_DW_FORM_strx3 = xyes; then 974 AC_DEFINE([HAVE_DW_FORM_strx3], 975 1, 976 [Define to 1 if dwarf.h has the DW_FORM_strx3 enumerator]) 977fi 978 979AC_CHECK_DECL([DW_FORM_strx4], 980 [HAS_DW_FORM_strx4=yes], 981 [HAS_DW_FORM_strx4=no], 982 [[#include <dwarf.h>]]) 983 984if test x$HAS_DW_FORM_strx4 = xyes; then 985 AC_DEFINE([HAVE_DW_FORM_strx4], 986 1, 987 [Define to 1 if dwarf.h has the DW_FORM_strx4 enumerator]) 988fi 989 990AC_CHECK_DECL([DW_FORM_line_strp], 991 [HAS_DW_FORM_line_strp=yes], 992 [HAS_DW_FORM_line_strp=no], 993 [[#include <dwarf.h>]]) 994 995if test x$HAS_DW_FORM_line_strp = xyes; then 996 AC_DEFINE([HAVE_DW_FORM_line_strp], 997 1, 998 [Define to 1 if dwarf.h has the DW_FORM_line_strp enumerator]) 999fi 1000 1001if test x$HAS_DW_FORM_strx1 = xyes -a \ 1002 x$HAS_DW_FORM_strx2 = xyes -a \ 1003 x$HAS_DW_FORM_strx3 = xyes -a \ 1004 x$HAS_DW_FORM_strx4 = xyes ; then 1005 AC_DEFINE([HAVE_DW_FORM_strx], 1006 1, 1007 [Define to 1 if dwarf.h has the DW_FORM_strx enumerators]) 1008fi 1009 1010dnl Set large files support 1011AC_SYS_LARGEFILE 1012 1013AC_CONFIG_FILES([Makefile 1014libabigail.pc 1015 include/Makefile 1016 include/abg-version.h 1017 doc/Makefile 1018 doc/manuals/Makefile 1019 src/Makefile 1020 tools/Makefile 1021 tests/Makefile 1022 tests/data/Makefile 1023 bash-completion/Makefile]) 1024 1025dnl Some test scripts are generated by autofoo. 1026AC_CONFIG_FILES([tests/runtestcanonicalizetypes.sh], 1027 [chmod +x tests/runtestcanonicalizetypes.sh]) 1028 AC_CONFIG_FILES([tests/runtestslowselfcompare.sh], 1029 [chmod +x tests/runtestslowselfcompare.sh]) 1030AC_CONFIG_FILES([tests/mockfedabipkgdiff], 1031 [chmod +x tests/mockfedabipkgdiff]) 1032AC_CONFIG_FILES([tests/runtestfedabipkgdiff.py], 1033 [chmod +x tests/runtestfedabipkgdiff.py]) 1034AC_CONFIG_FILES([tests/runtestfedabipkgdiffpy3.sh], 1035 [chmod +x tests/runtestfedabipkgdiffpy3.sh]) 1036AC_CONFIG_FILES([tests/runtestdefaultsupprs.py], 1037 [chmod +x tests/runtestdefaultsupprs.py]) 1038AC_CONFIG_FILES([tests/runtestdefaultsupprspy3.sh], 1039 [chmod +x tests/runtestdefaultsupprspy3.sh]) 1040 1041AC_OUTPUT 1042 1043AC_MSG_NOTICE([ 1044===================================================================== 1045 Libabigail: $VERSION_MAJOR.$VERSION_MINOR.$VERSION_REVISION$VERSION_SUFFIX 1046===================================================================== 1047 1048 Here is the configuration of the package: 1049 1050 Prefix : ${prefix} 1051 Source code location : ${srcdir} 1052 C Compiler : ${CC} 1053 C++ Compiler : ${CXX} 1054 GCC visibility attribute supported : ${SUPPORTS_GCC_VISIBILITY_ATTRIBUTE} 1055 CXXFLAGS : ${CXXFLAGS} 1056 Python : ${PYTHON} 1057 1058 OPTIONAL FEATURES: 1059 C++ standard level : ${CXX_STANDARD} 1060 libdw has the dwarf_getalt function : ${FOUND_DWARF_GETALT_IN_LIBDW} 1061 Enable rpm support in abipkgdiff : ${ENABLE_RPM} 1062 Enable rpm/zstd in abipkgdiff testing : ${ENABLE_RPM_ZSTD} 1063 Enable abilint --show-type-use <type-id> : ${ENABLE_SHOW_TYPE_USE_IN_ABILINT} 1064 Enable self comparison debugging : ${ENABLE_DEBUG_SELF_COMPARISON} 1065 Enable type canonicalization debugging : ${ENABLE_DEBUG_TYPE_CANONICALIZATION} 1066 Enable deb support in abipkgdiff : ${ENABLE_DEB} 1067 Enable GNU tar archive support in abipkgdiff : ${ENABLE_TAR} 1068 Enable bash completion : ${ENABLE_BASH_COMPLETION} 1069 Enable fedabipkgdiff : ${ENABLE_FEDABIPKGDIFF} 1070 Enable python 3 : ${ENABLE_PYTHON3} 1071 Enable CTF front-end : ${ENABLE_CTF} 1072 Enable running tests under Valgrind : ${enable_valgrind} 1073 Enable build with -fsanitize=address : ${ENABLE_ASAN} 1074 Enable build with -fsanitize=memory : ${ENABLE_MSAN} 1075 Enable build with -fsanitize=thread : ${ENABLE_TSAN} 1076 Enable build with -fsanitize=undefined : ${ENABLE_UBSAN} 1077 Generate html apidoc : ${ENABLE_APIDOC} 1078 Generate html manual : ${ENABLE_MANUAL} 1079]) 1080