]> git.proxmox.com Git - mirror_corosync-qdevice.git/blame - configure.ac
spec: Use different BuildRequires for SUSE
[mirror_corosync-qdevice.git] / configure.ac
CommitLineData
9a1955a7
JF
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-qdevice],
8 m4_esyscmd([build-aux/git-version-gen .tarball-version]),
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([qdevices/corosync-qdevice.c])
21AC_CONFIG_HEADER([config.h])
22AC_CONFIG_MACRO_DIR([m4])
23
24AC_CANONICAL_HOST
25
26AC_LANG([C])
27
28AC_SUBST(WITH_LIST, [""])
29
30dnl Fix default variables - "prefix" variable if not specified
31if test "$prefix" = "NONE"; then
32 prefix="/usr"
33
34 dnl Fix "localstatedir" variable if not specified
35 if test "$localstatedir" = "\${prefix}/var"; then
36 localstatedir="/var"
37 fi
38 dnl Fix "sysconfdir" variable if not specified
39 if test "$sysconfdir" = "\${prefix}/etc"; then
40 sysconfdir="/etc"
41 fi
42 dnl Fix "libdir" variable if not specified
43 if test "$libdir" = "\${exec_prefix}/lib"; then
44 if test -e /usr/lib64; then
45 libdir="/usr/lib64"
46 else
47 libdir="/usr/lib"
48 fi
49 fi
50fi
51
52if test "$srcdir" = "."; then
53 AC_MSG_NOTICE([building in place srcdir:$srcdir])
54 AC_DEFINE([BUILDING_IN_PLACE], 1, [building in place])
55else
56 AC_MSG_NOTICE([building out of tree srcdir:$srcdir])
57fi
58
59# Checks for programs.
60
61# check stolen from gnulib/m4/gnu-make.m4
62if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then
63 AC_MSG_ERROR([you don't seem to have GNU make; it is required])
64fi
65
66AC_PROG_AWK
67AC_PROG_GREP
68AC_PROG_SED
69AC_PROG_CPP
70AC_PROG_CC
71AC_PROG_CC_C99
72if test "x$ac_cv_prog_cc_c99" = "xno"; then
73 AC_MSG_ERROR(["C99 support is required"])
74fi
75AC_PROG_LN_S
76AC_PROG_INSTALL
77AC_PROG_MAKE_SET
78PKG_PROG_PKG_CONFIG
79AC_PATH_PROG([BASHPATH], [bash])
80AC_CHECK_PROGS([GROFF], [groff])
81
82# Checks for typedefs.
83AC_TYPE_UID_T
84AC_TYPE_INT16_T
85AC_TYPE_INT32_T
86AC_TYPE_INT64_T
87AC_TYPE_INT8_T
88AC_TYPE_UINT16_T
89AC_TYPE_UINT32_T
90AC_TYPE_UINT64_T
91AC_TYPE_UINT8_T
92AC_TYPE_SIZE_T
93AC_TYPE_SSIZE_T
94
95# Checks for libraries.
96PKG_CHECK_MODULES([nss],[nss])
97PKG_CHECK_MODULES([qb], [libqb])
98PKG_CHECK_MODULES([corosync_common], [libcorosync_common])
99PKG_CHECK_MODULES([cmap], [libcmap])
100PKG_CHECK_MODULES([votequorum], [libvotequorum])
101
102AC_CONFIG_FILES([Makefile
103 qdevices/Makefile
104 man/Makefile
105 init/Makefile
106 ])
107
108# ===============================================
109# Helpers
110# ===============================================
111
112## helper for CC stuff
113cc_supports_flag() {
114 BACKUP="$CPPFLAGS"
115 CPPFLAGS="$CPPFLAGS $@ $unknown_warnings_as_errors"
116 AC_MSG_CHECKING([whether $CC supports "$@"])
117 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
118 [RC=0; AC_MSG_RESULT([yes])],
119 [RC=1; AC_MSG_RESULT([no])])
120 CPPFLAGS="$BACKUP"
121 return $RC
122}
123
124## local defines
125PACKAGE_FEATURES=""
126
127# local options
128AC_ARG_ENABLE([fatal-warnings],
129 [ --enable-fatal-warnings : enable fatal warnings. ],
130 [ default="no" ])
131
132AC_ARG_ENABLE([debug],
133 [ --enable-debug : enable debug build. ],
134 [ default="no" ])
135
136AC_ARG_ENABLE([secure-build],
137 [ --enable-secure-build : enable PIE/RELRO build. ],
138 [],
139 [enable_secure_build="yes"])
140
141AC_ARG_ENABLE([systemd],
142 [ --enable-systemd : Install systemd service files],,
143 [ enable_systemd="no" ])
144AM_CONDITIONAL(INSTALL_SYSTEMD, test x$enable_systemd = xyes)
145
146AC_ARG_WITH([initconfigdir],
147 [AS_HELP_STRING([--with-initconfigdir=DIR],
148 [configuration directory @<:@SYSCONFDIR/sysconfig@:>@])],
149 [INITCONFIGDIR="$withval"],
150 [INITCONFIGDIR='${sysconfdir}/sysconfig'])
151AC_SUBST([INITCONFIGDIR])
152
153AC_ARG_WITH([initddir],
154 [ --with-initddir=DIR : path to init script directory. ],
155 [ INITDDIR="$withval" ],
156 [ INITDDIR="$sysconfdir/init.d" ])
157
158AC_ARG_WITH([systemddir],
159 [ --with-systemddir=DIR : path to systemd unit files directory. ],
160 [ SYSTEMDDIR="$withval" ],
161 [ SYSTEMDDIR="/lib/systemd/system" ])
162
163AC_ARG_ENABLE([qdevices],
164 [ --disable-qdevices : Quorum devices support ],,
165 [ enable_qdevices="yes" ])
166AM_CONDITIONAL(BUILD_QDEVICES, test x$enable_qdevices = xyes)
167AC_ARG_ENABLE([qnetd],
168 [ --disable-qnetd : Quorum Net Daemon support ],,
169 [ enable_qnetd="yes" ])
170AM_CONDITIONAL(BUILD_QNETD, test x$enable_qnetd = xyes)
171
172# *FLAGS handling goes here
173
174ENV_CFLAGS="$CFLAGS"
175ENV_CPPFLAGS="$CPPFLAGS"
176ENV_LDFLAGS="$LDFLAGS"
177
178# debug build stuff
179if test "x${enable_debug}" = xyes; then
180 AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
181 OPT_CFLAGS="-O0"
182 PACKAGE_FEATURES="$PACKAGE_FEATURES debug"
183else
184 OPT_CFLAGS="-O3"
185fi
186
187# gdb flags
188if test "x${GCC}" = xyes; then
189 GDB_FLAGS="-ggdb3"
190else
191 GDB_FLAGS="-g"
192fi
193
194if test "x${enable_systemd}" = xyes; then
195 PKG_CHECK_MODULES([libsystemd], [libsystemd])
196 AC_DEFINE([HAVE_LIBSYSTEMD], [1], [have systemd interface library])
197 PACKAGE_FEATURES="$PACKAGE_FEATURES systemd"
198 WITH_LIST="$WITH_LIST --with systemd"
199fi
200if test "x${enable_qdevices}" = xyes; then
201 PACKAGE_FEATURES="$PACKAGE_FEATURES qdevices"
202fi
203if test "x${enable_qnetd}" = xyes; then
204 PACKAGE_FEATURES="$PACKAGE_FEATURES qnetd"
205fi
206
207# extra warnings
208EXTRA_WARNINGS=""
209
210WARNLIST="
211 all
212 shadow
213 missing-prototypes
214 missing-declarations
215 strict-prototypes
216 declaration-after-statement
217 pointer-arith
218 write-strings
219 cast-align
220 bad-function-cast
221 missing-format-attribute
222 format=2
223 format-security
224 format-nonliteral
225 no-long-long
226 unsigned-char
227 gnu89-inline
228 no-strict-aliasing
229 "
230
231for j in $WARNLIST; do
232 if cc_supports_flag -W$j; then
233 EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
234 fi
235done
236
237if test "x${enable_fatal_warnings}" = xyes && \
238 cc_supports_flag -Werror ; then
239 AC_MSG_NOTICE([Enabling Fatal Warnings (-Werror)])
240 WERROR_CFLAGS="-Werror"
241 PACKAGE_FEATURES="$PACKAGE_FEATURES fatal-warnings"
242else
243 WERROR_CFLAGS=""
244fi
245
246if test "x${enable_secure_build}" = xyes; then
247 # stolen from apache configure snippet
248 AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
249 save_CFLAGS=$CFLAGS
250 save_LDFLAGS=$LDFLAGS
251 CFLAGS="$CFLAGS -fPIE"
252 LDFLAGS="$LDFLAGS -pie"
253 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
254 [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes])
255 CFLAGS=$save_CFLAGS
256 LDFLAGS=$save_LDFLAGS
257 ])
258 if test "$ap_cv_cc_pie" = "yes"; then
259 SEC_FLAGS="$SEC_FLAGS -fPIE"
260 SEC_LDFLAGS="$SEC_LDFLAGS -pie"
261 PACKAGE_FEATURES="$PACKAGE_FEATURES pie"
262 fi
263
264 # similar to above
265 AC_CACHE_CHECK([whether $CC accepts RELRO flags], [ap_cv_cc_relro], [
266 save_LDFLAGS=$LDFLAGS
267 LDFLAGS="$LDFLAGS -Wl,-z,relro"
268 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
269 [ap_cv_cc_relro=yes], [ap_cv_cc_relro=no], [ap_cv_cc_relro=yes])
270 LDFLAGS=$save_LDFLAGS
271 ])
272 if test "$ap_cv_cc_relro" = "yes"; then
273 SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,relro"
274 PACKAGE_FEATURES="$PACKAGE_FEATURES relro"
275 fi
276
277 AC_CACHE_CHECK([whether $CC accepts BINDNOW flags], [ap_cv_cc_bindnow], [
278 save_LDFLAGS=$LDFLAGS
279 LDFLAGS="$LDFLAGS -Wl,-z,now"
280 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
281 [ap_cv_cc_bindnow=yes], [ap_cv_cc_bindnow=no], [ap_cv_cc_bindnow=yes])
282 LDFLAGS=$save_LDFLAGS
283 ])
284 if test "$ap_cv_cc_bindnow" = "yes"; then
285 SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,now"
286 PACKAGE_FEATURES="$PACKAGE_FEATURES bindnow"
287 fi
288fi
289
290AC_CACHE_CHECK([whether $CC accepts "--as-needed"], [ap_cv_cc_as_needed], [
291 save_LDFLAGS=$LDFLAGS
292 LDFLAGS="$LDFLAGS -Wl,--as-needed"
293 AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
294 [ap_cv_cc_as_needed=yes], [ap_cv_cc_as_needed=no], [ap_cv_cc_as_needed=yes])
295 LDFLAGS=$save_LDFLAGS
296])
297
298# define global include dirs
299INCLUDE_DIRS="$INCLUDE_DIRS -I\$(top_builddir)/include -I\$(top_srcdir)/include"
300
301# final build of *FLAGS
302CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $SEC_FLAGS $OPT_CFLAGS $GDB_FLAGS \
303 $EXTRA_WARNINGS \
304 $WERROR_CFLAGS"
305CPPFLAGS="$ENV_CPPFLAGS $INCLUDE_DIRS"
306LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic $SEC_LDFLAGS"
307
308if test "$ap_cv_cc_as_needed" = "yes"; then
309 LDFLAGS="$LDFLAGS -Wl,--as-needed"
310fi
311
312# substitute what we need:
313AC_SUBST([BASHPATH])
314AC_SUBST([INITDDIR])
315AC_SUBST([SYSTEMDDIR])
316AC_SUBST([LOGDIR])
317AC_SUBST([LOGROTATEDIR])
318
319AC_SUBST([SOMAJOR])
320AC_SUBST([SOMINOR])
321AC_SUBST([SOMICRO])
322AC_SUBST([SONAME])
323
324AC_SUBST([NSS_LDFLAGS])
325
326AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}")
327
328AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [localstate directory])
329
330COROSYSCONFDIR=${sysconfdir}/corosync
331AC_SUBST([COROSYSCONFDIR])
332AC_DEFINE_UNQUOTED([COROSYSCONFDIR], "$(eval echo ${COROSYSCONFDIR})", [corosync-qdevice config directory])
333
334AC_DEFINE_UNQUOTED([PACKAGE_FEATURES], "${PACKAGE_FEATURES}", [corosync-qdevice built-in features])
335
336AC_OUTPUT
337
338AC_MSG_RESULT([])
339AC_MSG_RESULT([$PACKAGE configuration:])
340AC_MSG_RESULT([ Version = ${VERSION}])
341AC_MSG_RESULT([ Prefix = ${prefix}])
342AC_MSG_RESULT([ Executables = ${sbindir}])
343AC_MSG_RESULT([ Man pages = ${mandir}])
344AC_MSG_RESULT([ Doc dir = ${docdir}])
345AC_MSG_RESULT([ Libraries = ${libdir}])
346AC_MSG_RESULT([ Header files = ${includedir}])
347AC_MSG_RESULT([ Arch-independent files = ${datadir}])
348AC_MSG_RESULT([ State information = ${localstatedir}])
349AC_MSG_RESULT([ System configuration = ${sysconfdir}])
350AC_MSG_RESULT([ System init.d directory = ${INITDDIR}])
351AC_MSG_RESULT([ System systemd directory = ${SYSTEMDDIR}])
352AC_MSG_RESULT([ Log directory = ${LOGDIR}])
353AC_MSG_RESULT([ Log rotate directory = ${LOGROTATEDIR}])
354AC_MSG_RESULT([ corosync config dir = ${COROSYSCONFDIR}])
355AC_MSG_RESULT([ init config directory = ${INITCONFIGDIR}])
356AC_MSG_RESULT([ Features = ${PACKAGE_FEATURES}])
357AC_MSG_RESULT([])
358AC_MSG_RESULT([$PACKAGE build info:])
359AC_MSG_RESULT([ Default optimization = ${OPT_CFLAGS}])
360AC_MSG_RESULT([ Default debug options = ${GDB_CFLAGS}])
361AC_MSG_RESULT([ Extra compiler warnings = ${EXTRA_WARNING}])
362AC_MSG_RESULT([ Env. defined CFLAG = ${ENV_CFLAGS}])
363AC_MSG_RESULT([ Env. defined CPPFLAGS = ${ENV_CPPFLAGS}])
364AC_MSG_RESULT([ Env. defined LDFLAGS = ${ENV_LDFLAGS}])
365AC_MSG_RESULT([ Fatal War. CFLAGS = ${WERROR_CFLAGS}])
366AC_MSG_RESULT([ Final CFLAGS = ${CFLAGS}])
367AC_MSG_RESULT([ Final CPPFLAGS = ${CPPFLAGS}])
368AC_MSG_RESULT([ Final LDFLAGS = ${LDFLAGS}])