ObjC: Add VISIBLITY_INLINES_HIDDEN support

Fixes: #20193
This commit is contained in:
Cristian Adam
2020-01-10 16:31:27 +01:00
parent 68537b890b
commit 7347e2f830
4 changed files with 10 additions and 11 deletions

View File

@@ -1,5 +1,7 @@
include(Compiler/Clang-OBJCXX) 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) if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
set(CMAKE_OBJCXX98_STANDARD_COMPILE_OPTION "-std=c++98") set(CMAKE_OBJCXX98_STANDARD_COMPILE_OPTION "-std=c++98")
set(CMAKE_OBJCXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98") set(CMAKE_OBJCXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")

View File

@@ -1,6 +1,2 @@
include(Compiler/GNU) include(Compiler/GNU)
__compiler_gnu(OBJC) __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()

View File

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

View File

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