diff options
author | Brad King <brad.king@kitware.com> | 2017-06-29 17:18:33 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-06-29 17:25:19 (GMT) |
commit | a2112257df2f255d8aa3584af468b7d30ff90e8c (patch) | |
tree | a0151222c85085208dadb4d1e66f176f90f0ea64 | |
parent | 8cd28bb0e54f962ab2b189f1b7196c2b014129a7 (diff) | |
download | CMake-a2112257df2f255d8aa3584af468b7d30ff90e8c.zip CMake-a2112257df2f255d8aa3584af468b7d30ff90e8c.tar.gz CMake-a2112257df2f255d8aa3584af468b7d30ff90e8c.tar.bz2 |
Add infrastructure to use language extensions without any standard
When `<LANG>_STANDARD` is not set we will not add any language standard
flags. If `<LANG>_EXTENSIONS` is not OFF then our default is supposed
to be ON. In order to support compilers that do not enable their
extensions by default, check a `CMAKE_<LANG>_EXTENSION_COMPILE_OPTION`
variable for an extensions flag to use without any language standard.
Suggested-by: Norbert Lange <nolange79@gmail.com>
-rw-r--r-- | Source/cmLocalGenerator.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 54e76b2..28ed325 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1498,6 +1498,16 @@ void cmLocalGenerator::AddCompilerRequirementFlag( std::string stdProp = lang + "_STANDARD"; const char* standardProp = target->GetProperty(stdProp); if (!standardProp) { + if (ext) { + // No language standard is specified and extensions are not disabled. + // Check if this compiler needs a flag to enable extensions. + std::string const option_flag = + "CMAKE_" + lang + "_EXTENSION_COMPILE_OPTION"; + if (const char* opt = + target->Target->GetMakefile()->GetDefinition(option_flag)) { + this->AppendFlagEscape(flags, opt); + } + } return; } |