set(CMAKE_C_VERBOSE_FLAG "-v")

set(CMAKE_C_FLAGS_INIT "")
set(CMAKE_C_FLAGS_DEBUG_INIT "-g")
set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -DNDEBUG")

set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <OBJECT> -MF <DEPFILE>")

if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
  set(_std -Qstd)
else()
  set(_std -std)
endif()

if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
  set(CMAKE_C11_STANDARD_COMPILE_OPTION "${_std}=c11")
  set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=gnu11")
endif()

if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
  set(CMAKE_C90_STANDARD_COMPILE_OPTION "${_std}=c89")
  set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=gnu89")
  set(CMAKE_C99_STANDARD_COMPILE_OPTION "${_std}=c99")
  set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=gnu99")
endif()

if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1)
  if (NOT CMAKE_C_COMPILER_FORCED)
    if (NOT CMAKE_C_STANDARD_COMPUTED_DEFAULT)
      message(FATAL_ERROR "CMAKE_C_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_C_COMPILER_ID} (${CMAKE_C_COMPILER}) version ${CMAKE_C_COMPILER_VERSION}")
    endif()
    set(CMAKE_C_STANDARD_DEFAULT ${CMAKE_C_STANDARD_COMPUTED_DEFAULT})
  elseif(NOT DEFINED CMAKE_C_STANDARD_DEFAULT)
    # Compiler id was forced so just guess the default standard level.
    if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
      set(CMAKE_C_STANDARD_DEFAULT 11)
    else()
      set(CMAKE_C_STANDARD_DEFAULT 90)
    endif()
  endif()
endif()

unset(_std)

macro(cmake_record_c_compile_features)
  macro(_get_intel_c_features std_version list)
    record_compiler_features(C "${std_version}" ${list})
  endmacro()

  set(_result 0)
  if (NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND
      NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1)
    if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
      _get_intel_c_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES)
    endif()
    if (_result EQUAL 0)
      _get_intel_c_features(${CMAKE_C99_STANDARD_COMPILE_OPTION} CMAKE_C99_COMPILE_FEATURES)
    endif()
    if (_result EQUAL 0)
      _get_intel_c_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES)
    endif()
  endif()
endmacro()

set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
