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

ObjC: Add VISIBLITY_INLINES_HIDDEN support

Fixes: #20193
Cristian Adam 5 лет назад
Родитель
Сommit
7347e2f830

+ 2 - 0
Modules/Compiler/AppleClang-OBJCXX.cmake

@@ -1,5 +1,7 @@
 include(Compiler/Clang-OBJCXX)
 
+set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+
 if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
   set(CMAKE_OBJCXX98_STANDARD_COMPILE_OPTION "-std=c++98")
   set(CMAKE_OBJCXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")

+ 0 - 4
Modules/Compiler/GNU-OBJC.cmake

@@ -1,6 +1,2 @@
 include(Compiler/GNU)
 __compiler_gnu(OBJC)
-
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.2)
-  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
-endif()

+ 3 - 3
Modules/Compiler/GNU-OBJCXX.cmake

@@ -1,8 +1,8 @@
 include(Compiler/GNU)
-__compiler_gnu(OBJC)
+__compiler_gnu(OBJCXX)
 
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.2)
-  set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
+if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.2)
+  set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
 endif()
 
 if(NOT CMAKE_OBJCXX_LINK_FLAGS)

+ 5 - 4
Source/cmLocalGenerator.cxx

@@ -2104,10 +2104,11 @@ static void AddVisibilityCompileOption(std::string& flags,
 static void AddInlineVisibilityCompileOption(std::string& flags,
                                              cmGeneratorTarget const* target,
                                              cmLocalGenerator* lg,
-                                             std::string* warnCMP0063)
+                                             std::string* warnCMP0063,
+                                             const std::string& lang)
 {
   std::string compileOption =
-    "CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN";
+    cmStrCat("CMAKE_", lang, "_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN");
   const char* opt = lg->GetMakefile()->GetDefinition(compileOption);
   if (!opt) {
     return;
@@ -2149,8 +2150,8 @@ void cmLocalGenerator::AddVisibilityPresetFlags(
 
   AddVisibilityCompileOption(flags, target, this, lang, pWarnCMP0063);
 
-  if (lang == "CXX") {
-    AddInlineVisibilityCompileOption(flags, target, this, pWarnCMP0063);
+  if (lang == "CXX" || lang == "OBJCXX") {
+    AddInlineVisibilityCompileOption(flags, target, this, pWarnCMP0063, lang);
   }
 
   if (!warnCMP0063.empty() && this->WarnCMP0063.insert(target).second) {