aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/CheckCXXSourceCompiles.cmake53
-rw-r--r--modules/CheckIncludeFiles.cmake14
-rw-r--r--modules/KDE4Macros.cmake46
-rw-r--r--modules/MacroLibrary.cmake5
-rw-r--r--modules/MacroOptionalFindPackage.cmake (renamed from modules/OptionalFindPackage.cmake)8
-rw-r--r--modules/kde4uic.cmake8
6 files changed, 93 insertions, 41 deletions
diff --git a/modules/CheckCXXSourceCompiles.cmake b/modules/CheckCXXSourceCompiles.cmake
new file mode 100644
index 00000000..dc696d1f
--- /dev/null
+++ b/modules/CheckCXXSourceCompiles.cmake
@@ -0,0 +1,53 @@
+# - 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 size if the type exists.
+# Checks the following optional VARIABLES (not arguments)
+# CMAKE_REQUIRED_LIBRARIES - Link to extra libraries
+# CMAKE_REQUIRED_FLAGS - Extra flags to C compiler
+# CMAKE_REQUIRED_INCLUDES - Extra include directories
+#
+
+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)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
+ "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+ ENDIF(CMAKE_REQUIRED_LIBRARIES)
+ IF(CMAKE_REQUIRED_INCLUDES)
+ SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
+ "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+ STRING(REGEX REPLACE ";" "\\\\;" CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}")
+ ENDIF(CMAKE_REQUIRED_INCLUDES)
+ FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/src.cxx"
+ "${SOURCE}")
+
+ MESSAGE(STATUS "Performing Test ${VAR}")
+ TRY_COMPILE(${VAR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/src.cxx
+ CMAKE_FLAGS
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
+ "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+ OUTPUT_VARIABLE OUTPUT)
+ IF(${VAR})
+ SET(${VAR} 1 CACHE INTERNAL "Test ${FUNCTION}")
+ MESSAGE(STATUS "Performing Test ${VAR} - Success")
+ WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log
+ "Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCE}\n" APPEND)
+ ELSE(${VAR})
+ MESSAGE(STATUS "Performing Test ${VAR} - Failed")
+ SET(${VAR} "" CACHE INTERNAL "Test ${FUNCTION}")
+ WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
+ "Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCE}\n" APPEND)
+ ENDIF(${VAR})
+ ENDIF("${VAR}" MATCHES "^${VAR}$")
+ENDMACRO(CHECK_CXX_SOURCE_COMPILES)
+
diff --git a/modules/CheckIncludeFiles.cmake b/modules/CheckIncludeFiles.cmake
index 8d1b0fb3..016402af 100644
--- a/modules/CheckIncludeFiles.cmake
+++ b/modules/CheckIncludeFiles.cmake
@@ -12,18 +12,10 @@
MACRO(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
- SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS )
-# IF(CMAKE_REQUIRED_INCLUDES)
-# SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS
-# "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-# ENDIF(CMAKE_REQUIRED_INCLUDES)
- SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS -DINCLUDE_DIRECTORIES=)
- FOREACH(_inc_DIR ${CMAKE_REQUIRED_INCLUDES})
- SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}${_inc_DIR}\;")
- ENDFOREACH(_inc_DIR ${CMAKE_REQUIRED_INCLUDES})
- SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS} ")
-
+ SET(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
+ STRING(REGEX REPLACE ";" "\\\\;" CHECK_INCLUDE_FILES_INCLUDE_DIRS "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}")
+
SET(CHECK_INCLUDE_FILES_CONTENT "/* */\n")
SET(MACRO_CHECK_INCLUDE_FILES_FLAGS ${CMAKE_REQUIRED_FLAGS})
FOREACH(FILE ${INCLUDE})
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake
index 37c3cc84..9a4858c1 100644
--- a/modules/KDE4Macros.cmake
+++ b/modules/KDE4Macros.cmake
@@ -10,7 +10,7 @@
# KDE4_PLACEHOLDER
# KDE4_CREATE_FINAL_FILE
# KDE4_ADD_KPART
-# KDE4_ADD_KLM
+# KDE4_ADD_KDEINIT_EXECUTABLE
# KDE4_ADD_EXECUTABLE
@@ -32,14 +32,6 @@ MACRO(KDE4_ADD_FILE_DEPENDANCY file)
ENDMACRO(KDE4_ADD_FILE_DEPENDANCY)
-IF (UNIX)
- # dcopidl needs the redirection under unix
- SET (_KDE4_GT ">")
-ELSE (UNIX)
- # but not under windows
- SET (_KDE4_GT )
-ENDIF (UNIX)
-
#create the kidl and skeletion file for dcop stuff
#usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers})
MACRO(KDE4_ADD_DCOP_SKELS _sources)
@@ -57,7 +49,7 @@ MACRO(KDE4_ADD_DCOP_SKELS _sources)
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
COMMAND ${KDE4_DCOPIDL_EXECUTABLE}
- ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} ${_KDE4_GT} ${_kidl}
+ ARGS --srcdir ${KDE4_KALYPTUS_DIR} -o ${_kidl} ${_tmp_FILE}
DEPENDS ${_tmp_FILE}
)
ENDIF (NOT HAVE_${_basename}_KIDL_RULE)
@@ -79,6 +71,7 @@ MACRO(KDE4_ADD_DCOP_SKELS _sources)
ENDMACRO(KDE4_ADD_DCOP_SKELS)
+
MACRO(KDE4_ADD_DCOP_STUBS _sources)
FOREACH (_current_FILE ${ARGN})
@@ -87,16 +80,14 @@ MACRO(KDE4_ADD_DCOP_STUBS _sources)
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
SET(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp)
-# SET(_stub_H ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.h)
SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl)
-
IF (NOT HAVE_${_basename}_KIDL_RULE)
SET(HAVE_${_basename}_KIDL_RULE ON)
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
COMMAND ${KDE4_DCOPIDL_EXECUTABLE}
- ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} ${_KDE4_GT} ${_kidl}
+ ARGS --srcdir ${KDE4_KALYPTUS_DIR} -o ${_kidl} ${_tmp_FILE}
DEPENDS ${_tmp_FILE}
)
ENDIF (NOT HAVE_${_basename}_KIDL_RULE)
@@ -117,6 +108,7 @@ MACRO(KDE4_ADD_DCOP_STUBS _sources)
ENDMACRO(KDE4_ADD_DCOP_STUBS)
+
MACRO(KDE4_ADD_KCFG_FILES _sources)
FOREACH (_current_FILE ${ARGN})
@@ -192,6 +184,7 @@ MACRO(KDE4_ADD_UI_FILES _sources )
ENDFOREACH (_current_FILE)
ENDMACRO(KDE4_ADD_UI_FILES)
+
#create the implementation files from the ui files and add them to the list of sources
#usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files})
MACRO(KDE4_ADD_UI3_FILES _sources )
@@ -291,6 +284,7 @@ MACRO(KDE4_AUTOMOC)
ENDFOREACH (_current_FILE)
ENDMACRO(KDE4_AUTOMOC)
+
MACRO(KDE4_INSTALL_ICONS _theme _defaultpath )
ADD_CUSTOM_TARGET(install_icons )
SET_TARGET_PROPERTIES(install_icons PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake )
@@ -299,16 +293,15 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath )
FILE(GLOB _icons *.png)
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)$" "\\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}")
- IF( ${_size} STREQUAL ${_name} )
- MESSAGE(STATUS "icon: ${_current_ICON} can't be parse" )
- ELSE( ${_size} STREQUAL ${_name} )
- SET(_icon_GROUP "actions")
+ STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}")
+ # if the string doesn't match the pattern, the result is the full string, so all three have the same content
+ IF( NOT ${_size} STREQUAL ${_name} )
+ SET(_icon_GROUP "actions")
IF(${_group} STREQUAL "mime")
- SET(_icon_GROUP "mimetypes")
+ SET(_icon_GROUP "mimetypes")
ENDIF(${_group} STREQUAL "mime")
IF(${_group} STREQUAL "filesys")
@@ -331,8 +324,8 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath )
SET(_ICON_INSTALL_NAME ${CMAKE_INSTALL_PREFIX}/${_defaultpath}/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name})
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "MESSAGE(STATUS \"Installing ${_ICON_INSTALL_NAME}\") \n")
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${_ICON_INSTALL_NAME} COPYONLY) \n")
- ENDIF( ${_size} STREQUAL ${_name} )
- ENDFOREACH (_current_ICON)
+ ENDIF( NOT ${_size} STREQUAL ${_name} )
+ ENDFOREACH (_current_ICON)
FILE(GLOB _icons *.svgz)
FOREACH(_current_ICON ${_icons} )
STRING(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\1" _group "${_current_ICON}")
@@ -367,14 +360,17 @@ MACRO(KDE4_INSTALL_ICONS _theme _defaultpath )
ENDFOREACH (_current_ICON)
ENDMACRO(KDE4_INSTALL_ICONS _theme _defaultpath)
+
# for the case that something should be added to every CMakeLists.txt at the top
MACRO(KDE4_HEADER)
ENDMACRO(KDE4_HEADER)
+
# same as above, but at the end
MACRO(KDE4_FOOTER)
ENDMACRO(KDE4_FOOTER)
+
MACRO(KDE4_CREATE_LIBTOOL_FILE _target)
GET_TARGET_PROPERTY(_target_location ${_target} LOCATION)
@@ -448,7 +444,8 @@ MACRO(KDE4_ADD_PLUGIN _target_NAME _with_PREFIX)
ENDMACRO(KDE4_ADD_PLUGIN _target_NAME _with_PREFIX)
-MACRO(KDE4_ADD_KLM _target_NAME )
+
+MACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME )
CONFIGURE_FILE(${KDE4_MODULE_DIR}/kde4init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp)
@@ -470,7 +467,7 @@ MACRO(KDE4_ADD_KLM _target_NAME )
TARGET_LINK_LIBRARIES( ${_target_NAME} kdeinit_${_target_NAME} )
# ENDIF (WIN32)
-ENDMACRO(KDE4_ADD_KLM _target_NAME)
+ENDMACRO(KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME)
MACRO(KDE4_ADD_EXECUTABLE _target_NAME )
@@ -484,6 +481,7 @@ MACRO(KDE4_ADD_EXECUTABLE _target_NAME )
ENDMACRO(KDE4_ADD_EXECUTABLE _target_NAME)
+
MACRO(KDE4_ADD_LIBRARY _target_NAME _lib_TYPE)
#is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix, otherwise set the prefix empty
diff --git a/modules/MacroLibrary.cmake b/modules/MacroLibrary.cmake
new file mode 100644
index 00000000..25abc38d
--- /dev/null
+++ b/modules/MacroLibrary.cmake
@@ -0,0 +1,5 @@
+# - include MacroLibrary offers a collection of macros which extend the built-in cmake commands
+# OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
+
+INCLUDE (MacroOptionalFindPackage)
+
diff --git a/modules/OptionalFindPackage.cmake b/modules/MacroOptionalFindPackage.cmake
index 2642a993..4ad64a41 100644
--- a/modules/OptionalFindPackage.cmake
+++ b/modules/MacroOptionalFindPackage.cmake
@@ -1,5 +1,5 @@
-# - OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION()
-# OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
+# - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION()
+# MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
# This macro is a combination of OPTION() and FIND_PACKAGE(), it
# works like FIND_PACKAGE(), but additionally it automatically creates
# an option name WITH_<name>, which can be disabled via the cmake GUI.
@@ -7,10 +7,10 @@
# The standard <name>_FOUND variables can be used in the same way
# as when using the normal FIND_PACKAGE()
-MACRO(OPTIONAL_FIND_PACKAGE _name )
+MACRO(MACRO_OPTIONAL_FIND_PACKAGE _name )
OPTION(WITH_${_name} "Search for ${_name} package" ON)
IF (WITH_${_name})
FIND_PACKAGE(${_name} ${ARGN})
ENDIF (WITH_${_name})
-ENDMACRO(OPTIONAL_FIND_PACKAGE)
+ENDMACRO(MACRO_OPTIONAL_FIND_PACKAGE)
diff --git a/modules/kde4uic.cmake b/modules/kde4uic.cmake
index 42382aac..16bce3a8 100644
--- a/modules/kde4uic.cmake
+++ b/modules/kde4uic.cmake
@@ -37,11 +37,15 @@ ENDIF (KDE4_HEADER)
#replace tr218n("") with QString::null to avoid waring from KLocale
STRING(REGEX REPLACE "tr2i18n\\(\"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" )
STRING(REGEX REPLACE "tr2i18n\\(\"\", \"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" )
+#replace image15_data with img15_filename to make enable_final work
+STRING(REGEX REPLACE "image([0-9]+)_data" "img\\1_${KDE_UIC_BASENAME}" _uic_CONTENTS "${_uic_CONTENTS}")
+
+# workaround which removes the stderr messages from uic, will be removed as soon as
+# I switch to EXEC_PROCESS() in the calls above
STRING(REGEX REPLACE "\nuic3: [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" )
STRING(REGEX REPLACE "\n'[^\n]+' [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" )
+STRING(REGEX REPLACE "\nWarning: [^\n]+" "" _uic_CONTENTS "${_uic_CONTENTS}" )
-#replace image15_data with img15_filename to make enable_final work
-STRING(REGEX REPLACE "image([0-9]+)_data" "img\\1_${KDE_UIC_BASENAME}" _uic_CONTENTS "${_uic_CONTENTS}")
FILE(WRITE ${KDE_UIC_CPP_FILE} "#include <kdialog.h>\n#include <klocale.h>\n\n${_uic_CONTENTS}\n")