diff options
-rwxr-xr-x | am2cmake | 4 | ||||
-rw-r--r-- | modules/CMakeLists.txt | 4 | ||||
-rw-r--r-- | modules/FindKDE3.cmake | 115 | ||||
-rw-r--r-- | modules/FindKDE4Internal.cmake | 174 | ||||
-rw-r--r-- | modules/KDE3Macros.cmake | 16 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 31 | ||||
-rw-r--r-- | samples/kcalc/CMakeLists.txt | 33 | ||||
-rw-r--r-- | samples/kcalc/knumber/CMakeLists.txt | 7 | ||||
-rw-r--r-- | samples/kcalc/knumber/tests/CMakeLists.txt | 6 | ||||
-rw-r--r-- | samples/kpager/CMakeLists.txt | 18 | ||||
-rw-r--r-- | samples/man/CMakeLists.txt | 1 | ||||
-rw-r--r-- | samples/view1394/CMakeLists.txt | 1 |
12 files changed, 245 insertions, 165 deletions
@@ -610,7 +610,7 @@ class CMakeFile file.printf("INSTALL_TARGETS(/lib/kde3 %s )\n\n", buildTarget.name) elsif buildTarget.type==KDEInit - file.printf("KDE3_ADD_KLM( %s ${%s})\n\n", buildTarget.name, srcsName) + file.printf("KDE3_ADD_KDEINIT_EXECUTABLE( %s ${%s})\n\n", buildTarget.name, srcsName) file.printf("TARGET_LINK_LIBRARIES(kdeinit_%s ", buildTarget.name) buildTarget.libs.each { |currentLib| file.printf(" %s", currentLib) } @@ -671,8 +671,6 @@ class CMakeFile file.printf("KDE3_INSTALL_ICONS( %s )\n\n",@iconDir ) end - file.printf("KDE3_PLACEHOLDER()\n\n") - file.printf("\n\n#original Makefile.am contents follow:\n\n") @lines.each{ |line| file.printf("#%s", line)} end diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index d08d9abe..8f50adc8 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -13,3 +13,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/remove_files.cmake.in ${CMAKE_CURRENT install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/remove_files.cmake ) +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/remove_files.cmake "#generated by cmake, dont edit\n\n") +#foreach( _current_FILE ${FILES_TO_REMOVE}) +# file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/remove_files.cmake "exec_program( ${CMAKE_COMMAND} ARGS -E remove ${_current_FILE} ) +#endforeach( _current_FILE) diff --git a/modules/FindKDE3.cmake b/modules/FindKDE3.cmake index 68dd62e2..5b2bd104 100644 --- a/modules/FindKDE3.cmake +++ b/modules/FindKDE3.cmake @@ -1,31 +1,70 @@ # - Find the KDE3 include and library dirs, KDE preprocessors and define a some macros # -# KDE3_DEFINITIONS -# KDE3_INCLUDE_DIR -# KDE3_INCLUDE_DIRS -# KDE3_LIB_DIR -# KDE3_SERVICETYPES_DIR -# KDE3_DCOPIDL_EXECUTABLE -# KDE3_DCOPIDL2CPP_EXECUTABLE -# KDE3_KCFGC_EXECUTABLE -# KDE3_FOUND -# it also adds the following macros (from KDE3Macros.cmake) -# ADD_FILE_DEPENDANCY -# KDE3_ADD_DCOP_SKELS -# KDE3_ADD_DCOP_STUBS -# KDE3_ADD_MOC_FILES -# KDE3_ADD_UI_FILES -# KDE3_ADD_KCFG_FILES -# KDE3_AUTOMOC -# KDE3_PLACEHOLDER -# KDE3_INSTALL_LIBTOOL_FILE -# KDE3_CREATE_FINAL_FILE -# KDE3_ADD_KPART -# KDE3_ADD_KLM -# KDE3_ADD_EXECUTABLE - - -CMAKE_MINIMUM_REQUIRED(VERSION "2.3.3") +# This module defines the following variables: +# KDE3_DEFINITIONS - compiler definitions required for compiling KDE software +# KDE3_INCLUDE_DIR - the KDE include directory +# KDE3_INCLUDE_DIRS - the KDE and the Qt include directory, for use with INCLUDE_DIRECTORIES() +# KDE3_LIB_DIR - the directory where the KDE libraries are installed, for use with LINK_DIR() +# QT_AND_KDECORE_LIBRARIES - this contains both the Qt and the kdecore library +# KDE3_DCOPIDL_EXECUTABLE - the dcopidl executable +# KDE3_DCOPIDL2CPP_EXECUTABLE - the dcopidl2cpp executable +# KDE3_KCFGC_EXECUTABLE - the kconfig_compiler executable +# KDE3_FOUND - set to TRUE if all of the above has been found +# +# The following user adjustable options are provided: +# +# KDE3_ENABLE_FINAL - enable this for KDE-style enable-final all-in-one compilation +# KDE3_BUILD_TESTS - enable this to build KDE testcases +# +# +# It also adds the following macros (from KDE3Macros.cmake) +# SRCS_VAR is always the variable which contains the list of source files for your application or library. +# +# KDE3_AUTOMOC(file1 ... fileN) +# Call this if you want to have automatic moc file handling. +# This means if you include "foo.moc" in the source file foo.cpp +# a moc file for the header foo.h will be created automatically. +# +# KDE3_ADD_MOC_FILES(SRCS_VAR file1 ... fileN ) +# If you don't use the KDE3_AUTOMOC() macro, for the files +# listed here moc files will be created (named "foo.moc.cpp") +# +# KDE3_ADD_DCOP_SKELS(SRCS_VAR header1.h ... headerN.h ) +# Use this to generate DCOP skeletions from the listed headers. +# +# KDE3_ADD_DCOP_STUBS(SRCS_VAR header1.h ... headerN.h ) +# Use this to generate DCOP stubs from the listed headers. +# +# KDE3_ADD_UI_FILES(SRCS_VAR file1.ui ... fileN.ui ) +# Use this to add the Qt designer ui files to your application/library. +# +# KDE3_ADD_KCFG_FILES(SRCS_VAR file1.kcfgc ... fileN.kcfgc ) +# Use this to add KDE kconfig compiler files to your application/library. +# +# KDE3_INSTALL_LIBTOOL_FILE(target) +# This will create and install a simple libtool file for the given target. +# +# KDE3_ADD_EXECUTABLE(name file1 ... fileN ) +# Equivalent to ADD_EXECUTABLE(), but additionally supports KDE3_ENABLE_FINAL +# +# KDE3_ADD_KPART(name [WITH_PREFIX] file1 ... fileN ) +# Create a KDE plugin (KPart, kioslave, etc.) from the given source files. +# It supports KDE3_ENABLE_FINAL +# If WITH_PREFIX is given, the resulting plugin will have the prefix "lib", otherwise it won't. +# It creates and install an appropriate libtool la-file. +# +# KDE3_ADD_KDEINIT_EXECUTABLE(name file1 ... fileN ) +# Create a KDE application in the form of a module loadable via kdeinit. +# It supports KDE3_ENABLE_FINAL. +# A library named kdeinit_<name> will be created and a small executable which links to it. +# Supports KDE3_ENABLE_FINAL +# +# Author: Alexander Neundorf <neundorf@kde.org> + +IF(NOT UNIX) + MESSAGE(FATAL_ERROR "Compiling KDE3 applications and libraries under Windows is not supported") +ENDIF(NOT UNIX) + SET(QT_MT_REQUIRED TRUE) #SET(QT_MIN_VERSION "3.0.0") @@ -34,8 +73,6 @@ SET(QT_MT_REQUIRED TRUE) FIND_PACKAGE(Qt3 REQUIRED) FIND_PACKAGE(X11 REQUIRED) -#add the definitions found by FindQt to the current definitions -#ADD_DEFINITIONS(${QT_DEFINITIONS} -DQT_CLEAN_NAMESPACE) SET(QT_AND_KDECORE_LIBS ${QT_LIBRARIES} kdecore) @@ -85,11 +122,11 @@ FIND_LIBRARY(KDE3_LIB_DIR NAMES kdecore ) #now the KDE service types directory -FIND_PATH(KDE3_SERVICETYPES_DIR ktexteditor.desktop - $ENV{KDEDIR}/share/servicetypes/ - /opt/kde/share/servicetypes/ - /opt/kde3/share/servicetypes/ -) +#FIND_PATH(KDE3_SERVICETYPES_DIR ktexteditor.desktop +# $ENV{KDEDIR}/share/servicetypes/ +# /opt/kde/share/servicetypes/ +# /opt/kde3/share/servicetypes/ +#) #now search for the dcop utilities FIND_PROGRAM(KDE3_DCOPIDL_EXECUTABLE NAME dcopidl PATHS @@ -108,15 +145,17 @@ FIND_PROGRAM(KDE3_KCFGC_EXECUTABLE NAME kconfig_compiler PATHS /opt/kde/bin /opt/kde3/bin) + # KDE3Macros.cmake contains all the KDE specific macros INCLUDE(KDE3Macros) + #SET KDE3_FOUND -IF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_SERVICETYPES_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) +IF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) SET(KDE3_FOUND TRUE) -ELSE (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_SERVICETYPES_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) +ELSE (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) SET(KDE3_FOUND FALSE) -ENDIF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_SERVICETYPES_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) +ENDIF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE) MACRO (KDE3_PRINT_RESULTS) @@ -152,6 +191,7 @@ MACRO (KDE3_PRINT_RESULTS) ENDMACRO (KDE3_PRINT_RESULTS) + IF (KDE3_FIND_REQUIRED AND NOT KDE3_FOUND) #bail out if something wasn't found KDE3_PRINT_RESULTS() @@ -159,12 +199,11 @@ IF (KDE3_FIND_REQUIRED AND NOT KDE3_FOUND) ENDIF (KDE3_FIND_REQUIRED AND NOT KDE3_FOUND) + IF (NOT KDE3_FIND_QUIETLY) KDE3_PRINT_RESULTS() ENDIF (NOT KDE3_FIND_QUIETLY) #add the found Qt and KDE include directories to the current include path SET(KDE3_INCLUDE_DIRS ${QT_INCLUDE_DIR} ${KDE3_INCLUDE_DIR}) -#INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR} ${KDE3_INCLUDE_DIR} .) -#LINK_DIRECTORIES(${KDE3_LIB_DIR}) diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake index 11252ac1..65e215b3 100644 --- a/modules/FindKDE4Internal.cmake +++ b/modules/FindKDE4Internal.cmake @@ -69,6 +69,40 @@ set(APPLNK_INSTALL_DIR /share/applnk CACHE STRING "Is this st # set(KDE4_DIR ${CMAKE_INSTALL_PREFIX}) +option(KDE4_ENABLE_FINAL "Enable final all-in-one compilation") +option(KDE4_BUILD_TESTS "Build the tests") +option(KDE4_USE_QT_EMB "link to Qt-embedded, don't use X") + + +# RPATH handling +set(KDE4_NEED_WRAPPER_SCRIPTS FALSE) +if (UNIX) + + set(KDE4_NEED_WRAPPER_SCRIPTS TRUE) + + # to disable RPATH completely, set CMAKE_SKIP_RPATH to TRUE + + option(KDE4_RPATH_TO_BUILD_DIR "Compile executables with RPATH set to both the builddir and the installdir, otherwise RPATH will be set to the install dir. You can disable RPATH completely by setting CMAKE_SKIP_RPATH to ON" ON) + + # this avoids relinking during installation + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) + set(CMAKE_SKIP_BUILD_RPATH TRUE) + # this is the list of RPATHs, start empty + + # optionally add the builddir + if (KDE4_RPATH_TO_BUILD_DIR) + set(KDE4_NEED_WRAPPER_SCRIPTS FALSE) + endif (KDE4_RPATH_TO_BUILD_DIR) + + if (CMAKE_SKIP_RPATH) + set(KDE4_NEED_WRAPPER_SCRIPTS TRUE) + endif (CMAKE_SKIP_RPATH) + +endif (UNIX) + +# set it to false again until the next kde release of cmake is required +set(KDE4_NEED_WRAPPER_SCRIPTS FALSE) + #now try to find some kde stuff @@ -76,41 +110,45 @@ set(APPLNK_INSTALL_DIR /share/applnk CACHE STRING "Is this st #then enter bootstrap mode if(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) - message(STATUS "Building kdelibs...") + message(STATUS "Building kdelibs...") - set(KDE4_INCLUDE_DIR ${CMAKE_SOURCE_DIR}) + set(KDE4_INCLUDE_DIR ${CMAKE_SOURCE_DIR}) - set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin ) + set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin ) - # adjust dcopidl and the library output path depending on the platform - if (WIN32) - # under windows dcopidl.bat has to be used, except when using MSYS, then the perl script has to be used, Alex - if ("${CMAKE_GENERATOR}" MATCHES "MSYS") - set(KDE4_DCOPIDL_EXECUTABLE ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl ) - else ("${CMAKE_GENERATOR}" MATCHES "MSYS") - set(KDE4_DCOPIDL_EXECUTABLE call ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl.bat ) - endif ("${CMAKE_GENERATOR}" MATCHES "MSYS") + # adjust dcopidl and the library output path depending on the platform + if (WIN32) + # under windows dcopidl.bat has to be used, except when using MSYS, then the perl script has to be used, Alex + if ("${CMAKE_GENERATOR}" MATCHES "MSYS") + set(KDE4_DCOPIDL_EXECUTABLE ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl ) + else ("${CMAKE_GENERATOR}" MATCHES "MSYS") + set(KDE4_DCOPIDL_EXECUTABLE call ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl.bat ) + endif ("${CMAKE_GENERATOR}" MATCHES "MSYS") - set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} ) - else (WIN32) - set(KDE4_DCOPIDL_EXECUTABLE ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl ) - set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib ) - set(KDE4_LD_LIBRARY_PATH LD_LIBRARY_PATH=${LIBRARY_OUTPUT_PATH}\$\${LD_LIBRARY_PATH+:\$\$LD_LIBRARY_PATH}) - endif (WIN32) - - set(KDE4_LIB_DIR ${LIBRARY_OUTPUT_PATH}) - set(KDE4_KALYPTUS_DIR ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/ ) + set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH} ) + else (WIN32) + set(KDE4_DCOPIDL_EXECUTABLE ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/dcopidl ) + set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib ) + endif (WIN32) + + set(KDE4_LIB_DIR ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) + set(KDE4_KALYPTUS_DIR ${CMAKE_SOURCE_DIR}/dcop/dcopidlng/ ) - # CMAKE_CFG_INTDIR is the output subdirectory created e.g. by XCode and MSVC - set(KDE4_DCOPIDL2CPP_EXECUTABLE ${KDE4_LD_LIBRARY_PATH} ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp ) - set(KDE4_KCFGC_EXECUTABLE ${KDE4_LD_LIBRARY_PATH} ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler ) - set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc ) - - # when building kdelibs, make the dcop and kcfg rules depend on the binaries... - set( _KDE4_DCOPIDL2CPP_DEP dcopidl2cpp) - set( _KDE4_KCONFIG_COMPILER_DEP kconfig_compiler) + # CMAKE_CFG_INTDIR is the output subdirectory created e.g. by XCode and MSVC + if (KDE4_NEED_WRAPPER_SCRIPTS) + set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp.sh ) + set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler.sh ) + set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc.sh ) + else (KDE4_NEED_WRAPPER_SCRIPTS) + set(KDE4_DCOPIDL2CPP_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/dcopidl2cpp ) + set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler ) + set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc ) + endif (KDE4_NEED_WRAPPER_SCRIPTS) + + # when building kdelibs, make the dcop and kcfg rules depend on the binaries... + set( _KDE4_DCOPIDL2CPP_DEP dcopidl2cpp) + set( _KDE4_KCONFIG_COMPILER_DEP kconfig_compiler) - else(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) get_filename_component( kde_cmake_module_dir ${CMAKE_CURRENT_LIST_FILE} PATH) @@ -141,6 +179,7 @@ message(STATUS "kdeui: ${LIB_KDEUI}") set( _KDE4_DCOPIDL2CPP_DEP ) set( _KDE4_KCONFIG_COMPILER_DEP) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib ) + # at first the KDE include direcory # kpassworddialog.h is new with KDE4 FIND_PATH(KDE4_INCLUDE_DIR kpassworddialog.h @@ -201,13 +240,6 @@ endif(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) ##################### and now the platform specific stuff ############################ - -if(UNIX AND NOT APPLE) - FIND_PACKAGE(X11 REQUIRED) - set(_KDE4_PLATFORM_INCLUDE_DIRS ${X11_INCLUDE_DIR} ) -endif(UNIX AND NOT APPLE) - - # Set a default build type for single-configuration # CMake generators if no build type is set. IF (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) @@ -242,37 +274,43 @@ if (WIN32) endif (WIN32) + # also use /usr/local by default under UNIX, including Mac OS X if (UNIX) link_directories(/usr/local/lib) include_directories(/usr/local/include) -endif (UNIX) + # build the install RPATH + set(CMAKE_INSTALL_RPATH) -# only on linux, but NOT e.g. on FreeBSD: -if (CMAKE_SYSTEM_NAME MATCHES Linux) - set ( _KDE4_PLATFORM_DEFINITIONS -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE) - set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc") - set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc") - # optimization flags are set further below for the various build types - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-exceptions -fno-check-new -fno-common") -endif (CMAKE_SYSTEM_NAME MATCHES Linux) + # optionally add the builddir + if (KDE4_RPATH_TO_BUILD_DIR) + set(CMAKE_INSTALL_RPATH ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/ ) + endif (KDE4_RPATH_TO_BUILD_DIR) + # add the library install dir + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR}) + # add the Qt library dir + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${QT_LIBRARY_DIR}) -# works on FreeBSD, NOT tested on NetBSD and OpenBSD -if (CMAKE_SYSTEM_NAME MATCHES BSD) - set ( _KDE4_PLATFORM_DEFINITIONS -D_GNU_SOURCE ) - set ( CMAKE_SHARED_LINKER_FLAGS "-avoid-version -lc") - set ( CMAKE_MODULE_LINKER_FLAGS "-avoid-version -lc") - # optimization flags are set further below for the various build types - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common") -endif (CMAKE_SYSTEM_NAME MATCHES BSD) + # building something else than kdelibs/ ? + # then add the dir where the kde libraries are installed + if (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${KDE4_LIB_DIR} ) + endif (NOT EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h) + +endif (UNIX) + + +# UNIX, except OS X +if (UNIX AND NOT APPLE) + find_package(X11 REQUIRED) + set(_KDE4_PLATFORM_INCLUDE_DIRS ${X11_INCLUDE_DIR} ) +endif (UNIX AND NOT APPLE) # This will need to be modified later to support either Qt/X11 or Qt/Mac builds -if(APPLE) +if (APPLE) set ( _KDE4_PLATFORM_DEFINITIONS -D__APPLE_KDE__ ) @@ -294,7 +332,29 @@ if(APPLE) # optimization flags are set below for the various build types set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-common") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common") -endif(APPLE) +endif (APPLE) + + +# only on linux, but NOT e.g. on FreeBSD: +if (CMAKE_SYSTEM_NAME MATCHES Linux) + set ( _KDE4_PLATFORM_DEFINITIONS -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE) + set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc") + set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc") + # optimization flags are set further below for the various build types + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-exceptions -fno-check-new -fno-common") +endif (CMAKE_SYSTEM_NAME MATCHES Linux) + + +# works on FreeBSD, NOT tested on NetBSD and OpenBSD +if (CMAKE_SYSTEM_NAME MATCHES BSD) + set ( _KDE4_PLATFORM_DEFINITIONS -D_GNU_SOURCE ) + set ( CMAKE_SHARED_LINKER_FLAGS "-avoid-version -lc") + set ( CMAKE_MODULE_LINKER_FLAGS "-avoid-version -lc") + # optimization flags are set further below for the various build types + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common") +endif (CMAKE_SYSTEM_NAME MATCHES BSD) # compiler specific stuff, maybe this should be done differently, Alex diff --git a/modules/KDE3Macros.cmake b/modules/KDE3Macros.cmake index da2a0625..eb3f2c01 100644 --- a/modules/KDE3Macros.cmake +++ b/modules/KDE3Macros.cmake @@ -1,5 +1,4 @@ # this file contains the following macros: -# ADD_FILE_DEPENDANCY # KDE3_ADD_DCOP_SKELS # KDE3_ADD_DCOP_STUBS # KDE3_ADD_MOC_FILES @@ -7,10 +6,9 @@ # KDE3_ADD_KCFG_FILES # KDE3_AUTOMOC # KDE3_INSTALL_LIBTOOL_FILE -# KDE3_PLACEHOLDER # KDE3_CREATE_FINAL_FILE # KDE3_ADD_KPART -# KDE3_ADD_KLM +# KDE3_ADD_KDEINIT_EXECUTABLE # KDE3_ADD_EXECUTABLE @@ -165,12 +163,6 @@ MACRO(KDE3_ADD_UI_FILES _sources ) DEPENDS ${_tmp_FILE} ) -# ADD_CUSTOM_COMMAND(OUTPUT ${_src} -# COMMAND uic -# ARGS -nounload -tr tr2i18n -o ${_src} -impl ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} -# DEPENDS ${_header} -# ) - ADD_CUSTOM_COMMAND(OUTPUT ${_src} COMMAND ${CMAKE_COMMAND} ARGS @@ -335,12 +327,12 @@ MACRO(KDE3_ADD_KPART _target_NAME _with_PREFIX) SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES PREFIX "") ENDIF(_first_SRC) - KDE3_CREATE_LIBTOOL_FILE(${_target_NAME}) + KDE3_INSTALL_LIBTOOL_FILE(${_target_NAME}) ENDMACRO(KDE3_ADD_KPART) -MACRO(KDE3_ADD_KLM _target_NAME ) +MACRO(KDE3_ADD_KDEINIT_EXECUTABLE _target_NAME ) IF (KDE3_ENABLE_FINAL) KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${ARGN}) @@ -354,7 +346,7 @@ MACRO(KDE3_ADD_KLM _target_NAME ) ADD_EXECUTABLE( ${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp ) TARGET_LINK_LIBRARIES( ${_target_NAME} kdeinit_${_target_NAME} ) -ENDMACRO(KDE3_ADD_KLM) +ENDMACRO(KDE3_ADD_KDEINIT_EXECUTABLE) MACRO(KDE3_ADD_EXECUTABLE _target_NAME ) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index fcbb874b..b34c021d 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -299,24 +299,24 @@ MACRO(KDE4_INSTALL_ICONS _defaultpath _theme ) # first the png icons FILE(GLOB _icons *.png) - FOREACH(_current_ICON ${_icons} ) + foreach(_current_ICON ${_icons} ) STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}") STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\2" _group "${_current_ICON}") STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}") _KDE4_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake ${CMAKE_INSTALL_PREFIX}/${_defaultpath}/${_theme}/${_size}x${_size} ${_group} ${_current_ICON} ${_name}) - ENDFOREACH (_current_ICON) + ENDforeach (_current_ICON) # and now the svg icons FILE(GLOB _icons *.svgz) - FOREACH (_current_ICON ${_icons} ) + foreach (_current_ICON ${_icons} ) STRING(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\1" _group "${_current_ICON}") STRING(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\2" _name "${_current_ICON}") _KDE4_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake ${CMAKE_INSTALL_PREFIX}/${_defaultpath}/${_theme}/scalable ${_group} ${_current_ICON} ${_name}) - ENDFOREACH (_current_ICON) + ENDforeach (_current_ICON) INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake ) ENDMACRO(KDE4_INSTALL_ICONS) @@ -376,9 +376,18 @@ MACRO(KDE4_CREATE_FINAL_FILES _filenameCPP _filenameC ) ENDMACRO(KDE4_CREATE_FINAL_FILES) -OPTION(KDE4_ENABLE_FINAL "Enable final all-in-one compilation") -OPTION(KDE4_BUILD_TESTS "Build the tests") -OPTION(KDE4_USE_QT_EMB "link to Qt-embedded, don't use X") +MACRO(KDE4_HANDLE_RPATH _target_NAME) + if (KDE4_NEED_WRAPPER_SCRIPTS) + if (APPLE) + set(_library_path_variable "DYLD_LIBRARY_PATH") + else (APPLE) + set(_library_path_variable "LD_LIBRARY_PATH") + endif (APPLE) + set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${CMAKE_INSTALL_PREFIX}${LIB_INSTALL_DIR}:${KDE4_LIB_DIR}:${QT_LIBRARY_DIR}") + get_target_property(_executable ${_target_NAME} LOCATION ) + configure_file(${KDE4_MODULE_DIR}/kde4_exec_via_sh.cmake ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${_target_NAME}.sh) + endif (KDE4_NEED_WRAPPER_SCRIPTS) +ENDMACRO(KDE4_HANDLE_RPATH) MACRO(KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) @@ -435,6 +444,7 @@ MACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) ADD_EXECUTABLE( ${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp ) + KDE4_HANDLE_RPATH(${_target_NAME}) TARGET_LINK_LIBRARIES( ${_target_NAME} kdeinit_${_target_NAME} ) # endif (WIN32) @@ -443,12 +453,13 @@ ENDMACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME) MACRO(KDE4_ADD_EXECUTABLE _target_NAME ) - if (KDE4_ENABLE_FINAL) + IF (KDE4_ENABLE_FINAL) KDE4_CREATE_FINAL_FILES(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${ARGN}) ADD_EXECUTABLE(${_target_NAME} ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) - else (KDE4_ENABLE_FINAL) + ELSE (KDE4_ENABLE_FINAL) ADD_EXECUTABLE(${_target_NAME} ${ARGN} ) - endif (KDE4_ENABLE_FINAL) + ENDIF (KDE4_ENABLE_FINAL) + KDE4_HANDLE_RPATH(${_target_NAME}) ENDMACRO(KDE4_ADD_EXECUTABLE _target_NAME) diff --git a/samples/kcalc/CMakeLists.txt b/samples/kcalc/CMakeLists.txt index 1a3c4ec5..8418baf6 100644 --- a/samples/kcalc/CMakeLists.txt +++ b/samples/kcalc/CMakeLists.txt @@ -30,33 +30,25 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) ########### next target ############### SET(kcalc_KDEINIT_SRCS -kcalc.cpp -kcalc_button.cpp -kcalc_const_button.cpp -kcalc_const_menu.cpp -kcalc_core.cpp -kcalcdisplay.cpp -dlabel.cpp -stats.cpp -) + kcalc.cpp + kcalc_button.cpp + kcalc_const_button.cpp + kcalc_const_menu.cpp + kcalc_core.cpp + kcalcdisplay.cpp + dlabel.cpp + stats.cpp + ) KDE3_AUTOMOC(${kcalc_KDEINIT_SRCS}) -SET( kcalc_UI -colors.ui -general.ui -constants.ui -) +SET( kcalc_UI colors.ui general.ui constants.ui ) KDE3_ADD_UI_FILES(kcalc_KDEINIT_SRCS ${kcalc_UI} ) -SET( kcalc_KCFG_SRCS -kcalc_settings.kcfgc -) +KDE3_ADD_KCFG_FILES(kcalc_KDEINIT_SRCS kcalc_settings.kcfgc ) -KDE3_ADD_KCFG_FILES(kcalc_KDEINIT_SRCS ${kcalc_KCFG_SRCS}) - -KDE3_ADD_KLM( kcalc ${kcalc_KDEINIT_SRCS}) +KDE3_ADD_KDEINIT_EXECUTABLE( kcalc ${kcalc_KDEINIT_SRCS}) # gmp, knumber and kdeui added manually TARGET_LINK_LIBRARIES(kdeinit_kcalc ${QT_AND_KDECORE_LIBS} kdeui knumber gmp) @@ -75,7 +67,6 @@ INSTALL_FILES( /share/apps/kconf_update FILES kcalcrc.upd ) KDE3_INSTALL_ICONS( hicolor ) -KDE3_PLACEHOLDER() diff --git a/samples/kcalc/knumber/CMakeLists.txt b/samples/kcalc/knumber/CMakeLists.txt index 77042474..5be3ca14 100644 --- a/samples/kcalc/knumber/CMakeLists.txt +++ b/samples/kcalc/knumber/CMakeLists.txt @@ -8,10 +8,7 @@ ADD_DEFINITIONS(-D_GNU_SOURCE -D_ISOC99_SOURCE ) # added manually ########### next target ############### -SET(knumber_STAT_SRCS -knumber.cpp -knumber_priv.cpp -) +SET(knumber_STAT_SRCS knumber.cpp knumber_priv.cpp ) KDE3_AUTOMOC(${knumber_STAT_SRCS}) @@ -21,8 +18,6 @@ ADD_LIBRARY(knumber STATIC ${knumber_STAT_SRCS}) ########### install files ############### -KDE3_PLACEHOLDER() - #original Makefile.am contents follow: diff --git a/samples/kcalc/knumber/tests/CMakeLists.txt b/samples/kcalc/knumber/tests/CMakeLists.txt index 243de913..72a55b6d 100644 --- a/samples/kcalc/knumber/tests/CMakeLists.txt +++ b/samples/kcalc/knumber/tests/CMakeLists.txt @@ -3,9 +3,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/kcalc/knumber ${KDE3_INCLUDE_DIR} ${QT_ ########### next target ############### -SET(knumbertest_SRCS -knumbertest.cpp -) +SET(knumbertest_SRCS knumbertest.cpp ) KDE3_AUTOMOC(${knumbertest_SRCS}) @@ -19,8 +17,6 @@ ENDIF(KDE3_BUILD_TESTS) ########### install files ############### -KDE3_PLACEHOLDER() - #original Makefile.am contents follow: diff --git a/samples/kpager/CMakeLists.txt b/samples/kpager/CMakeLists.txt index bd53d10f..1033af75 100644 --- a/samples/kpager/CMakeLists.txt +++ b/samples/kpager/CMakeLists.txt @@ -12,18 +12,16 @@ INCLUDE_DIRECTORIES( ${KDE3_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${CMAKE_CURRENT_SOURC ########### next target ############### SET(kpager_SRCS -desktop.cpp -kpager.cpp -config.cpp -windowdrag.cpp -main.cpp -) + desktop.cpp + kpager.cpp + config.cpp + windowdrag.cpp + main.cpp + ) KDE3_AUTOMOC(${kpager_SRCS}) -SET( kpager_DCOP_SKEL_SRCS -kpagerIface.h -) +SET( kpager_DCOP_SKEL_SRCS kpagerIface.h ) KDE3_ADD_DCOP_SKELS(kpager_SRCS ${kpager_DCOP_SKEL_SRCS}) @@ -40,8 +38,6 @@ INSTALL_FILES( /share/applications/kde FILES kpager.desktop ) KDE3_INSTALL_ICONS( hicolor ) -KDE3_PLACEHOLDER() - #original Makefile.am contents follow: diff --git a/samples/man/CMakeLists.txt b/samples/man/CMakeLists.txt index 76c92579..7ea0c537 100644 --- a/samples/man/CMakeLists.txt +++ b/samples/man/CMakeLists.txt @@ -84,7 +84,6 @@ INSTALL_TARGETS(/lib/kde3 kmanpart ) INSTALL_FILES( /share/apps/kio_man FILES kio_man.css ) INSTALL_FILES( /share/services FILES man.protocol kmanpart.desktop ) -KDE3_PLACEHOLDER() diff --git a/samples/view1394/CMakeLists.txt b/samples/view1394/CMakeLists.txt index 6e4545f1..56d0d34d 100644 --- a/samples/view1394/CMakeLists.txt +++ b/samples/view1394/CMakeLists.txt @@ -37,7 +37,6 @@ INSTALL_TARGETS(/lib/kde3 kcm_view1394 ) INSTALL_FILES( /share/applications/kde FILES kcmview1394.desktop ) INSTALL_FILES( /share/apps/kcmview1394 FILES oui.db ) -KDE3_PLACEHOLDER() |