aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xam2cmake4
-rw-r--r--modules/CMakeLists.txt4
-rw-r--r--modules/FindKDE3.cmake115
-rw-r--r--modules/FindKDE4Internal.cmake174
-rw-r--r--modules/KDE3Macros.cmake16
-rw-r--r--modules/KDE4Macros.cmake31
-rw-r--r--samples/kcalc/CMakeLists.txt33
-rw-r--r--samples/kcalc/knumber/CMakeLists.txt7
-rw-r--r--samples/kcalc/knumber/tests/CMakeLists.txt6
-rw-r--r--samples/kpager/CMakeLists.txt18
-rw-r--r--samples/man/CMakeLists.txt1
-rw-r--r--samples/view1394/CMakeLists.txt1
12 files changed, 245 insertions, 165 deletions
diff --git a/am2cmake b/am2cmake
index cfcfff5d..9e892f0f 100755
--- a/am2cmake
+++ b/am2cmake
@@ -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()