diff options
author | Stephen Kelly <steveire@gmail.com> | 2011-08-10 19:13:33 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2011-08-10 19:14:46 (GMT) |
commit | cff94935982def7302cca11d521bf55587b8ebf7 (patch) | |
tree | 9b4918a935b69c94adc96564b7f79922454747e1 /Modules/GenerateExportHeader.cmake | |
parent | af443b830b550454cf9bdd21a49183eb6e4ba22e (diff) | |
download | CMake-cff94935982def7302cca11d521bf55587b8ebf7.zip CMake-cff94935982def7302cca11d521bf55587b8ebf7.tar.gz CMake-cff94935982def7302cca11d521bf55587b8ebf7.tar.bz2 |
Only set the COMPILER_HAS_HIDDEN_VISIBILITY if GCC >= 4.2
Hearsay has it that before that version it didn't work properly.
Hopefully this will fix more dashboard builds.
Diffstat (limited to 'Modules/GenerateExportHeader.cmake')
-rw-r--r-- | Modules/GenerateExportHeader.cmake | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/Modules/GenerateExportHeader.cmake b/Modules/GenerateExportHeader.cmake index 7e644b1..cb7b0d8 100644 --- a/Modules/GenerateExportHeader.cmake +++ b/Modules/GenerateExportHeader.cmake @@ -116,10 +116,28 @@ include(CMakeParseArguments) include(CheckCXXCompilerFlag) macro(_test_compiler_hidden_visibility) - check_cxx_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY) - check_cxx_compiler_flag(-fvisibility-inlines-hidden COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) - option(USE_COMPILER_HIDDEN_VISIBILITY "Use HIDDEN visibility support if available." ON) - mark_as_advanced(USE_COMPILER_HIDDEN_VISIBILITY) + + if (CMAKE_COMPILER_IS_GNUCXX) + exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info) + string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}") + # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the + # patch level, handle this here: + if(NOT _gcc_version) + string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}") + endif() + + if(${_gcc_version} VERSION_LESS "4.2") + set(GCC_TOO_OLD TRUE) + message(WARNING "GCC version older than 4.2") + endif() + endif() + + if (NOT GCC_TOO_OLD) + check_cxx_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY) + check_cxx_compiler_flag(-fvisibility-inlines-hidden COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) + option(USE_COMPILER_HIDDEN_VISIBILITY "Use HIDDEN visibility support if available." ON) + mark_as_advanced(USE_COMPILER_HIDDEN_VISIBILITY) + endif() endmacro() set(myDir ${CMAKE_CURRENT_LIST_DIR}) @@ -233,21 +251,6 @@ function(add_compiler_export_flags) return() endif() - if (CMAKE_COMPILER_IS_GNUCXX) - exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info) - string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}") - # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the - # patch level, handle this here: - if(NOT _gcc_version) - string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}") - endif() - - if(${_gcc_version} VERSION_LESS "4.2") - message(WARNING "GCC version older than 4.2") - return() - endif() - endif() - set (EXTRA_FLAGS "-fvisibility=hidden") if(COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) |