1# -*- Autoconf -*- 2# Process this file with autoconf to produce a configure script. 3 4# bootstrap / init 5AC_PREREQ([2.61]) 6 7AC_INIT([corosync], 8 m4_esyscmd([build-aux/git-version-gen .tarball-version .gitarchivever]), 9 [users@clusterlabs.org]) 10 11AC_USE_SYSTEM_EXTENSIONS 12 13AM_INIT_AUTOMAKE([foreign 1.11]) 14 15LT_PREREQ([2.2.6]) 16LT_INIT 17 18AM_SILENT_RULES([yes]) 19 20AC_CONFIG_SRCDIR([lib/cpg.c]) 21AC_CONFIG_HEADER([include/corosync/config.h]) 22AC_CONFIG_MACRO_DIR([m4]) 23 24AC_CANONICAL_HOST 25 26AC_LANG([C]) 27 28AC_SUBST(WITH_LIST, [""]) 29 30#Enable inter-library dependencies 31AC_ARG_ENABLE(interlib-deps, 32 [AC_HELP_STRING([--disable-interlib-deps ],[disable inter-library dependencies (might break builds)])], 33 [enable_interlib_deps="$enableval"], 34 [enable_interlib_deps="yes"]) 35 36AC_MSG_NOTICE([enable inter-library dependencies: $enable_interlib_deps]) 37if test "${enable_interlib_deps}" == "yes"; then 38 link_all_deplibs=yes 39 link_all_deplibs_CXX=yes 40else 41 link_all_deplibs=no 42 link_all_deplibs_CXX=no 43fi 44 45dnl Fix default variables - "prefix" variable if not specified 46if test "$prefix" = "NONE"; then 47 prefix="/usr" 48 49 dnl Fix "localstatedir" variable if not specified 50 if test "$localstatedir" = "\${prefix}/var"; then 51 localstatedir="/var" 52 fi 53 dnl Fix "sysconfdir" variable if not specified 54 if test "$sysconfdir" = "\${prefix}/etc"; then 55 sysconfdir="/etc" 56 fi 57 dnl Fix "libdir" variable if not specified 58 if test "$libdir" = "\${exec_prefix}/lib"; then 59 if test -e /usr/lib64; then 60 libdir="/usr/lib64" 61 else 62 libdir="/usr/lib" 63 fi 64 fi 65fi 66 67if test "$srcdir" = "."; then 68 AC_MSG_NOTICE([building in place srcdir:$srcdir]) 69 AC_DEFINE([BUILDING_IN_PLACE], 1, [building in place]) 70else 71 AC_MSG_NOTICE([building out of tree srcdir:$srcdir]) 72fi 73 74# Checks for programs. 75 76# check stolen from gnulib/m4/gnu-make.m4 77if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then 78 AC_MSG_ERROR([you don't seem to have GNU make; it is required]) 79fi 80 81sinclude(corosync-default.m4) 82 83AC_PROG_CC 84AC_PROG_INSTALL 85AC_PROG_LN_S 86AC_PROG_MAKE_SET 87AC_PROG_SED 88 89AC_CHECK_PROGS([GROFF], [groff]) 90AC_CHECK_PROGS([PKGCONFIG], [pkg-config]) 91AC_CHECK_PROGS([AUGTOOL], [augtool]) 92AC_CHECK_PROGS([DOT], [dot]) 93AC_CHECK_PROGS([DOXYGEN], [doxygen]) 94AC_CHECK_PROGS([AWK], [awk]) 95AC_CHECK_PROGS([SED], [sed]) 96AC_PATH_PROG([BASHPATH], [bash]) 97 98# Checks for compiler characteristics. 99AC_PROG_GCC_TRADITIONAL 100AC_C_CONST 101AC_C_INLINE 102AC_C_VOLATILE 103 104# Checks for header files. 105AC_HEADER_DIRENT 106AC_HEADER_STDC 107AC_HEADER_SYS_WAIT 108AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdint.h \ 109 stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h \ 110 sys/time.h syslog.h unistd.h sys/types.h getopt.h malloc.h \ 111 utmpx.h ifaddrs.h stddef.h sys/file.h sys/uio.h]) 112 113# Check entries in specific structs 114AC_CHECK_MEMBER([struct sockaddr_in.sin_len], 115 [AC_DEFINE_UNQUOTED([HAVE_SOCK_SIN_LEN], [1], [sockaddr_in needs sin_len])], 116 [], [[#include <netinet/in.h>]]) 117AC_CHECK_MEMBER([struct sockaddr_in6.sin6_len], 118 [AC_DEFINE_UNQUOTED([HAVE_SOCK_SIN6_LEN], [1], [sockaddr_in6 needs sin6_len])], 119 [], [[#include <netinet/in.h>]]) 120AC_CHECK_MEMBER([struct msghdr.msg_control], 121 [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_CONTROL], [1], [msghdr has msg_control])], 122 [], [[#include <sys/socket.h>]]) 123AC_CHECK_MEMBER([struct msghdr.msg_controllen], 124 [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_CONTROLLEN], [1], [msghdr has msg_controllen])], 125 [], [[#include <sys/socket.h>]]) 126AC_CHECK_MEMBER([struct msghdr.msg_flags], 127 [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_FLAGS], [1], [msghdr has msg_flags])], 128 [], [[#include <sys/socket.h>]]) 129AC_CHECK_MEMBER([struct msghdr.msg_accrights], 130 [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_ACCRIGHTS], [1], [msghdr has msg_accrights])], 131 [], [[#include <sys/socket.h>]]) 132AC_CHECK_MEMBER([struct msghdr.msg_accrightslen], 133 [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_ACCRIGHTSLEN], [1], [msghdr has msg_accrightslen])], 134 [], [[#include <sys/socket.h>]]) 135 136# Checks for typedefs. 137AC_TYPE_UID_T 138AC_TYPE_INT16_T 139AC_TYPE_INT32_T 140AC_TYPE_INT64_T 141AC_TYPE_INT8_T 142AC_TYPE_UINT16_T 143AC_TYPE_UINT32_T 144AC_TYPE_UINT64_T 145AC_TYPE_UINT8_T 146AC_TYPE_SIZE_T 147AC_TYPE_SSIZE_T 148 149# Checks for libraries. 150PKG_CHECK_MODULES([nss],[nss]) 151SAVE_CPPFLAGS="$CPPFLAGS" 152SAVE_LIBS="$LIBS" 153PKG_CHECK_MODULES([LIBQB], [libqb]) 154CPPFLAGS="$CPPFLAGS $LIBQB_CFLAGS" 155LIBS="$LIBS $LIBQB_LIBS" 156AC_CHECK_LIB([qb], [qb_log_thread_priority_set], \ 157 have_qb_log_thread_priority_set="yes", \ 158 have_qb_log_thread_priority_set="no") 159if test "x${have_qb_log_thread_priority_set}" = xyes; then 160 AC_DEFINE_UNQUOTED([HAVE_QB_LOG_THREAD_PRIORITY_SET], 1, [have qb_log_thread_priority_set]) 161fi 162CPPFLAGS="$SAVE_CPPFLAGS" 163LIBS="$SAVE_LIBS" 164AC_CHECK_LIB([pthread], [pthread_create]) 165AC_CHECK_LIB([socket], [socket]) 166AC_CHECK_LIB([nsl], [t_open]) 167AC_CHECK_LIB([rt], [sched_getscheduler]) 168AC_CHECK_LIB([z], [crc32], 169 AM_CONDITIONAL([BUILD_CPGHUM], true), 170 AM_CONDITIONAL([BUILD_CPGHUM], false)) 171 172# Checks for library functions. 173AC_FUNC_ALLOCA 174AC_FUNC_CLOSEDIR_VOID 175AC_FUNC_ERROR_AT_LINE 176AC_FUNC_FORK 177AC_FUNC_MALLOC 178AC_FUNC_MEMCMP 179AC_FUNC_MMAP 180AC_FUNC_REALLOC 181AC_FUNC_SELECT_ARGTYPES 182AC_FUNC_VPRINTF 183 184AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fdatasync \ 185 fcntl getcwd getpeerucred getpeereid gettimeofday inet_ntoa \ 186 memmove memset mkdir scandir select socket strcasecmp strchr \ 187 strdup strerror strrchr strspn strstr pthread_setschedparam \ 188 sched_get_priority_max sched_setscheduler getifaddrs \ 189 clock_gettime ftruncate gethostname localtime_r munmap strtol]) 190 191AC_CONFIG_FILES([Makefile 192 exec/Makefile 193 include/Makefile 194 init/Makefile 195 lib/Makefile 196 common_lib/Makefile 197 man/Makefile 198 pkgconfig/Makefile 199 test/Makefile 200 cts/Makefile 201 cts/agents/Makefile 202 cts/CTSvars.py 203 tools/Makefile 204 conf/Makefile 205 qdevices/Makefile 206 Doxyfile 207 conf/logrotate/Makefile]) 208 209### Local business 210 211dnl =============================================== 212dnl Functions / global M4 variables 213dnl =============================================== 214dnl Global list of LIB names 215m4_define([local_soname_list], [])dnl 216 217dnl Upcase parameter 218m4_define([local_upcase], [translit([$*], [a-z], [A-Z])])dnl 219 220dnl M4 macro for include lib/lib$1.soname and subst that 221m4_define([LIB_SONAME_IMPORT],[dnl 222m4_define([local_libname], local_upcase($1)[_SONAME])dnl 223m4_define([local_soname], translit(m4_sinclude(lib/lib$1.verso), [ 224], []))dnl 225local_libname="local_soname"dnl 226m4_define([local_soname_list], m4_defn([local_soname_list])[,]local_libname[,]local_upcase($1))dnl 227AC_SUBST(local_libname)dnl 228])dnl 229 230dnl M4 macro for print padspaces (used in LIB_MSG_RESULT). It takes 2 arguments, length of string to pad and desired 231dnl (padded) length 232m4_define([m4_printpadspace],[ifelse(m4_eval([$2 - $1 < 1]),[1],,[ ][m4_printpadspace([$1],m4_eval([$2 - 1]))])])dnl 233 234dnl Show AC_MSG_RESULT for specific libraries 235m4_define([LIB_MSG_RESULT], [ifelse([$#], [1], ,[dnl 236AC_MSG_RESULT([ $2 Library SONAME m4_printpadspace(len($2),8) = ${$1}]) 237LIB_MSG_RESULT(m4_shift(m4_shift($@)))dnl 238])])dnl 239 240# =============================================== 241# Helpers 242# =============================================== 243 244## check if the compiler supports -Werror -Wunknown-warning-option 245AC_MSG_CHECKING([whether $CC supports -Wunknown-warning-option -Werror]) 246BACKUP="$CPPFLAGS" 247CPPFLAGS="$CPPFLAGS -Werror -Wunknown-warning-option" 248AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], 249 [unknown_warnings_as_errors='-Wunknown-warning-option -Werror'; AC_MSG_RESULT([yes])], 250 [unknown_warnings_as_errors=''; AC_MSG_RESULT([no])]) 251CPPFLAGS="$BACKUP" 252 253## helper for CC stuff 254cc_supports_flag() { 255 BACKUP="$CPPFLAGS" 256 CPPFLAGS="$CPPFLAGS $@ $unknown_warnings_as_errors" 257 AC_MSG_CHECKING([whether $CC supports "$@"]) 258 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], 259 [RC=0; AC_MSG_RESULT([yes])], 260 [RC=1; AC_MSG_RESULT([no])]) 261 CPPFLAGS="$BACKUP" 262 return $RC 263} 264 265## cleanup 266AC_MSG_NOTICE(Sanitizing prefix: ${prefix}) 267case $prefix in 268 NONE) prefix=/usr/local;; 269esac 270 271AC_MSG_NOTICE(Sanitizing exec_prefix: ${exec_prefix}) 272case $exec_prefix in 273 dnl For consistency with Corosync, map NONE->$prefix 274 NONE) exec_prefix=$prefix;; 275 prefix) exec_prefix=$prefix;; 276esac 277 278## local defines 279PACKAGE_FEATURES="" 280 281LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \ 282 -badflag -D__gnuc_va_list=va_list -D__attribute\(x\)=" 283 284# default libraries SONAME 285SOMAJOR="5" 286SOMINOR="0" 287SOMICRO="0" 288SONAME="${SOMAJOR}.${SOMINOR}.${SOMICRO}" 289 290# specific libraries SONAME 291LIB_SONAME_IMPORT([cfg]) 292LIB_SONAME_IMPORT([cpg]) 293LIB_SONAME_IMPORT([quorum]) 294LIB_SONAME_IMPORT([sam]) 295LIB_SONAME_IMPORT([votequorum]) 296LIB_SONAME_IMPORT([cmap]) 297 298# local options 299AC_ARG_ENABLE([ansi], 300 [ --enable-ansi : force to build with ANSI standards. ], 301 [ default="no" ]) 302 303AC_ARG_ENABLE([fatal-warnings], 304 [ --enable-fatal-warnings : enable fatal warnings. ], 305 [ default="no" ]) 306 307AC_ARG_ENABLE([debug], 308 [ --enable-debug : enable debug build. ], 309 [ default="no" ]) 310 311AC_ARG_ENABLE([secure-build], 312 [ --enable-secure-build : enable PIE/RELRO build. ], 313 [], 314 [enable_secure_build="yes"]) 315 316AC_ARG_ENABLE([user-flags], 317 [ --enable-user-flags : rely on user environment. ], 318 [ default="no" ]) 319 320AC_ARG_ENABLE([coverage], 321 [ --enable-coverage : coverage analysis of the codebase. ], 322 [ default="no" ]) 323 324AC_ARG_ENABLE([small-memory-footprint], 325 [ --enable-small-memory-footprint : Use small message queues and small messages sizes. ], 326 [ default="no" ]) 327 328AC_ARG_ENABLE([dbus], 329 [ --enable-dbus : dbus events. ],, 330 [ enable_dbus="no" ]) 331 332AC_ARG_ENABLE([testagents], 333 [ --enable-testagents : Install Test Agents. ],, 334 [ default="no" ]) 335 336AC_ARG_ENABLE([rdma], 337 [ --enable-rdma : Infiniband RDMA transport support ],, 338 [ enable_rdma="no" ]) 339AM_CONDITIONAL(BUILD_RDMA, test x$enable_rdma = xyes) 340 341AC_ARG_ENABLE([monitoring], 342 [ --enable-monitoring : resource monitoring ],, 343 [ default="no" ]) 344AM_CONDITIONAL(BUILD_MONITORING, test x$enable_monitoring = xyes) 345 346AC_ARG_ENABLE([watchdog], 347 [ --enable-watchdog : Watchdog support ],, 348 [ default="no" ]) 349AM_CONDITIONAL(BUILD_WATCHDOG, test x$enable_watchdog = xyes) 350 351AC_ARG_ENABLE([augeas], 352 [ --enable-augeas : Install the augeas lens for corosync.conf ],, 353 [ enable_augeas="no" ]) 354AM_CONDITIONAL(INSTALL_AUGEAS, test x$enable_augeas = xyes) 355 356AC_ARG_ENABLE([systemd], 357 [ --enable-systemd : Install systemd service files],, 358 [ enable_systemd="no" ]) 359AM_CONDITIONAL(INSTALL_SYSTEMD, test x$enable_systemd = xyes) 360 361AC_ARG_ENABLE([upstart], 362 [ --enable-upstart : Install upstart service files],, 363 [ enable_upstart="no" ]) 364AM_CONDITIONAL(INSTALL_UPSTART, test x$enable_upstart = xyes) 365 366AC_ARG_WITH([initconfigdir], 367 [AS_HELP_STRING([--with-initconfigdir=DIR], 368 [configuration directory @<:@SYSCONFDIR/sysconfig@:>@])], 369 [INITCONFIGDIR="$withval"], 370 [INITCONFIGDIR='${sysconfdir}/sysconfig']) 371AC_SUBST([INITCONFIGDIR]) 372 373AC_ARG_WITH([initddir], 374 [ --with-initddir=DIR : path to init script directory. ], 375 [ INITDDIR="$withval" ], 376 [ INITDDIR="$sysconfdir/init.d" ]) 377 378AC_ARG_WITH([systemddir], 379 [ --with-systemddir=DIR : path to systemd unit files directory. ], 380 [ SYSTEMDDIR="$withval" ], 381 [ SYSTEMDDIR="/lib/systemd/system" ]) 382 383AC_ARG_WITH([upstartdir], 384 [ --with-upstartdir=DIR : path to upstart config files directory. ], 385 [ UPSTARTDIR="$withval" ], 386 [ UPSTARTDIR="$sysconfdir/init" ]) 387 388AC_ARG_WITH([initwrappersdir], 389 [ --with-initwrappersdir=DIR : path to init wrappers files directory. ], 390 [ INITWRAPPERSDIR="$withval" ], 391 [ INITWRAPPERSDIR="$datarootdir/corosync" ]) 392 393AC_ARG_WITH([logdir], 394 [ --with-logdir=DIR : the base directory for corosync logging files. ], 395 [ LOGDIR="$withval" ], 396 [ LOGDIR="$localstatedir/log/cluster" ]) 397 398AC_ARG_WITH([logrotatedir], 399 [ --with-logrotatedir=DIR : the base directory for logrorate.d files. ], 400 [ LOGROTATEDIR="$withval" ], 401 [ LOGROTATEDIR="$sysconfdir/logrotate.d" ]) 402 403AC_ARG_ENABLE([snmp], 404 [ --enable-snmp : SNMP protocol support ], 405 [ default="no" ]) 406 407AC_ARG_ENABLE([xmlconf], 408 [ --enable-xmlconf : XML configuration support ],, 409 [ enable_xmlconf="no" ]) 410AM_CONDITIONAL(INSTALL_XMLCONF, test x$enable_xmlconf = xyes) 411 412AC_ARG_ENABLE([qdevices], 413 [ --enable-qdevices : Quorum devices support ],, 414 [ enable_qdevices="no" ]) 415AM_CONDITIONAL(BUILD_QDEVICES, test x$enable_qdevices = xyes) 416AC_ARG_ENABLE([qnetd], 417 [ --enable-qnetd : Quorum Net Daemon support ],, 418 [ enable_qnetd="no" ]) 419AM_CONDITIONAL(BUILD_QNETD, test x$enable_qnetd = xyes) 420AC_ARG_ENABLE([libcgroup], 421 [ --enable-libcgroup : Enable libcgroup support ],, 422 [ enable_libcgroup="no" ]) 423AM_CONDITIONAL(ENABLE_LIBCGROUP, test x$enable_libcgroup = xyes) 424 425# *FLAGS handling goes here 426 427ENV_CFLAGS="$CFLAGS" 428ENV_CPPFLAGS="$CPPFLAGS" 429ENV_LDFLAGS="$LDFLAGS" 430 431# debug build stuff 432if test "x${enable_debug}" = xyes; then 433 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) 434 OPT_CFLAGS="-O0" 435 PACKAGE_FEATURES="$PACKAGE_FEATURES debug" 436else 437 OPT_CFLAGS="-O3" 438fi 439 440# gdb flags 441if test "x${GCC}" = xyes; then 442 GDB_FLAGS="-ggdb3" 443else 444 GDB_FLAGS="-g" 445fi 446 447# Look for dbus-1 448if test "x${enable_dbus}" = xyes; then 449 PKG_CHECK_MODULES([DBUS],[dbus-1]) 450 AC_DEFINE_UNQUOTED([HAVE_DBUS], 1, [have dbus]) 451 PACKAGE_FEATURES="$PACKAGE_FEATURES dbus" 452 WITH_LIST="$WITH_LIST --with dbus" 453fi 454 455if test "x${enable_testagents}" = xyes; then 456 AC_DEFINE_UNQUOTED([HAVE_TESTAGENTS], 1, [have testagents]) 457 PACKAGE_FEATURES="$PACKAGE_FEATURES testagents" 458 WITH_LIST="$WITH_LIST --with testagents" 459fi 460 461if test "x${enable_rdma}" = xyes; then 462 PKG_CHECK_MODULES([rdmacm],[rdmacm]) 463 PKG_CHECK_MODULES([ibverbs],[ibverbs]) 464 AC_DEFINE_UNQUOTED([HAVE_RDMA], 1, [have rdmacm]) 465 PACKAGE_FEATURES="$PACKAGE_FEATURES rdma" 466 WITH_LIST="$WITH_LIST --with rdma" 467fi 468 469if test "x${enable_monitoring}" = xyes; then 470 PKG_CHECK_MODULES([statgrab], [libstatgrab]) 471 PKG_CHECK_MODULES([statgrabge090], [libstatgrab >= 0.90], 472 AC_DEFINE_UNQUOTED([HAVE_LIBSTATGRAB_GE_090], 1, [have libstatgrab >= 0.90]), 473 TMP_VARIABLE=1) 474 AC_DEFINE_UNQUOTED([HAVE_MONITORING], 1, [have resource monitoring]) 475 PACKAGE_FEATURES="$PACKAGE_FEATURES monitoring" 476 WITH_LIST="$WITH_LIST --with monitoring" 477fi 478 479if test "x${enable_watchdog}" = xyes; then 480 AC_CHECK_HEADER([linux/watchdog.h], [], [AC_MSG_ERROR([watchdog requires linux/watchdog.h])]) 481 AC_CHECK_HEADER([linux/reboot.h], [], [AC_MSG_ERROR([watchdog requires linux/reboot.h])]) 482 AC_DEFINE_UNQUOTED([HAVE_WATCHDOG], 1, [have watchdog]) 483 PACKAGE_FEATURES="$PACKAGE_FEATURES watchdog" 484 WITH_LIST="$WITH_LIST --with watchdog" 485fi 486 487if test "x${enable_augeas}" = xyes; then 488 PACKAGE_FEATURES="$PACKAGE_FEATURES augeas" 489fi 490if test "x${enable_systemd}" = xyes; then 491 PACKAGE_FEATURES="$PACKAGE_FEATURES systemd" 492 WITH_LIST="$WITH_LIST --with systemd" 493fi 494if test "x${enable_upstart}" = xyes; then 495 PACKAGE_FEATURES="$PACKAGE_FEATURES upstart" 496 WITH_LIST="$WITH_LIST --with upstart" 497fi 498if test "x${enable_xmlconf}" = xyes; then 499 PACKAGE_FEATURES="$PACKAGE_FEATURES xmlconf" 500 WITH_LIST="$WITH_LIST --with xmlconf" 501fi 502if test "x${enable_qdevices}" = xyes; then 503 PACKAGE_FEATURES="$PACKAGE_FEATURES qdevices" 504fi 505if test "x${enable_qnetd}" = xyes; then 506 PACKAGE_FEATURES="$PACKAGE_FEATURES qnetd" 507fi 508 509do_snmp=0 510if test "x${enable_snmp}" = xyes; then 511 AC_PATH_PROGS([SNMPCONFIG], [net-snmp-config]) 512 513 if test "x${SNMPCONFIG}" != "x"; then 514 AC_MSG_CHECKING([for snmp includes]) 515 SNMP_PREFIX=`$SNMPCONFIG --prefix` 516 SNMP_INCLUDES="-I$SNMP_PREFIX/include" 517 AC_MSG_RESULT([$SNMP_INCLUDES]) 518 519 AC_MSG_CHECKING([for snmp libraries]) 520 SNMP_LIBS=`$SNMPCONFIG --libs` 521 AC_MSG_RESULT([$SNMP_LIBS]) 522 AC_SUBST([SNMP_LIBS]) 523 524 saveCFLAGS="$CFLAGS" 525 CFLAGS="$CFLAGS $SNMP_INCLUDES" 526 AC_CHECK_HEADERS([net-snmp/net-snmp-config.h]) 527 CFLAGS="$saveCFLAGS" 528 529 if test "x${ac_cv_header_net_snmp_net_snmp_config_h}" != "xyes"; then 530 AC_MSG_ERROR([Unable to use net-snmp/net-snmp-config.h]) 531 fi 532 533 savedLibs=$LIBS 534 LIBS="$LIBS $SNMP_LIBS" 535 AC_CHECK_FUNCS([netsnmp_transport_open_client]) 536 if test $ac_cv_func_netsnmp_transport_open_client != yes; then 537 AC_CHECK_FUNCS([netsnmp_tdomain_transport]) 538 if test $ac_cv_func_netsnmp_tdomain_transport != yes; then 539 AC_MSG_ERROR([No usable SNMP client transport implementation found]) 540 fi 541 else 542 AC_DEFINE_UNQUOTED([NETSNMPV54], $NETSNMP_NEW_SUPPORT, [have net-snmp5.4 over]) 543 fi 544 LIBS=$savedLibs 545 546 do_snmp=1 547 PACKAGE_FEATURES="$PACKAGE_FEATURES snmp" 548 WITH_LIST="$WITH_LIST --with snmp" 549 AC_DEFINE_UNQUOTED([ENABLE_SNMP], $do_snmp, [Build in support for sending SNMP traps]) 550 else 551 AC_MSG_ERROR([You need the net_snmp development package to continue.]) 552 fi 553fi 554AM_CONDITIONAL(BUILD_SNMP, test "${do_snmp}" = "1") 555 556if test "x${enable_libcgroup}" = xyes; then 557 PKG_CHECK_MODULES([libcgroup], [libcgroup]) 558 AC_DEFINE_UNQUOTED([HAVE_LIBCGROUP], 1, [have libcgroup]) 559 PACKAGE_FEATURES="$PACKAGE_FEATURES libcgroup" 560 WITH_LIST="$WITH_LIST --with libcgroup" 561fi 562 563# extra warnings 564EXTRA_WARNINGS="" 565 566WARNLIST=" 567 all 568 shadow 569 missing-prototypes 570 missing-declarations 571 strict-prototypes 572 declaration-after-statement 573 pointer-arith 574 write-strings 575 cast-align 576 bad-function-cast 577 missing-format-attribute 578 format=2 579 format-security 580 format-nonliteral 581 no-long-long 582 unsigned-char 583 gnu89-inline 584 no-strict-aliasing 585 " 586 587for j in $WARNLIST; do 588 if cc_supports_flag -W$j; then 589 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j"; 590 fi 591done 592 593if test "x${enable_coverage}" = xyes && \ 594 cc_supports_flag -ftest-coverage && \ 595 cc_supports_flag -fprofile-arcs ; then 596 AC_MSG_NOTICE([Enabling Coverage (enable -O0 by default)]) 597 OPT_CFLAGS="-O0" 598 COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs" 599 COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs" 600 PACKAGE_FEATURES="$PACKAGE_FEATURES coverage" 601else 602 COVERAGE_CFLAGS="" 603 COVERAGE_LDFLAGS="" 604fi 605 606if test "x${enable_small_memory_footprint}" = xyes ; then 607 AC_DEFINE_UNQUOTED([HAVE_SMALL_MEMORY_FOOTPRINT], 1, [have small_memory_footprint]) 608 PACKAGE_FEATURES="$PACKAGE_FEATURES small-memory-footprint" 609fi 610 611if test "x${enable_ansi}" = xyes && \ 612 cc_supports_flag -std=iso9899:199409 ; then 613 AC_MSG_NOTICE([Enabling ANSI Compatibility]) 614 ANSI_CPPFLAGS="-ansi -DANSI_ONLY" 615 PACKAGE_FEATURES="$PACKAGE_FEATURES ansi" 616else 617 ANSI_CPPFLAGS="" 618fi 619 620if test "x${enable_fatal_warnings}" = xyes && \ 621 cc_supports_flag -Werror ; then 622 AC_MSG_NOTICE([Enabling Fatal Warnings (-Werror)]) 623 WERROR_CFLAGS="-Werror" 624 PACKAGE_FEATURES="$PACKAGE_FEATURES fatal-warnings" 625else 626 WERROR_CFLAGS="" 627fi 628 629# don't add addtional cflags 630if test "x${enable_user_flags}" = xyes; then 631 OPT_CFLAGS="" 632 GDB_FLAGS="" 633 EXTRA_WARNINGS="" 634fi 635 636if test "x${enable_secure_build}" = xyes; then 637 # stolen from apache configure snippet 638 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [ 639 save_CFLAGS=$CFLAGS 640 save_LDFLAGS=$LDFLAGS 641 CFLAGS="$CFLAGS -fPIE" 642 LDFLAGS="$LDFLAGS -pie" 643 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 644 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes]) 645 CFLAGS=$save_CFLAGS 646 LDFLAGS=$save_LDFLAGS 647 ]) 648 if test "$ap_cv_cc_pie" = "yes"; then 649 SEC_FLAGS="$SEC_FLAGS -fPIE" 650 SEC_LDFLAGS="$SEC_LDFLAGS -pie" 651 PACKAGE_FEATURES="$PACKAGE_FEATURES pie" 652 fi 653 654 # similar to above 655 AC_CACHE_CHECK([whether $CC accepts RELRO flags], [ap_cv_cc_relro], [ 656 save_LDFLAGS=$LDFLAGS 657 LDFLAGS="$LDFLAGS -Wl,-z,relro" 658 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 659 [ap_cv_cc_relro=yes], [ap_cv_cc_relro=no], [ap_cv_cc_relro=yes]) 660 LDFLAGS=$save_LDFLAGS 661 ]) 662 if test "$ap_cv_cc_relro" = "yes"; then 663 SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,relro" 664 PACKAGE_FEATURES="$PACKAGE_FEATURES relro" 665 fi 666 667 AC_CACHE_CHECK([whether $CC accepts BINDNOW flags], [ap_cv_cc_bindnow], [ 668 save_LDFLAGS=$LDFLAGS 669 LDFLAGS="$LDFLAGS -Wl,-z,now" 670 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 671 [ap_cv_cc_bindnow=yes], [ap_cv_cc_bindnow=no], [ap_cv_cc_bindnow=yes]) 672 LDFLAGS=$save_LDFLAGS 673 ]) 674 if test "$ap_cv_cc_bindnow" = "yes"; then 675 SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,now" 676 PACKAGE_FEATURES="$PACKAGE_FEATURES bindnow" 677 fi 678fi 679 680AC_CACHE_CHECK([whether $CC accepts "--as-needed"], [ap_cv_cc_as_needed], [ 681 save_LDFLAGS=$LDFLAGS 682 LDFLAGS="$LDFLAGS -Wl,--as-needed" 683 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 684 [ap_cv_cc_as_needed=yes], [ap_cv_cc_as_needed=no], [ap_cv_cc_as_needed=yes]) 685 LDFLAGS=$save_LDFLAGS 686]) 687 688AC_CACHE_CHECK([whether $CC accepts "--version-script"], [ap_cv_cc_version_script], [ 689 save_LDFLAGS=$LDFLAGS 690 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.versions" 691 echo "CONFTEST { };" >conftest.versions 692 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }], 693 [ap_cv_cc_version_script=yes], [ap_cv_cc_version_script=no], [ap_cv_cc_version_script=yes]) 694 rm -f conftest.versions 695 LDFLAGS=$save_LDFLAGS 696]) 697if test "$ap_cv_cc_version_script" = "yes"; then 698 AC_SUBST(VERSCRIPT_LDFLAGS, ["-Wl,--version-script=\$(srcdir)/lib\$(call get_libname,\$<).versions"]) 699else 700 AC_SUBST(VERSCRIPT_LDFLAGS, [""]) 701fi 702 703# define global include dirs 704INCLUDE_DIRS="$INCLUDE_DIRS -I\$(top_builddir)/include -I\$(top_srcdir)/include" 705INCLUDE_DIRS="$INCLUDE_DIRS -I\$(top_builddir)/include/corosync -I\$(top_srcdir)/include/corosync" 706 707# final build of *FLAGS 708CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $SEC_FLAGS $OPT_CFLAGS $GDB_FLAGS \ 709 $COVERAGE_CFLAGS $EXTRA_WARNINGS \ 710 $WERROR_CFLAGS $NSS_CFLAGS $LIBQB_CFLAGS \ 711 $SNMP_INCLUDES" 712CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS $INCLUDE_DIRS" 713LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic $SEC_LDFLAGS $COVERAGE_LDFLAGS" 714 715if test "$ap_cv_cc_as_needed" = "yes"; then 716 LDFLAGS="$LDFLAGS -Wl,--as-needed" 717fi 718 719# substitute what we need: 720AC_SUBST([BASHPATH]) 721AC_SUBST([INITDDIR]) 722AC_SUBST([SYSTEMDDIR]) 723AC_SUBST([UPSTARTDIR]) 724INITWRAPPERSDIR=$(eval echo ${INITWRAPPERSDIR}) 725AC_SUBST([INITWRAPPERSDIR]) 726AC_SUBST([LOGDIR]) 727AC_SUBST([LOGROTATEDIR]) 728 729AC_SUBST([SOMAJOR]) 730AC_SUBST([SOMINOR]) 731AC_SUBST([SOMICRO]) 732AC_SUBST([SONAME]) 733 734AM_CONDITIONAL(INSTALL_TESTAGENTS, test "${enable_testagents}" = "yes") 735AM_CONDITIONAL(INSTALL_MIB, test "${do_snmp}" = "1") 736AM_CONDITIONAL(INSTALL_DBUSCONF, test "${enable_dbus}" = "yes") 737AM_CONDITIONAL(AUGTOOL, test -n "${AUGTOOL}") 738AC_SUBST([NSS_LDFLAGS]) 739 740AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}") 741 742AC_SUBST([LINT_FLAGS]) 743 744AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [localstate directory]) 745 746COROSYSCONFDIR=${sysconfdir}/corosync 747AC_SUBST([COROSYSCONFDIR]) 748AC_DEFINE_UNQUOTED([COROSYSCONFDIR], "$(eval echo ${COROSYSCONFDIR})", [corosync config directory]) 749 750AC_DEFINE_UNQUOTED([PACKAGE_FEATURES], "${PACKAGE_FEATURES}", [corosync built-in features]) 751 752AC_OUTPUT 753 754AC_MSG_RESULT([]) 755AC_MSG_RESULT([$PACKAGE configuration:]) 756AC_MSG_RESULT([ Version = ${VERSION}]) 757AC_MSG_RESULT([ Prefix = ${prefix}]) 758AC_MSG_RESULT([ Executables = ${sbindir}]) 759AC_MSG_RESULT([ Man pages = ${mandir}]) 760AC_MSG_RESULT([ Doc dir = ${docdir}]) 761AC_MSG_RESULT([ Libraries = ${libdir}]) 762AC_MSG_RESULT([ Header files = ${includedir}]) 763AC_MSG_RESULT([ Arch-independent files = ${datadir}]) 764AC_MSG_RESULT([ State information = ${localstatedir}]) 765AC_MSG_RESULT([ System configuration = ${sysconfdir}]) 766AC_MSG_RESULT([ System init.d directory = ${INITDDIR}]) 767AC_MSG_RESULT([ System systemd directory = ${SYSTEMDDIR}]) 768AC_MSG_RESULT([ System upstart directory = ${UPSTARTDIR}]) 769AC_MSG_RESULT([ System init wraps dir = ${INITWRAPPERSDIR}]) 770AC_MSG_RESULT([ Log directory = ${LOGDIR}]) 771AC_MSG_RESULT([ Log rotate directory = ${LOGROTATEDIR}]) 772AC_MSG_RESULT([ corosync config dir = ${COROSYSCONFDIR}]) 773AC_MSG_RESULT([ init config directory = ${INITCONFIGDIR}]) 774AC_MSG_RESULT([ Features =${PACKAGE_FEATURES}]) 775AC_MSG_RESULT([]) 776AC_MSG_RESULT([$PACKAGE build info:]) 777AC_MSG_RESULT([ Library SONAME = ${SONAME}]) 778LIB_MSG_RESULT(m4_shift(local_soname_list))dnl 779AC_MSG_RESULT([ Default optimization = ${OPT_CFLAGS}]) 780AC_MSG_RESULT([ Default debug options = ${GDB_FLAGS}]) 781AC_MSG_RESULT([ Extra compiler warnings = ${EXTRA_WARNING}]) 782AC_MSG_RESULT([ Env. defined CFLAG = ${ENV_CFLAGS}]) 783AC_MSG_RESULT([ Env. defined CPPFLAGS = ${ENV_CPPFLAGS}]) 784AC_MSG_RESULT([ Env. defined LDFLAGS = ${ENV_LDFLAGS}]) 785AC_MSG_RESULT([ ANSI defined CPPFLAGS = ${ANSI_CPPFLAGS}]) 786AC_MSG_RESULT([ Coverage CFLAGS = ${COVERAGE_CFLAGS}]) 787AC_MSG_RESULT([ Coverage LDFLAGS = ${COVERAGE_LDFLAGS}]) 788AC_MSG_RESULT([ Fatal War. CFLAGS = ${WERROR_CFLAGS}]) 789AC_MSG_RESULT([ Final CFLAGS = ${CFLAGS}]) 790AC_MSG_RESULT([ Final CPPFLAGS = ${CPPFLAGS}]) 791AC_MSG_RESULT([ Final LDFLAGS = ${LDFLAGS}]) 792