From 4e4a568f6a089c867891c2388a19624e312eb2f3 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 12 Jun 2024 14:26:44 +0300 Subject: [PATCH] CMake: Prefer C11 with a fallback to C99 There is no need to make a similar change in configure.ac. With Autoconf 2.72, the deprecated macro AC_PROG_CC_C99 is an alias for AC_PROG_CC which prefers a C11 compiler. (cherry picked from commit 2178acf8a4d40a93e970cfcf9b807d5ef6c8da92) --- CMakeLists.txt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 675cba18..2cf1a2ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,12 +152,17 @@ if(OVERRIDE_O3_IN_C_FLAGS_RELEASE) endif() # We need a compiler that supports enough C99 or newer (variable-length arrays -# aren't needed, those are optional in C17). Setting CMAKE_C_STANDARD here -# makes it the default for all targets. It doesn't affect the INTERFACE so -# liblzma::liblzma won't end up with INTERFACE_COMPILE_FEATURES "c_std_99" -# (the API headers are C89 and C++ compatible). -set(CMAKE_C_STANDARD 99) -set(CMAKE_C_STANDARD_REQUIRED ON) +# aren't needed, those are optional in C11/C17). C11 is preferred since C11 +# features may be optionally used if they are available. +# +# Setting CMAKE_C_STANDARD here makes it the default for all targets. +# It doesn't affect the INTERFACE so liblzma::liblzma won't end up with +# INTERFACE_COMPILE_FEATURES "c_std_99" or such (the API headers are C89 +# and C++ compatible). +# +# Avoid set(CMAKE_C_STANDARD_REQUIRED ON) because it's fine to decay +# to C99 if C11 isn't supported. +set(CMAKE_C_STANDARD 11) # Support 32-bit x86 assembly files. if(NOT MSVC)