diff options
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/default_pre.prf | 23 | ||||
-rw-r--r-- | mkspecs/features/qpa/basicunixfontdatabase.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/qt_config.prf | 15 | ||||
-rw-r--r-- | mkspecs/features/qt_installs.prf | 44 | ||||
-rw-r--r-- | mkspecs/features/qt_module.prf | 13 | ||||
-rw-r--r-- | mkspecs/features/qt_module_config.prf | 234 | ||||
-rw-r--r-- | mkspecs/features/qt_targets.prf | 4 |
7 files changed, 315 insertions, 20 deletions
diff --git a/mkspecs/features/default_pre.prf b/mkspecs/features/default_pre.prf index d451d29f7c..c91d543d6c 100644 --- a/mkspecs/features/default_pre.prf +++ b/mkspecs/features/default_pre.prf @@ -12,24 +12,23 @@ exists($$_PRO_FILE_PWD_/sync.profile) { isEmpty(QTDIR) { QTDIR = $$(QTDIR) isEmpty(QTDIR):QTDIR = $$QT_BUILD_TREE - isEmpty(QTDIR):QTDIR = $$dirname(_QMAKE_CACHE_) - isEmpty(QTDIR) { - QMAKE_BASED_QTDIR = $$dirname(QMAKE_QMAKE) - QMAKE_BASED_QTDIR = $$dirname(QMAKE_BASED_QTDIR) - exists($$QMAKE_BASED_QTDIR/mkspecs/qconfig.pri): QTDIR = $$QMAKE_BASED_QTDIR - unset(QMAKE_BASED_QTDIR) - } } - isEmpty(QTDIR):QTFWD="-no-module-fwd" - else:QTFWD="-qtdir $$QTDIR" + QTFWD = + isEmpty(QTDIR) { + QTFWD += -module-fwd $$OUT_PWD/module-paths/modules -cache-module-fwd + } else { + QTFWD += -qtdir $$QTDIR -module-fwd $$QTDIR/mkspecs/modules -developer-build + } - message("Running syncqt for $$PRO_BASENAME in $$OUT_PWD") qtPrepareTool(QMAKE_SYNCQT, syncqt) - system("$$QMAKE_SYNCQT $$QTFWD -outdir $$OUT_PWD $$_PRO_FILE_PWD_") { + + MSG = $$quote($$QMAKE_SYNCQT $$QTFWD -outdir $$OUT_PWD $$_PRO_FILE_PWD_) + !silent:message($$MSG) + system($$MSG) { # success! Nothing to do } else { - error("Failed to run: $$QMAKE_SYNCQT $$QTFWD -outdir $$OUT_PWD $$_PRO_FILE_PWD_") + error("Failed to run: $$MSG") } unset(QTFWD) unset(PRO_BASENAME) diff --git a/mkspecs/features/qpa/basicunixfontdatabase.prf b/mkspecs/features/qpa/basicunixfontdatabase.prf index 261eadb5d0..65490e03a8 100644 --- a/mkspecs/features/qpa/basicunixfontdatabase.prf +++ b/mkspecs/features/qpa/basicunixfontdatabase.prf @@ -1,3 +1,5 @@ +DEFINES += QT_COMPILES_IN_HARFBUZZ + contains(QT_CONFIG, system-freetype) { LIBS += -lfreetype } diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf index 071bb6c237..3d0028c3a3 100644 --- a/mkspecs/features/qt_config.prf +++ b/mkspecs/features/qt_config.prf @@ -1,20 +1,25 @@ # This file is loaded by the mkspecs, before .qmake.cache has been loaded. # Consequently, we have to do some stunts to get values out of the cache. -exists($$_QMAKE_CACHE_):QMAKE_QT_CONFIG = $$fromfile($$_QMAKE_CACHE_, QMAKE_QT_CONFIG) +exists($$_QMAKE_CACHE_) { + QMAKE_QT_CONFIG = $$fromfile($$_QMAKE_CACHE_, QMAKE_QT_CONFIG) + QMAKE_EXTRA_MODULE_FORWARDS = $$fromfile($$_QMAKE_CACHE_, QMAKE_EXTRA_MODULE_FORWARDS) +} isEmpty(QMAKE_QT_CONFIG)|!exists($$QMAKE_QT_CONFIG) { !isEmpty(QT_BUILD_TREE):QMAKE_QT_CONFIG = $$QT_BUILD_TREE/mkspecs/qconfig.pri else:exists($$_QMAKE_CACHE_):infile($$_QMAKE_CACHE_, QT_BUILD_TREE):QMAKE_QT_CONFIG = $$fromfile($$_QMAKE_CACHE_, QT_BUILD_TREE)/mkspecs/qconfig.pri - else:exists($$[QT_INSTALL_DATA]/mkspecs/qconfig.pri):QMAKE_QT_CONFIG = $$[QT_INSTALL_DATA]/mkspecs/qconfig.pri + isEmpty(QMAKE_QT_CONFIG):exists($$[QT_INSTALL_DATA]/mkspecs/qconfig.pri):QMAKE_QT_CONFIG = $$[QT_INSTALL_DATA]/mkspecs/qconfig.pri } !exists($$QMAKE_QT_CONFIG)|!include($$QMAKE_QT_CONFIG, "", true) { debug(1, "Cannot load qconfig.pri!") } else { debug(1, "Loaded .qconfig.pri from ($$QMAKE_QT_CONFIG)") - for(dir, $$list($$unique($$list($$dirname(QMAKE_QT_CONFIG) \ - $$replace($$list($$split($$list($$(QMAKEPATH)), $$DIRLIST_SEPARATOR)), $, /mkspecs))))) { + for(dir, $$list($$unique($$list($$replace($$list($$dirname(QMAKE_QT_CONFIG) \ + $$replace($$list($$split($$list($$(QMAKEPATH)), $$DIRLIST_SEPARATOR)), $, /mkspecs)), \ + $, /modules) \ + $$QMAKE_EXTRA_MODULE_FORWARDS)))) { debug(1, "Loading modules from $${dir}") - for(mod, $$list($$files($$dir/modules/qt_*.pri))) { + for(mod, $$list($$files($$dir/qt_*.pri))) { # For installed Qt these paths will be common for all modules # For development these will vary per module, and syncqt will override the value in the # qt_<module>.pri forwarding file diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf new file mode 100644 index 0000000000..5a9ab4ba0a --- /dev/null +++ b/mkspecs/features/qt_installs.prf @@ -0,0 +1,44 @@ +#always install the library +win32 { + dlltarget.path=$$[QT_INSTALL_BINS] + INSTALLS += dlltarget +} +target.path=$$[QT_INSTALL_LIBS] +INSTALLS += target + +#headers +qt_install_headers { + INSTALL_HEADERS = $$SYNCQT.HEADER_FILES + equals(TARGET, QtCore) { + #headers created by configure + INSTALL_HEADERS *= $$QT_BUILD_TREE/src/corelib/global/qconfig.h \ + $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH/arch + } + + equals(TARGET, phonon) { + class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + } else { + flat_headers.files = $$INSTALL_HEADERS + flat_headers.path = $$[QT_INSTALL_HEADERS]/Qt + INSTALLS += flat_headers + + class_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + } + class_headers.files = $$SYNCQT.HEADER_CLASSES + INSTALLS += class_headers + + targ_headers.files = $$INSTALL_HEADERS + targ_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + INSTALLS += targ_headers + + private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES + private_headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET/$$eval(QT.$${MODULE}.VERSION)/$$TARGET/private + INSTALLS += private_headers +} + +embedded|qpa: equals(TARGET, QtGui) { + # install fonts for embedded + INSTALLS += fonts + fonts.path = $$[QT_INSTALL_LIBS]/fonts + fonts.files = $$QT_SOURCE_TREE/lib/fonts/* +} diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index c49a41581f..aee95295e8 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -11,11 +11,18 @@ isEmpty(QMAKE_QT_MODULE)|!exists($$QMAKE_QT_MODULE) { !exists($$QMAKE_QT_MODULE):exists($$[QT_INSTALL_DATA]/mkspecs/qmodule.pri):QMAKE_QT_MODULE = $$[QT_INSTALL_DATA]/mkspecs/qmodule.pri } -!exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) { - error("Cannot load qmodule.pri!") +!contains(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) { + !exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) { + error("Cannot load qmodule.pri!") + } else { + QMAKE_QT_MODULE_PRI_LOADED = 1 + debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)") + } } else { - debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)") + QMAKE_QT_MODULE_PRI_LOADED = 1 # covers 'preloading' from .qmake.cache + debug(1, "Not loading qmodule.pri twice") } + mac { !isEmpty(QMAKE_RPATHDIR){ CONFIG += absolute_library_soname diff --git a/mkspecs/features/qt_module_config.prf b/mkspecs/features/qt_module_config.prf new file mode 100644 index 0000000000..8f225fe6ed --- /dev/null +++ b/mkspecs/features/qt_module_config.prf @@ -0,0 +1,234 @@ +!no_qt_module_warning:if(!contains(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\\\.pri)|isEmpty(QMAKE_QT_MODULE_PRI_LOADED)) { + QMAKE_ACTUAL_PRO_FILE = $$basename(_PRO_FILE_) + isEmpty(QMAKE_ACTUAL_PRO_FILE): QMAKE_ACTUAL_PRO_FILE=.pro + warning("You should probably load(qt_module) first in $$QMAKE_ACTUAL_PRO_FILE for $$TARGET, as it also load()s qt_module_config.") + message("Not doing so may lead to qt_module_config.prf overriding compiler/linker options in your .pro file.") + message("Ignore this warning with CONFIG+=no_qt_module_warning if you know what you are doing.") + unset(QMAKE_ACTUAL_PRO_FILE) +} +load(qt_module) # loads qmodule.pri if hasn't been loaded already + +isEmpty(MODULE):MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0) +isEmpty(TARGET):error("You must set TARGET before include()'ing $${_FILE_}") + +MODULE_INCLUDES = $$eval(QT.$${MODULE}.includes) +MODULE_PRIVATE_INCLUDES = $$eval(QT.$${MODULE}.private_includes) +INCLUDEPATH *= $$MODULE_PRIVATE_INCLUDES +INCLUDEPATH *= $$MODULE_PRIVATE_INCLUDES/$$TARGET +INCLUDEPATH *= $$MODULE_INCLUDES $$MODULE_INCLUDES/.. #just for today to have some compat +!isEmpty(RCC_DIR): INCLUDEPATH += $$RCC_DIR +isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700 +TEMPLATE = lib +isEmpty(QT_MAJOR_VERSION) { + VERSION=5.0.0 +} else { + VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} +} + +#load up the headers info +CONFIG += qt_install_headers +#headers.pri is loaded from the last include path +LAST_MODULE_INCLUDE=$$MODULE_INCLUDES +for(include_path, MODULE_INCLUDES):LAST_MODULE_INCLUDE=$${include_path} +HEADERS_PRI = $$LAST_MODULE_INCLUDE/headers.pri +include($$HEADERS_PRI, "", true)|clear(HEADERS_PRI) + +#version overriding +win32 { + #because libnetwork.pro could be qmake'd (qmade?) before libqcore.pro we + #need to override the version of libq* in all other libq*'s just to be + #sure the same version is used + VERSIONS_LIST = $$split(VERSION, ".") + QT_LIBS_OVERRIDE = $$member(VERSIONS_LIST, 0) + for(lib, $$list(qtcore qtgui qtnetwork qtxml qtopengl qtsql qt3support)) { + eval(QMAKE_$${upper($$lib)}_VERSION_OVERRIDE = $$QT_LIBS_OVERRIDE) + eval(QMAKE_$${upper($$lib)}D_VERSION_OVERRIDE = $$QT_LIBS_OVERRIDE) + } +} + +#other +DESTDIR = $$eval(QT.$${MODULE}.libs) +win32:!wince*:DLLDESTDIR = $$[QT_INSTALL_PREFIX]/bin + +CONFIG += qt warn_on depend_includepath +CONFIG += qmake_cache target_qt +CONFIG -= fix_output_dirs +win32|mac:!macx-xcode:CONFIG += debug_and_release +linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF + +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols +unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions +contains(QT_CONFIG, largefile):CONFIG += largefile + +#mac frameworks +mac:!static:contains(QT_CONFIG, qt_framework) { + #QMAKE_FRAMEWORK_VERSION = 4.0 + CONFIG += lib_bundle qt_no_framework_direct_includes qt_framework + CONFIG(debug, debug|release) { + !build_pass:CONFIG += build_all + } else { #release + !debug_and_release|build_pass { + CONFIG -= qt_install_headers #no need to install these as well + FRAMEWORK_HEADERS.version = Versions + FRAMEWORK_HEADERS.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES + FRAMEWORK_HEADERS.path = Headers + equals(TARGET, QtCore) { + #headers generated by configure + !contains(FRAMEWORK_HEADERS.files, .*/qconfig.h) { + FRAMEWORK_HEADERS.files *= $$QT_BUILD_TREE/src/corelib/global/qconfig.h + } + } + } + QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS + } +} + +mac { + CONFIG += explicitlib + macx-g++ { + QMAKE_CFLAGS += -fconstant-cfstrings + QMAKE_CXXFLAGS += -fconstant-cfstrings + } +} + +win32:!shared:CONFIG += static + +win32-borland { + mng:QMAKE_CFLAGS_WARN_ON += -w-par + mng:QMAKE_CXXFLAGS_WARN_ON += -w-par + # Keep the size of the .tds file for the Qt library smaller than + # 34 Mbytes to avoid linking problems + QMAKE_CFLAGS_DEBUG += -vi -y- + QMAKE_CXXFLAGS_DEBUG += -vi -y- +} + +win32 { + INCLUDEPATH += tmp + !static: DEFINES+=QT_MAKEDLL +} +symbian { + shared { + DEFINES+=QT_MAKEDLL + TARGET.CAPABILITY = All -Tcb + + # When building without autotests, DEF files are used by default. + # This is to maintain binary compatibility with previous releases. + # To explicitly disable DEF files usage, eg. when lots of code churn is + # going on, and functions may be added and removed before shipping, + # configure with -no-usedeffiles + # WARNING - disabling DEF files *will* break BC with previous released versions + # of Qt, and the only compatibility will be between this build of Qt and anything + # built in this exact environment. *Never* use this when building a version + # for release. + contains(CONFIG, def_files) { + DEF_FILE=../s60installs + } + } + load(armcc_warnings) + + # workaround for the fact that some of our required includes in Symbian^3 + # now depend upon files in epoc32/include/platform + INCLUDEPATH += $$OS_LAYER_SYSTEMINCLUDE +} +win32-borland:INCLUDEPATH += kernel + +aix-g++* { + QMAKE_CFLAGS += -mminimal-toc + QMAKE_CXXFLAGS += -mminimal-toc +} + +embedded { + EMBEDDED_H = $$EMBEDDED_CPP +} + +DEPENDPATH += ;$$NETWORK_H;$$KERNEL_H;$$WIDGETS_H;$$SQL_H;$$TABLE_H;$$DIALOGS_H; +DEPENDPATH += $$ICONVIEW_H;$$OPENGL_H;$$THREAD_H;$$TOOLS_H;$$CODECS_H; +DEPENDPATH += $$WORKSPACE_H;$$XML_H;$$STYLES_H;$$COMPAT_H +embedded:DEPENDPATH += ;$$EMBEDDED_H + +!static:PRL_EXPORT_DEFINES += QT_SHARED + +#install directives +load(qt_installs) + +unix:!symbian { + CONFIG += create_libtool create_pc explicitlib + QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS] + QMAKE_PRL_LIBDIR = $$[QT_INSTALL_LIBS] + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS] + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS]/$$TARGET + QMAKE_PKGCONFIG_CFLAGS = -I$$[QT_INSTALL_HEADERS] + QMAKE_PKGCONFIG_DESTDIR = pkgconfig + include_replace.match = $$QMAKE_INCDIR_QT + include_replace.replace = $$[QT_INSTALL_HEADERS] + lib_replace.match = $$QMAKE_LIBDIR_QT + lib_replace.replace = $$[QT_INSTALL_LIBS] + prefix_replace.match = $$QT_BUILD_TREE + prefix_replace.replace = $$[QT_INSTALL_PREFIX] + QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace + QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace + QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace prefix_replace +} + +win32-g++* { + CONFIG += create_pc + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS] + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS]/$$TARGET + QMAKE_PKGCONFIG_CFLAGS = -I$$[QT_INSTALL_HEADERS] + QMAKE_PKGCONFIG_DESTDIR = pkgconfig +} + +contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE +DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS +contains(QT_CONFIG, gui-qt3support):DEFINES *= QT3_SUPPORT +DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code +DEFINES *= QT_USE_QSTRINGBUILDER + +TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end + +qtPrepareTool(QMAKE_LUPDATE, lupdate) +qtPrepareTool(QMAKE_LRELEASE, lrelease) + +moc_dir.name = moc_location +moc_dir.variable = QMAKE_MOC + +uic_dir.name = uic_location +uic_dir.variable = QMAKE_UIC + +rcc_dir.name = rcc_location +rcc_dir.variable = QMAKE_RCC + +lupdate_dir.name = lupdate_location +lupdate_dir.variable = QMAKE_LUPDATE + +lrelease_dir.name = lrelease_location +lrelease_dir.variable = QMAKE_LRELEASE + +QMAKE_PKGCONFIG_VARIABLES += moc_dir uic_dir rcc_dir lupdate_dir lrelease_dir + +load(qt_targets) + +win32:DEFINES+=_USE_MATH_DEFINES + +symbian { + # Make partial upgrade SIS file for all dll's except webkit and s60main + !contains(TARGET.UID3, 0x200267C2):!contains(TARGET.UID3, 0xE00267C2):!contains(TARGET.UID3, 0x2001E61F):!contains(TARGET.UID3, 0xE001E61F) { + # Partial upgrade SIS file + vendorinfo = \ + "; Localised Vendor name" \ + "%{\"Nokia\"}" \ + " " \ + "; Unique Vendor name" \ + ":\"Nokia, Qt\"" \ + " " + isEmpty(QT_LIBINFIX): PARTIAL_UPGRADE_UID = 0x2001E61C + else: PARTIAL_UPGRADE_UID = 0xE001E61C + + pu_header = "; Partial upgrade package for testing $${TARGET} changes without reinstalling everything" \ + "$${LITERAL_HASH}{\"$${TARGET}\"}, ($$PARTIAL_UPGRADE_UID), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU" + partial_upgrade.pkg_prerules = pu_header vendorinfo + partial_upgrade.files = $$QMAKE_LIBDIR_QT/$${TARGET}.dll + partial_upgrade.path = c:/sys/bin + DEPLOYMENT += partial_upgrade + } +} diff --git a/mkspecs/features/qt_targets.prf b/mkspecs/features/qt_targets.prf new file mode 100644 index 0000000000..af1a32bb02 --- /dev/null +++ b/mkspecs/features/qt_targets.prf @@ -0,0 +1,4 @@ +QMAKE_TARGET_COMPANY = Nokia Corporation and/or its subsidiary(-ies) +QMAKE_TARGET_PRODUCT = Qt4 +QMAKE_TARGET_DESCRIPTION = C++ application development framework. +QMAKE_TARGET_COPYRIGHT = Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). |