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)
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")

View File

@ -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()

View File

@ -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)

View File

@ -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) {