aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2011-08-27 10:18:14 +0200
committerStephen Kelly <steveire@gmail.com>2011-08-27 10:18:14 +0200
commit999be88c8a618e85d9f715a941a3a7429ccce72d (patch)
tree3a6ddab63efef93d8aced4675dbef98c1cf4e663
parentdf20f75b02a2bc3c4138a966ccefef4b004f8262 (diff)
downloadextra-cmake-modules-999be88c8a618e85d9f715a941a3a7429ccce72d.tar.gz
extra-cmake-modules-999be88c8a618e85d9f715a941a3a7429ccce72d.tar.bz2
Add some files for Qt based frameworks to use.
-rw-r--r--modules/ECMConfig.cmake.in18
-rw-r--r--modules/ECMConfigVersion.cmake.in11
-rw-r--r--modules/ECMQtFramework.cmake118
-rw-r--r--modules/ECMQtUseFile.cmake.in4
-rw-r--r--modules/ECMVersion.cmake8
5 files changed, 159 insertions, 0 deletions
diff --git a/modules/ECMConfig.cmake.in b/modules/ECMConfig.cmake.in
new file mode 100644
index 00000000..8b001e1f
--- /dev/null
+++ b/modules/ECMConfig.cmake.in
@@ -0,0 +1,18 @@
+# Any changes in this file will be overwritten by CMake.
+
+get_filename_component(myDir ${CMAKE_CURRENT_LIST_FILE} PATH) # get the directory where I myself am
+get_filename_component(rootDir ${myDir}/@relInstallDir@ ABSOLUTE) # get the chosen install prefix
+
+set(@PROJECT_NAME@_VERSION_MAJOR "@ECM_VERSION_MAJOR@")
+set(@PROJECT_NAME@_VERSION_MINOR "@ECM_VERSION_MINOR@")
+set(@PROJECT_NAME@_VERSION_PATCH "@ECM_VERSION_PATCH@")
+
+set(@PROJECT_NAME@_INSTALL_PREFIX "${rootDir}")
+set(@PROJECT_NAME@_INCLUDE_DIR "${rootDir}/@INCLUDE_INSTALL_DIR@")
+set(@PROJECT_NAME@_LIBRARY_DIR "${rootDir}/@LIB_INSTALL_DIR@")
+
+set(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@)
+
+set(@PROJECT_NAME@_USE_FILE "${myDir}/@PROJECT_NAME@Use.cmake")
+
+include(${myDir}/@PROJECT_NAME@Targets.cmake)
diff --git a/modules/ECMConfigVersion.cmake.in b/modules/ECMConfigVersion.cmake.in
new file mode 100644
index 00000000..aeed4dc0
--- /dev/null
+++ b/modules/ECMConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+
+set(PACKAGE_VERSION @ECM_VERSION_MAJOR@.@ECM_VERSION_MINOR@.@ECM_VERSION_PATCH@)
+
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if("${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif("${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
+endif("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
diff --git a/modules/ECMQtFramework.cmake b/modules/ECMQtFramework.cmake
new file mode 100644
index 00000000..2763261a
--- /dev/null
+++ b/modules/ECMQtFramework.cmake
@@ -0,0 +1,118 @@
+
+# We need to make sure this file is included before Qt found.
+# Otherwise QT_USE_IMPORTED_TARGETS would have no effect.
+# ### Temporarily disabled until KDE Frameworks includes this file before finding Qt.
+# if (QT4_FOUND)
+# message(SEND_ERROR "This file must be included before finding the Qt package.")
+# endif()
+
+cmake_policy(SET CMP0017 NEW)
+
+include(FeatureSummary)
+include(GenerateExportHeader)
+
+add_compiler_export_flags()
+
+# create coverage build type
+set(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} Coverage )
+if (${CMAKE_VERSION} VERSION_GREATER 2.8.2)
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+ "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage")
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX)
+ set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-check-new -fno-common -pedantic-errors")
+
+ if(NOT APPLE)
+ set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined ${CMAKE_SHARED_LINKER_FLAGS}")
+ set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined ${CMAKE_MODULE_LINKER_FLAGS}")
+ endif()
+endif()
+
+# Tell FindQt4.cmake to point the QT_QTFOO_LIBRARY targets at the imported targets
+# for the Qt libraries, so we get full handling of release and debug versions of the
+# Qt libs and are flexible regarding the install location of Qt under Windows
+set(QT_USE_IMPORTED_TARGETS TRUE)
+
+add_definitions(-DQT_NO_CAST_TO_ASCII)
+add_definitions(-DQT_NO_CAST_FROM_ASCII)
+add_definitions(-DQT_STRICT_ITERATORS)
+add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+add_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
+add_definitions(-DQT_NO_KEYWORDS)
+add_definitions(-DQT_USE_FAST_CONCATENATION)
+add_definitions(-DQT_USE_FAST_OPERATOR_PLUS)
+
+# Always include the source and build directories in the include path
+# to save doing so manually in every subdirectory.
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
+
+set(CMAKE_AUTOMOC ON)
+
+set(LIB_SUFFIX "" CACHE STRING "Define suffix of library directory name (eg. '64')")
+
+set(LIB_INSTALL_DIR lib${LIB_SUFFIX} )
+set(BIN_INSTALL_DIR bin )
+set(INCLUDE_INSTALL_DIR include )
+set(DATA_INSTALL_DIR share/apps )
+
+set(LIBRARY_TYPE SHARED)
+
+set(ECM_TARGET_DEFAULT_ARGS
+ EXPORT ${PROJECT_NAME}LibraryTargets
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT ${PROJECT_NAME}
+ LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${PROJECT_NAME}
+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${PROJECT_NAME}
+)
+
+# set up RPATH/install_name_dir
+set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR})
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+set(CMAKECONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}" )
+
+file(RELATIVE_PATH relInstallDir ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX} )
+
+configure_file(
+ "${EXTRA_CMAKE_MODULES_MODULE_PATH}/ECMConfig.cmake.in"
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ @ONLY
+)
+
+configure_file(
+ "${EXTRA_CMAKE_MODULES_MODULE_PATH}/ECMConfigVersion.cmake.in"
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ @ONLY
+)
+
+configure_file(
+ "${EXTRA_CMAKE_MODULES_MODULE_PATH}/ECMQtUseFile.cmake.in"
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Use.cmake"
+ @ONLY
+)
+
+install(FILES
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+)
+
+install(EXPORT ${PROJECT_NAME}LibraryTargets
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ FILE ${PROJECT_NAME}Targets.cmake
+ COMPONENT Devel
+)
+
+install(FILES
+ "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Use.cmake"
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+)
diff --git a/modules/ECMQtUseFile.cmake.in b/modules/ECMQtUseFile.cmake.in
new file mode 100644
index 00000000..39d0f51b
--- /dev/null
+++ b/modules/ECMQtUseFile.cmake.in
@@ -0,0 +1,4 @@
+find_package(Qt4 REQUIRED)
+include(${QT_USE_FILE})
+
+include_directories(${@PROJECT_NAME@_INCLUDE_DIR})
diff --git a/modules/ECMVersion.cmake b/modules/ECMVersion.cmake
new file mode 100644
index 00000000..4ae3e50d
--- /dev/null
+++ b/modules/ECMVersion.cmake
@@ -0,0 +1,8 @@
+
+macro(ecm_version _major _minor _patch)
+ set(ECM_VERSION_MAJOR ${_major})
+ set(ECM_VERSION_MINOR ${_minor})
+ set(ECM_VERSION_PATCH ${_patch})
+ set(ECM_SOVERSION ${_major})
+ set(ECM_VERSION_STRING "${ECM_VERSION_MAJOR}.${ECM_VERSION_MINOR}.${ECM_VERSION_PATCH}")
+endmacro()