# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

include(Compiler/Cray)

set(CMAKE_C_VERBOSE_FLAG "-v")

string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")

if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
  set(CMAKE_C90_STANDARD_COMPILE_OPTION  -h noc99,conform)
  set(CMAKE_C90_EXTENSION_COMPILE_OPTION -h noc99,gnu)
  set(CMAKE_C99_STANDARD_COMPILE_OPTION  -h c99,conform)
  set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu)
  if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5)
    set(CMAKE_C11_STANDARD_COMPILE_OPTION  -h std=c11,conform)
    set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu)
  endif ()
endif ()

__compiler_check_default_language_standard(C 8.1 99)
