################################################# # # (C) 2010-2011 Serghei Amelian # serghei (DOT) amelian (AT) gmail.com # # Improvements and feedback are welcome # # This file is released under GPL >= 2 # ################################################# tde_setup_architecture_flags( ) include(TestBigEndian) test_big_endian(WORDS_BIGENDIAN) tde_setup_largefiles( ) check_symbol_exists( strlcpy "string.h" HAVE_STRLCPY_PROTO ) check_symbol_exists( strlcat "string.h" HAVE_STRLCAT_PROTO ) ##### check for gcc visibility support ######### if( WITH_GCC_VISIBILITY ) tde_setup_gcc_visibility( ) endif( ) if( BUILD_KMAIL ) check_include_file( "byteswap.h" HAVE_BYTESWAP_H ) endif( ) if( BUILD_INDEXLIB OR BUILD_KMAIL ) # check for stl coping with namespace std tde_save( CMAKE_CXX_FLAGS ) string( REGEX REPLACE "-include tqt.h" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) check_cxx_source_compiles(" #include struct s : public std::iterator {}; int main(int, char**) { return 0; } " HAVE_STLNAMESPACE ) tde_restore( CMAKE_CXX_FLAGS ) if( HAVE_STLNAMESPACE ) set( STD_NAMESPACE_PREFIX "std::" ) endif( ) endif( ) if( BUILD_KMOBILE ) # FIXME not checked because Gentoo don't provide baudboy.h check_include_file( "baudboy.h" HAVE_BAUDBOY_H ) endif( ) if( WITH_GNOKII AND (BUILD_KADDRESSBOOK OR BUILD_KMOBILE) ) pkg_search_module( GNOKII gnokii ) if( NOT GNOKII_FOUND ) tde_message_fatal( "gnokii are requested, but was not found on your system" ) else( ) tde_save_and_set( CMAKE_REQUIRED_INCLUDES "${GNOKII_INCLUDE_DIRS}" ) check_include_file( "gnokii.h" HAVE_GNOKII_H ) tde_restore( CMAKE_REQUIRED_INCLUDES ) endif( ) endif( ) if( (BUILD_LIBTDENETWORK OR BUILD_CERTMANAGER OR BUILD_KMAIL OR BUILD_KADDRESSBOOK OR BUILD_KONTACT) AND NOT HAVE_GPGME_0_4_BRANCH ) message( STATUS "checking for 'gpgme'" ) # check for gpgme pkg_search_module( GPGME gpgme ) if( NOT GPGME_FOUND ) # find gpgme-config find_program( GPGME_EXECUTABLE NAMES gpgme-config ) if( NOT GPGME_EXECUTABLE ) tde_message_fatal( "gpgme-config was NOT found.\n gpgme library is installed?" ) endif( ) macro( __run_gpgme_config __type __var ) execute_process( COMMAND ${GPGME_EXECUTABLE} --${__type} OUTPUT_VARIABLE ${__var} RESULT_VARIABLE __result OUTPUT_STRIP_TRAILING_WHITESPACE ) if( _result ) tde_message_fatal( "Unable to run ${GPGME_EXECUTABLE}!\n gpgme library incorrectly installed?\n Path to gpgme-config incorrect?" ) endif( ) endmacro( ) __run_gpgme_config( version GPGME_VERSION ) __run_gpgme_config( cflags GPGME_INCLUDE_DIRS ) __run_gpgme_config( libs GPGME_LIBRARIES ) if( GPGME_INCLUDE_DIRS ) string( REGEX REPLACE "(^| +)-I" ";" GPGME_INCLUDE_DIRS "${GPGME_INCLUDE_DIRS}" ) endif( ) if( GPGME_LIBRARIES ) string( REGEX REPLACE "(^| +)-l" ";" GPGME_LIBRARIES "${GPGME_LIBRARIES}" ) endif( ) endif() # check for gpg-error pkg_search_module( GPGERR gpg-error ) if( NOT GPGERR_FOUND ) # find gpg-error-config find_program( GPG_ERR_EXECUTABLE NAMES gpgrt-config gpg-error-config ) if( NOT GPG_ERR_EXECUTABLE ) tde_message_fatal( "gpgrt-config or gpg-error-config was NOT found.\n gpg-error library is installed?" ) endif( ) macro( __run_gpgerr_config __type __var ) execute_process( COMMAND ${GPG_ERR_EXECUTABLE} --${__type} OUTPUT_VARIABLE ${__var} RESULT_VARIABLE __result OUTPUT_STRIP_TRAILING_WHITESPACE ) if( _result ) tde_message_fatal( "Unable to run ${GPG_ERR_EXECUTABLE}!\n gpg-error library incorrectly installed?\n Path to gpgme-config are incorrect?" ) endif( ) endmacro( ) __run_gpgerr_config( version GPGERR_VERSION ) __run_gpgerr_config( cflags GPGERR_INCLUDE_DIRS ) __run_gpgerr_config( libs GPGERR_LIBRARIES ) if( GPGERR_INCLUDE_DIRS ) string( REGEX REPLACE "(^| +)-I" ";" GPGERR_INCLUDE_DIRS "${GPGERR_INCLUDE_DIRS}" ) endif( ) if( GPGERR_LIBRARIES ) string( REGEX REPLACE "(^| +)-l" ";" GPGERR_LIBRARIES "${GPGERR_LIBRARIES}" ) endif( ) endif() # assuming that all newer system have gpgme >= 0.4 set( GPGME_INCLUDE_DIRS "${GPGME_INCLUDE_DIRS};${GPGERR_INCLUDE_DIRS}" CACHE INTERNAL "" FORCE ) set( GPGME_LIBRARIES "${GPGME_LIBRARIES};${GPGERR_LIBRARIES}" CACHE INTERNAL "" FORCE ) set( HAVE_GPGME_0_4_BRANCH 1 CACHE INTERNAL "" ) message( STATUS " found 'gpgme', version ${GPGME_VERSION}" ) # check for various GPGME features tde_save( CMAKE_CXX_FLAGS ) tde_save( CMAKE_REQUIRED_INCLUDES ) tde_save( CMAKE_REQUIRED_LIBRARIES ) string( REGEX REPLACE "-include tqt.h" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LARGEFILES_DEFINITIONS}") set( CMAKE_REQUIRED_INCLUDES "${GPGME_INCLUDE_DIRS}") set( CMAKE_REQUIRED_LIBRARIES "${GPGME_LIBRARIES}") # check for GPGME_KEYLIST_MODE_VALIDATE check_cxx_source_compiles(" #include int main() { gpgme_keylist_mode_t mode = GPGME_KEYLIST_MODE_VALIDATE; };" HAVE_GPGME_KEYLIST_MODE_VALIDATE ) # check for gpgme_cancel check_cxx_source_compiles(" #include int main() { gpgme_ctx_t ctx = 0; gpgme_error_t e = gpgme_cancel( ctx ); };" HAVE_GPGME_CANCEL ) # check for gpgme_key_t->keylist_mode check_cxx_source_compiles(" #include int main() { gpgme_key_t key = 0; key->keylist_mode = 0; };" HAVE_GPGME_KEY_T_KEYLIST_MODE ) # check for gpgme_decrypt_result_t->wrong_key_usage check_cxx_source_compiles(" #include int main() { gpgme_decrypt_result_t res; unsigned int wku = res->wrong_key_usage; };" HAVE_GPGME_WRONG_KEY_USAGE ) # check for GPGME_INCLUDE_CERTS_DEFAULT check_cxx_source_compiles(" #include int main() { int i = GPGME_INCLUDE_CERTS_DEFAULT; };" HAVE_GPGME_INCLUDE_CERTS_DEFAULT ) # check for gpgme_op_getauditlog check_cxx_source_compiles(" #include int main() { gpgme_ctx_t ctx = 0; gpgme_data_t data = 0; unsigned int flags = 0; gpgme_error_t e = gpgme_op_getauditlog( ctx, data, flags ); };" HAVE_GPGME_OP_GETAUDITLOG ) # done checking for GPGME features tde_restore( CMAKE_CXX_FLAGS ) tde_restore( CMAKE_REQUIRED_INCLUDES ) tde_restore( CMAKE_REQUIRED_LIBRARIES ) endif( ) if( BUILD_KARM AND WITH_XSCREENSAVER ) pkg_search_module( XSS xscrnsaver ) if( XSS_FOUND ) tde_save_and_set( CMAKE_REQUIRED_INCLUDES "${XSS_INCLUDE_DIRS}" ) check_library_exists( Xss XScreenSaverQueryInfo "${XSS_LIBRARY_DIRS}" HAVE_XSSLIB ) tde_restore( CMAKE_REQUIRED_INCLUDES ) else( XSS_FOUND ) check_library_exists( Xss XScreenSaverQueryInfo "" HAVE_XSSLIB ) endif( XSS_FOUND ) if( NOT HAVE_XSSLIB ) check_library_exists( Xext XScreenSaverQueryInfo "$(XEXT_LIBRARY_DIRS}" HAVE_XSSLIB ) if( HAVE_XSSLIB ) pkg_search_module( XSS xext ) endif( ) endif( ) check_include_file( X11/extensions/scrnsaver.h HAVE_XSCREENSAVER_H ) if( HAVE_XSSLIB AND HAVE_XSCREENSAVER_H ) set( HAVE_LIBXSS 1 ) else( ) tde_message_fatal( "xscreensaver is requested, but was not found on your system" ) endif( ) endif( ) if( BUILD_TDERESOURCES AND WITH_GROUPWISE ) check_symbol_exists( strrchr "string.h" HAVE_STRRCHR ) check_symbol_exists( strtod "stdlib.h" HAVE_STRTOD ) check_symbol_exists( sscanf "stdio.h" HAVE_SSCANF ) check_symbol_exists( strtol "stdlib.h" HAVE_STRTOL ) check_symbol_exists( strtoul "stdlib.h" HAVE_STRTOUL ) check_symbol_exists( strtoll "stdlib.h" HAVE_STRTOLL ) check_symbol_exists( strtoull "stdlib.h" HAVE_STRTOULL ) check_symbol_exists( gettimeofday "sys/time.h" HAVE_GETTIMEOFDAY ) check_include_file( "sys/timeb.h" HAVE_SYS_TIMEB_H ) check_symbol_exists( ftime "sys/timeb.h" HAVE_FTIME ) check_symbol_exists( rand_r "stdlib.h" HAVE_RAND_R ) check_symbol_exists( gmtime_r "time.h" HAVE_GMTIME_R ) check_symbol_exists( localtime_r "time.h" HAVE_LOCALTIME_R ) check_symbol_exists( timegm "time.h" HAVE_TIMEGM ) check_symbol_exists( wctomb "stdlib.h" HAVE_WCTOMB ) check_symbol_exists( mbtowc "stdlib.h" HAVE_MBTOWC ) check_symbol_exists( isnan "math.h" HAVE_ISNAN ) endif ( ) # required stuff find_package( TQt ) find_package( TDE )