aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/CMakeLists.txt2
-rw-r--r--modules/CheckCXXSourceCompiles.cmake68
-rw-r--r--modules/CheckCXXSourceRuns.cmake81
-rw-r--r--modules/FindAGG.cmake2
-rw-r--r--modules/FindBlitz.cmake2
-rw-r--r--modules/FindBlueZ.cmake2
-rw-r--r--modules/FindENCHANT.cmake2
-rw-r--r--modules/FindEigen2.cmake4
-rw-r--r--modules/FindFontconfig.cmake2
-rw-r--r--modules/FindGStreamer.cmake2
-rw-r--r--modules/FindIOKit.cmake23
-rw-r--r--modules/FindKDE4Internal.cmake80
-rw-r--r--modules/FindKdepim.cmake31
-rw-r--r--modules/FindKdepimLibs.cmake3
-rw-r--r--modules/FindLCMS.cmake2
-rw-r--r--modules/FindLibArt.cmake2
-rw-r--r--modules/FindLibLZMA.cmake45
-rw-r--r--modules/FindLibXml2.cmake2
-rw-r--r--modules/FindLibXslt.cmake2
-rw-r--r--modules/FindOpenEXR.cmake2
-rw-r--r--modules/FindOpenSSL.cmake2
-rw-r--r--modules/FindPCRE.cmake2
-rw-r--r--modules/FindPkgConfig.cmake376
-rw-r--r--modules/FindPulseAudio.cmake76
-rw-r--r--modules/FindPyKDE4.cmake6
-rw-r--r--modules/FindQCA2.cmake2
-rw-r--r--modules/FindQImageBlitz.cmake2
-rw-r--r--modules/FindSoprano.cmake25
-rw-r--r--modules/FindSqlite.cmake2
-rw-r--r--modules/FindStrigi.cmake8
-rw-r--r--modules/FindUSB.cmake2
-rw-r--r--modules/FindXine.cmake2
-rw-r--r--modules/FindXmms.cmake2
-rw-r--r--modules/HandleImportedTargetsInCMakeRequiredLibraries.cmake81
-rw-r--r--modules/KDE4CTestNightlySetup.cmake102
-rw-r--r--modules/KDE4Defaults.cmake6
-rw-r--r--modules/KDE4Macros.cmake18
-rw-r--r--modules/MacroLogFeature.cmake93
-rw-r--r--modules/MacroOptionalAddSubdirectory.cmake12
-rw-r--r--modules/MacroOptionalDependPackage.cmake6
-rw-r--r--modules/check_installed_exports_file.cmake95
-rw-r--r--modules/create_exe_symlink.cmake16
42 files changed, 1021 insertions, 274 deletions
diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index 675659c4..70df69b2 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -1,4 +1,4 @@
-# install the cmake files
+## install the cmake files
file(GLOB cmakeFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.cmake")
diff --git a/modules/CheckCXXSourceCompiles.cmake b/modules/CheckCXXSourceCompiles.cmake
new file mode 100644
index 00000000..ba7f185c
--- /dev/null
+++ b/modules/CheckCXXSourceCompiles.cmake
@@ -0,0 +1,68 @@
+# - Check if the source code provided in the SOURCE argument compiles.
+# CHECK_CXX_SOURCE_COMPILES(SOURCE VAR)
+# - macro which checks if the source code compiles
+# SOURCE - source code to try to compile
+# VAR - variable to store whether the source code compiled
+#
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+# CMAKE_REQUIRED_FLAGS = string of compile command line flags
+# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+# CMAKE_REQUIRED_INCLUDES = list of include directories
+# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+
+GET_FILENAME_COMPONENT(_CHECK_CXX_SOURCE_COMPILES_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
+INCLUDE(${_CHECK_CXX_SOURCE_COMPILES_DIR}/HandleImportedTargetsInCMakeRequiredLibraries.cmake)
+
+
+MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR)
+ IF("${VAR}" MATCHES "^${VAR}$")
+ SET(MACRO_CHECK_FUNCTION_DEFINITIONS
+ "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+ IF(CMAKE_REQUIRED_LIBRARIES)
+ # this one translates potentially used imported library targets to their files on disk
+ HANDLE_IMPORTED_TARGETS_IN_CMAKE_REQUIRED_LIBRARIES(_CHECK_CXX_SOURCE_COMPILES_CMAKE_REQUIRED_LIBRARES)
+
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
+ "-DLINK_LIBRARIES:STRING=${_CHECK_CXX_SOURCE_COMPILES_CMAKE_REQUIRED_LIBRARES}")
+# "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+ ELSE(CMAKE_REQUIRED_LIBRARIES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+ ENDIF(CMAKE_REQUIRED_LIBRARIES)
+ IF(CMAKE_REQUIRED_INCLUDES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
+ "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+ ELSE(CMAKE_REQUIRED_INCLUDES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
+ ENDIF(CMAKE_REQUIRED_INCLUDES)
+ FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
+ "${SOURCE}\n")
+
+ MESSAGE(STATUS "Performing Test ${VAR}")
+ TRY_COMPILE(${VAR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx
+ COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+ CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+ OUTPUT_VARIABLE OUTPUT)
+ IF(${VAR})
+ SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+ MESSAGE(STATUS "Performing Test ${VAR} - Success")
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+ "Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCE}\n")
+ ELSE(${VAR})
+ MESSAGE(STATUS "Performing Test ${VAR} - Failed")
+ SET(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCE}\n")
+ ENDIF(${VAR})
+ ENDIF("${VAR}" MATCHES "^${VAR}$")
+ENDMACRO(CHECK_CXX_SOURCE_COMPILES)
+
diff --git a/modules/CheckCXXSourceRuns.cmake b/modules/CheckCXXSourceRuns.cmake
new file mode 100644
index 00000000..c18d8b37
--- /dev/null
+++ b/modules/CheckCXXSourceRuns.cmake
@@ -0,0 +1,81 @@
+# - Check if the C++ source code provided in the SOURCE argument compiles and runs.
+# CHECK_CXX_SOURCE_RUNS(SOURCE VAR)
+#
+# SOURCE - source code to try to compile
+# VAR - variable to store the result, 1 for success, empty for failure
+#
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+# CMAKE_REQUIRED_FLAGS = string of compile command line flags
+# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+# CMAKE_REQUIRED_INCLUDES = list of include directories
+# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+
+GET_FILENAME_COMPONENT(_CHECK_CXX_SOURCE_RUNS_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
+INCLUDE(${_CHECK_CXX_SOURCE_RUNS_DIR}/HandleImportedTargetsInCMakeRequiredLibraries.cmake)
+
+MACRO(CHECK_CXX_SOURCE_RUNS SOURCE VAR)
+ IF("${VAR}" MATCHES "^${VAR}$")
+ SET(MACRO_CHECK_FUNCTION_DEFINITIONS
+ "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+ IF(CMAKE_REQUIRED_LIBRARIES)
+ # this one translates potentially used imported library targets to their files on disk
+ HANDLE_IMPORTED_TARGETS_IN_CMAKE_REQUIRED_LIBRARIES(_CHECK_CXX_SOURCE_RUNS_CMAKE_REQUIRED_LIBRARES)
+
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
+ "-DLINK_LIBRARIES:STRING=${_CHECK_CXX_SOURCE_RUNS_CMAKE_REQUIRED_LIBRARES}")
+# "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+ ELSE(CMAKE_REQUIRED_LIBRARIES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+ ENDIF(CMAKE_REQUIRED_LIBRARIES)
+ IF(CMAKE_REQUIRED_INCLUDES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
+ "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+ ELSE(CMAKE_REQUIRED_INCLUDES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
+ ENDIF(CMAKE_REQUIRED_INCLUDES)
+ FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
+ "${SOURCE}\n")
+
+ MESSAGE(STATUS "Performing Test ${VAR}")
+ TRY_RUN(${VAR}_EXITCODE ${VAR}_COMPILED
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx
+ COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+ CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+ -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+ COMPILE_OUTPUT_VARIABLE OUTPUT)
+
+ # if it did not compile make the return value fail code of 1
+ IF(NOT ${VAR}_COMPILED)
+ SET(${VAR}_EXITCODE 1)
+ ENDIF(NOT ${VAR}_COMPILED)
+ # if the return value was 0 then it worked
+ IF("${${VAR}_EXITCODE}" EQUAL 0)
+ SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+ MESSAGE(STATUS "Performing Test ${VAR} - Success")
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+ "Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
+ "${OUTPUT}\n"
+ "Return value: ${${VAR}}\n"
+ "Source file was:\n${SOURCE}\n")
+ ELSE("${${VAR}_EXITCODE}" EQUAL 0)
+ IF(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+ SET(${VAR} "${${VAR}_EXITCODE}")
+ ELSE(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+ SET(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+ ENDIF(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
+
+ MESSAGE(STATUS "Performing Test ${VAR} - Failed")
+ FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
+ "${OUTPUT}\n"
+ "Return value: ${${VAR}_EXITCODE}\n"
+ "Source file was:\n${SOURCE}\n")
+ ENDIF("${${VAR}_EXITCODE}" EQUAL 0)
+ ENDIF("${VAR}" MATCHES "^${VAR}$")
+ENDMACRO(CHECK_CXX_SOURCE_RUNS)
+
diff --git a/modules/FindAGG.cmake b/modules/FindAGG.cmake
index 94d68da4..86d5618a 100644
--- a/modules/FindAGG.cmake
+++ b/modules/FindAGG.cmake
@@ -21,7 +21,7 @@ else (AGG_INCLUDE_DIR AND AGG_LIBRARIES)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_AGG libagg)
+ pkg_check_modules(PC_AGG QUIET libagg)
set(AGG_DEFINITIONS ${PC_AGG_CFLAGS_OTHER})
endif (NOT WIN32)
diff --git a/modules/FindBlitz.cmake b/modules/FindBlitz.cmake
index 2427999e..a3abd6b0 100644
--- a/modules/FindBlitz.cmake
+++ b/modules/FindBlitz.cmake
@@ -23,7 +23,7 @@ if (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_BLITZ qimageblitz)
+ pkg_check_modules(PC_BLITZ QUIET qimageblitz)
endif (NOT WIN32)
find_path(BLITZ_INCLUDES
diff --git a/modules/FindBlueZ.cmake b/modules/FindBlueZ.cmake
index 8601b935..8332797f 100644
--- a/modules/FindBlueZ.cmake
+++ b/modules/FindBlueZ.cmake
@@ -25,7 +25,7 @@ endif ( BLUEZ_INCLUDE_DIR AND BLUEZ_LIBRARIES )
if( NOT WIN32 )
find_package(PkgConfig)
- pkg_check_modules(PC_BLUEZ bluez)
+ pkg_check_modules(PC_BLUEZ QUIET bluez)
set(BLUEZ_DEFINITIONS ${PC_BLUEZ_CFLAGS_OTHER})
endif( NOT WIN32 )
diff --git a/modules/FindENCHANT.cmake b/modules/FindENCHANT.cmake
index 0b30f326..9c13c488 100644
--- a/modules/FindENCHANT.cmake
+++ b/modules/FindENCHANT.cmake
@@ -22,7 +22,7 @@ else (ENCHANT_INCLUDE_DIR AND ENCHANT_LIBRARIES)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_ENCHANT enchant)
+ pkg_check_modules(PC_ENCHANT QUIET enchant)
set(ENCHANT_DEFINITIONS ${PC_ENCHANT_CFLAGS_OTHER})
endif (NOT WIN32)
diff --git a/modules/FindEigen2.cmake b/modules/FindEigen2.cmake
index 2579a6c9..5feddf3e 100644
--- a/modules/FindEigen2.cmake
+++ b/modules/FindEigen2.cmake
@@ -16,10 +16,10 @@ if (EIGEN2_INCLUDE_DIR)
else (EIGEN2_INCLUDE_DIR)
find_path(EIGEN2_INCLUDE_DIR NAMES Eigen/Core
- PATHS
+ PATH_SUFFIXES eigen2
+ HINTS
${INCLUDE_INSTALL_DIR}
${KDE4_INCLUDE_DIR}
- PATH_SUFFIXES eigen2
)
include(FindPackageHandleStandardArgs)
diff --git a/modules/FindFontconfig.cmake b/modules/FindFontconfig.cmake
index 268a61ae..5e2f3ead 100644
--- a/modules/FindFontconfig.cmake
+++ b/modules/FindFontconfig.cmake
@@ -23,7 +23,7 @@ else (FONTCONFIG_LIBRARIES AND FONTCONFIG_INCLUDE_DIR)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_FONTCONFIG fontconfig)
+ pkg_check_modules(PC_FONTCONFIG QUIET fontconfig)
set(FONTCONFIG_DEFINITIONS ${PC_FONTCONFIG_CFLAGS_OTHER})
endif (NOT WIN32)
diff --git a/modules/FindGStreamer.cmake b/modules/FindGStreamer.cmake
index 8e98b892..43793711 100644
--- a/modules/FindGStreamer.cmake
+++ b/modules/FindGStreamer.cmake
@@ -24,7 +24,7 @@ IF (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
FIND_PACKAGE(PkgConfig)
- PKG_CHECK_MODULES(PC_GSTREAMER gstreamer-0.10)
+ PKG_CHECK_MODULES(PC_GSTREAMER QUIET gstreamer-0.10)
#MESSAGE(STATUS "DEBUG: GStreamer include directory = ${GSTREAMER_INCLUDE_DIRS}")
#MESSAGE(STATUS "DEBUG: GStreamer link directory = ${GSTREAMER_LIBRARY_DIRS}")
#MESSAGE(STATUS "DEBUG: GStreamer CFlags = ${GSTREAMER_CFLAGS_OTHER}")
diff --git a/modules/FindIOKit.cmake b/modules/FindIOKit.cmake
new file mode 100644
index 00000000..f3e3ecb2
--- /dev/null
+++ b/modules/FindIOKit.cmake
@@ -0,0 +1,23 @@
+# - Find IOKit on Mac
+#
+# IOKIT_LIBRARY - the library to use IOKit
+# IOKIT_FOUND - true if IOKit has been found
+
+# Copyright (c) 2009, Harald Fernengel <harry@kdevelop.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include(CMakeFindFrameworks)
+
+cmake_find_frameworks(IOKit)
+cmake_find_frameworks(CoreFoundation)
+
+if (IOKit_FRAMEWORKS)
+ set(IOKIT_LIBRARY "-framework IOKit -framework CoreFoundation" CACHE FILEPATH "IOKit framework" FORCE)
+ set(IOKIT_FOUND 1)
+endif (IOKit_FRAMEWORKS)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(IOKit DEFAULT_MSG IOKIT_LIBRARY)
+
diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake
index 94297f9d..1eddbb8f 100644
--- a/modules/FindKDE4Internal.cmake
+++ b/modules/FindKDE4Internal.cmake
@@ -41,8 +41,7 @@
# KDE4_KNOTIFYCONFIG_LIBRARY- the knotifyconfig library
# KDE4_KROSSCORE_LIBRARY - the krosscore library
# KDE4_KTEXTEDITOR_LIBRARY - the ktexteditor library
-# KDE4_KNEPOMUK_LIBRARY - the knepomuk library
-# KDE4_KMETADATA_LIBRARY - the kmetadata library
+# KDE4_NEPOMUK_LIBRARY - the nepomuk library
# KDE4_PLASMA_LIBRARY - the plasma library
#
# KDE4_PLASMA_OPENGL_FOUND - TRUE if the OpenGL support of Plasma has been found, NOTFOUND otherwise
@@ -72,8 +71,7 @@
# KDE4_KROSSCORE_LIBS - the kross core library and all depending libraries
# KDE4_KROSSUI_LIBS - the kross ui library which includes core and all depending libraries
# KDE4_KTEXTEDITOR_LIBS - the ktexteditor library and all depending libraries
-# KDE4_KNEPOMUK_LIBS - the knepomuk library and all depending libraries
-# KDE4_KMETADATA_LIBS - the kmetadata library and all depending libraries
+# KDE4_NEPOMUK_LIBS - the nepomuk library and all depending libraries
# KDE4_PLASMA_LIBS - the plasma library and all depending librairies
#
# This module defines a bunch of variables used as locations for install directories.
@@ -204,11 +202,11 @@
#
# A note on the possible values for CMAKE_BUILD_TYPE and how KDE handles
# the flags for those buildtypes. FindKDE4Internal supports the values
-# Debug, Release, RelWithDebInfo, Profile and Debugfull
+# Debug, Release, RelWithDebInfo, Profile and Debugfull:
#
# Release
# optimised for speed, qDebug/kDebug turned off, no debug symbols
-# Release with debug info
+# RelWithDebInfo (Release with debug info)
# optimised for speed, debugging symbols on (-g)
# Debug
# optimised but debuggable, debugging on (-g)
@@ -286,7 +284,7 @@ else(KDE4_FIND_REQUIRED OR KDE4Internal_FIND_REQUIRED)
set(_REQ_STRING_KDE4_MESSAGE "STATUS")
endif(KDE4_FIND_REQUIRED OR KDE4Internal_FIND_REQUIRED)
-set(QT_MIN_VERSION "4.4.0")
+set(QT_MIN_VERSION "4.5.0")
#this line includes FindQt4.cmake, which searches the Qt library and headers
find_package(Qt4 ${_REQ_STRING_KDE4})
@@ -303,8 +301,18 @@ macro_ensure_version("0.9.87" "${AUTOMOC4_VERSION}" _automoc4_version_ok)
# for compatibility with KDE 4.0.x
set(KDE4_AUTOMOC_EXECUTABLE "${AUTOMOC4_EXECUTABLE}" )
-# Perl is required for building KDE software
-find_package(Perl ${_REQ_STRING_KDE4})
+# Perl is not required for building KDE software, but we had that here since 4.0
+find_package(Perl)
+if(NOT PERL_FOUND)
+ message(STATUS "Perl not found")
+endif(NOT PERL_FOUND)
+
+
+# we check for Phonon not here, but further below, i.e. after KDELibsDependencies.cmake
+# has been loaded, which helps in the case that phonon is installed to the same
+# directory as kdelibs.
+# find_package(Phonon ${_REQ_STRING_KDE4})
+
# Check that we really found everything.
# If KDE4 was searched with REQUIRED, we error out with FATAL_ERROR if something wasn't found
@@ -312,13 +320,9 @@ find_package(Perl ${_REQ_STRING_KDE4})
# If KDE4 was searched without REQUIRED and something in the FIND_PACKAGE() calls above wasn't found,
# then we get here and must check that everything has actually been found. If something is missing,
# we must not fail with FATAL_ERROR, but only not set KDE4_FOUND.
-if(NOT PERL_FOUND)
- message(STATUS "KDE4 not found, because Perl not found")
- return()
-endif(NOT PERL_FOUND)
if(NOT QT4_FOUND)
- message(STATUS "KDE4 not found, because Qt4 not found")
+ message(STATUS "KDE4 not found, because Qt4 was not found")
return()
endif(NOT QT4_FOUND)
@@ -371,6 +375,7 @@ if (_kdeBootStrapping)
set(KDE4_SOLID_LIBS ${KDE4_KDECORE_LIBS} solid)
set(KDE4_KFILE_LIBS ${KDE4_KIO_LIBS} kfile)
set(KDE4_KHTML_LIBS ${KDE4_KPARTS_LIBS} khtml)
+ set(KDE4_KTEXTEDITOR_LIBS ktexteditor)
set(EXECUTABLE_OUTPUT_PATH ${kdelibs_BINARY_DIR}/bin )
@@ -482,13 +487,9 @@ else (_kdeBootStrapping)
endif (UNIX)
# these targets do not always exist, since they are built conditionally:
- if(TARGET ${KDE4_TARGET_PREFIX}knepomuk)
- _kde4_set_lib_variables(KNEPOMUK knepomuk ${KDE4_TARGET_PREFIX})
- endif(TARGET ${KDE4_TARGET_PREFIX}knepomuk)
-
- if(TARGET ${KDE4_TARGET_PREFIX}kmetadata)
- _kde4_set_lib_variables(KMETADATA kmetadata ${KDE4_TARGET_PREFIX})
- endif(TARGET ${KDE4_TARGET_PREFIX}kmetadata)
+ if(TARGET ${KDE4_TARGET_PREFIX}nepomuk)
+ _kde4_set_lib_variables(NEPOMUK nepomuk ${KDE4_TARGET_PREFIX})
+ endif(TARGET ${KDE4_TARGET_PREFIX}nepomuk)
# and this one for compatibility:
set(KDE4_THREADWEAVER_LIBRARIES ${KDE4_TARGET_PREFIX}threadweaver )
@@ -540,6 +541,25 @@ else (_kdeBootStrapping)
endif (_kdeBootStrapping)
+
+################### try to find Phonon ############################################
+
+# we do this here instead of above together with the checks for Perl etc.
+# since FindPhonon.cmake also uses ${KDE4_LIB_INSTALL_DIR} to check for Phonon,
+# which helps with finding the phonon installed as part of kdesupport:
+
+# only make Phonon REQUIRED if KDE4 itself is REQUIRED
+find_package(Phonon ${_REQ_STRING_KDE4})
+set(KDE4_PHONON_LIBRARY ${PHONON_LIBRARY})
+set(KDE4_PHONON_LIBS ${PHONON_LIBS})
+set(KDE4_PHONON_INCLUDES ${PHONON_INCLUDES})
+
+if(NOT PHONON_FOUND)
+ message(STATUS "KDE4 not found, because Phonon was not found")
+ return()
+endif(NOT PHONON_FOUND)
+
+
##################### provide some options ##########################################
option(KDE4_ENABLE_FINAL "Enable final all-in-one compilation")
@@ -801,7 +821,7 @@ if (WIN32)
# windows, microsoft compiler
if(MSVC)
- set( _KDE4_PLATFORM_DEFINITIONS -DKDE_FULL_TEMPLATE_EXPORT_INSTANTIATION -DWIN32_LEAN_AND_MEAN -DUNICODE )
+ set( _KDE4_PLATFORM_DEFINITIONS -DKDE_FULL_TEMPLATE_EXPORT_INSTANTIATION -DWIN32_LEAN_AND_MEAN )
# C4250: 'class1' : inherits 'class2::member' via dominance
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4250" )
# C4251: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
@@ -826,6 +846,9 @@ if (WIN32)
set(CMAKE_MSVCIDE_RUN_PATH "${PERL_PATH_WINDOWS}\;${QT_BIN_DIR_WINDOWS}"
CACHE STATIC "MSVC IDE Run path" FORCE)
endif(MSVC_IDE)
+
+ # we don't support anything below w2k and all winapi calls are unicodes
+ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0501 -DUNICODE" )
endif (WIN32)
@@ -967,12 +990,12 @@ endif(MSVC)
if (CMAKE_COMPILER_IS_GNUCXX)
set (KDE4_ENABLE_EXCEPTIONS -fexceptions)
# Select flags.
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline")
set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG")
set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline")
@@ -1115,13 +1138,13 @@ macro (KDE4_PRINT_RESULTS)
# inside kdelibs the include dir and lib dir are internal, not "found"
if (NOT _kdeBootStrapping)
if(KDE4_INCLUDE_DIR)
- message(STATUS "Found KDE 4.2 include dir: ${KDE4_INCLUDE_DIR}")
+ message(STATUS "Found KDE 4.3 include dir: ${KDE4_INCLUDE_DIR}")
else(KDE4_INCLUDE_DIR)
message(STATUS "ERROR: unable to find the KDE 4 headers")
endif(KDE4_INCLUDE_DIR)
if(KDE4_LIB_DIR)
- message(STATUS "Found KDE 4.2 library dir: ${KDE4_LIB_DIR}")
+ message(STATUS "Found KDE 4.3 library dir: ${KDE4_LIB_DIR}")
else(KDE4_LIB_DIR)
message(STATUS "ERROR: unable to find the KDE 4 core library")
endif(KDE4_LIB_DIR)
@@ -1155,11 +1178,6 @@ if (KDE4Internal_FIND_REQUIRED AND NOT KDE4_FOUND)
message(FATAL_ERROR "ERROR: could NOT find everything required for compiling KDE 4 programs")
endif (KDE4Internal_FIND_REQUIRED AND NOT KDE4_FOUND)
-find_package(Phonon REQUIRED)
-set(KDE4_PHONON_LIBRARY ${PHONON_LIBRARY})
-set(KDE4_PHONON_LIBS ${PHONON_LIBS})
-set(KDE4_PHONON_INCLUDES ${PHONON_INCLUDES})
-
if (NOT KDE4Internal_FIND_QUIETLY)
kde4_print_results()
endif (NOT KDE4Internal_FIND_QUIETLY)
diff --git a/modules/FindKdepim.cmake b/modules/FindKdepim.cmake
deleted file mode 100644
index d04886af..00000000
--- a/modules/FindKdepim.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-# cmake macro to see if we have kdepim installed
-
-# KDEPIM_INCLUDE_DIR
-# KDEPIM_FOUND
-# Copyright (C) 2007 Laurent Montel <montel@kde.org>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-
-if (KDEPIM_INCLUDE_DIR)
- # Already in cache, be silent
- set(KDEPIM_FOUND TRUE)
-endif (KDEPIM_INCLUDE_DIR)
-
-
-FIND_PATH(KDEPIM_INCLUDE_DIR NAMES kdepimprotocols.h
- PATHS
- ${INCLUDE_INSTALL_DIR}
-)
-
-FIND_LIBRARY(KDEPIM_LIBRARIES NAMES kdepim
- PATHS
- ${LIB_INSTALL_DIR}
-)
-
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Kdepim DEFAULT_MSG KDEPIM_LIBRARIES KDEPIM_INCLUDE_DIR )
-
-MARK_AS_ADVANCED(KDEPIM_INCLUDE_DIR KDEPIM_LIBRARIES)
-
diff --git a/modules/FindKdepimLibs.cmake b/modules/FindKdepimLibs.cmake
index 3ab58e21..dcbe2f94 100644
--- a/modules/FindKdepimLibs.cmake
+++ b/modules/FindKdepimLibs.cmake
@@ -3,6 +3,7 @@
#
# KDEPIMLIBS_FOUND - system has KDE PIM Libraries
# KDEPIMLIBS_INCLUDE_DIR - the KDE PIM Libraries include directory
+# KDEPIMLIBS_INCLUDE_DIRS - the KDE PIM Libraries include directory and CamelCase headers
#
# It also sets variables for the following libraries:
# KDEPIMLIBS_AKONADI_LIBS
@@ -12,6 +13,7 @@
# KDEPIMLIBS_KABC_LIBS
# KDEPIMLIBS_KBLOG_LIBS
# KDEPIMLIBS_KCAL_LIBS
+# KDEPIMLIBS_KHOLIDAYS_LIBS
# KDEPIMLIBS_KIMAP_LIBS
# KDEPIMLIBS_KLDAP_LIBS
# KDEPIMLIBS_KMIME_LIBS
@@ -29,6 +31,7 @@
# KDEPIMLIBS_DBUS_INTERFACES_DIR
# KDEPIMLIBS_DBUS_SERVICES_DIR
# KDEPIMLIBS_INCLUDE_DIR
+# KDEPIMLIBS_INCLUDE_DIRS
# KDEPIMLIBS_LIB_DIR
# KDEPIMLIBS_BIN_DIR
# KDEPIMLIBS_LIBEXEC_DIR
diff --git a/modules/FindLCMS.cmake b/modules/FindLCMS.cmake
index 9d162d2c..cbb6b179 100644
--- a/modules/FindLCMS.cmake
+++ b/modules/FindLCMS.cmake
@@ -17,7 +17,7 @@
# in the FIND_PATH() and FIND_LIBRARY() calls
if(NOT WIN32)
find_package(PkgConfig)
- pkg_check_modules(PC_LCMS lcms)
+ pkg_check_modules(PC_LCMS QUIET lcms)
set(LCMS_DEFINITIONS ${PC_LCMS_CFLAGS_OTHER})
endif(NOT WIN32)
diff --git a/modules/FindLibArt.cmake b/modules/FindLibArt.cmake
index 99eaff65..b14cd9db 100644
--- a/modules/FindLibArt.cmake
+++ b/modules/FindLibArt.cmake
@@ -23,7 +23,7 @@ else (LIBART_INCLUDE_DIR AND LIBART_LIBRARIES)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
- pkg_check_modules(PC_LIBART libart-2.0)
+ pkg_check_modules(PC_LIBART QUIET libart-2.0)
######### ?? where is this used ?? ###############
set(LIBART_DEFINITIONS ${PC_LIBART_CFLAGS_OTHER})
diff --git a/modules/FindLibLZMA.cmake b/modules/FindLibLZMA.cmake
new file mode 100644
index 00000000..1a341b28
--- /dev/null
+++ b/modules/FindLibLZMA.cmake
@@ -0,0 +1,45 @@
+# - Find LibLZMA
+# Find LibLZMA headers and library
+#
+# LIBLZMA_FOUND - True if liblzma is found.
+# LIBLZMA_INCLUDE_DIRS - Directory where liblzma headers are located.
+# LIBLZMA_LIBRARIES - Lzma libraries to link against.
+# LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required).
+# LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required).
+# LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required).
+
+
+# Copyright (c) 2008, Per Øyvind Karlsen, <peroyvind@mandriva.org>
+# Copyright (c) 2009, Alexander Neundorf, <neundorf@kde.org>
+# Copyright (c) 2009, Helio Chissini de Castro, <helio@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+FIND_PATH(LIBLZMA_INCLUDE_DIR lzma.h )
+FIND_LIBRARY(LIBLZMA_LIBRARY lzma)
+
+SET(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY})
+SET(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR})
+
+
+# We're using new code known now as XZ, even library still been called LZMA
+# it can be found in http://tukaani.org/xz/
+# Avoid using old codebase
+IF (LIBLZMA_LIBRARIES)
+ INCLUDE(CheckLibraryExists)
+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER)
+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER)
+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET)
+ENDIF (LIBLZMA_LIBRARIES)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBLZMA DEFAULT_MSG LIBLZMA_INCLUDE_DIR
+ LIBLZMA_LIBRARY
+ LIBLZMA_HAS_AUTO_DECODER
+ LIBLZMA_HAS_EASY_ENCODER
+ LIBLZMA_HAS_LZMA_PRESET
+ )
+
+MARK_AS_ADVANCED( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY )
diff --git a/modules/FindLibXml2.cmake b/modules/FindLibXml2.cmake
index 453c261b..83858047 100644
--- a/modules/FindLibXml2.cmake
+++ b/modules/FindLibXml2.cmake
@@ -22,7 +22,7 @@ IF (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
FIND_PACKAGE(PkgConfig)
- PKG_CHECK_MODULES(PC_LIBXML libxml-2.0)
+ PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
SET(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
ENDIF (NOT WIN32)
diff --git a/modules/FindLibXslt.cmake b/modules/FindLibXslt.cmake
index 3a1bcd46..1c55c4c5 100644
--- a/modules/FindLibXslt.cmake
+++ b/modules/FindLibXslt.cmake
@@ -22,7 +22,7 @@ IF (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_XSLT libxslt)
+ pkg_check_modules(PC_XSLT QUIET libxslt)
SET(LIBXSLT_DEFINITIONS ${PC_XSLT_CFLAGS_OTHER})
ENDIF (NOT WIN32)
diff --git a/modules/FindOpenEXR.cmake b/modules/FindOpenEXR.cmake
index eb3829cb..405b892d 100644
--- a/modules/FindOpenEXR.cmake
+++ b/modules/FindOpenEXR.cmake
@@ -21,7 +21,7 @@ else (OPENEXR_INCLUDE_DIR AND OPENEXR_LIBRARIES)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_OPENEXR OpenEXR)
+ pkg_check_modules(PC_OPENEXR QUIET OpenEXR)
FIND_PATH(OPENEXR_INCLUDE_DIR ImfRgbaFile.h
HINTS
diff --git a/modules/FindOpenSSL.cmake b/modules/FindOpenSSL.cmake
index 1b915530..4ce8321b 100644
--- a/modules/FindOpenSSL.cmake
+++ b/modules/FindOpenSSL.cmake
@@ -32,7 +32,7 @@ FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h )
FIND_LIBRARY_WITH_DEBUG(OPENSSL_LIBRARIES
WIN32_DEBUG_POSTFIX d
- NAMES ssl ssleay ssleay32 ssleay32MD)
+ NAMES ssl ssleay ssleay32 libssleay32 ssleay32MD)
IF(WIN32)
OPENSSL_ADD_LIB_EAY_LIBS()
diff --git a/modules/FindPCRE.cmake b/modules/FindPCRE.cmake
index efba0652..c8f8326d 100644
--- a/modules/FindPCRE.cmake
+++ b/modules/FindPCRE.cmake
@@ -22,7 +22,7 @@ if (NOT WIN32)
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_PCRE libpcre)
+ pkg_check_modules(PC_PCRE QUIET libpcre)
set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER})
diff --git a/modules/FindPkgConfig.cmake b/modules/FindPkgConfig.cmake
new file mode 100644
index 00000000..b2f5ea57
--- /dev/null
+++ b/modules/FindPkgConfig.cmake
@@ -0,0 +1,376 @@
+# - a pkg-config module for CMake
+#
+# Usage:
+# pkg_check_modules(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
+# checks for all the given modules
+#
+# pkg_search_module(<PREFIX> [REQUIRED] <MODULE> [<MODULE>]*)
+# checks for given modules and uses the first working one
+#
+# When the 'REQUIRED' argument was set, macros will fail with an error
+# when module(s) could not be found
+#
+# When the 'QUIET' argument is set, no error message will be output if
+# the package was not found.
+#
+# It sets the following variables:
+# PKG_CONFIG_FOUND ... true if pkg-config works on the system
+# PKG_CONFIG_EXECUTABLE ... pathname of the pkg-config program
+# <PREFIX>_FOUND ... set to 1 if module(s) exist
+#
+# For the following variables two sets of values exist; first one is the
+# common one and has the given PREFIX. The second set contains flags
+# which are given out when pkgconfig was called with the '--static'
+# option.
+# <XPREFIX>_LIBRARIES ... only the libraries (w/o the '-l')
+# <XPREFIX>_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L')
+# <XPREFIX>_LDFLAGS ... all required linker flags
+# <XPREFIX>_LDFLAGS_OTHER ... all other linker flags
+# <XPREFIX>_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I')
+# <XPREFIX>_CFLAGS ... all required cflags
+# <XPREFIX>_CFLAGS_OTHER ... the other compiler flags
+#
+# <XPREFIX> = <PREFIX> for common case
+# <XPREFIX> = <PREFIX>_STATIC for static linking
+#
+# There are some special variables whose prefix depends on the count
+# of given modules. When there is only one module, <PREFIX> stays
+# unchanged. When there are multiple modules, the prefix will be
+# changed to <PREFIX>_<MODNAME>:
+# <XPREFIX>_VERSION ... version of the module
+# <XPREFIX>_PREFIX ... prefix-directory of the module
+# <XPREFIX>_INCLUDEDIR ... include-dir of the module
+# <XPREFIX>_LIBDIR ... lib-dir of the module
+#
+# <XPREFIX> = <PREFIX> when |MODULES| == 1, else
+# <XPREFIX> = <PREFIX>_<MODNAME>
+#
+# A <MODULE> parameter can have the following formats:
+# {MODNAME} ... matches any version
+# {MODNAME}>={VERSION} ... at least version <VERSION> is required
+# {MODNAME}={VERSION} ... exactly version <VERSION> is required
+# {MODNAME}<={VERSION} ... modules must not be newer than <VERSION>
+#
+# Examples
+# pkg_check_modules (GLIB2 glib-2.0)
+#
+# pkg_check_modules (GLIB2 glib-2.0>=2.10)
+# requires at least version 2.10 of glib2 and defines e.g.
+# GLIB2_VERSION=2.10.3
+#
+# pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0)
+# requires both glib2 and gtk2, and defines e.g.
+# FOO_glib-2.0_VERSION=2.10.3
+# FOO_gtk+-2.0_VERSION=2.8.20
+#
+# pkg_check_modules (XRENDER REQUIRED xrender)
+# defines e.g.:
+# XRENDER_LIBRARIES=Xrender;X11
+# XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
+#
+# pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2)
+
+
+# Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#
+# Redistribution and use, with or without modification, are permitted
+# provided that the following conditions are met:
+#
+# 1. Redistributions must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# 2. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior
+# written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Modified for KDE use from cmake 2.6.2 version, to add QUIET option to
+# pkg_check_modules().
+# Copyright (c) 2009, David Jarvie <djarvie@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+
+### Common stuff ####
+set(PKG_CONFIG_VERSION 1)
+set(PKG_CONFIG_FOUND 0)
+
+find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config DOC "pkg-config executable")
+mark_as_advanced(PKG_CONFIG_EXECUTABLE)
+
+if(PKG_CONFIG_EXECUTABLE)
+ set(PKG_CONFIG_FOUND 1)
+endif(PKG_CONFIG_EXECUTABLE)
+
+
+# Unsets the given variables
+macro(_pkgconfig_unset var)
+ set(${var} "" CACHE INTERNAL "")
+endmacro(_pkgconfig_unset)
+
+macro(_pkgconfig_set var value)
+ set(${var} ${value} CACHE INTERNAL "")
+endmacro(_pkgconfig_set)
+
+# Invokes pkgconfig, cleans up the result and sets variables
+macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
+ set(_pkgconfig_invoke_result)
+
+ execute_process(
+ COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist}
+ OUTPUT_VARIABLE _pkgconfig_invoke_result
+ RESULT_VARIABLE _pkgconfig_failed)
+
+ if (_pkgconfig_failed)
+ set(_pkgconfig_${_varname} "")
+ _pkgconfig_unset(${_prefix}_${_varname})
+ else(_pkgconfig_failed)
+ string(REGEX REPLACE "[\r\n]" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
+ string(REGEX REPLACE " +$" "" _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
+
+ if (NOT ${_regexp} STREQUAL "")
+ string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
+ endif(NOT ${_regexp} STREQUAL "")
+
+ separate_arguments(_pkgconfig_invoke_result)
+
+ #message(STATUS " ${_varname} ... ${_pkgconfig_invoke_result}")
+ set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result})
+ _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}")
+ endif(_pkgconfig_failed)
+endmacro(_pkgconfig_invoke)
+
+# Invokes pkgconfig two times; once without '--static' and once with
+# '--static'
+macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp)
+ _pkgconfig_invoke("${_pkglist}" ${_prefix} ${_varname} "${cleanup_regexp}" ${ARGN})
+ _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static ${ARGN})
+endmacro(_pkgconfig_invoke_dyn)
+
+# Splits given arguments into options and a package list
+macro(_pkgconfig_parse_options _result _is_req _is_silent)
+ set(${_is_req} 0)
+ set(${_is_silent} 0)
+
+ foreach(_pkg ${ARGN})
+ if (_pkg STREQUAL "REQUIRED")
+ set(${_is_req} 1)
+ endif (_pkg STREQUAL "REQUIRED")
+ if (_pkg STREQUAL "QUIET")
+ set(${_is_silent} 1)
+ endif (_pkg STREQUAL "QUIET")
+ endforeach(_pkg ${ARGN})
+
+ set(${_result} ${ARGN})
+ list(REMOVE_ITEM ${_result} "REQUIRED")
+ list(REMOVE_ITEM ${_result} "QUIET")
+endmacro(_pkgconfig_parse_options)
+
+###
+macro(_pkg_check_modules_internal _is_required _is_silent _prefix)
+ _pkgconfig_unset(${_prefix}_FOUND)
+ _pkgconfig_unset(${_prefix}_VERSION)
+ _pkgconfig_unset(${_prefix}_PREFIX)
+ _pkgconfig_unset(${_prefix}_INCLUDEDIR)
+ _pkgconfig_unset(${_prefix}_LIBDIR)
+ _pkgconfig_unset(${_prefix}_LIBS)
+ _pkgconfig_unset(${_prefix}_LIBS_L)
+ _pkgconfig_unset(${_prefix}_LIBS_PATHS)
+ _pkgconfig_unset(${_prefix}_LIBS_OTHER)
+ _pkgconfig_unset(${_prefix}_CFLAGS)
+ _pkgconfig_unset(${_prefix}_CFLAGS_I)
+ _pkgconfig_unset(${_prefix}_CFLAGS_OTHER)
+ _pkgconfig_unset(${_prefix}_STATIC_LIBDIR)
+ _pkgconfig_unset(${_prefix}_STATIC_LIBS)
+ _pkgconfig_unset(${_prefix}_STATIC_LIBS_L)
+ _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS)
+ _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER)
+ _pkgconfig_unset(${_prefix}_STATIC_CFLAGS)
+ _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I)
+ _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER)
+
+ # create a better addressable variable of the modules and calculate its size
+ set(_pkg_check_modules_list ${ARGN})
+ list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt)
+
+ if(PKG_CONFIG_EXECUTABLE)
+ # give out status message telling checked module
+ if (NOT ${_is_silent})
+ if (_pkg_check_modules_cnt EQUAL 1)
+ message(STATUS "checking for module '${_pkg_check_modules_list}'")
+ else(_pkg_check_modules_cnt EQUAL 1)
+ message(STATUS "checking for modules '${_pkg_check_modules_list}'")
+ endif(_pkg_check_modules_cnt EQUAL 1)
+ endif(NOT ${_is_silent})
+
+ set(_pkg_check_modules_packages)
+ set(_pkg_check_modules_failed)
+
+ # iterate through module list and check whether they exist and match the required version
+ foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list})
+ set(_pkg_check_modules_exist_query)
+
+ # check whether version is given
+ if (_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
+ string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\1" _pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
+ string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\2" _pkg_check_modules_pkg_op "${_pkg_check_modules_pkg}")
+ string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\3" _pkg_check_modules_pkg_ver "${_pkg_check_modules_pkg}")
+ else(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
+ set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
+ set(_pkg_check_modules_pkg_op)
+ set(_pkg_check_modules_pkg_ver)
+ endif(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
+
+ # handle the operands
+ if (_pkg_check_modules_pkg_op STREQUAL ">=")
+ list(APPEND _pkg_check_modules_exist_query --atleast-version)
+ endif(_pkg_check_modules_pkg_op STREQUAL ">=")
+
+ if (_pkg_check_modules_pkg_op STREQUAL "=")
+ list(APPEND _pkg_check_modules_exist_query --exact-version)
+ endif(_pkg_check_modules_pkg_op STREQUAL "=")
+
+ if (_pkg_check_modules_pkg_op STREQUAL "<=")
+ list(APPEND _pkg_check_modules_exist_query --max-version)
+ endif(_pkg_check_modules_pkg_op STREQUAL "<=")
+
+ # create the final query which is of the format:
+ # * --atleast-version <version> <pkg-name>
+ # * --exact-version <version> <pkg-name>
+ # * --max-version <version> <pkg-name>
+ # * --exists <pkg-name>
+ if (_pkg_check_modules_pkg_op)
+ list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
+ else(_pkg_check_modules_pkg_op)
+ list(APPEND _pkg_check_modules_exist_query --exists)
+ endif(_pkg_check_modules_pkg_op)
+
+ _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
+ _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX)
+ _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR)
+ _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR)
+
+ list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}")
+ list(APPEND _pkg_check_modules_packages "${_pkg_check_modules_pkg_name}")
+
+ # execute the query
+ execute_process(
+ COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
+ RESULT_VARIABLE _pkgconfig_retval)
+
+ # evaluate result and tell failures
+ if (_pkgconfig_retval)
+ if(NOT ${_is_silent})
+ message(STATUS " package '${_pkg_check_modules_pkg}' not found")
+ endif(NOT ${_is_silent})
+
+ set(_pkg_check_modules_failed 1)
+ endif(_pkgconfig_retval)
+ endforeach(_pkg_check_modules_pkg)
+
+ if(_pkg_check_modules_failed)
+ # fail when requested
+ if (${_is_required})
+ message(SEND_ERROR "A required package was not found")
+ endif (${_is_required})
+ else(_pkg_check_modules_failed)
+ # when we are here, we checked whether requested modules
+ # exist. Now, go through them and set variables
+
+ _pkgconfig_set(${_prefix}_FOUND 1)
+ list(LENGTH _pkg_check_modules_packages pkg_count)
+
+ # iterate through all modules again and set individual variables
+ foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages})
+ # handle case when there is only one package required
+ if (pkg_count EQUAL 1)
+ set(_pkg_check_prefix "${_prefix}")
+ else(pkg_count EQUAL 1)
+ set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}")
+ endif(pkg_count EQUAL 1)
+
+ _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION "" --modversion )
+ _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" PREFIX "" --variable=prefix )
+ _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" INCLUDEDIR "" --variable=includedir )
+ _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" LIBDIR "" --variable=libdir )
+
+ message(STATUS " found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
+ endforeach(_pkg_check_modules_pkg)
+
+ # set variables which are combined for multiple modules
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES "(^| )-l" --libs-only-l )
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS "(^| )-L" --libs-only-L )
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS "" --libs )
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER "" --libs-only-other )
+
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS "(^| )-I" --cflags-only-I )
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS "" --cflags )
+ _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER "" --cflags-only-other )
+ endif(_pkg_check_modules_failed)
+ else(PKG_CONFIG_EXECUTABLE)
+ if (${_is_required})
+ message(SEND_ERROR "pkg-config tool not found")
+ endif (${_is_required})
+ endif(PKG_CONFIG_EXECUTABLE)
+endmacro(_pkg_check_modules_internal)
+
+###
+### User visible macros start here
+###
+
+###
+macro(pkg_check_modules _prefix _module0)
+ # check cached value
+ if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+ _pkgconfig_parse_options (_pkg_modules _pkg_is_required _pkg_is_silent "${_module0}" ${ARGN})
+ _pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" "${_prefix}" ${_pkg_modules})
+
+ _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
+ endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+endmacro(pkg_check_modules)
+
+###
+macro(pkg_search_module _prefix _module0)
+ # check cached value
+ if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+ set(_pkg_modules_found 0)
+ _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent "${_module0}" ${ARGN})
+
+ message(STATUS "checking for one of the modules '${_pkg_modules_alt}'")
+
+ # iterate through all modules and stop at the first working one.
+ foreach(_pkg_alt ${_pkg_modules_alt})
+ if(NOT _pkg_modules_found)
+ _pkg_check_modules_internal(0 1 "${_prefix}" "${_pkg_alt}")
+ endif(NOT _pkg_modules_found)
+
+ if (${_prefix}_FOUND)
+ set(_pkg_modules_found 1)
+ endif(${_prefix}_FOUND)
+ endforeach(_pkg_alt)
+
+ if (NOT ${_prefix}_FOUND)
+ if(${_pkg_is_required})
+ message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found")
+ endif(${_pkg_is_required})
+ endif(NOT ${_prefix}_FOUND)
+
+ _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
+ endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
+endmacro(pkg_search_module)
+
+### Local Variables:
+### mode: cmake
+### End:
diff --git a/modules/FindPulseAudio.cmake b/modules/FindPulseAudio.cmake
new file mode 100644
index 00000000..dbb1f6b5
--- /dev/null
+++ b/modules/FindPulseAudio.cmake
@@ -0,0 +1,76 @@
+# Try to find the PulseAudio library
+#
+# Once done this will define:
+#
+# PULSEAUDIO_FOUND - system has the PulseAudio library
+# PULSEAUDIO_INCLUDE_DIR - the PulseAudio include directory
+# PULSEAUDIO_LIBRARY - the libraries needed to use PulseAudio
+# PULSEAUDIO_MAINLOOP_LIBRARY - the libraries needed to use PulsAudio Mailoop
+#
+# Copyright (c) 2008, Matthias Kretz, <kretz@kde.org>
+# Copyright (c) 2009, Marcus Hufgard, <Marcus.Hufgard@hufgard.de>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if (NOT PULSEAUDIO_MINIMUM_VERSION)
+ set(PULSEAUDIO_MINIMUM_VERSION "0.9.9")
+endif (NOT PULSEAUDIO_MINIMUM_VERSION)
+
+if (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY AND PULSEAUDIO_MAINLOOP_LIBRARY)
+ # Already in cache, be silent
+ set(PULSEAUDIO_FIND_QUIETLY TRUE)
+endif (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY AND PULSEAUDIO_MAINLOOP_LIBRARY)
+
+if (NOT WIN32)
+ include(FindPkgConfig)
+ pkg_check_modules(PC_PULSEAUDIO QUIET libpulse>=${PULSEAUDIO_MINIMUM_VERSION})
+ pkg_check_modules(PC_PULSEAUDIO_MAINLOOP QUIET libpulse-mainloop-glib)
+endif (NOT WIN32)
+
+FIND_PATH(PULSEAUDIO_INCLUDE_DIR pulse/pulseaudio.h
+ HINTS
+ ${PC_PULSEAUDIO_INCLUDEDIR}
+ ${PC_PULSEAUDIO_INCLUDE_DIRS}
+ )
+
+FIND_LIBRARY(PULSEAUDIO_LIBRARY NAMES pulse libpulse
+ HINTS
+ ${PC_PULSEAUDIO_LIBDIR}
+ ${PC_PULSEAUDIO_LIBRARY_DIRS}
+ )
+
+FIND_LIBRARY(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib
+ HINTS
+ ${PC_PULSEAUDIO_LIBDIR}
+ ${PC_PULSEAUDIO_LIBRARY_DIRS}
+ )
+
+if (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY)
+ include(MacroEnsureVersion)
+
+ # get PulseAudio's version from its version.h, and compare it with our minimum version
+ file(STRINGS "${PULSEAUDIO_INCLUDE_DIR}/pulse/version.h" pulse_version_h
+ REGEX ".*pa_get_headers_version\\(\\).*"
+ )
+ string(REGEX REPLACE ".*pa_get_headers_version\\(\\)\ \\(\"([0-9]+\\.[0-9]+\\.[0-9]+)\"\\).*" "\\1"
+ PULSEAUDIO_VERSION "${pulse_version_h}")
+ macro_ensure_version("${PULSEAUDIO_MINIMUM_VERSION}" "${PULSEAUDIO_VERSION}" PULSEAUDIO_FOUND)
+else (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY)
+ set(PULSEAUDIO_FOUND FALSE)
+endif (PULSEAUDIO_INCLUDE_DIR AND PULSEAUDIO_LIBRARY)
+
+if (PULSEAUDIO_FOUND)
+ if (NOT PULSEAUDIO_FIND_QUIETLY)
+ message(STATUS "Found PulseAudio: ${PULSEAUDIO_LIBRARY}")
+ if (PULSEAUDIO_MAINLOOP_LIBRARY)
+ message(STATUS "Found PulseAudio Mainloop: ${PULSEAUDIO_MAINLOOP_LIBRARY}")
+ else (PULSAUDIO_MAINLOOP_LIBRARY)
+ message(STATUS "Could NOT find PulseAudio Mainloop Library")
+ endif (PULSEAUDIO_MAINLOOP_LIBRARY)
+ endif (NOT PULSEAUDIO_FIND_QUIETLY)
+else (PULSEAUDIO_FOUND)
+ message(STATUS "Could NOT find PulseAudio")
+endif (PULSEAUDIO_FOUND)
+
+mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY)
diff --git a/modules/FindPyKDE4.cmake b/modules/FindPyKDE4.cmake
index f738741e..dd2b7380 100644
--- a/modules/FindPyKDE4.cmake
+++ b/modules/FindPyKDE4.cmake
@@ -156,5 +156,9 @@ ENDMACRO(PYKDE4_INSTALL_PYTHON_FILES)
# executable.
#
MACRO(PYKDE4_ADD_EXECUTABLE _pyname _exename)
- INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${CMAKE_SOURCE_DIR}/cmake/modules/create_exe_symlink.cmake)" )
+ if(NOT ${PROJECT_NAME})
+ MESSAGE(STATUS "Project name is necessary to create symlink against python program!!! It will failed.")
+ endif(NOT ${PROJECT_NAME})
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${DATA_INSTALL_DIR}/${PROJECT_NAME}/${_pyname} -DLINK_NAME=${BIN_INSTALL_DIR}/${_exename} -P ${current_module_dir}/create_exe_symlink.cmake)" )
ENDMACRO(PYKDE4_ADD_EXECUTABLE)
+
diff --git a/modules/FindQCA2.cmake b/modules/FindQCA2.cmake
index 9966c224..478105f4 100644
--- a/modules/FindQCA2.cmake
+++ b/modules/FindQCA2.cmake
@@ -26,7 +26,7 @@ else (QCA2_INCLUDE_DIR AND QCA2_LIBRARIES)
if (NOT WIN32)
find_package(PkgConfig)
- pkg_check_modules(PC_QCA2 qca2)
+ pkg_check_modules(PC_QCA2 QUIET qca2)
set(QCA2_DEFINITIONS ${PC_QCA2_CFLAGS_OTHER})
endif (NOT WIN32)
diff --git a/modules/FindQImageBlitz.cmake b/modules/FindQImageBlitz.cmake
index 9e31c047..232d7c40 100644
--- a/modules/FindQImageBlitz.cmake
+++ b/modules/FindQImageBlitz.cmake
@@ -20,7 +20,7 @@ if (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_QIMAGEBLITZ qimageblitz)
+ pkg_check_modules(PC_QIMAGEBLITZ QUIET qimageblitz)
endif (NOT WIN32)
find_path(QIMAGEBLITZ_INCLUDES
diff --git a/modules/FindSoprano.cmake b/modules/FindSoprano.cmake
index fc00a9c9..1f45f972 100644
--- a/modules/FindSoprano.cmake
+++ b/modules/FindSoprano.cmake
@@ -16,6 +16,7 @@
# SOPRANO_PLUGIN_RAPTORSERIALIZER_FOUND - true if the raptorserializer plugin is found
# SOPRANO_PLUGIN_REDLANDBACKEND_FOUND - true if the redlandbackend plugin is found
# SOPRANO_PLUGIN_SESAME2BACKEND_FOUND - true if the sesame2backend plugin is found
+# SOPRANO_PLUGIN_VIRTUOSOBACKEND_FOUND - true if the virtuosobackend plugin is found
#
# Options:
# Set SOPRANO_MIN_VERSION to set the minimum required Soprano version (default: 1.99)
@@ -121,14 +122,18 @@
endif(SOPRANO_VERSION STRLESS "${SOPRANO_MIN_VERSION}")
endif(SOPRANO_VERSION_MATCH)
endif(Soprano_FOUND)
-
+
+
#look for parser plugins
if(Soprano_FOUND)
find_path(SOPRANO_PLUGIN_DIR
NAMES
soprano/plugins
PATHS
- ${SHARE_INSTALL_PREFIX} /usr/share /usr/local/share
+ ${SOPRANO_INCLUDE_DIR}/../share
+ ${SHARE_INSTALL_PREFIX}
+ /usr/share
+ /usr/local/share
NO_DEFAULT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
@@ -164,6 +169,11 @@
set(_plugins "${_plugins} sesame2backend")
endif(EXISTS ${SOPRANO_PLUGIN_DIR}/sesame2backend.desktop)
+ if(EXISTS ${SOPRANO_PLUGIN_DIR}/virtuosobackend.desktop)
+ set(SOPRANO_PLUGIN_VIRTUOSOBACKEND_FOUND TRUE)
+ set(_plugins "${_plugins} virtuosobackend")
+ endif(EXISTS ${SOPRANO_PLUGIN_DIR}/virtuosobackend.desktop)
+
endif(Soprano_FOUND)
if(Soprano_FOUND)
@@ -178,10 +188,10 @@
else(Soprano_FOUND)
if(Soprano_FIND_REQUIRED)
if(NOT SOPRANO_INCLUDE_DIR)
- message(FATAL_ERROR "Could not find Soprano includes.")
+ message(FATAL_ERROR "Could not find Soprano includes.")
endif(NOT SOPRANO_INCLUDE_DIR)
if(NOT SOPRANO_LIBRARIES)
- message(FATAL_ERROR "Could not find Soprano library.")
+ message(FATAL_ERROR "Could not find Soprano library.")
endif(NOT SOPRANO_LIBRARIES)
else(Soprano_FIND_REQUIRED)
if(NOT SOPRANO_INCLUDE_DIR)
@@ -193,6 +203,11 @@
endif(Soprano_FIND_REQUIRED)
endif(Soprano_FOUND)
-mark_as_advanced(SOPRANO_CLIENT_LIBRARIES SOPRANO_INDEX_LIBRARIES SOPRANO_LIBRARIES SOPRANO_SERVER_LIBRARIES SOPRANO_INCLUDE_DIR )
+mark_as_advanced(SOPRANO_CLIENT_LIBRARIES
+ SOPRANO_INDEX_LIBRARIES
+ SOPRANO_LIBRARIES
+ SOPRANO_SERVER_LIBRARIES
+ SOPRANO_INCLUDE_DIR
+ SOPRANO_PLUGIN_DIR)
#endif(SOPRANO_INCLUDE_DIR AND SOPRANO_LIBRARIES AND SOPRANO_INDEX_LIBRARIES AND SOPRANO_SERVER_LIBRARIES)
diff --git a/modules/FindSqlite.cmake b/modules/FindSqlite.cmake
index 2fa76330..dc36457b 100644
--- a/modules/FindSqlite.cmake
+++ b/modules/FindSqlite.cmake
@@ -25,7 +25,7 @@ endif ( SQLITE_INCLUDE_DIR AND SQLITE_LIBRARIES )
if( NOT WIN32 )
find_package(PkgConfig)
- pkg_check_modules(PC_SQLITE sqlite3)
+ pkg_check_modules(PC_SQLITE QUIET sqlite3)
set(SQLITE_DEFINITIONS ${PC_SQLITE_CFLAGS_OTHER})
endif( NOT WIN32 )
diff --git a/modules/FindStrigi.cmake b/modules/FindStrigi.cmake
index f0a3921e..57f2199b 100644
--- a/modules/FindStrigi.cmake
+++ b/modules/FindStrigi.cmake
@@ -55,7 +55,7 @@ else(STRIGI_CONFIG_FOUND_AND_HAS_COMPLETE_INFORMATION)
if(NOT strigi_home)
find_package(PkgConfig)
if(PKG_CONFIG_EXECUTABLE)
- pkg_check_modules(STRIGI libstreamanalyzer>=${STRIGI_MIN_VERSION})
+ pkg_check_modules(STRIGI QUIET libstreamanalyzer>=${STRIGI_MIN_VERSION})
endif(PKG_CONFIG_EXECUTABLE)
endif(NOT strigi_home)
endif(NOT WIN32)
@@ -173,8 +173,14 @@ endif(WIN32)
mark_as_advanced(
STRIGI_INCLUDE_DIR
STRIGI_STREAMANALYZER_LIBRARY
+ STRIGI_STREAMANALYZER_LIBRARY_DEBUG
+ STRIGI_STREAMANALYZER_LIBRARY_RELEASE
STRIGI_STREAMS_LIBRARY
+ STRIGI_STREAMS_LIBRARY_DEBUG
+ STRIGI_STREAMS_LIBRARY_RELEASE
STRIGI_STRIGIQTDBUSCLIENT_LIBRARY
+ STRIGI_STRIGIQTDBUSCLIENT_LIBRARY_DEBUG
+ STRIGI_STRIGIQTDBUSCLIENT_LIBRARY_RELEASE
STRIGI_LINE_ANALYZER_PREFIX
STRIGI_THROUGH_ANALYZER_PREFIX
STRIGI_NEEDS_SIGNED_CHAR
diff --git a/modules/FindUSB.cmake b/modules/FindUSB.cmake
index 566cdd8e..dfcf650c 100644
--- a/modules/FindUSB.cmake
+++ b/modules/FindUSB.cmake
@@ -21,7 +21,7 @@ else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_LIBUSB libusb)
+ pkg_check_modules(PC_LIBUSB QUIET libusb)
ENDIF(NOT WIN32)
FIND_PATH(LIBUSB_INCLUDE_DIR usb.h
diff --git a/modules/FindXine.cmake b/modules/FindXine.cmake
index 1223851b..4ad0c2a8 100644
--- a/modules/FindXine.cmake
+++ b/modules/FindXine.cmake
@@ -21,7 +21,7 @@ endif (XINE_INCLUDE_DIR AND XINE_LIBRARY)
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
- pkg_check_modules(PC_LIBXINE libxine)
+ pkg_check_modules(PC_LIBXINE QUIET libxine)
endif (PKG_CONFIG_FOUND)
find_path(XINE_INCLUDE_DIR NAMES xine.h
diff --git a/modules/FindXmms.cmake b/modules/FindXmms.cmake
index c43893fb..9f2cdf26 100644
--- a/modules/FindXmms.cmake
+++ b/modules/FindXmms.cmake
@@ -22,7 +22,7 @@ else (XMMS_INCLUDE_DIRS AND XMMS_LIBRARIES)
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package(PkgConfig)
- pkg_check_modules(PC_XMMS xmms)
+ pkg_check_modules(PC_XMMS QUIET xmms)
endif(NOT WIN32)
find_path(XMMS_INCLUDE_DIRS xmmsctrl.h
diff --git a/modules/HandleImportedTargetsInCMakeRequiredLibraries.cmake b/modules/HandleImportedTargetsInCMakeRequiredLibraries.cmake
new file mode 100644
index 00000000..28564ab6
--- /dev/null
+++ b/modules/HandleImportedTargetsInCMakeRequiredLibraries.cmake
@@ -0,0 +1,81 @@
+
+# This is a helper function used by CheckCXXSourceRuns.cmake and
+# CheckCXXSourceCompiles.cmake. Actually it should be used by all macros which
+# use TRY_COMPILE() or TRY_RUN().
+# It takes the CMAKE_REQUIRED_LIBRARY variable and searches it for imported
+# (library) targets. Since the project created by TRY_COMPILE() (and TRY_RUN())
+# does not know about these imported targets, this macro here replaces these
+# imported targets with the actual library files on disk and it also
+# adds the libraries from the link interface of these imported targets.
+# E.g the imported target KDE4__kdeui is replaced on my system with /opt/kdelibs/lib/libkdeui.so
+# and the link interface libraries, which includes e.g. /opt/kdelibs/lib/libkdecore.so.
+# This way imported targets work also when used with CHECK_CXX_SOURCE_COMPILES/RUNS().
+
+# Copyright (c) 2009, Alexander Neundorf, <neundorf@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+FUNCTION(HANDLE_IMPORTED_TARGETS_IN_CMAKE_REQUIRED_LIBRARIES _RESULT)
+# handle imported library targets
+ SET(_CCSR_IMP_TARGETS_MAP)
+ SET(_CCSR_REQ_LIBS ${CMAKE_REQUIRED_LIBRARIES})
+ SET(_CHECK_FOR_IMPORTED_TARGETS TRUE)
+ SET(_CCSR_LOOP_COUNTER 0)
+ WHILE(_CHECK_FOR_IMPORTED_TARGETS)
+ MATH(EXPR _CCSR_LOOP_COUNTER "${_CCSR_LOOP_COUNTER} + 1 ")
+ SET(_CCSR_NEW_REQ_LIBS )
+ SET(_CHECK_FOR_IMPORTED_TARGETS FALSE)
+ FOREACH(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+ GET_TARGET_PROPERTY(_importedConfigs ${_CURRENT_LIB} IMPORTED_CONFIGURATIONS)
+ IF (_importedConfigs)
+ # Ok, so this is an imported target.
+ # First we get the imported configurations.
+ # Then we get the location of the actual library on disk of the first configuration.
+ # then we'll get its link interface libraries property,
+ # iterate through it and replace all imported targets we find there
+ # with there actual location.
+
+ # guard against infinite loop: abort after 100 iterations ( 100 is arbitrary chosen)
+ IF ("${_CCSR_LOOP_COUNTER}" LESS 100)
+ SET(_CHECK_FOR_IMPORTED_TARGETS TRUE)
+# ELSE ("${_CCSR_LOOP_COUNTER}" LESS 1)
+# MESSAGE(STATUS "********* aborting loop, counter : ${_CCSR_LOOP_COUNTER}")
+ ENDIF ("${_CCSR_LOOP_COUNTER}" LESS 100)
+
+ LIST(GET _importedConfigs 0 _firstImportedConfig)
+ GET_TARGET_PROPERTY(_firstImportedLocation ${_CURRENT_LIB} LOCATION_${_firstImportedConfig})
+ GET_TARGET_PROPERTY(_linkInterfaceLibs ${_CURRENT_LIB} IMPORTED_LINK_INTERFACE_LIBRARIES_${_firstImportedConfig} )
+
+ LIST(APPEND _CCSR_NEW_REQ_LIBS ${_firstImportedLocation})
+# MESSAGE(STATUS "Appending lib ${_CURRENT_LIB} as ${_firstImportedLocation}")
+ FOREACH(_currentLinkInterfaceLib ${_linkInterfaceLibs})
+# MESSAGE(STATUS "Appending link interface lib ${_currentLinkInterfaceLib}")
+ LIST(APPEND _CCSR_NEW_REQ_LIBS ${_currentLinkInterfaceLib} )
+ ENDFOREACH(_currentLinkInterfaceLib ${_linkInterfaceLibs})
+ ELSE(_importedConfigs)
+ # "Normal" libraries are just used as they are.
+ LIST(APPEND _CCSR_NEW_REQ_LIBS ${_CURRENT_LIB} )
+# MESSAGE(STATUS "Appending lib directly: ${_CURRENT_LIB}")
+ ENDIF(_importedConfigs)
+ ENDFOREACH(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+
+ SET(_CCSR_REQ_LIBS ${_CCSR_NEW_REQ_LIBS} )
+ ENDWHILE(_CHECK_FOR_IMPORTED_TARGETS)
+
+ # Finally we iterate once more over all libraries. This loop only removes
+ # all remaining imported target names (there shouldn't be any left anyway).
+ SET(_CCSR_NEW_REQ_LIBS )
+ FOREACH(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+ GET_TARGET_PROPERTY(_importedConfigs ${_CURRENT_LIB} IMPORTED_CONFIGURATIONS)
+ IF (NOT _importedConfigs)
+ LIST(APPEND _CCSR_NEW_REQ_LIBS ${_CURRENT_LIB} )
+# MESSAGE(STATUS "final: appending ${_CURRENT_LIB}")
+ ELSE (NOT _importedConfigs)
+# MESSAGE(STATUS "final: skipping ${_CURRENT_LIB}")
+ ENDIF (NOT _importedConfigs)
+ ENDFOREACH(_CURRENT_LIB ${_CCSR_REQ_LIBS})
+ SET(${_RESULT} ${_CCSR_NEW_REQ_LIBS} PARENT_SCOPE)
+
+ENDFUNCTION(HANDLE_IMPORTED_TARGETS_IN_CMAKE_REQUIRED_LIBRARIES _CCSR_REQ_LIBS)
+
diff --git a/modules/KDE4CTestNightlySetup.cmake b/modules/KDE4CTestNightlySetup.cmake
deleted file mode 100644
index 4c21a583..00000000
--- a/modules/KDE4CTestNightlySetup.cmake
+++ /dev/null
@@ -1,102 +0,0 @@
-# The following variables have to be set before including this file:
-# CTEST_CMAKE_GENERATOR
-# CTEST_UPDATE_TYPE (if update from cvs or svn is required)
-# SVN_REPOSITORY or CVS_REPOSITORY and CVS_MODULE
-#
-# If the project doesn't build with spaces in the path, do the following:
-# set(CTEST_AVOID_SPACES TRUE)
-#
-# After this file has been included, the regular new style ctest
-# scripting commands can be used, e.g.
-#
-# ctest_empty_binary_directory("${CTEST_BINARY_DIRECTORY}")
-# ctest_start(Nightly)
-# ctest_update(SOURCE "${CTEST_SOURCE_DIRECTORY}" )
-# ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" )
-# ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" )
-# ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" )
-# ctest_submit()
-
-
-
-
-set(currentDirectory "${CTEST_SCRIPT_DIRECTORY}")
-
-if(NOT EXISTS "${currentDirectory}/CMakeLists.txt")
- message(FATAL_ERROR "This macro must be called from a cmake script in the source tree of your project.")
-endif(NOT EXISTS "${currentDirectory}/CMakeLists.txt")
-
-include("${currentDirectory}/CTestConfig.cmake")
-include("${currentDirectory}/CTestCustom.cmake" OPTIONAL)
-
-# Set up the directories where the dashboards will be created
-# By default this will be "$HOME/Dashboards/<project>/(src|build) dir".
-# It can be overriden by the user.
-set(DASHBOARD_DIR "$ENV{HOME}/Dashboards" )
-
-if(NOT DEFINED CTEST_SOURCE_DIRECTORY)
- if(CTEST_AVOID_SPACES)
- set(CTEST_SOURCE_DIRECTORY "${DASHBOARD_DIR}/${CTEST_PROJECT_NAME}/srcdir" )
- else(CTEST_AVOID_SPACES)
- set(CTEST_SOURCE_DIRECTORY "${DASHBOARD_DIR}/${CTEST_PROJECT_NAME}/src dir" )
- endif(CTEST_AVOID_SPACES)
-endif(NOT DEFINED CTEST_SOURCE_DIRECTORY)
-
-if(NOT DEFINED CTEST_BINARY_DIRECTORY)
- if(CTEST_AVOID_SPACES)
- set(CTEST_BINARY_DIRECTORY "${DASHBOARD_DIR}/${CTEST_PROJECT_NAME}/builddir" )
- else(CTEST_AVOID_SPACES)
- set(CTEST_BINARY_DIRECTORY "${DASHBOARD_DIR}/${CTEST_PROJECT_NAME}/build dir" )
- endif(CTEST_AVOID_SPACES)
-endif(NOT DEFINED CTEST_BINARY_DIRECTORY)
-
-
-
-site_name(CTEST_SITE)
-if(NOT DEFINED CTEST_BUILD_NAME)
- set(CTEST_BUILD_NAME ${CMAKE_SYSTEM_NAME})
-endif(NOT DEFINED CTEST_BUILD_NAME)
-
-if("${CTEST_CMAKE_GENERATOR}" MATCHES Makefile)
- find_program(MAKE_EXECUTABLE make gmake)
- set(CTEST_BUILD_COMMAND "${MAKE_EXECUTABLE}" )
-else("${CTEST_CMAKE_GENERATOR}" MATCHES Makefile)
- if(NOT DEFINED CTEST_BUILD_COMMAND)
- message(FATAL_ERROR "CTEST_CMAKE_GENERATOR is set to \"${CTEST_CMAKE_GENERATOR}\", but CTEST_BUILD_COMMAND has not been set")
- endif(NOT DEFINED CTEST_BUILD_COMMAND)
-endif("${CTEST_CMAKE_GENERATOR}" MATCHES Makefile)
-
-# set up version control
-
-string(TOLOWER ${CTEST_UPDATE_TYPE} _ctest_vcs)
-set(_have_vcs FALSE)
-
-if ("${_ctest_vcs}" STREQUAL svn)
- find_program(SVN_EXECUTABLE svn)
- if (NOT SVN_EXECUTABLE)
- message(FATAL_ERROR "Error: CTEST_UPDATE_TYPE is svn, but could not find svn executable")
- endif (NOT SVN_EXECUTABLE)
- if(NOT SVN_REPOSITORY)
- message(FATAL_ERROR "Error: CTEST_UPDATE_TYPE is svn, but SVN_REPOSITORY is not set")
- endif(NOT SVN_REPOSITORY)
- set(CTEST_UPDATE_COMMAND ${SVN_EXECUTABLE})
- set(CTEST_CHECKOUT_COMMAND "${SVN_EXECUTABLE} co ${SVN_REPOSITORY} \"${CTEST_SOURCE_DIRECTORY}\"")
- set(_have_vcs TRUE)
-endif ("${_ctest_vcs}" STREQUAL svn)
-
-if ("${_ctest_vcs}" STREQUAL cvs)
- find_program(CVS_EXECUTABLE cvs cvsnt)
- if (NOT CVS_EXECUTABLE)
- message(FATAL_ERROR "Error: CTEST_UPDATE_TYPE is cvs, but could not find cvs or cvsnt executable")
- endif (NOT CVS_EXECUTABLE)
- if (NOT CVS_REPOSITORY)
- message(FATAL_ERROR "Error: CTEST_UPDATE_TYPE is cvs, but CVS_REPOSITORY is not set")
- endif (NOT CVS_REPOSITORY)
- if (NOT CVS_MODULE)
- message(FATAL_ERROR "Error: CTEST_UPDATE_TYPE is cvs, but CVS_MODULE is not set")
- endif (NOT CVS_MODULE)
-
- set(CTEST_UPDATE_COMMAND ${CVS_EXECUTABLE})
- set(CTEST_CHECKOUT_COMMAND "${CVS_EXECUTABLE} -d ${CVS_REPOSITORY} co -d \"${CTEST_SOURCE_DIRECTORY}\" ${CVS_MODULE}")
- set(_have_vcs TRUE)
-endif ("${_ctest_vcs}" STREQUAL cvs)
diff --git a/modules/KDE4Defaults.cmake b/modules/KDE4Defaults.cmake
index de56a822..1f2d07c0 100644
--- a/modules/KDE4Defaults.cmake
+++ b/modules/KDE4Defaults.cmake
@@ -7,7 +7,7 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/CTestConfig.cmake)
endif (EXISTS ${CMAKE_SOURCE_DIR}/CTestConfig.cmake)
# Always include srcdir and builddir in include path
-# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY} in about every subdir
+# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} in about every subdir
# since cmake 2.4.0
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -24,11 +24,11 @@ set(CMAKE_COLOR_MAKEFILE ON)
# define the generic version of the libraries here
# this makes it easy to advance it when the next KDE release comes
# Use this version number for libraries which are at version n in KDE version n
-set(GENERIC_LIB_VERSION "4.2.0")
+set(GENERIC_LIB_VERSION "4.3.0")
set(GENERIC_LIB_SOVERSION "4")
# Use this version number for libraries which are already at version n+1 in KDE version n
-set(KDE_NON_GENERIC_LIB_VERSION "5.2.0")
+set(KDE_NON_GENERIC_LIB_VERSION "5.3.0")
set(KDE_NON_GENERIC_LIB_SOVERSION "5")
# windows does not support LD_LIBRARY_PATH or similar
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake
index 5533284b..ce310ebf 100644
--- a/modules/KDE4Macros.cmake
+++ b/modules/KDE4Macros.cmake
@@ -66,17 +66,25 @@ macro (KDE4_ADD_KCFG_FILES _sources )
get_filename_component(_basename ${_tmp_FILE} NAME_WE)
file(READ ${_tmp_FILE} _contents)
- string(REGEX REPLACE "^(.*\n)?File=([^\n]+kcfg).*\n.*$" "\\2" _kcfg_FILE "${_contents}")
+ string(REGEX REPLACE "^(.*\n)?File=([^\n]+kcfg).*\n.*$" "\\2" _kcfg_FILENAME "${_contents}")
set(_src_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
set(_moc_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)
+ set(_kcfg_FILE ${_abs_PATH}/${_kcfg_FILENAME})
+ # Maybe the .kcfg is a generated file?
+ if(NOT EXISTS "${_kcfg_FILE}")
+ set(_kcfg_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_kcfg_FILENAME})
+ endif(NOT EXISTS "${_kcfg_FILE}")
+ if(NOT EXISTS "${_kcfg_FILE}")
+ message(ERROR "${_kcfg_FILENAME} not found; tried in ${_abs_PATH} and ${CMAKE_CURRENT_BINARY_DIR}")
+ endif(NOT EXISTS "${_kcfg_FILE}")
# the command for creating the source file from the kcfg file
add_custom_command(OUTPUT ${_header_FILE} ${_src_FILE}
COMMAND ${KDE4_KCFGC_EXECUTABLE}
- ARGS ${_abs_PATH}/${_kcfg_FILE} ${_tmp_FILE} -d ${CMAKE_CURRENT_BINARY_DIR}
+ ARGS ${_kcfg_FILE} ${_tmp_FILE} -d ${CMAKE_CURRENT_BINARY_DIR}
MAIN_DEPENDENCY ${_tmp_FILE}
- DEPENDS ${_abs_PATH}/${_kcfg_FILE} ${_KDE4_KCONFIG_COMPILER_DEP} )
+ DEPENDS ${_kcfg_FILE} ${_KDE4_KCONFIG_COMPILER_DEP} )
if(_kcfg_generatemoc)
qt4_generate_moc(${_header_FILE} ${_moc_FILE} )
@@ -826,7 +834,7 @@ macro (KDE4_ADD_EXECUTABLE _target_NAME)
_automoc4_kde4_post_target_handling(${_target_NAME})
if (_test)
- set_target_properties(${_target_NAME} PROPERTIES COMPILE_FLAGS -DKDESRCDIR="\\"${CMAKE_CURRENT_SOURCE_DIR}\\"")
+ set_target_properties(${_target_NAME} PROPERTIES COMPILE_FLAGS -DKDESRCDIR="\\"${CMAKE_CURRENT_SOURCE_DIR}/\\"")
endif (_test)
kde4_handle_rpath_for_executable(${_target_NAME} ${_type})
@@ -1016,7 +1024,7 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
endif(MSVC)
if (PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE)
string(REPLACE "*" "(.*)" pattern_rx "${pattern}")
- file(GLOB_RECURSE files "${pattern}")
+ file(GLOB files "${pattern}")
foreach (it ${files})
string(REGEX REPLACE "${pattern_rx}" "\\1" fn "${it}")
if (fn MATCHES ".*16.*" )
diff --git a/modules/MacroLogFeature.cmake b/modules/MacroLogFeature.cmake
index 11861b95..5db50edf 100644
--- a/modules/MacroLogFeature.cmake
+++ b/modules/MacroLogFeature.cmake
@@ -26,6 +26,7 @@
# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
# Copyright (c) 2006, Allen Winter, <winter@kde.org>
+# Copyright (c) 2009, Sebastian Trueg, <trueg@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
@@ -66,18 +67,26 @@ MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _
ENDIF (${_required} MATCHES "[Tt][Rr][Uu][Ee]")
ENDIF (${_var})
- SET(_logtext "+ ${_package}")
+ SET(_logtext " * ${_package}")
IF (NOT ${_var})
IF (${_minvers} MATCHES ".*")
- SET(_logtext "${_logtext}, ${_minvers} or higher")
+ SET(_logtext "${_logtext} (${_minvers} or higher)")
ENDIF (${_minvers} MATCHES ".*")
- SET(_logtext "${_logtext}: ${_description} <${_url}>")
+ SET(_logtext "${_logtext} <${_url}>\n ")
+ ELSE (NOT ${_var})
+ SET(_logtext "${_logtext} - ")
+ ENDIF (NOT ${_var})
+
+ SET(_logtext "${_logtext}${_description}")
+
+ IF (NOT ${_var})
IF (${_comments} MATCHES ".*")
- SET(_logtext "${_logtext}\n${_comments}")
+ SET(_logtext "${_logtext}\n ${_comments}")
ENDIF (${_comments} MATCHES ".*")
# SET(_logtext "${_logtext}\n") #double-space missing features?
ENDIF (NOT ${_var})
+
FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n")
ENDMACRO(MACRO_LOG_FEATURE)
@@ -85,41 +94,53 @@ ENDMACRO(MACRO_LOG_FEATURE)
MACRO(MACRO_DISPLAY_FEATURE_LOG)
- SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
- IF (EXISTS ${_file})
- FILE(READ ${_file} _requirements)
- MESSAGE(STATUS "\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- Please install them before continuing this software installation.\n-----------------------------------------------------------------------------\n${_requirements}-----------------------------------------------------------------------------")
- FILE(REMOVE ${_file})
- MESSAGE(FATAL_ERROR "Exiting: Missing Requirements")
- ENDIF (EXISTS ${_file})
+ SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
+ SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
+ SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
- SET(_summary "\n")
+ IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
+ SET(_printSummary TRUE)
+ ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
- SET(_elist 0)
- SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
- IF (EXISTS ${_file})
- SET(_elist 1)
- FILE(READ ${_file} _enabled)
- FILE(REMOVE ${_file})
- SET(_summary "${_summary}-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n${_enabled}")
- ENDIF (EXISTS ${_file})
+ IF(_printSummary)
+ SET(_missingDeps 0)
+ IF (EXISTS ${_enabledFile})
+ FILE(READ ${_enabledFile} _enabled)
+ FILE(REMOVE ${_enabledFile})
+ SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}")
+ ENDIF (EXISTS ${_enabledFile})
- SET(_dlist 0)
- SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
- IF (EXISTS ${_file})
- SET(_dlist 1)
- FILE(READ ${_file} _disabled)
- FILE(REMOVE ${_file})
- SET(_summary "${_summary}-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n${_disabled}")
- ELSE (EXISTS ${_file})
- IF (${_elist})
- SET(_summary "${_summary}Congratulations! All external packages have been found.\n")
- ENDIF (${_elist})
- ENDIF (EXISTS ${_file})
- IF (${_elist} OR ${_dlist})
- SET(_summary "${_summary}-----------------------------------------------------------------------------\n")
- ENDIF (${_elist} OR ${_dlist})
- MESSAGE(STATUS "${_summary}")
+ IF (EXISTS ${_disabledFile})
+ SET(_missingDeps 1)
+ FILE(READ ${_disabledFile} _disabled)
+ FILE(REMOVE ${_disabledFile})
+ SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}")
+ ENDIF (EXISTS ${_disabledFile})
+
+
+ IF (EXISTS ${_missingFile})
+ SET(_missingDeps 1)
+ FILE(READ ${_missingFile} _requirements)
+ SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}")
+ FILE(REMOVE ${_missingFile})
+ SET(_haveMissingReq 1)
+ ENDIF (EXISTS ${_missingFile})
+
+
+ IF (NOT ${_missingDeps})
+ SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.")
+ ENDIF (NOT ${_missingDeps})
+
+
+ MESSAGE(${_summary})
+ MESSAGE("-----------------------------------------------------------------------------\n")
+
+
+ IF(_haveMissingReq)
+ MESSAGE(FATAL_ERROR "Exiting: Missing Requirements")
+ ENDIF(_haveMissingReq)
+
+ ENDIF(_printSummary)
ENDMACRO(MACRO_DISPLAY_FEATURE_LOG)
diff --git a/modules/MacroOptionalAddSubdirectory.cmake b/modules/MacroOptionalAddSubdirectory.cmake
index 32e25141..5de49f95 100644
--- a/modules/MacroOptionalAddSubdirectory.cmake
+++ b/modules/MacroOptionalAddSubdirectory.cmake
@@ -9,6 +9,12 @@
# subdirectory.
# This is useful if you want to compile only a subset of all
# directories.
+#
+# If the CMake variable DISABLE_ALL_OPTIONAL_SUBDIRECTORIES is set to TRUE
+# for the first CMake run on the project, all optional subdirectories will be disabled
+# by default (but can of course be enabled via the respective options).
+# E.g. the following will disable all optional subdirectories except the one named "kcalc":
+# $ cmake -DDISABLE_ALL_OPTIONAL_SUBDIRECTORIES=TRUE -DBUILD_kcalc=TRUE <srcdir>
# Copyright (c) 2007, Alexander Neundorf, <neundorf@kde.org>
#
@@ -19,7 +25,11 @@
MACRO (MACRO_OPTIONAL_ADD_SUBDIRECTORY _dir )
GET_FILENAME_COMPONENT(_fullPath ${_dir} ABSOLUTE)
IF(EXISTS ${_fullPath})
- SET(_DEFAULT_OPTION_VALUE TRUE)
+ IF(DISABLE_ALL_OPTIONAL_SUBDIRECTORIES)
+ SET(_DEFAULT_OPTION_VALUE FALSE)
+ ELSE(DISABLE_ALL_OPTIONAL_SUBDIRECTORIES)
+ SET(_DEFAULT_OPTION_VALUE TRUE)
+ ENDIF(DISABLE_ALL_OPTIONAL_SUBDIRECTORIES)
IF(DISABLE_ALL_OPTIONAL_SUBDIRS AND NOT DEFINED BUILD_${_dir})
SET(_DEFAULT_OPTION_VALUE FALSE)
ENDIF(DISABLE_ALL_OPTIONAL_SUBDIRS AND NOT DEFINED BUILD_${_dir})
diff --git a/modules/MacroOptionalDependPackage.cmake b/modules/MacroOptionalDependPackage.cmake
index 1a6df36a..bc7b671b 100644
--- a/modules/MacroOptionalDependPackage.cmake
+++ b/modules/MacroOptionalDependPackage.cmake
@@ -13,10 +13,10 @@ MACRO (MACRO_OPTIONAL_DEPEND_PACKAGE _name _module_needed)
set(_packagename Find${_name}.cmake)
find_file(_PACKAGE_DEPEND_FOUND ${_packagename} PATHS ${CMAKE_MODULE_PATH} )
if(NOT _PACKAGE_DEPEND_FOUND)
- MESSAGE(STATUS "cmake package ${_packagename} was not found. This package needs ${_module_needed} to be compile all program")
- set(DEPEND_PACKAGE_${_name} FALSE)
+ MESSAGE(STATUS "optional cmake package ${_packagename} (for ${_module_needed}) was not found.")
+ set(DEPEND_PACKAGE_${_name} FALSE)
else(NOT _PACKAGE_DEPEND_FOUND)
- set(DEPEND_PACKAGE_${_name} TRUE)
+ set(DEPEND_PACKAGE_${_name} TRUE)
endif(NOT _PACKAGE_DEPEND_FOUND)
ENDMACRO (MACRO_OPTIONAL_DEPEND_PACKAGE)
diff --git a/modules/check_installed_exports_file.cmake b/modules/check_installed_exports_file.cmake
index 454d2a09..d1d0c718 100644
--- a/modules/check_installed_exports_file.cmake
+++ b/modules/check_installed_exports_file.cmake
@@ -1,27 +1,48 @@
-# INSTALL_DIR - set it to the install destination
-# INSTALL_PREFIX - set it to CMAKE_INSTALL_PREFIX
-# CURRENT_BINARY_DIR - set it to CMAKE_CURRENT_BINARY_DIR
-# FILENAME - the filename of the exports file
-
-# get the absolute install directory, consider absolute and relative paths and also DESTDIR
-if(IS_ABSOLUTE "${INSTALL_DIR}")
- set(installDir "$ENV{DESTDIR}${INSTALL_DIR}")
-else(IS_ABSOLUTE "${INSTALL_DIR}")
- set(installDir "$ENV{DESTDIR}${INSTALL_PREFIX}/${INSTALL_DIR}")
-endif(IS_ABSOLUTE "${INSTALL_DIR}")
-
-set(installedExportsFile "${installDir}/${FILENAME}")
-
-
-# if the file already exists at the install location, and if we can
-# find the exports file in the build dir, read both, and if their contents differ,
-# remove all configuration-specific exports files from the install dir, since
-# they may create conflicts if the new targets have been added/targets have been
-# removed/ targets have been renamed/ the namespace for the exported targets has changed
-if(EXISTS "${installedExportsFile}")
- if (${INSTALL_DIR} MATCHES "^(/)(.+)$")
- set(binaryDirExportFileDir "_${CMAKE_MATCH_2}")
- set(binaryDirExportsFile "${CURRENT_BINARY_DIR}/CMakeFiles/Export/${binaryDirExportFileDir}/${FILENAME}")
+
+# This file is executed via install(SCRIPT).
+# This means it is include()d into the cmake_install.cmake file
+# Due to this the following variables already have the correct value:
+# CMAKE_INSTALL_PREFIX
+# CMAKE_CURRENT_BINARY_DIR
+#
+# Additionally the following two variables have to be set:
+# EXPORT_INSTALL_DIR - set it to the install destination
+# EXPORT_FILES - the filenames of the exports file
+#
+# Alex
+
+
+# put all the code into a function so all variables used here are local
+# which makes sure including this file multiple times in a cmake_install.cmake works
+function(CHECK_INSTALLED_EXPORTS_FILE _filename)
+
+ # get the absolute install directory, consider absolute and relative paths and also DESTDIR
+ if(IS_ABSOLUTE "${EXPORT_INSTALL_DIR}")
+ set(installDir "$ENV{DESTDIR}${EXPORT_INSTALL_DIR}")
+ else(IS_ABSOLUTE "${EXPORT_INSTALL_DIR}")
+ set(installDir "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${EXPORT_INSTALL_DIR}")
+ endif(IS_ABSOLUTE "${EXPORT_INSTALL_DIR}")
+
+ set(installedExportsFile "${installDir}/${_filename}")
+
+ #message(STATUS "************ bin dir: ${CMAKE_CURRENT_BINARY_DIR}")
+ #message(STATUS "************ prefix: ${CMAKE_INSTALL_PREFIX}")
+ #message(STATUS "************ exportsfile: ${installedExportsFile}")
+
+ # if the file already exists at the install location, and if we can
+ # find the exports file in the build dir, read both, and if their contents differ,
+ # remove all configuration-specific exports files from the install dir, since
+ # they may create conflicts if the new targets have been added/targets have been
+ # removed/ targets have been renamed/ the namespace for the exported targets has changed
+ if(EXISTS "${installedExportsFile}")
+ if (${EXPORT_INSTALL_DIR} MATCHES "^(/)(.+)$")
+ set(binaryDirExportFileDir "_${CMAKE_MATCH_2}")
+ set(binaryDirExportsFile "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Export/${binaryDirExportFileDir}/${_filename}")
+ else (${EXPORT_INSTALL_DIR} MATCHES "^(/)(.+)$")
+ set(binaryDirExportsFile "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Export/${EXPORT_INSTALL_DIR}/${_filename}")
+ endif (${EXPORT_INSTALL_DIR} MATCHES "^(/)(.+)$")
+
+ # message(STATUS "************* binaryDirExportsFile: ${binaryDirExportsFile}")
if(EXISTS "${binaryDirExportsFile}")
file(READ "${installedExportsFile}" installedExportsFileContents)
@@ -29,16 +50,24 @@ if(EXISTS "${installedExportsFile}")
if(NOT "${installedExportsFileContents}" STREQUAL "${binaryDirExportsFileContents}")
- if("${FILENAME}" MATCHES "^(.+)(\\.cmake)$")
- message(STATUS "Installed and new ${FILENAME} differ, removing installed ${CMAKE_MATCH_1}-*.cmake files")
- file(GLOB files "${installDir}/${CMAKE_MATCH_1}-*.cmake")
- file(REMOVE ${files})
- endif("${FILENAME}" MATCHES "^(.+)(\\.cmake)$")
-# else(NOT "${installedExportsFileContents}" STREQUAL "${binaryDirExportsFileContents}")
-# message(STATUS "FILES are the same")
+ if("${_filename}" MATCHES "^(.+)(\\.cmake)$")
+ message(STATUS "XXX Installed and new ${_filename} differ, removing installed ${CMAKE_MATCH_1}-*.cmake files")
+ file(GLOB exportFiles "${installDir}/${CMAKE_MATCH_1}-*.cmake")
+# message(STATUS "XXX files: ${exportFiles}")
+ file(REMOVE ${exportFiles})
+ endif("${_filename}" MATCHES "^(.+)(\\.cmake)$")
+ else(NOT "${installedExportsFileContents}" STREQUAL "${binaryDirExportsFileContents}")
+# message(STATUS "XXX FILES ${_filename} are the same")
endif(NOT "${installedExportsFileContents}" STREQUAL "${binaryDirExportsFileContents}")
endif(EXISTS "${binaryDirExportsFile}")
- endif (${INSTALL_DIR} MATCHES "^(/)(.+)$")
-endif(EXISTS "${installedExportsFile}")
+ endif(EXISTS "${installedExportsFile}")
+
+endfunction(CHECK_INSTALLED_EXPORTS_FILE)
+
+# call the function for each exports file
+foreach(_currentExportsFile ${EXPORT_FILES})
+ check_installed_exports_file("${_currentExportsFile}")
+endforeach(_currentExportsFile ${EXPORT_FILES})
+
diff --git a/modules/create_exe_symlink.cmake b/modules/create_exe_symlink.cmake
new file mode 100644
index 00000000..95db4b48
--- /dev/null
+++ b/modules/create_exe_symlink.cmake
@@ -0,0 +1,16 @@
+# Create an executable symlink to a Python script.
+# This also sets the target script's permission bits.
+
+MESSAGE(STATUS "Symlinking $ENV{DESTDIR}/${LINK_NAME} to $ENV{DESTDIR}/${TARGET}")
+
+GET_FILENAME_COMPONENT(abs_link_name $ENV{DESTDIR}/${LINK_NAME} ABSOLUTE)
+GET_FILENAME_COMPONENT(link_path $ENV{DESTDIR}/${LINK_NAME} PATH)
+GET_FILENAME_COMPONENT(abs_link_path ${link_path} ABSOLUTE)
+FILE(MAKE_DIRECTORY ${abs_link_path})
+
+GET_FILENAME_COMPONENT(abs_target ${TARGET} ABSOLUTE)
+IF(UNIX)
+ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${abs_target} ${abs_link_name})
+ EXECUTE_PROCESS(COMMAND chmod a+x ${abs_target})
+ENDIF(UNIX)
+# FIXME: WIN32 support