From a482487b9ff0cf0c47f9c0927c44019d52e2fdf8 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 1 Nov 2011 14:59:23 +0100 Subject: Install CMake config files from Qt. This includes a BSD licenced file Qt5CoreMacros.cmake which is adapted from Qt4Macros.cmake in the CMake source tree. Change-Id: I54326b808795535490a0489659b351a8da72cdbb Reviewed-by: Clinton Stimpson Reviewed-by: Oswald Buddenhagen --- mkspecs/cmake/Qt5BasicConfig.cmake.in | 62 ++++++++++++++++++++ mkspecs/cmake/Qt5ConfigVersion.cmake.in | 11 ++++ mkspecs/features/create_cmake.prf | 100 ++++++++++++++++++++++++++++++++ mkspecs/features/qt_module_config.prf | 2 + 4 files changed, 175 insertions(+) create mode 100644 mkspecs/cmake/Qt5BasicConfig.cmake.in create mode 100644 mkspecs/cmake/Qt5ConfigVersion.cmake.in create mode 100644 mkspecs/features/create_cmake.prf (limited to 'mkspecs') diff --git a/mkspecs/cmake/Qt5BasicConfig.cmake.in b/mkspecs/cmake/Qt5BasicConfig.cmake.in new file mode 100644 index 0000000000..2a491974d8 --- /dev/null +++ b/mkspecs/cmake/Qt5BasicConfig.cmake.in @@ -0,0 +1,62 @@ + +get_filename_component(_qt5_install_prefix ${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR} ABSOLUTE) + +set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MAJOR "$$eval(QT.$${MODULE}.MAJOR_VERSION)") +set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MINOR "$$eval(QT.$${MODULE}.MINOR_VERSION)") +set(Qt5$${CMAKE_MODULE_NAME}_VERSION_PATCH "$$eval(QT.$${MODULE}.PATCH_VERSION)") + +set(Qt5$${CMAKE_MODULE_NAME}_LIBRARY Qt5$${CMAKE_MODULE_NAME}) + +set(Qt5$${CMAKE_MODULE_NAME}_HEADER_DIR \"${_qt5_install_prefix}/$$CMAKE_INCLUDE_DIR\" ) + +set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"${Qt5$${CMAKE_MODULE_NAME}_HEADER_DIR}\" \"${_qt5_install_prefix}/$$CMAKE_INCLUDE_DIR/Qt$${CMAKE_MODULE_NAME}\") + +set(Qt5$${CMAKE_MODULE_NAME}_LIBRARY_DIR \"${_qt5_install_prefix}/$$CMAKE_LIB_DIR\") + +string(TOUPPER "$${CMAKE_MODULE_NAME}" _CMAKE_MODULE_NAME_UPPER) +set(Qt5$${CMAKE_MODULE_NAME}_DEFINITIONS -DQT_\${_CMAKE_MODULE_NAME_UPPER}_LIB) +set(Qt5$${CMAKE_MODULE_NAME}_COMPILE_DEFINITIONS QT_\${_CMAKE_MODULE_NAME_UPPER}_LIB) + +set(_Qt5_MODULE_DEPENDENCIES \"$${CMAKE_MODULE_DEPS}\") + +if (NOT \"$${CMAKE_MODULE_EXTRAS}\" STREQUAL \"\") + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\") +endif() + +if (NOT \"$${CMAKE_MODULE_MACROS}\" STREQUAL \"\") + include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") +endif() + +if (NOT _Qt5$${CMAKE_MODULE_NAME}_target) + set(_Qt5$${CMAKE_MODULE_NAME}_target 1) + add_library(Qt5$${CMAKE_MODULE_NAME} SHARED IMPORTED) + if (NOT \"$${CMAKE_BUILD_IS_FRAMEWORK}\" STREQUAL \"\") + set_property(TARGET Qt5$${CMAKE_MODULE_NAME} PROPERTY FRAMEWORK 1) + endif() +endif() + +if (NOT \"$${debug_type}\" STREQUAL \"\") + set_property(TARGET Qt5$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(Qt5$${CMAKE_MODULE_NAME} PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG \"$${CMAKE_QT5_MODULE_DEPS}\" + IMPORTED_LOCATION_DEBUG \"${_qt5_install_prefix}/$$CMAKE_LIB_DIR/$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" + ) + if (NOT \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" STREQUAL \"\") + set_target_properties(Qt5$${CMAKE_MODULE_NAME} PROPERTIES + IMPORTED_IMPLIB_DEBUG \"${_qt5_install_prefix}/$$CMAKE_LIB_DIR/$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" + ) + endif() +endif() + +if (NOT \"$${release_type}\" STREQUAL \"\") + set_property(TARGET Qt5$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(Qt5$${CMAKE_MODULE_NAME} PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE \"$${CMAKE_QT5_MODULE_DEPS}\" + IMPORTED_LOCATION_RELEASE \"${_qt5_install_prefix}/$$CMAKE_LIB_DIR/$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" + ) + if (NOT \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" STREQUAL \"\") + set_target_properties(Qt5$${CMAKE_MODULE_NAME} PROPERTIES + IMPORTED_IMPLIB_RELEASE \"${_qt5_install_prefix}/$$CMAKE_LIB_DIR/$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" + ) + endif() +endif() diff --git a/mkspecs/cmake/Qt5ConfigVersion.cmake.in b/mkspecs/cmake/Qt5ConfigVersion.cmake.in new file mode 100644 index 0000000000..66d4b85f60 --- /dev/null +++ b/mkspecs/cmake/Qt5ConfigVersion.cmake.in @@ -0,0 +1,11 @@ + +set(PACKAGE_VERSION $$eval(QT.$${MODULE}.VERSION)) + +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/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf new file mode 100644 index 0000000000..092a8eae32 --- /dev/null +++ b/mkspecs/features/create_cmake.prf @@ -0,0 +1,100 @@ + +defineReplace(cmakeModuleName) { + _module = $$1 + _name = $$eval(QT.$${_module}.name) + cmake_module_name = $$replace(_name, ^Qt, ) + return ($$cmake_module_name) +} + +defineReplace(cmakeModuleList) { + variable = $$1 + out = + for(v, variable) { + out += $$cmakeModuleName($$v) + } + return ($$join(out, ";")) +} + +CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE}) + +CMAKE_MODULE_DEPS = $$cmakeModuleList($$eval(QT.$${MODULE}.depends)) +CMAKE_PARTIAL_MODULE_DEPS = $$replace(CMAKE_MODULE_DEPS, ";", ";Qt5") +!isEmpty(CMAKE_PARTIAL_MODULE_DEPS):CMAKE_QT5_MODULE_DEPS = "Qt5$${CMAKE_PARTIAL_MODULE_DEPS}" + +CMAKE_INCLUDE_DIR = include +CMAKE_LIBS = $$eval(QT.$${MODULE}.libs) +CMAKE_LIB_DIR = $$replace(CMAKE_LIBS, ^.*/, ) +CMAKE_BINS = $$eval(QT.$${MODULE}.bins) +CMAKE_BIN_DIR = $$replace(CMAKE_BINS, ^.*/, ) + +CMAKE_RELATIVE_INSTALL_DIR = "../../../" + +macx { + CONFIG(qt_framework, qt_framework|qt_no_framework) { + CMAKE_LIB_FILE_LOCATION_DEBUG = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_LIB_FILE_LOCATION_RELEASE = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.framework/Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX} + CMAKE_BUILD_IS_FRAMEWORK = "true" + } else { + CMAKE_LIB_FILE_LOCATION_DEBUG = libQt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.$$eval(QT.$${MODULE}.VERSION).dylib + CMAKE_LIB_FILE_LOCATION_RELEASE = libQt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.$$eval(QT.$${MODULE}.VERSION).dylib + } +} else:win32 { + CMAKE_LIB_FILE_LOCATION_DEBUG = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}d$$eval(QT.$${MODULE}.MAJOR_VERSION).dll + CMAKE_LIB_FILE_LOCATION_RELEASE = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}$$eval(QT.$${MODULE}.MAJOR_VERSION).dll + CMAKE_IMPLIB_FILE_LOCATION_DEBUG = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}d$$eval(QT.$${MODULE}.MAJOR_VERSION).lib + CMAKE_IMPLIB_FILE_LOCATION_RELEASE = Qt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}$$eval(QT.$${MODULE}.MAJOR_VERSION).lib +} else { + CMAKE_LIB_FILE_LOCATION_DEBUG = libQt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.so.$$eval(QT.$${MODULE}.VERSION) + CMAKE_LIB_FILE_LOCATION_RELEASE = libQt$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}.so.$$eval(QT.$${MODULE}.VERSION) +} + +debug_type = +release_type = + +debug_and_release|debug:debug_type = debug +debug_and_release|release:release_type = release + +INSTALLS += cmake_qt5_module_files + +cmake_config_file.input = $$PWD/../cmake/Qt5BasicConfig.cmake.in +cmake_config_file.output = $$eval(QT.$${MODULE}.libs)/cmake/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}Config.cmake + +cmake_config_version_file.input = $$PWD/../cmake/Qt5ConfigVersion.cmake.in +cmake_config_version_file.output = $$eval(QT.$${MODULE}.libs)/cmake/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigVersion.cmake + +QMAKE_SUBSTITUTES += \ + cmake_config_file \ + cmake_config_version_file + +cmake_qt5_module_files.files = \ + $$cmake_config_file.output \ + $$cmake_config_version_file.output + +cmake_extras_file.input = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake.in +exists($$cmake_extras_file.input) { + + CMAKE_MODULE_EXTRAS = "true" + cmake_extras_file.output = $$eval(QT.$${MODULE}.libs)/cmake/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake + + QMAKE_SUBSTITUTES += cmake_extras_file + + cmake_qt5_module_files.files += \ + $$cmake_extras_file.output +} + +cmake_macros_file = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}Macros.cmake +exists($$cmake_macros_file) { + CMAKE_MODULE_MACROS = "true" + cmake_qt5_module_files.files += $$cmake_macros_file + + CMAKE_MACROS_FILE_SOURCE = $$_PRO_FILE_PWD_/Qt5$${CMAKE_MODULE_NAME}Macros.cmake + CMAKE_MACROS_FILE_DESTINATION = $$eval(QT.$${MODULE}.libs)/cmake/Qt5$${CMAKE_MODULE_NAME} + + CMAKE_MACROS_FILE_SOURCE ~= s,[/\\\\],$$QMAKE_DIR_SEP, + CMAKE_MACROS_FILE_DESTINATION ~= s,[/\\\\],$$QMAKE_DIR_SEP, + + system($$QMAKE_MKDIR \"$$CMAKE_MACROS_FILE_DESTINATION\") + system($$QMAKE_COPY \"$$CMAKE_MACROS_FILE_SOURCE\" \"$$CMAKE_MACROS_FILE_DESTINATION\") +} + +cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} diff --git a/mkspecs/features/qt_module_config.prf b/mkspecs/features/qt_module_config.prf index d769481a07..3d861279b4 100644 --- a/mkspecs/features/qt_module_config.prf +++ b/mkspecs/features/qt_module_config.prf @@ -56,6 +56,8 @@ CONFIG -= fix_output_dirs win32|mac:!macx-xcode:CONFIG += debug_and_release linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF +CONFIG += create_cmake + contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions contains(QT_CONFIG, largefile):CONFIG += largefile -- cgit v1.2.3