diff --git a/CMakeLists.txt b/CMakeLists.txt index dc9d833..4c2802b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ cmake_minimum_required( VERSION 2.8.12 ) project( kgtk ) + ##### set up cpack ############################## set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") @@ -29,6 +30,7 @@ set(KGTK_VERSION_FULL "${KGTK_VERSION}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${KGTK_VERSION_FULL}") include(CPack) + ##### include essential cmake modules ########### include( CheckCXXSourceCompiles ) @@ -70,9 +72,7 @@ include( ConfigureChecks.cmake ) ###### global compiler settings ################# -add_definitions( - -DHAVE_CONFIG_H -) +add_definitions( -DHAVE_CONFIG_H ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) @@ -86,10 +86,12 @@ tde_conditional_add_subdirectory( BUILD_KGTK_TDE kdialogd3 ) tde_conditional_add_subdirectory( BUILD_KGTK_GTK2 gtk2 ) tde_conditional_add_subdirectory( BUILD_TRANSLATIONS po ) + ##### write configure files ##################### configure_file( config.h.cmake config.h @ONLY ) + ##### install global wrapper scripts ############ install(PROGRAMS ${CMAKE_SOURCE_DIR}/kdialogd-wrapper DESTINATION ${BIN_INSTALL_DIR}) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 1149770..cfd9cd0 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -39,30 +39,21 @@ check_include_file( linux/inotify.h HAVE_INOTIFY ) check_function_exists( statvfs HAVE_STATVFS ) check_function_exists( getpeereid HAVE_GETPEEREID ) -if ( BUILD_KGTK_GTK2 ) - # Check if we have dlvsym... - find_library(LIBDLVSYM_LIBRARY - NAMES dl - PATHS /lib /usr/lib /usr/X11R6/lib /usr/local/lib) - - if(LIBDLVSYM_LIBRARY) - set(HAVE_DLVSYM 1) - # Determine version of dlsym... - find_library(LIBDL_LIBRARY - NAMES dl - PATHS /lib /usr/lib /usr/X11R6/lib /usr/local/lib) - - if(LIBDL_LIBRARY) - execute_process(COMMAND objdump --dynamic-syms ${LIBDL_LIBRARY} - COMMAND grep dlsym - OUTPUT_VARIABLE DLSYM_DATA) - separate_arguments(DLSYM_DATA) - if (${CMAKE_MAJOR_VERSION} GREATER 2 OR ${CMAKE_MINOR_VERSION} GREATER 4) - cmake_policy(SET CMP0007 OLD) - endif (${CMAKE_MAJOR_VERSION} GREATER 2 OR ${CMAKE_MINOR_VERSION} GREATER 4) - list(GET DLSYM_DATA 4 KGTK_DLSYM_VERSION) - endif(LIBDL_LIBRARY) - else(LIBDLVSYM_LIBRARY) - message("** INFORMATION: You're libdl does not contain dlvsym - SWT apps will not be supported") - endif(LIBDLVSYM_LIBRARY) -endif () + +##### check for gtk+ 2.x + +if( BUILD_KGTK_GTK2 ) + + pkg_check_modules( GTK gtk+-2.0>=2.6 ) + pkg_check_modules( GTHREAD gthread-2.0 ) + + if( NOT GTK_FOUND OR NOT GTHREAD_FOUND ) + tde_message_fatal( "GTK2 support is requested but not found on your system" ) + endif() + + check_library_exists( "${CMAKE_DL_LIBS}" _dl_sym "" HAVE_DL_SYM ) + if( NOT HAVE_DL_SYM ) + tde_message_fatal( "The DL library seems no longer contains _dl_sym function" ) + endif() + +endif() diff --git a/config.h.cmake b/config.h.cmake index 7395b46..2f33f6d 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -1,11 +1,15 @@ + +// Defined if you have fvisibility and fvisibility-inlines-hidden support. +#cmakedefine __KDE_HAVE_GCC_VISIBILITY 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#cmakedefine WORDS_BIGENDIAN @WORDS_BIGENDIAN@ + /* Define to 1 if you have the `getpeereid' function. */ #cmakedefine HAVE_GETPEEREID 1 /* Define if you have the struct ucred */ #cmakedefine HAVE_STRUCT_UCRED 1 -#cmakedefine HAVE_DLVSYM 1 #define VERSION "@KGTK_VERSION_FULL@" - -#define KGTK_DLSYM_VERSION "@KGTK_DLSYM_VERSION@" - diff --git a/gtk2/CMakeLists.txt b/gtk2/CMakeLists.txt index 36b3e3f..9210e8c 100644 --- a/gtk2/CMakeLists.txt +++ b/gtk2/CMakeLists.txt @@ -1,22 +1,33 @@ -include(FindPkgConfig) -pkg_check_modules(GTK gtk+-2.0>=2.6) +include_directories( + ${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/common + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_BINARY_DIR} + ${GTK_INCLUDE_DIRS} +) -if (GTK_FOUND) - message("** INFORMATION: Gtk2 LD_PRELOAD library will be built.") - # set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) - set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) +##### kgtk2 (shared) - include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/common ${CMAKE_BINARY_DIR} ${GTK_INCLUDE_DIRS}) - set(kgtk2_SRCS kgtk2.c) - add_library(kgtk2 SHARED ${kgtk2_SRCS}) - target_link_libraries(kgtk2 ${GTK_LDFLAGS} -lgthread-2.0 -lglib-2.0 -lc -ldl) +tde_add_library( kgtk2 SHARED NO_LIBTOOL_FILE + SOURCES + kgtk2.c - install(TARGETS kgtk2 LIBRARY DESTINATION ${LIB_INSTALL_DIR}/kgtk ) + LINK + ${GTK_LIBRARIES} + ${GTHREAD_LIBRARIES} + ${CMAKE_DL_LIBS} - configure_file (kgtk2-wrapper.cmake ${CMAKE_CURRENT_BINARY_DIR}/kgtk2-wrapper @ONLY) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kgtk2-wrapper DESTINATION bin) -else (GTK_FOUND) - message("** ERROR : Could not locate Gtk2 headers, Gtk2 LD_PRELOAD library will not be built.") -endif (GTK_FOUND) + DESTINATION ${LIB_INSTALL_DIR}/kgtk +) + + +##### other data + +configure_file( kgtk2-wrapper.cmake kgtk2-wrapper @ONLY ) + +install( + PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kgtk2-wrapper + DESTINATION ${BIN_INSTALL_DIR} +) diff --git a/kdialogd3/CMakeLists.txt b/kdialogd3/CMakeLists.txt index d56ee22..3f2c5e1 100644 --- a/kdialogd3/CMakeLists.txt +++ b/kdialogd3/CMakeLists.txt @@ -23,7 +23,6 @@ link_directories( ${TDE_LIBRARY_DIRS} ) -message("** INFORMATION: KDialogD for TDE will be built.") ##### kdialogd3 (executable) ################# @@ -37,4 +36,4 @@ tde_add_executable( ${target} AUTOMOC SOURCES ${${target}_SRCS} LINK tdecore-shared tdeui-shared tdeio-shared DESTINATION ${BIN_INSTALL_DIR} -) \ No newline at end of file +) diff --git a/tqt/CMakeLists.txt b/tqt/CMakeLists.txt index f366481..04f8279 100644 --- a/tqt/CMakeLists.txt +++ b/tqt/CMakeLists.txt @@ -21,19 +21,47 @@ link_directories( ${TQT_LIBRARY_DIRS} ) -message("** INFORMATION: Qt3 LD_PRELOAD library will be built.") -# set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) -set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE) +add_definitions( -DTQT_THREAD_SUPPORT ) -ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mangled.h - COMMAND ${CMAKE_SOURCE_DIR}/mangled.sh ${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_BINARY_DIR}/mangled.h) -set(kqt3_SRCS kqt3.cpp mangled.h) -add_definitions(${QT_DEFINITIONS} -DTQT_THREAD_SUPPORT) -add_library(kqt3 SHARED ${kqt3_SRCS}) -target_link_libraries(kqt3 ${TQT_LIBRARIES} -lc -ldl) -install(TARGETS kqt3 LIBRARY DESTINATION ${LIB_INSTALL_DIR}/kgtk) +##### generate mangled.h -configure_file (kqt3-wrapper.cmake ${CMAKE_CURRENT_BINARY_DIR}/kqt3-wrapper @ONLY) -install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kqt3-wrapper DESTINATION ${BIN_INSTALL_DIR}) \ No newline at end of file +add_custom_target( + mangled_header + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mangled.h +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mangled.h + COMMAND + ${CMAKE_SOURCE_DIR}/mangled.sh + ${CMAKE_CXX_COMPILER} + ${CMAKE_CURRENT_BINARY_DIR}/mangled.h +) + + +##### kqt3 (shared) + +tde_add_library( kqt3 SHARED NO_LIBTOOL_FILE + SOURCES + kqt3.cpp + + LINK + ${TQT_LIBRARIES} + ${CMAKE_DL_LIBS} + + DESTINATION ${LIB_INSTALL_DIR}/kgtk + + DEPENDENCIES mangled_header +) + + +##### other data + +configure_file( kqt3-wrapper.cmake kqt3-wrapper @ONLY ) + +install( + PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/kqt3-wrapper + DESTINATION ${BIN_INSTALL_DIR} +)