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