mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-27 07:29:32 +00:00
Enable many more compiler warnings
* m4/manywarnings.m4m, m4/warnings.m4: Import GNULIB warnings modules * m4/spice-compile-warnings.m4: Define SPICE_COMPILE_WARNINGS * configure.ac: Replace compile warning check with a call to SPICE_COMPILE_WARNINGS * client/Makefile.am: Use WARN_CXXFLAGS instead of WARN_CFLAGS Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
39565707a9
commit
d986fb466b
@ -213,7 +213,7 @@ INCLUDES = \
|
||||
$(SSL_CFLAGS) \
|
||||
$(XRANDR_CFLAGS) \
|
||||
$(XFIXES_CFLAGS) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(WARN_CXXFLAGS) \
|
||||
$(XINERAMA_CFLAGS) \
|
||||
$(CXIMAGE_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
77
configure.ac
77
configure.ac
@ -394,82 +394,7 @@ fi
|
||||
dnl ===========================================================================
|
||||
dnl check compiler flags
|
||||
|
||||
AC_DEFUN([SPICE_CC_TRY_FLAG], [
|
||||
AC_MSG_CHECKING([whether $CC supports $1])
|
||||
|
||||
spice_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $1"
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([ ])], [spice_cc_flag=yes], [spice_cc_flag=no])
|
||||
CFLAGS="$spice_save_CFLAGS"
|
||||
|
||||
if test "x$spice_cc_flag" = "xyes"; then
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
AC_MSG_RESULT([$spice_cc_flag])
|
||||
])
|
||||
|
||||
|
||||
dnl Use lots of warning flags with with gcc and compatible compilers
|
||||
|
||||
dnl Note: if you change the following variable, the cache is automatically
|
||||
dnl skipped and all flags rechecked. So there's no need to do anything
|
||||
dnl else. If for any reason you need to force a recheck, just change
|
||||
dnl MAYBE_WARN in an ignorable way (like adding whitespace)
|
||||
|
||||
dnl MAYBE_WARN="-Wall -Wno-sign-compare -Werror -Wno-deprecated-declarations"
|
||||
|
||||
if test "$red_target" = "windows"; then
|
||||
MAYBE_WARN="-Wall -Wno-sign-compare -Wno-deprecated-declarations"
|
||||
else
|
||||
MAYBE_WARN="-Wall -Wno-sign-compare -Wno-deprecated-declarations"
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(werror,
|
||||
AC_HELP_STRING([--enable-werror], [Use -Werror (if supported)]),
|
||||
set_werror="$enableval",[
|
||||
if test -f $srcdir/GITVERSION; then
|
||||
is_git_version=true
|
||||
set_werror=yes
|
||||
else
|
||||
set_werror=no
|
||||
fi
|
||||
])
|
||||
|
||||
# invalidate cached value if MAYBE_WARN has changed
|
||||
if test "x$spice_cv_warn_maybe" != "x$MAYBE_WARN"; then
|
||||
unset spice_cv_warn_cflags
|
||||
fi
|
||||
AC_CACHE_CHECK([for supported warning flags], spice_cv_warn_cflags, [
|
||||
echo
|
||||
WARN_CFLAGS=""
|
||||
|
||||
# Some warning options are not supported by all versions of
|
||||
# gcc, so test all desired options against the current
|
||||
# compiler.
|
||||
#
|
||||
# Note that there are some order dependencies
|
||||
# here. Specifically, an option that disables a warning will
|
||||
# have no net effect if a later option then enables that
|
||||
# warnings, (perhaps implicitly). So we put some grouped
|
||||
# options (-Wall and -Wextra) up front and the -Wno options
|
||||
# last.
|
||||
|
||||
for W in $MAYBE_WARN; do
|
||||
SPICE_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
|
||||
done
|
||||
if test "$set_werror" != "no"; then
|
||||
SPICE_CC_TRY_FLAG(["-Werror"], [WARN_CFLAGS="$WARN_CFLAGS -Werror"])
|
||||
fi
|
||||
|
||||
spice_cv_warn_cflags=$WARN_CFLAGS
|
||||
spice_cv_warn_maybe=$MAYBE_WARN
|
||||
|
||||
AC_MSG_CHECKING([which warning flags were supported])])
|
||||
WARN_CFLAGS="$spice_cv_warn_cflags"
|
||||
SPICE_CFLAGS="$SPICE_CFLAGS $WARN_CFLAGS"
|
||||
SPICE_COMPILE_WARNINGS
|
||||
|
||||
# use ximage.h for win32 build if it is found (no package for mingw32 atm)
|
||||
if test $os_win32 == "yes" ; then
|
||||
|
||||
184
m4/manywarnings.m4
Normal file
184
m4/manywarnings.m4
Normal file
@ -0,0 +1,184 @@
|
||||
# manywarnings.m4 serial 3
|
||||
dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Simon Josefsson
|
||||
|
||||
# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
|
||||
# --------------------------------------------------
|
||||
# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
|
||||
# Elements separated by whitespace. In set logic terms, the function
|
||||
# does OUTVAR = LISTVAR \ REMOVEVAR.
|
||||
AC_DEFUN([gl_MANYWARN_COMPLEMENT],
|
||||
[
|
||||
gl_warn_set=
|
||||
set x $2; shift
|
||||
for gl_warn_item
|
||||
do
|
||||
case " $3 " in
|
||||
*" $gl_warn_item "*)
|
||||
;;
|
||||
*)
|
||||
gl_warn_set="$gl_warn_set $gl_warn_item"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
$1=$gl_warn_set
|
||||
])
|
||||
|
||||
# gl_MANYWARN_ALL_GCC(VARIABLE)
|
||||
# -----------------------------
|
||||
# Add all documented GCC warning parameters to variable VARIABLE.
|
||||
# Note that you need to test them using gl_WARN_ADD if you want to
|
||||
# make sure your gcc understands it.
|
||||
AC_DEFUN([gl_MANYWARN_ALL_GCC],
|
||||
[
|
||||
dnl First, check if -Wno-missing-field-initializers is needed.
|
||||
dnl -Wmissing-field-initializers is implied by -W, but that issues
|
||||
dnl warnings with GCC version before 4.7, for the common idiom
|
||||
dnl of initializing types on the stack to zero, using { 0, }
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
if test -n "$GCC"; then
|
||||
|
||||
dnl First, check -W -Werror -Wno-missing-field-initializers is supported
|
||||
dnl with the current $CC $CFLAGS $CPPFLAGS.
|
||||
AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
|
||||
AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]], [[]])],
|
||||
[gl_cv_cc_nomfi_supported=yes],
|
||||
[gl_cv_cc_nomfi_supported=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
|
||||
|
||||
if test "$gl_cv_cc_nomfi_supported" = yes; then
|
||||
dnl Now check whether -Wno-missing-field-initializers is needed
|
||||
dnl for the { 0, } construct.
|
||||
AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
|
||||
AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -W -Werror"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[void f (void)
|
||||
{
|
||||
typedef struct { int a; int b; } s_t;
|
||||
s_t s1 = { 0, };
|
||||
}
|
||||
]],
|
||||
[[]])],
|
||||
[gl_cv_cc_nomfi_needed=no],
|
||||
[gl_cv_cc_nomfi_needed=yes])
|
||||
CFLAGS="$gl_save_CFLAGS"
|
||||
])
|
||||
AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
|
||||
fi
|
||||
fi
|
||||
|
||||
gl_manywarn_set=
|
||||
for gl_manywarn_item in \
|
||||
-Wall \
|
||||
-W \
|
||||
-Wformat-y2k \
|
||||
-Wformat-nonliteral \
|
||||
-Wformat-security \
|
||||
-Winit-self \
|
||||
-Wmissing-include-dirs \
|
||||
-Wswitch-default \
|
||||
-Wswitch-enum \
|
||||
-Wunused \
|
||||
-Wunknown-pragmas \
|
||||
-Wstrict-aliasing \
|
||||
-Wstrict-overflow \
|
||||
-Wsystem-headers \
|
||||
-Wfloat-equal \
|
||||
-Wtraditional \
|
||||
-Wtraditional-conversion \
|
||||
-Wdeclaration-after-statement \
|
||||
-Wundef \
|
||||
-Wshadow \
|
||||
-Wunsafe-loop-optimizations \
|
||||
-Wpointer-arith \
|
||||
-Wbad-function-cast \
|
||||
-Wc++-compat \
|
||||
-Wcast-qual \
|
||||
-Wcast-align \
|
||||
-Wwrite-strings \
|
||||
-Wconversion \
|
||||
-Wsign-conversion \
|
||||
-Wlogical-op \
|
||||
-Waggregate-return \
|
||||
-Wstrict-prototypes \
|
||||
-Wold-style-definition \
|
||||
-Wmissing-prototypes \
|
||||
-Wmissing-declarations \
|
||||
-Wmissing-noreturn \
|
||||
-Wmissing-format-attribute \
|
||||
-Wpacked \
|
||||
-Wpadded \
|
||||
-Wredundant-decls \
|
||||
-Wnested-externs \
|
||||
-Wunreachable-code \
|
||||
-Winline \
|
||||
-Winvalid-pch \
|
||||
-Wlong-long \
|
||||
-Wvla \
|
||||
-Wvolatile-register-var \
|
||||
-Wdisabled-optimization \
|
||||
-Wstack-protector \
|
||||
-Woverlength-strings \
|
||||
-Wbuiltin-macro-redefined \
|
||||
-Wmudflap \
|
||||
-Wpacked-bitfield-compat \
|
||||
-Wsync-nand \
|
||||
; do
|
||||
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
|
||||
done
|
||||
# The following are not documented in the manual but are included in
|
||||
# output from gcc --help=warnings.
|
||||
for gl_manywarn_item in \
|
||||
-Wattributes \
|
||||
-Wcoverage-mismatch \
|
||||
-Wmultichar \
|
||||
-Wunused-macros \
|
||||
; do
|
||||
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
|
||||
done
|
||||
# More warnings from gcc 4.6.2 --help=warnings.
|
||||
for gl_manywarn_item in \
|
||||
-Wabi \
|
||||
-Wcpp \
|
||||
-Wdeprecated \
|
||||
-Wdeprecated-declarations \
|
||||
-Wdiv-by-zero \
|
||||
-Wdouble-promotion \
|
||||
-Wendif-labels \
|
||||
-Wextra \
|
||||
-Wformat-contains-nul \
|
||||
-Wformat-extra-args \
|
||||
-Wformat-zero-length \
|
||||
-Wformat=2 \
|
||||
-Wmultichar \
|
||||
-Wnormalized=nfc \
|
||||
-Woverflow \
|
||||
-Wpointer-to-int-cast \
|
||||
-Wpragmas \
|
||||
-Wsuggest-attribute=const \
|
||||
-Wsuggest-attribute=noreturn \
|
||||
-Wsuggest-attribute=pure \
|
||||
-Wtrampolines \
|
||||
; do
|
||||
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
|
||||
done
|
||||
|
||||
# Disable the missing-field-initializers warning if needed
|
||||
if test "$gl_cv_cc_nomfi_needed" = yes; then
|
||||
gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
|
||||
fi
|
||||
|
||||
$1=$gl_manywarn_set
|
||||
])
|
||||
162
m4/spice-compile-warnings.m4
Normal file
162
m4/spice-compile-warnings.m4
Normal file
@ -0,0 +1,162 @@
|
||||
dnl
|
||||
dnl Enable all known GCC compiler warnings, except for those
|
||||
dnl we can't yet cope with
|
||||
dnl
|
||||
AC_DEFUN([SPICE_COMPILE_WARNINGS],[
|
||||
dnl ******************************
|
||||
dnl More compiler warnings
|
||||
dnl ******************************
|
||||
|
||||
AC_ARG_ENABLE([werror],
|
||||
AS_HELP_STRING([--enable-werror], [Use -Werror (if supported)]),
|
||||
[set_werror="$enableval"],
|
||||
[if test -d $srcdir/.git; then
|
||||
is_git_version=true
|
||||
set_werror=yes
|
||||
else
|
||||
set_werror=no
|
||||
fi])
|
||||
|
||||
# List of warnings that are not relevant / wanted
|
||||
|
||||
# Don't care about C++ compiler compat
|
||||
dontwarn="$dontwarn -Wc++-compat"
|
||||
dontwarn="$dontwarn -Wabi"
|
||||
dontwarn="$dontwarn -Wdeprecated"
|
||||
# Don't care about ancient C standard compat
|
||||
dontwarn="$dontwarn -Wtraditional"
|
||||
# Don't care about ancient C standard compat
|
||||
dontwarn="$dontwarn -Wtraditional-conversion"
|
||||
# Ignore warnings in /usr/include
|
||||
dontwarn="$dontwarn -Wsystem-headers"
|
||||
# Happy for compiler to add struct padding
|
||||
dontwarn="$dontwarn -Wpadded"
|
||||
# GCC very confused with -O2
|
||||
dontwarn="$dontwarn -Wunreachable-code"
|
||||
|
||||
|
||||
dontwarn="$dontwarn -Wconversion"
|
||||
dontwarn="$dontwarn -Wsign-conversion"
|
||||
dontwarn="$dontwarn -Wvla"
|
||||
dontwarn="$dontwarn -Wundef"
|
||||
dontwarn="$dontwarn -Wcast-qual"
|
||||
dontwarn="$dontwarn -Wlong-long"
|
||||
dontwarn="$dontwarn -Wswitch-default"
|
||||
dontwarn="$dontwarn -Wswitch-enum"
|
||||
dontwarn="$dontwarn -Wstrict-overflow"
|
||||
dontwarn="$dontwarn -Wunsafe-loop-optimizations"
|
||||
dontwarn="$dontwarn -Wformat-nonliteral"
|
||||
dontwarn="$dontwarn -Wfloat-equal"
|
||||
dontwarn="$dontwarn -Wdeclaration-after-statement"
|
||||
dontwarn="$dontwarn -Wcast-qual"
|
||||
dontwarn="$dontwarn -Wconversion"
|
||||
dontwarn="$dontwarn -Wsign-conversion"
|
||||
dontwarn="$dontwarn -Wpacked"
|
||||
dontwarn="$dontwarn -Wunused-macros"
|
||||
dontwarn="$dontwarn -Woverlength-strings"
|
||||
dontwarn="$dontwarn -Wstack-protector"
|
||||
dontwarn="$dontwarn -Winline"
|
||||
dontwarn="$dontwarn -Wbad-function-cast"
|
||||
dontwarn="$dontwarn -Wshadow"
|
||||
|
||||
# We want to enable thse, but need to sort out the
|
||||
# decl mess with gtk/generated_*.c
|
||||
dontwarn="$dontwarn -Wmissing-prototypes"
|
||||
dontwarn="$dontwarn -Wmissing-declarations"
|
||||
|
||||
# Stuff that C++ won't allow. Turn them back on later
|
||||
dontwarn="$dontwarn -Waggregate-return"
|
||||
dontwarn="$dontwarn -Wstrict-prototypes"
|
||||
dontwarn="$dontwarn -Wold-style-definition"
|
||||
dontwarn="$dontwarn -Wnested-externs"
|
||||
dontwarn="$dontwarn -Wformat-zero-length"
|
||||
dontwarn="$dontwarn -Wpointer-to-int-cast"
|
||||
dontwarn="$dontwarn -Wjump-misses-init"
|
||||
|
||||
# Issues in x11/platform_utils.cpp prevent us turning this on
|
||||
dontwarn="$dontwarn -Wmissing-format-attribute"
|
||||
|
||||
# Get all possible GCC warnings
|
||||
gl_MANYWARN_ALL_GCC([maybewarn])
|
||||
|
||||
# Remove the ones we don't want, blacklisted earlier
|
||||
gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
|
||||
|
||||
# Check for $CC support of each warning
|
||||
for w in $wantwarn; do
|
||||
gl_WARN_ADD([$w])
|
||||
done
|
||||
|
||||
# GNULIB uses '-W' (aka -Wextra) which includes a bunch of stuff.
|
||||
# Unfortunately, this means you can't simply use '-Wsign-compare'
|
||||
# with gl_MANYWARN_COMPLEMENT
|
||||
# So we have -W enabled, and then have to explicitly turn off...
|
||||
gl_WARN_ADD([-Wno-sign-compare])
|
||||
gl_WARN_ADD([-Wno-unused-parameter])
|
||||
# We can't enable this due to horrible spice_usb_device_get_description
|
||||
# signature
|
||||
gl_WARN_ADD([-Wno-format-nonliteral])
|
||||
# CEGui headers cause violation of this
|
||||
gl_WARN_ADD([-Wno-ignored-qualifiers])
|
||||
|
||||
|
||||
|
||||
|
||||
# GNULIB turns on -Wformat=2 which implies -Wformat-nonliteral,
|
||||
# so we need to manually re-exclude it.
|
||||
gl_WARN_ADD([-Wno-format-nonliteral])
|
||||
|
||||
# This should be < 1024 really. pixman_utils is the blackspot
|
||||
# preventing lower usage
|
||||
gl_WARN_ADD([-Wframe-larger-than=20460])
|
||||
|
||||
# Use improved glibc headers
|
||||
AC_DEFINE([_FORTIFY_SOURCE], [2],
|
||||
[enable compile-time and run-time bounds-checking, and some warnings])
|
||||
|
||||
# Extra special flags
|
||||
dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
|
||||
dnl on Mingw32, but fails when actually used
|
||||
case $host in
|
||||
*-*-linux*)
|
||||
dnl Fedora only uses -fstack-protector, but doesn't seem to
|
||||
dnl be great overhead in adding -fstack-protector-all instead
|
||||
dnl gl_WARN_ADD([-fstack-protector])
|
||||
gl_WARN_ADD([-fstack-protector-all])
|
||||
gl_WARN_ADD([--param=ssp-buffer-size=4])
|
||||
;;
|
||||
esac
|
||||
gl_WARN_ADD([-fexceptions])
|
||||
gl_WARN_ADD([-fasynchronous-unwind-tables])
|
||||
gl_WARN_ADD([-fdiagnostics-show-option])
|
||||
gl_WARN_ADD([-funit-at-a-time])
|
||||
|
||||
# Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
|
||||
# fire even without -O.
|
||||
gl_WARN_ADD([-fipa-pure-const])
|
||||
|
||||
# We should eventually enable this, but right now there are at
|
||||
# least 75 functions triggering warnings.
|
||||
gl_WARN_ADD([-Wno-suggest-attribute=pure])
|
||||
gl_WARN_ADD([-Wno-suggest-attribute=const])
|
||||
|
||||
if test "$set_werror" = "yes"
|
||||
then
|
||||
gl_WARN_ADD([-Werror])
|
||||
fi
|
||||
WARN_CXXFLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([WARN_CXXFLAGS])
|
||||
|
||||
# These are C-only warnings
|
||||
gl_WARN_ADD([-Waggregate-return])
|
||||
gl_WARN_ADD([-Wstrict-prototypes])
|
||||
gl_WARN_ADD([-Wold-style-definition])
|
||||
gl_WARN_ADD([-Wnested-externs])
|
||||
gl_WARN_ADD([-Wformat-zero-length])
|
||||
gl_WARN_ADD([-Wpointer-to-int-cast])
|
||||
gl_WARN_ADD([-Wjump-misses-init])
|
||||
|
||||
WARN_LDFLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([WARN_CFLAGS])
|
||||
AC_SUBST([WARN_LDFLAGS])
|
||||
])
|
||||
37
m4/warnings.m4
Normal file
37
m4/warnings.m4
Normal file
@ -0,0 +1,37 @@
|
||||
# warnings.m4 serial 5
|
||||
dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Simon Josefsson
|
||||
|
||||
# gl_AS_VAR_APPEND(VAR, VALUE)
|
||||
# ----------------------------
|
||||
# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
|
||||
m4_ifdef([AS_VAR_APPEND],
|
||||
[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
|
||||
[m4_define([gl_AS_VAR_APPEND],
|
||||
[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
|
||||
|
||||
# gl_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS])
|
||||
# ------------------------------------------------
|
||||
# Adds parameter to WARN_CFLAGS if the compiler supports it. For example,
|
||||
# gl_WARN_ADD([-Wparentheses]).
|
||||
AC_DEFUN([gl_WARN_ADD],
|
||||
dnl FIXME: gl_Warn must be used unquoted until we can assume
|
||||
dnl autoconf 2.64 or newer.
|
||||
[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_$1])dnl
|
||||
AC_CACHE_CHECK([whether compiler handles $1], m4_defn([gl_Warn]), [
|
||||
gl_save_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="${CPPFLAGS} $1"
|
||||
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
|
||||
[AS_VAR_SET(gl_Warn, [yes])],
|
||||
[AS_VAR_SET(gl_Warn, [no])])
|
||||
CPPFLAGS="$gl_save_CPPFLAGS"
|
||||
])
|
||||
AS_VAR_IF(gl_Warn, [yes],
|
||||
[gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])])
|
||||
AS_VAR_POPDEF([gl_Warn])dnl
|
||||
m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl
|
||||
])
|
||||
Loading…
Reference in New Issue
Block a user