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