Просмотр исходного кода

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 <[email protected]>
Brad King 8 лет назад
Родитель
Сommit
a2112257df
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      Source/cmLocalGenerator.cxx

+ 10 - 0
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;
   }