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