diff options
-rw-r--r-- | modules/ECMConfig.cmake.in | 18 | ||||
-rw-r--r-- | modules/ECMConfigVersion.cmake.in | 11 | ||||
-rw-r--r-- | modules/ECMQtFramework.cmake | 118 | ||||
-rw-r--r-- | modules/ECMQtUseFile.cmake.in | 4 | ||||
-rw-r--r-- | modules/ECMVersion.cmake | 8 |
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() |