cmake/Modules/Compiler/GNU-CXX.cmake

48 lines
1.6 KiB
CMake
Raw Normal View History

2010-03-17 14:00:29 +02:00
include(Compiler/GNU)
__compiler_gnu(CXX)
2024-07-09 14:46:46 +02:00
__compiler_gnu_cxx_standards(CXX)
2013-11-03 12:27:13 +02:00
2021-09-14 00:13:48 +02:00
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
AND CMAKE_DEPFILE_FLAGS_CXX)
# dependencies are computed by the compiler itself
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
endif()
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
2013-11-03 12:27:13 +02:00
if (WIN32)
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
endif()
else()
2017-04-14 19:02:05 +02:00
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
2013-11-03 12:27:13 +02:00
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
endif()
endif()
2015-04-27 22:25:09 +02:00
2021-09-14 00:13:48 +02:00
__compiler_check_default_language_standard(CXX 3.4 98 6.0 14 11.1 17)
2023-12-07 09:12:54 +01:00
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0)
string(CONCAT CMAKE_CXX_SCANDEP_SOURCE
"<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E -x c++ <SOURCE>"
" -MT <DYNDEP_FILE> -MD -MF <DEP_FILE>"
" -fmodules-ts -fdeps-file=<DYNDEP_FILE> -fdeps-target=<OBJECT> -fdeps-format=p1689r5"
" -o <PREPROCESSED_SOURCE>")
set(CMAKE_CXX_MODULE_MAP_FORMAT "gcc")
string(CONCAT CMAKE_CXX_MODULE_MAP_FLAG
# Turn on modules.
"-fmodules-ts"
# Read the module mapper file.
" -fmodule-mapper=<MODULE_MAP_FILE>"
# Make sure dependency tracking is enabled (missing from `try_*`).
" -MD"
# Suppress `CXX_MODULES +=` from generated depfile snippets.
" -fdeps-format=p1689r5"
# Force C++ as a language.
" -x c++")
set(CMAKE_CXX_MODULE_BMI_ONLY_FLAG "-fmodule-only")
endif()