Don't use the -fvisibility switch if the visibility attributes didn't work

This commit is contained in:
Chris Robinson
2011-09-21 23:41:52 -07:00
parent 64080250ff
commit e81e20446f
+10 -7
View File
@@ -181,6 +181,7 @@ IF(WIN32)
ENDIF()
ELSE()
SET(OLD_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
# Yes GCC, really don't accept visibility modes you don't support
SET(CMAKE_REQUIRED_FLAGS "${OLD_REQUIRED_FLAGS} -Werror")
CHECK_C_SOURCE_COMPILES("int foo() __attribute__((visibility(\"protected\")));
@@ -195,13 +196,15 @@ ELSE()
ENDIF()
ENDIF()
CHECK_C_COMPILER_FLAG(-fvisibility=internal HAVE_VISIBILITY_INTERNAL_SWITCH)
IF(HAVE_VISIBILITY_INTERNAL_SWITCH)
ADD_DEFINITIONS(-fvisibility=internal)
ELSE()
CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY_HIDDEN_SWITCH)
IF(HAVE_VISIBILITY_HIDDEN_SWITCH)
ADD_DEFINITIONS(-fvisibility=hidden)
IF(HAVE_GCC_PROTECTED_VISIBILITY OR HAVE_GCC_DEFAULT_VISIBILITY)
CHECK_C_COMPILER_FLAG(-fvisibility=internal HAVE_VISIBILITY_INTERNAL_SWITCH)
IF(HAVE_VISIBILITY_INTERNAL_SWITCH)
ADD_DEFINITIONS(-fvisibility=internal)
ELSE()
CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_VISIBILITY_HIDDEN_SWITCH)
IF(HAVE_VISIBILITY_HIDDEN_SWITCH)
ADD_DEFINITIONS(-fvisibility=hidden)
ENDIF()
ENDIF()
ENDIF()