Add tde_setup_gcc_visibility macro.

For the GCC visibility setting, a test is performed
whether the system is UNIX-type and also whether TQt
and tdelibs are built with GCC visibility support.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit b034c47597)
v3.5.13-sru
Slávek Banko 6 years ago
parent 05ed76c79d
commit 14520c762c
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -1708,6 +1708,55 @@ macro( tde_setup_architecture_flags )
endmacro( )
#################################################
#####
##### tde_setup_gcc_visibility
macro( tde_setup_gcc_visibility )
if( NOT DEFINED __KDE_HAVE_GCC_VISIBILITY )
if( NOT UNIX )
tde_message_fatal( "gcc visibility support was requested, but your system is not *NIX" )
endif( NOT UNIX )
find_library( TQT_LIBFILE qt-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 qt library" )
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( )
set( __KDE_HAVE_GCC_VISIBILITY 1 )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
endif( )
endmacro( )
################################################
#####
##### Restore CMP0026 policy

Loading…
Cancel
Save