Blame m4/warnings.m4

Packit Service 4684c1
# warnings.m4 serial 14
Packit Service 4684c1
dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
Packit Service 4684c1
dnl This file is free software; the Free Software Foundation
Packit Service 4684c1
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 4684c1
dnl with or without modifications, as long as this notice is preserved.
Packit Service 4684c1
Packit Service 4684c1
dnl From Simon Josefsson
Packit Service 4684c1
Packit Service 4684c1
# gl_AS_VAR_APPEND(VAR, VALUE)
Packit Service 4684c1
# ----------------------------
Packit Service 4684c1
# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
Packit Service 4684c1
m4_ifdef([AS_VAR_APPEND],
Packit Service 4684c1
[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
Packit Service 4684c1
[m4_define([gl_AS_VAR_APPEND],
Packit Service 4684c1
[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
Packit Service 4684c1
Packit Service 4684c1
Packit Service 4684c1
# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
Packit Service 4684c1
#                       [PROGRAM = AC_LANG_PROGRAM()])
Packit Service 4684c1
# -----------------------------------------------------------------
Packit Service 4684c1
# Check if the compiler supports OPTION when compiling PROGRAM.
Packit Service 4684c1
#
Packit Service 4684c1
# The effects of this macro depend on the current language (_AC_LANG).
Packit Service 4684c1
AC_DEFUN([gl_COMPILER_OPTION_IF],
Packit Service 4684c1
[
Packit Service 4684c1
dnl FIXME: gl_Warn must be used unquoted until we can assume Autoconf
Packit Service 4684c1
dnl 2.64 or newer.
Packit Service 4684c1
AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
Packit Service 4684c1
AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
Packit Service 4684c1
AS_LITERAL_IF([$1],
Packit Service 4684c1
  [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
Packit Service 4684c1
  [gl_positive="$1"
Packit Service 4684c1
case $gl_positive in
Packit Service 4684c1
  -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
Packit Service 4684c1
esac
Packit Service 4684c1
m4_pushdef([gl_Positive], [$gl_positive])])dnl
Packit Service 4684c1
AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
Packit Service 4684c1
  gl_save_compiler_FLAGS="$gl_Flags"
Packit Service 4684c1
  gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
Packit Service 4684c1
    [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
Packit Service 4684c1
  AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
Packit Service 4684c1
                 [AS_VAR_SET(gl_Warn, [yes])],
Packit Service 4684c1
                 [AS_VAR_SET(gl_Warn, [no])])
Packit Service 4684c1
  gl_Flags="$gl_save_compiler_FLAGS"
Packit Service 4684c1
])
Packit Service 4684c1
AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
Packit Service 4684c1
m4_popdef([gl_Positive])dnl
Packit Service 4684c1
AS_VAR_POPDEF([gl_Flags])dnl
Packit Service 4684c1
AS_VAR_POPDEF([gl_Warn])dnl
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# gl_UNKNOWN_WARNINGS_ARE_ERRORS
Packit Service 4684c1
# ------------------------------
Packit Service 4684c1
# Clang doesn't complain about unknown warning options unless one also
Packit Service 4684c1
# specifies -Wunknown-warning-option -Werror.  Detect this.
Packit Service 4684c1
#
Packit Service 4684c1
# The effects of this macro depend on the current language (_AC_LANG).
Packit Service 4684c1
AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
Packit Service 4684c1
[_AC_LANG_DISPATCH([$0], _AC_LANG, $@)])
Packit Service 4684c1
Packit Service 4684c1
# Specialization for _AC_LANG = C. This macro can be AC_REQUIREd.
Packit Service 4684c1
# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
Packit Service 4684c1
m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C)],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_LANG_PUSH([C])
Packit Service 4684c1
  gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
Packit Service 4684c1
  AC_LANG_POP([C])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Specialization for _AC_LANG = C++. This macro can be AC_REQUIREd.
Packit Service 4684c1
# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
Packit Service 4684c1
m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(C++)],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_LANG_PUSH([C++])
Packit Service 4684c1
  gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
Packit Service 4684c1
  AC_LANG_POP([C++])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Specialization for _AC_LANG = Objective C. This macro can be AC_REQUIREd.
Packit Service 4684c1
# Use of m4_defun rather than AC_DEFUN works around a bug in autoconf < 2.63b.
Packit Service 4684c1
m4_defun([gl_UNKNOWN_WARNINGS_ARE_ERRORS(Objective C)],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_LANG_PUSH([Objective C])
Packit Service 4684c1
  gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL
Packit Service 4684c1
  AC_LANG_POP([Objective C])
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS_IMPL],
Packit Service 4684c1
[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
Packit Service 4684c1
   [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
Packit Service 4684c1
   [gl_unknown_warnings_are_errors=])])
Packit Service 4684c1
Packit Service 4684c1
# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS/WARN_CXXFLAGS],
Packit Service 4684c1
#             [PROGRAM = AC_LANG_PROGRAM()])
Packit Service 4684c1
# -----------------------------------------------------------
Packit Service 4684c1
# Adds parameter to WARN_CFLAGS/WARN_CXXFLAGS if the compiler supports it
Packit Service 4684c1
# when compiling PROGRAM.  For example, gl_WARN_ADD([-Wparentheses]).
Packit Service 4684c1
#
Packit Service 4684c1
# If VARIABLE is a variable name, AC_SUBST it.
Packit Service 4684c1
#
Packit Service 4684c1
# The effects of this macro depend on the current language (_AC_LANG).
Packit Service 4684c1
AC_DEFUN([gl_WARN_ADD],
Packit Service 4684c1
[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS(]_AC_LANG[)])
Packit Service 4684c1
gl_COMPILER_OPTION_IF([$1],
Packit Service 4684c1
  [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_]_AC_LANG_PREFIX[FLAGS]], [[$2]]), [" $1"])],
Packit Service 4684c1
  [],
Packit Service 4684c1
  [$3])
Packit Service 4684c1
m4_ifval([$2],
Packit Service 4684c1
         [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
Packit Service 4684c1
         [AC_SUBST([WARN_]_AC_LANG_PREFIX[FLAGS])])dnl
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Local Variables:
Packit Service 4684c1
# mode: autoconf
Packit Service 4684c1
# End: