[Piglit] [PATCH] cmake: Enforce standard C99 syntax for variadic macros.

Roland Scheidegger sroland at vmware.com
Wed Feb 18 06:29:26 PST 2015


Am 18.02.2015 um 14:36 schrieb Jose Fonseca:
> Although the non-standard GCC syntax has some nice properties, for most
> practical cases the standard C99 syntax is perfectly fine.  Particuarly
> for printf-like macros, which pretty much account for most the uses of
> variadic macros in piglit.
> 
> Unfortunately this will only be effective on newer GCC versions, due a
> bug in GCC.  See comment for more details.
> ---
>  CMakeLists.txt | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index 4236c89..420f76f 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -214,6 +214,17 @@ if (NOT MSVC)
>  	IF (C_COMPILER_FLAG_WVLA)
>  		SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wvla")
>  	ENDIF ()
> +	# MSVC only supports C99 variadic macros.  It doesn't support the
> +	# non-standard GNU named variadic macro syntax that's documented in
> +	# https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
> +	#
> +	# XXX: on older GCC version this option has no effect unless -Wpedantic
> +	# is set, but this should be fixed on future GCC versions, per
> +	# https://gcc.gnu.org/ml/gcc-patches/2014-04/msg01459.html
> +	check_c_compiler_flag ("-Werror=variadic-macros" C_COMPILER_FLAG_WVARIADIC_MACROS)
> +	if (C_COMPILER_FLAG_WVARIADIC_MACROS)
> +		set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=variadic-macros")
> +	endif ()
>  
>  	CHECK_CXX_COMPILER_FLAG("-Wno-narrowing" CXX_COMPILER_FLAG_WNO_NARROWING)
>  	IF (CXX_COMPILER_FLAG_WNO_NARROWING)
> 

Looks good to me.

Roland



More information about the Piglit mailing list