diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2019-02-03 18:41:54 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2019-02-03 19:25:01 +0100 |
commit | 3fe0a2fcc3bdab2fb106ac9b28bac0190ef0e797 (patch) | |
tree | 21c56b6244449b3e848217df0a9de7864cede896 | |
parent | 03d0eff00d25bfbd11aa16ba5c878460c390639c (diff) | |
download | tde-cmake-3fe0a2fcc3bdab2fb106ac9b28bac0190ef0e797.tar.gz tde-cmake-3fe0a2fcc3bdab2fb106ac9b28bac0190ef0e797.zip |
Update tde_setup_gcc_visibility macro
+ In the test include kdemacros.h with detected full path to avoid FTBFS.
+ Do not test gcc visibility on TDE unless the current module uses TDE.
+ Do not test gcc visibility on TQt unless the current module uses TQt.
+ Improve test for gcc visibility on TQt to make it more accurate.
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit f8254e1561c2a5a884a6f812ee5a0fdcf22c7884)
-rw-r--r-- | modules/TDEMacros.cmake | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake index 1baeee2..b6a08f8 100644 --- a/modules/TDEMacros.cmake +++ b/modules/TDEMacros.cmake @@ -1869,37 +1869,41 @@ macro( tde_setup_gcc_visibility ) tde_message_fatal( "gcc visibility support was requested, but your system is not *NIX" ) endif( NOT UNIX ) - find_library( TQT_LIBFILE tqt-mt HINTS "${TQT_LIBRARY_DIRS}" ) - if( NOT "${TQT_LIBFILE}" STREQUAL "TQT_LIBFILE-NOTFOUND" ) - message( STATUS "Performing Test HAVE_TQT_VISIBILITY" ) - execute_process( - COMMAND readelf --syms "${TQT_LIBFILE}" - OUTPUT_VARIABLE HAVE_TQT_VISIBILITY - ) - if( "${HAVE_TQT_VISIBILITY}" STREQUAL "" OR - "${HAVE_TQT_VISIBILITY}" MATCHES "DEFAULT[^\n]*QSettingsPrivate" ) - message( STATUS "Performing Test HAVE_TQT_VISIBILITY - Failed" ) - tde_message_fatal( "gcc visibility support was requested, but not supported in tqt library" ) + if( TQT_FOUND ) + find_library( TQT_LIBFILE tqt-mt HINTS "${TQT_LIBRARY_DIRS}" ) + if( NOT "${TQT_LIBFILE}" STREQUAL "TQT_LIBFILE-NOTFOUND" ) + message( STATUS "Performing Test HAVE_TQT_VISIBILITY" ) + execute_process( + COMMAND readelf --syms "${TQT_LIBFILE}" + OUTPUT_VARIABLE HAVE_TQT_VISIBILITY + ) + if( "${HAVE_TQT_VISIBILITY}" STREQUAL "" OR + "${HAVE_TQT_VISIBILITY}" MATCHES "GLOBAL[\t ]+DEFAULT[^\n]+QSettingsPrivate" ) + message( STATUS "Performing Test HAVE_TQT_VISIBILITY - Failed" ) + tde_message_fatal( "gcc visibility support was requested, but not supported in tqt library" ) + endif( ) + message( STATUS "Performing Test HAVE_TQT_VISIBILITY - Success" ) endif( ) - message( STATUS "Performing Test HAVE_TQT_VISIBILITY - Success" ) - endif( ) - - find_file( TDEMACROS_H kdemacros.h HINTS "${TDE_INCLUDE_DIR}" ) - if( NOT "${TDEMACROS_H}" STREQUAL "TDEMACROS_H-NOTFOUND" ) - tde_save_and_set( CMAKE_REQUIRED_INCLUDES "${TDE_INCLUDE_DIR}" ) - check_cxx_source_compiles( " - #include <kdemacros.h> - #ifndef __KDE_HAVE_GCC_VISIBILITY - #error gcc visibility is not enabled in tdelibs - #endif - int main() { return 0; } " - HAVE_TDE_VISIBILITY - ) - tde_restore( CMAKE_REQUIRED_INCLUDES ) - if( NOT HAVE_TDE_VISIBILITY ) - tde_message_fatal( "gcc visibility support was requested, but not supported in tdelibs" ) - endif( NOT HAVE_TDE_VISIBILITY ) - endif( ) + endif( TQT_FOUND ) + + if( TDE_FOUND ) + find_file( TDEMACROS_H kdemacros.h HINTS "${TDE_INCLUDE_DIR}" ) + if( NOT "${TDEMACROS_H}" STREQUAL "TDEMACROS_H-NOTFOUND" ) + tde_save_and_set( CMAKE_REQUIRED_INCLUDES "${TDE_INCLUDE_DIR}" ) + check_cxx_source_compiles( " + #include <${TDEMACROS_H}> + #ifndef __KDE_HAVE_GCC_VISIBILITY + #error gcc visibility is not enabled in tdelibs + #endif + int main() { return 0; } " + HAVE_TDE_VISIBILITY + ) + tde_restore( CMAKE_REQUIRED_INCLUDES ) + if( NOT HAVE_TDE_VISIBILITY ) + tde_message_fatal( "gcc visibility support was requested, but not supported in tdelibs" ) + endif( NOT HAVE_TDE_VISIBILITY ) + endif( ) + endif( TDE_FOUND ) set( __KDE_HAVE_GCC_VISIBILITY 1 ) set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden") |