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