warnings.m4 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # warnings.m4 serial 11
  2. # modified for strace project
  3. dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
  4. dnl This file is free software; the Free Software Foundation
  5. dnl gives unlimited permission to copy and/or distribute it,
  6. dnl with or without modifications, as long as this notice is preserved.
  7. dnl From Simon Josefsson
  8. # gl_AS_VAR_APPEND(VAR, VALUE)
  9. # ----------------------------
  10. # Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
  11. m4_ifdef([AS_VAR_APPEND],
  12. [m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
  13. [m4_define([gl_AS_VAR_APPEND],
  14. [AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
  15. # gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
  16. # [PROGRAM = AC_LANG_PROGRAM()])
  17. # -----------------------------------------------------------------
  18. # Check if the compiler supports OPTION when compiling PROGRAM.
  19. #
  20. # FIXME: gl_Warn must be used unquoted until we can assume Autoconf
  21. # 2.64 or newer.
  22. AC_DEFUN([gl_COMPILER_OPTION_IF],
  23. [AS_VAR_PUSHDEF([gl_Flags], _AC_LANG_PREFIX[]FLAGS)dnl
  24. AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]gl_Flags[]_$1])dnl
  25. AS_LITERAL_IF([$1],
  26. [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
  27. [gl_positive="$1"
  28. case $gl_positive in
  29. -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
  30. esac
  31. m4_pushdef([gl_Positive], [$gl_positive])])dnl
  32. AC_CACHE_CHECK([whether $[]_AC_CC[] handles $1], m4_defn([gl_Warn]), [
  33. gl_save_compiler_FLAGS="$gl_Flags"
  34. gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
  35. [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
  36. AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
  37. [AS_VAR_SET(gl_Warn, [yes])],
  38. [AS_VAR_SET(gl_Warn, [no])])
  39. gl_Flags="$gl_save_compiler_FLAGS"
  40. ])
  41. AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
  42. m4_popdef([gl_Positive])dnl
  43. AS_VAR_POPDEF([gl_Flags])dnl
  44. AS_VAR_POPDEF([gl_Warn])dnl
  45. ])
  46. # gl_UNKNOWN_WARNINGS_ARE_ERRORS
  47. # ------------------------------
  48. # Clang doesn't complain about unknown warning options unless one also
  49. # specifies -Wunknown-warning-option -Werror. Detect this.
  50. AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
  51. [AS_IF([test x${gl_unknown_warnings_are_errors+set} = x],
  52. [gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
  53. [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
  54. [gl_unknown_warnings_are_errors=])
  55. ])
  56. ])
  57. # gl_WARN_ADD(OPTION, [VARIABLE = WARN_[]_AC_LANG_PREFIX[]FLAGS],
  58. # [PROGRAM = AC_LANG_PROGRAM()])
  59. # ---------------------------------------------
  60. # Adds parameter to WARN_[]_AC_LANG_PREFIX[]FLAGS if the compiler supports it
  61. # when compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
  62. #
  63. # If VARIABLE is a variable name, AC_SUBST it.
  64. AC_DEFUN([gl_WARN_ADD],
  65. [AS_VAR_PUSHDEF([gl_WARN_FLAGS], [WARN_[]_AC_LANG_PREFIX[]FLAGS])dnl
  66. gl_UNKNOWN_WARNINGS_ARE_ERRORS
  67. gl_COMPILER_OPTION_IF([$1],
  68. [gl_AS_VAR_APPEND(m4_if([$2], [], [gl_WARN_FLAGS], [[$2]]), [" $1"])],
  69. [],
  70. [$3])
  71. m4_ifval([$2],
  72. [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
  73. [AC_SUBST(gl_WARN_FLAGS)])dnl
  74. AS_VAR_POPDEF([gl_WARN_FLAGS])dnl
  75. ])
  76. # Local Variables:
  77. # mode: autoconf
  78. # End: