PROJECT(kbfx) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2 FATAL_ERROR) SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmakemodules) SET(CMAKE_COLOR_MAKEFILE ON CACHE STRING "Enable/Disable color output during build." FORCE) #SET(CMAKE_VERBOSE_MAKEFILE OFF CACHE STRING "Enable/Disable cmake debug output during build." FORCE) # Optimization flags # SET(CMAKE_CXX_FLAGS_DISTRIBUTION "-O3") # SET(CMAKE_C_FLAGS_DISTRIBUTION "-O3") # Global variable CMAKE_BUILD_TYPE # None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used) # Debug (CMAKE_C_FLAGS_DEBUG or CMAKE_CXX_FLAGS_DEBUG) # Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE) # RelWithDebInfo (CMAKE_C_FLAGS_RELWITHDEBINFO or CMAKE_CXX_FLAGS_RELWITHDEBINFO # MinSizeRel (CMAKE_C_FLAGS_MINSIZEREL or CMAKE_CXX_FLAGS_MINSIZEREL) IF (NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Specify build type: None Debug Release RelWithDebInfo MinSizeRel." FORCE) ENDIF (NOT CMAKE_BUILD_TYPE) OPTION(USE_STRIGI "Enable use of Strigi search support (disabled)" OFF) OPTION(USE_MENUDRAKE "Use 'menudrake' instead of 'kmenuedit' in Mandriva (auto)" ON) OPTION(USE_KDE4 "Compile for KDE4 (disabled)" OFF) SET(BIN_SEARCH_PATHES $ENV{HOME}/bin $ENV{HOME}/usr/bin $ENV{KDEDIR}/bin ${CMAKE_INSTALL_PREFIX}/bin /opt/kde/bin /opt/trinity/bin /opt/kde4/bin /usr/kde/3.5/bin /usr/bin /usr/local/bin /opt/bin ) SET(INCLUDE_SEARCH_PATHES $ENV{HOME}/include $ENV{HOME}/usr/include $ENV{KDEDIR}/include /opt/kde/include /opt/trinity/include /opt/kde4/include /usr/kde/3.5/include /usr/include /usr/local/include /opt/include ${CMAKE_SYSTEM_INCLUDE_PATH} ) SET(LIB_SEARCH_PATHES $ENV{HOME}/lib $ENV{HOME}/usr/lib $ENV{KDEDIR}/lib /opt/kde/lib /opt/trinity/lib /opt/kde4/lib /usr/kde/3.5/lib /usr/lib /usr/local/lib /opt/lib ) # Setting versions # For versions that are stable set to 1, else to 0 SET(APPLICATION_STABLE 1) SET(LIB_MAJOR 4) SET(LIB_MINOR 9) SET(LIB_RELEASE 3) SET(LIB_SUB_RELEASE 1) SET(APPLICATION_INTERNAL_VERSION "20070516") SET(APPLICATION_DATE "2007-05-16") SET(APPLICATION_NAME "${PROJECT_NAME}") SET(APPLICATION_MAIN_VERSION "0.${LIB_MAJOR}.${LIB_MINOR}.${LIB_RELEASE}") IF (APPLICATION_STABLE) SET(APPLICATION_STABLE_RELEASE ".${LIB_SUB_RELEASE}") SET(APPLICATION_VERSION "${APPLICATION_MAIN_VERSION}.${LIB_SUB_RELEASE}") SET(GENTOO_VERSION "${APPLICATION_MAIN_VERSION}.${LIB_SUB_RELEASE}") ELSE (APPLICATION_APPLICATION_STABLE "") SET(STABLE_RELEASE) SET(APPLICATION_VERSION "${APPLICATION_MAIN_VERSION}-${LIB_SUB_RELEASE}") SET(GENTOO_VERSION "${APPLICATION_MAIN_VERSION}_pre${LIB_SUB_RELEASE}") ENDIF (APPLICATION_STABLE) SET(VERSION ${APPLICATION_VERSION}) SET(STRIGI_VERSION "0.3.11") SET(GENTOO_KEYWORDS "x86 ~ppc ~amd64") # Prepare docbook part CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/doc/en/index.docbook.in ${CMAKE_BINARY_DIR}/doc/en/index.docbook @ONLY) IF (USE_STRIGI) FIND_PACKAGE(Strigi REQUIRED) INCLUDE_DIRECTORIES(${STRIGI_INCLUDE_DIR}) MESSAGE(STATUS "Strigi support is: ON!") ELSE (USE_STRIGI) MESSAGE(STATUS "Strigi support is: OFF!") ENDIF (USE_STRIGI) FIND_PROGRAM(HAVE_MANDRAKE menudrake) IF (HAVE_MANDRAKE AND USE_MENUDRAKE) SET(MANDRAKE "1") MESSAGE(STATUS "Will use 'menudrake' instead of 'kmenuedit'!") ELSE (HAVE_MANDRAKE AND USE_MENUDRAKE) SET(MANDRAKE "") MESSAGE(STATUS "Will use 'kmenuedit'!") ENDIF (HAVE_MANDRAKE AND USE_MENUDRAKE) IF (NOT USE_KDE4) MESSAGE(STATUS "Building for KDE3") INCLUDE(TestCXXAcceptsFlag) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DTESTING_RC=\"\\\"\${CMAKE_SOURCE_DIR}/configdialog/kbfxconfigappui.rc\\\"\"") CHECK_CXX_ACCEPTS_FLAG("-fexceptions" CXX_EXCEPTION) CHECK_CXX_ACCEPTS_FLAG("-fstack-protector" CXX_PROTECTOR) FIND_PACKAGE(KDE3 REQUIRED) INCLUDE(FindKdeLibs) INCLUDE(MacroEnsureVersion) # Dummy macros for compatibility MACRO(KDE4_AUTOMOC _dummy) ENDMACRO(KDE4_AUTOMOC) MACRO(KDE4_ADD_LIBRARY _dummy _dummy1 _dummy2) ENDMACRO(KDE4_ADD_LIBRARY) MACRO(KDE4_INSTALL_LIBTOOL_FILE _dummy _dummy1) ENDMACRO(KDE4_INSTALL_LIBTOOL_FILE) MACRO(KDE4_ADD_UI3_FILES _dummy _dummy1) ENDMACRO(KDE4_ADD_UI3_FILES) MACRO(KDE4_ADD_DCOP_SKELS _dummy _dummy1) ENDMACRO(KDE4_ADD_DCOP_SKELS) MACRO(KDE4_ADD_EXECUTABLE _dummy _dummy1) ENDMACRO(KDE4_ADD_EXECUTABLE) MACRO(KDE4_INSTALL_ICONS _dummy) ENDMACRO(KDE4_INSTALL_ICONS) ELSE (NOT USE_KDE4) MESSAGE(STATUS "Building for KDE4") FIND_PACKAGE(KDE4 REQUIRED) ADD_DEFINITIONS(${KDE4_DEFINITIONS} ${QT_DEFINITIONS}) SET(INCLUDE_SEARCH_PATHES ${INCLUDE_SEARCH_PATHES} ${KDE4_INCLUDES} ) SET(LIB_SEARCH_PATHES ${LIB_SEARCH_PATHES} ${KDE4_LIB_DIR} ) ENDIF (NOT USE_KDE4) IF (NOT QT_FOUND) MESSAGE("TQt3 not found, assuming TQt4 was desired") SET(TQT_INCLUDE_DIR "/usr/include/qt4") ELSE () SET(TQT_INCLUDE_DIR "${QT_INCLUDE_DIR}") ENDIF () INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/kbfxlib/data ${CMAKE_BINARY_DIR}/kbfxlib/common ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/configdialog ${CMAKE_BINARY_DIR}/plugins/common ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/kbfxlib/data ${CMAKE_SOURCE_DIR}/kbfxlib/common ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/configdialog ${CMAKE_SOURCE_DIR}/plugins/common ${TQT_INCLUDE_DIR} ${KDE3_INCLUDE_DIR} ${KDE3_INCLUDE_DIR}/kbfx ${KDE3_INCLUDE_DIR}/kbfx/plugins ${INCLUDE_SEARCH_PATHES} ) IF (NOT USE_KDE4) IF (CXX_EXCEPTION) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions") ENDIF (CXX_EXCEPTION) IF (CXX_PROTECTOR) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector") ENDIF (CXX_PROTECTOR) ADD_DEFINITIONS(${KDE3_DEFINITIONS} ${QT_DEFINITIONS}) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) IF(KDE3_KDECONFIG_EXECUTABLE) EXECUTE_PROCESS(COMMAND ${KDE3_KDECONFIG_EXECUTABLE} "--version" OUTPUT_VARIABLE output) STRING(REGEX MATCH "KDE: [0-9]+\\.[0-9]+\\.[0-9]+" KDEVERSION "${output}") STRING(REGEX REPLACE "^KDE: " "" KDEVERSION "${KDEVERSION}") ENDIF(KDE3_KDECONFIG_EXECUTABLE) SET(KDE_MIN_VERSION "3.5.0") MACRO_ENSURE_VERSION(${KDE_MIN_VERSION} ${KDEVERSION} VERSION_OK) IF(NOT VERSION_OK) MESSAGE(FATAL_ERROR "You need at least KDE Version of 3.5.0 in order to compile KBFX.\n Please upgrade your KDE or install the development files of KDE.") ENDIF(NOT VERSION_OK) ENDIF (NOT USE_KDE4) SET(KBFX_LIB_INSTALL_DIR ${LIB_INSTALL_DIR}) SET(QT_UIC_EXECUTABLE "/usr/bin/uic-tqt") SET(QT_MOC_EXECUTABLE "/usr/bin/tmoc") SET(CMAKE_CXX_FLAGS "-I/usr/include/tqt -include tqt.h -DTQT_THREAD_SUPPORT") ADD_SUBDIRECTORY(kbfxlib/data) ADD_SUBDIRECTORY(kbfxlib/common) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(configdialog) ADD_SUBDIRECTORY(skin/vector) ADD_SUBDIRECTORY(skin/raster/default) ADD_SUBDIRECTORY(skin/raster/2panels) ADD_SUBDIRECTORY(images) ADD_SUBDIRECTORY(doc) ADD_SUBDIRECTORY(doc/en) ADD_SUBDIRECTORY(doc/common) ADD_SUBDIRECTORY(po) ADD_SUBDIRECTORY(plugins/common) ADD_SUBDIRECTORY(plugins/applications) ADD_SUBDIRECTORY(plugins/settings) ADD_SUBDIRECTORY(plugins/plasmoids) ADD_SUBDIRECTORY(plugins/recentstuff) IF (USE_STRIGI) ADD_SUBDIRECTORY(plugins/strigi) ENDIF (USE_STRIGI) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h @ONLY) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/kbfx.spec.in ${CMAKE_BINARY_DIR}/kbfx.spec @ONLY) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/kbfx.ebuild.in ${CMAKE_BINARY_DIR}/kbfx-${GENTOO_VERSION}.ebuild @ONLY) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/strigi.ebuild.in ${CMAKE_BINARY_DIR}/strigi-${STRIGI_VERSION}.ebuild @ONLY) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/kbfx-svn.ebuild.in ${CMAKE_BINARY_DIR}/kbfx-9999.ebuild @ONLY) SET(DIST_INCLUDE "kbfx-9999.ebuild kbfx.spec kbfx-${GENTOO_VERSION}.ebuild strigi-${STRIGI_VERSION}.ebuild") SET(DIST_EXCLUDE "Helperstuff") CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmakemodules/makedist.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/makedist.sh" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(dist "${CMAKE_BINARY_DIR}/makedist.sh" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) IF (NOT USE_KDE4) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmakemodules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") ENDIF (NOT USE_KDE4) FILE(GLOB _POFILES po/*.po) FOREACH(_p ${_POFILES}) SET(POFILES "${_p} ${POFILES}") ENDFOREACH(_p) SET(MESSAGES_DIR ${CMAKE_SOURCE_DIR}) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmakemodules/package_messages.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/package_messages.sh" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(package-messages "${CMAKE_CURRENT_BINARY_DIR}/package_messages.sh")