# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
include(Compiler/Fujitsu)
__compiler_fujitsu(CXX)

#set(CMAKE_PCH_EXTENSION .pch)
#set(CMAKE_PCH_EPILOGUE "#pragma hdrstop")
#set(CMAKE_CXX_COMPILE_OPTIONS_USE_PCH --no_pch_messages -include <PCH_HEADER> --use_pch <PCH_FILE>)
#set(CMAKE_CXX_COMPILE_OPTIONS_CREATE_PCH --no_pch_messages -include <PCH_HEADER> --create_pch <PCH_FILE>)

# The Fujitsu compiler offers both a 98 and 03 mode.  These two are
# essentially interchangeable as 03 simply provides clarity to some 98
# ambiguyity.
#
# Re: Stroustrup's C++ FAQ:
#   What is the difference between C++98 and C++03?
#     From a programmer's view there is none. The C++03 revision of the
#     standard was a bug fix release for implementers to ensure greater
#     consistency and portability. In particular, tutorial and reference
#     material describing C++98 and C++03 can be used interchangeably by all
#     except compiler writers and standards gurus.
#
# Since CMake doesn't actually have an 03 mode and they're effectively
# interchangeable then we're just going to explicitly use 03 mode in the
# compiler when 98 is requested.

# The version matching is messy here.  The std support seems to be related to
# the compiler tweak version derived from the patch id in the version string.

if(CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 4)
  set(CMAKE_CXX98_STANDARD_COMPILE_OPTION  -std=c++03)
  set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -std=gnu++03)
  set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)

  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION  -std=c++11)
  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -std=gnu++11)
  set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)

  set(CMAKE_CXX14_STANDARD_COMPILE_OPTION  -std=c++14)
  set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -std=gnu++14)
  set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)

  set(CMAKE_CXX17_STANDARD_COMPILE_OPTION  -std=c++17)
  set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION -std=gnu++17)
endif()

__compiler_check_default_language_standard(CXX 4 14)
