3 # This file manages flags in CFLAGS, CPPFLAGS, LDFLAGS, and LIBS.
5 # Flags can come from two several sources:
6 # - entry to ./configure or on the configure command line (they are
7 # `precious' variables)
8 # - added by autoconf tests during the execution of configure
10 # Although Automake supports overriding variables when invoking 'make',
11 # we don't support it (mostly because autoconf doesn't). Instead, users
12 # should specify such variables when invoking ./configure.
14 # CFLAGS are a little bit more complicated: Amanda has two categories,
15 # mandatory CFLAGS, which should be used everywhere, and warning CFLAGS,
16 # which are only used on Amanda code (not gnulib or yacc-generated code).
17 # To accomplish this, mandatory CFLAGS go directl into CFLAGS, while
18 # warwnings go in AMANDA_WARNING_CFLAGS; these are then added to
19 # AM_CFLAGS by the Makefiles.
27 # Process variables given by the user on the command line,
28 # either as environment variables:
29 # CPPFLAGS=-Dfoo ./configure ...
30 # as assignments in the configure command line:
31 # ./configure LIBS=-lfoo ...
32 # or with the deprecated flags --with-cflags, --with-includes, and
35 AC_DEFUN([AMANDA_INIT_FLAGS],
37 # support deprecated ./configure flags to set various compiler flags
40 AS_HELP_STRING([--with-cflags=FLAGS],
41 [deprecated; use ./configure CFLAGS=... ]),
44 "" | y | ye | yes | n | no)
45 AC_MSG_ERROR([*** You must supply an argument to the --with-cflags option.])
53 AS_HELP_STRING([--with-includes=INCLUDE-DIRS],
54 [deprecated; use ./configure CPPFLAGS='-I.. -I..']),
57 "" | y | ye | yes | n | no)
58 AC_MSG_ERROR([*** You must supply an argument to the --with-includes option.])
62 for dir in $withval; do
63 if test -d "$dir"; then
64 CPPFLAGS="$CPPFLAGS -I$dir"
66 AMANDA_MSG_WARN([Include directory $dir does not exist.])
71 AC_ARG_WITH(libraries,
72 AS_HELP_STRING([--with-libraries=LIBRARY-DIRS],
73 [deprecated; use ./configure LDFLAGS='-L.. -L..' (add -R on Solaris, NetBSD)]),
76 "" | y | ye | yes | n | no)
77 AC_MSG_ERROR([*** You must supply an argument to the --with-libraries option.])
81 for dir in $withval; do
82 if test -d "$dir"; then
84 *-solaris2*,*-netbsd*)
85 LDFLAGS="$LDFLAGS -R$dir"
88 LDFLAGS="$LDFLAGS -L$dir"
90 AMANDA_MSG_WARN([Library directory $dir does not exist.])
95 # Disable strict-aliasing optimizations
96 AMANDA_DISABLE_GCC_FEATURE(strict-aliasing)
98 # Warn for just about everything
99 AMANDA_ENABLE_GCC_WARNING(all)
101 # And add any extra warnings too
102 AMANDA_TEST_GCC_FLAG(-Wextra, [
103 AMANDA_ADD_WARNING_CFLAG(-Wextra)
105 AMANDA_TEST_GCC_FLAG(-W, [
106 AMANDA_ADD_WARNING_CFLAG(-W)
109 AC_SUBST([AMANDA_WARNING_CFLAGS])
114 # AMANDA_STATIC_FLAGS(new_flags)
118 # Set AMANDA_STATIC_LDFLAGS to -static if --enable-static-binary
120 AC_DEFUN([AMANDA_STATIC_FLAGS],
122 AC_ARG_ENABLE(static-binary,
123 AS_HELP_STRING([--enable-static-binary],
124 [To build statically linked binaries]),
128 AMANDA_STATIC_LDFLAGS=-static
129 if test x"$enable_static" = x"no"; then
130 AC_MSG_ERROR([*** --enable-static-binary is incompatible with --disable-static])
134 AMANDA_STATIC_LDFLAGS=
138 AC_SUBST([AMANDA_STATIC_LDFLAGS])
143 # AMANDA_WERROR_FLAGS
147 # Set AMANDA_WERROR_FLAGS
149 AC_DEFUN([AMANDA_WERROR_FLAGS],
151 AC_ARG_ENABLE(werror,
152 AS_HELP_STRING([--enable-werror],
153 [To compile with -Werror compiler flag]),
157 AMANDA_ENABLE_GCC_WARNING(error)
169 # Set AMANDA_SWIG_ERROR
171 AC_DEFUN([AMANDA_SWIG_ERROR],
173 AC_ARG_ENABLE(swig-error,
174 AS_HELP_STRING([--enable-swig-error],
175 [To compile swiged C file with -Werror compiler flag]),
179 AMANDA_SWIG_PERL_CFLAGS=-Werror
182 AMANDA_SWIG_PERL_CFLAGS=
186 AC_SUBST([AMANDA_SWIG_PERL_CFLAGS])
191 # AMANDA_ADD_CFLAGS(new_flags)
195 # Add 'new_flags' to CFLAGS.
197 # 'new_flags' will be enclosed in double quotes in the resulting
200 AC_DEFUN([AMANDA_ADD_CFLAGS],
201 [CFLAGS="$CFLAGS $1"]
206 # AMANDA_ADD_CPPFLAGS(new_flags)
210 # Add 'new_flags' to CPPFLAGS.
212 # 'new_flags' will be enclosed in double quotes in the resulting
215 AC_DEFUN([AMANDA_ADD_CPPFLAGS],
216 [CPPFLAGS="$CPPFLAGS $1"]
221 # AMANDA_ADD_LDFLAGS(new_flags)
225 # Add 'new_flags' to LDFLAGS.
227 # 'new_flags' will be enclosed in double quotes in the resulting
230 AC_DEFUN([AMANDA_ADD_LDFLAGS],
231 [LDFLAGS="$LDFLAGS $1"]
236 # AMANDA_ADD_LIBS(new_flags)
240 # Add 'new_flags' to LIBS.
242 # 'new_flags' will be enclosed in double quotes in the resulting
245 AC_DEFUN([AMANDA_ADD_LIBS],
251 # AMANDA_DISABLE_GCC_FEATURE(feature)
255 # Disable feature 'feature' by adding flag -Wno-'feature' to
256 # AMANDA_FEATURE_CFLAGS.
258 AC_DEFUN([AMANDA_DISABLE_GCC_FEATURE],
260 # test for -W'feature', then add the 'no-' version.
261 AMANDA_TEST_GCC_FLAG(-f$1,
263 AMANDA_ADD_CFLAGS(-fno-$1)
264 AMANDA_ADD_CPPFLAGS(-fno-$1)
270 # AMANDA_ADD_WARNING_CFLAG(flag)
274 # Add 'flag' to AMANDA_WARNING_CFLAGS
276 AC_DEFUN([AMANDA_ADD_WARNING_CFLAG],
277 [AMANDA_WARNING_CFLAGS="$AMANDA_WARNING_CFLAGS $1"]
282 # AMANDA_ENABLE_GCC_WARNING(warning)
286 # Enable warning 'warning' by adding flag -W'warning' to
287 # AMANDA_WARNING_CFLAGS.
289 AC_DEFUN([AMANDA_ENABLE_GCC_WARNING],
291 AMANDA_TEST_GCC_FLAG(-W$1,
293 AMANDA_ADD_WARNING_CFLAG(-W$1)
299 # AMANDA_DISABLE_GCC_WARNING(warning)
303 # Disable warning 'warning' by adding flag -Wno-'warning' to
304 # AMANDA_WARNING_CFLAGS.
306 AC_DEFUN([AMANDA_DISABLE_GCC_WARNING],
308 # test for -W'warning', then add the 'no-' version.
309 AMANDA_TEST_GCC_FLAG(-W$1,
311 AMANDA_ADD_WARNING_CFLAG(-Wno-$1)
317 # AMANDA_TEST_GCC_FLAG(flag, action-if-found, action-if-not-found)
321 # See if CC is gcc, and if gcc -v --help contains the given flag. If so,
322 # run action-if-found; otherwise, run action-if-not-found.
324 # Intended for internal use in this file.
326 AC_DEFUN([AMANDA_TEST_GCC_FLAG],
328 AC_REQUIRE([AC_PROG_CC])
329 AC_REQUIRE([AC_PROG_EGREP])
330 AC_MSG_CHECKING(for gcc flag $1)
331 if test "x$GCC" = "xyes"; then
333 (gcc --help={target,optimizers,warnings,undocumented,params,c} 2>&1 ||
334 $CC -v --help 2>&1) |
335 $EGREP -- '[^[:alnum:]]$1[^[:alnum:]-]' 2>&1 > /dev/null
337 if test $? -eq 0; then
346 AC_MSG_RESULT(no (not using gcc))
349 if test x"$found_warning" = x"yes"; then
350 ifelse($2, [], [:], $2)
352 ifelse($3, [], [:], $3)
358 # AMANDA_SHOW_FLAGS_SUMMARY
362 # Show a summary of the flags with which Amanda was configured
364 AC_DEFUN([AMANDA_SHOW_FLAGS_SUMMARY],
366 echo "Compiler Flags:"
367 echo " CFLAGS: ${CFLAGS-(none)}"
368 echo " CPPFLAGS: ${CPPFLAGS-(none)}"
369 echo " LDFLAGS: ${LDFLAGS-(none)}"
370 echo " LIBS: ${LIBS-(none)}"