diff options
Diffstat (limited to 'mkspecs/features')
25 files changed, 861 insertions, 30 deletions
diff --git a/mkspecs/features/assistant.prf b/mkspecs/features/assistant.prf deleted file mode 100644 index 25e5d4dcc..000000000 --- a/mkspecs/features/assistant.prf +++ /dev/null @@ -1,9 +0,0 @@ - -INCLUDEPATH = $$QMAKE_INCDIR_QT/QtAssistant $$INCLUDEPATH - -mac:!static:contains(QT_CONFIG, qt_framework) { - qtAddLibrary(QtAssistant) -} else { - qtAddLibrary(QtAssistantClient) -} -QT += network diff --git a/mkspecs/features/debug_and_release.prf b/mkspecs/features/debug_and_release.prf index 8b8932184..ef33789ca 100644 --- a/mkspecs/features/debug_and_release.prf +++ b/mkspecs/features/debug_and_release.prf @@ -1 +1 @@ -!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release) +!macx-xcode:!symbian:addExclusiveBuilds(debug, Debug, release, Release) diff --git a/mkspecs/features/designer.prf b/mkspecs/features/designer.prf index 61a30cfd3..fa40caab3 100644 --- a/mkspecs/features/designer.prf +++ b/mkspecs/features/designer.prf @@ -1,4 +1,5 @@ -QT += xml script +QT += xml +contains(QT_CONFIG, script): QT += script qt:load(qt) plugin:DEFINES += QDESIGNER_EXPORT_WIDGETS diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf index 22002c385..00f70d3a6 100644 --- a/mkspecs/features/egl.prf +++ b/mkspecs/features/egl.prf @@ -1,3 +1,29 @@ -!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL -!isEmpty(QMAKE_LIBDIR_EGL): LIBS += -L$$QMAKE_LIBDIR_EGL -!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL +# On UNIX, we can use config tests to figure out if egl.h is in +# EGL/egl.h or GLES/egl.h. Sadly, there are no config tests on WinCE +# so we have to assume that for GLES 1.1 (CL), the EGL header is in +# GLES/egl.h. We also assume there is no separate libEGL.lib library, +# so we use the GL library instead. + +wince*:contains(QT_CONFIG, opengles1) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1 + LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1 + for(p, QMAKE_LIBDIR_OPENGL_ES1) { + exists($$p):LIBS_PRIVATE += -L$$p + } + DEFINES += QT_GLES_EGL +} else:wince*:contains(QT_CONFIG, opengles1cl) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1CL + LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1CL + LIBS += $$QMAKE_LFLAGS_EGL + for(p, QMAKE_LIBDIR_OPENGL_ES1CL) { + exists($$p):LIBS_PRIVATE += -L$$p + } + DEFINES += QT_GLES_EGL +} else { + INCLUDEPATH += $$QMAKE_INCDIR_EGL + LIBS_PRIVATE += $$QMAKE_LIBS_EGL + LIBS += $$QMAKE_LFLAGS_EGL + for(p, QMAKE_LIBDIR_EGL) { + exists($$p):LIBS_PRIVATE += -L$$p + } +} diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf index c5af2982a..42ce1bc17 100644 --- a/mkspecs/features/moc.prf +++ b/mkspecs/features/moc.prf @@ -1,7 +1,7 @@ #global defaults isEmpty(QMAKE_MOC) { - win32:QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe + contains(QMAKE_HOST.os,Windows):QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe else:QMAKE_MOC = $$[QT_INSTALL_BINS]/moc } isEmpty(MOC_DIR):MOC_DIR = . @@ -85,7 +85,7 @@ INCREDIBUILD_XGE += moc_source #make sure we can include these files moc_dir_short = $$MOC_DIR -win32:moc_dir_short ~= s,^.:,/, +contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/, contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index a03a3139d..af93f1190 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -36,7 +36,7 @@ INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picki win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt # As order does matter for static libs, we reorder the QT variable here -TMPLIBS = multimedia webkit phonon dbus testlib script scripttools svg qt3support sql xmlpatterns xml egl opengl openvg gui network core +TMPLIBS = declarative webkit phonon multimedia dbus testlib script scripttools svg qt3support sql xmlpatterns xml egl opengl openvg gui network core for(QTLIB, $$list($$TMPLIBS)) { contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB } @@ -118,6 +118,14 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) { DEPLOYMENT *= qt_additional_plugin_$${QTPLUG} } + isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:symbian: { + QT_ITEM = $${QTPLUG}.dll + + eval(qt_additional_plugin_$${QTPLUG}.sources = $${QT_ITEM}) + eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH}) + + DEPLOYMENT *= qt_additional_plugin_$${QTPLUG} + } } } #specific module settings @@ -150,8 +158,18 @@ for(QTLIB, $$list($$lower($$unique(QT)))) { else:isEqual(QTLIB, scripttools):qlib = QtScriptTools else:isEqual(QTLIB, testlib):qlib = QtTest else:isEqual(QTLIB, dbus):qlib = QtDBus - else:isEqual(QTLIB, phonon):qlib = phonon - else:isEqual(QTLIB, webkit):qlib = QtWebKit + else:isEqual(QTLIB, phonon) { + qlib = phonon + INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon_compat/phonon + INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon_compat + INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon/Phonon + + # The Helix backend requires this. Since we can't let a plugin set it, + # we bump the values for all Symbian Phonon plugins. + symbian:isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x040000 0x1600000 + + } else:isEqual(QTLIB, webkit):qlib = QtWebKit + else:isEqual(QTLIB, declarative):qlib = QtDeclarative else:isEqual(QTLIB, multimedia):qlib = QtMultimedia else:message("Unknown QT: $$QTLIB"):qlib = !isEmpty(qlib) { diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index 8956ef7b0..1be6d9bb4 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -45,8 +45,22 @@ defineTest(qtAddLibrary) { } } } + symbian { + isEqual(LIB_NAME, QtGui) { + # Needed for #include <QtGui> because qs60mainapplication.h includes aknapp.h + INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE + } + isEqual(LIB_NAME, QtWebKit) { + # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain + INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtXmlPatterns + } + isEqual(LIB_NAME, QtXmlPatterns) { + # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain + INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork + } + } isEmpty(LINKAGE) { - CONFIG(debug, debug|release) { + if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug } diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf index e9d79b024..525e7b2c1 100644 --- a/mkspecs/features/qttest_p4.prf +++ b/mkspecs/features/qttest_p4.prf @@ -3,6 +3,13 @@ CONFIG += qt warn_on console depend_includepath qtAddLibrary(QtTest) +symbian:{ + TARGET.EPOCHEAPSIZE = 0x100000 0x2000000 +# DEFINES += QTEST_NO_SPECIALIZATIONS + TARGET.CAPABILITY="ALL -TCB" + RSS_RULES ="group_name=\"QtTests\";" +} + # prefix test binary with tst_ !contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_") diff --git a/mkspecs/features/static.prf b/mkspecs/features/static.prf index 6e2b54f4c..ef3af074b 100644 --- a/mkspecs/features/static.prf +++ b/mkspecs/features/static.prf @@ -6,4 +6,14 @@ contains(TEMPLATE, ".*lib"):{ QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB } } + +mac { + QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB +} + +symbian { + # we don't care about exports from static libraries, as they don't end up in DEF files + MMP_RULES -= $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA +} + !static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(static, shared) diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf new file mode 100644 index 000000000..1edbe1449 --- /dev/null +++ b/mkspecs/features/symbian/application_icon.prf @@ -0,0 +1,51 @@ +load(data_caging_paths) + +# If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW +# requires the registration resource file to exist always +contains( CONFIG, no_icon ) { + symbian:RSS_RULES ="hidden = KAppIsHidden;" + CONFIG -= no_icon +} else { +# There is no point in compiling the MIF icon if no_icon CONFIGS is set + !isEmpty(ICON) { + + !count(ICON, 1) { + ICON = $$first(ICON) + warning("Only first icon specified in ICON variable is used: $$ICON") + } + + # Try to produce indentical string to fixedTarget in SymbianMakefileGenerator, replaced chars taken + # from SymbianMakefileGenerator::removeSpecialCharacters. + # + # Note: it is not a major problem even baseTarget is not 100% identical to fixedTarget since qmake + # only uses filename from RSS_RULES.icon_file when referring to icon file name. + baseTarget = $$basename(TARGET) + baseTarget = $$replace(baseTarget, /,_) + baseTarget = $$replace(baseTarget, \\,_) + baseTarget = $$replace(baseTarget, -,_) + baseTarget = $$replace(baseTarget, :,_) + baseTarget = $$replace(baseTarget, \.,_) + baseTarget = $$replace(baseTarget, " ",_) + + # Note: symbian-sbsv2 builds can't utilize extra compiler for mifconv, so ICON handling is done in code + symbian-abld { + #Makefile: requires paths with backslash + ICON = $$replace( ICON, /, \\) + + # Extra compiler rules for mifconv + mifconv.output = ${ZDIR}$$APP_RESOURCE_DIR/$${baseTarget}.mif + # Based on: http://www.forum.nokia.com/document/Cpp_Developers_Library + # svg-t icons should always use /c32 depth + mifconv.commands = mifconv ${QMAKE_FILE_OUT} /c32 ${QMAKE_FILE_IN} + mifconv.input = ICON + mifconv.CONFIG = no_link combine + # target_predeps together with combine seems not to work correctly, lets define it by ourselves + PRE_TARGETDEPS += $$mifconv.output + QMAKE_EXTRA_COMPILERS += mifconv + } + # Rules to use generated MIF file from symbian resources + RSS_RULES.number_of_icons = $$size(ICON) + RSS_RULES.icon_file = $$APP_RESOURCE_DIR/$${baseTarget}.mif + } +} + diff --git a/mkspecs/features/symbian/armcc_warnings.prf b/mkspecs/features/symbian/armcc_warnings.prf new file mode 100644 index 000000000..72bc99620 --- /dev/null +++ b/mkspecs/features/symbian/armcc_warnings.prf @@ -0,0 +1,13 @@ +# 111: Statement is unreachable +# 185: Dynamic initialization in unreachable code +# 191: Type qualifier is meaningless on cast type +# 368: class "<class>" defines no constructor to initialize the following: <member> +# (Disabled because there are other ways of assigning besides constructors) +# 1293: Assignment in condition +# 1294: pre-ANSI C style functions declarations (used a lot in 3rd party code) +# 2874: <variable> may be used before being set (this one sounds useful, but +# it's output also for class instances, making it useless in practice) +QMAKE_CFLAGS.ARMCC += --diag_suppress 111,185,191,368,1293,1294,2874 + +# 6780: <origvis> visibility removed from symbol '<symname>' through <impexp> +QMAKE_LFLAGS.ARMCC += --diag_suppress 6780 diff --git a/mkspecs/features/symbian/data_caging_paths.prf b/mkspecs/features/symbian/data_caging_paths.prf new file mode 100644 index 000000000..3ed566134 --- /dev/null +++ b/mkspecs/features/symbian/data_caging_paths.prf @@ -0,0 +1,80 @@ +# +# ============================================================================== +# Name : data_caging_paths.prf +# Part of : +# Interface : Data Caging Path Definitions API for Qt/S60 +# Description : Predefined include paths to be used in the pro-files for the +# paths related to data caging. +# +# Usage examples: +# +# # Load these definitions on pro-file if needed: +# load(data_caging_paths) +# +# # These variables are mostly useful when specifying deployment +# +# myLib.sources = myLib.dll +# myLib.path = $$SHARED_LIB_DIR +# DEPLOYMENT += myLib +# +# # Note: Do not use $$PLUGINS_DIR or $$PLUGINS_1_DIR to deploy Qt plugins. +# # $$QT_PUBLIC_PLUGINS_BASE specifies the public base directory for Qt +# # plugin stubs: +# +# myPublicImageFormatPlugin.sources = myImageFormat.dll +# myPublicImageFormatPlugin.path = $$QT_PLUGINS_BASE_DIR/imageformats +# DEPLOYMENT += myPublicImageFormatPlugin +# +# ============================================================================== + +exists($${EPOCROOT}epoc32/include/data_caging_paths.prf) { + + # Load platform specific paths + load($${EPOCROOT}epoc32/include/data_caging_paths.prf) + +} else { + # No platform specific paths provided, use default paths + + APPARC_RECOGNISER_RESOURCES_DIR = /resource/apps/registrationresourcefiles + APP_BITMAP_DIR = /resource/apps + APP_RESOURCE_DIR = /resource/apps + BITMAP_DIR = /resource/apps + BIOFILE_DIR = /resource/messaging/bif + CHARCONV_PLUGIN_DIR = /resource/charconv + CONTACTS_RESOURCE_DIR = /resource/cntmodel + CTRL_PANEL_RESOURCE_DIR = /resource/controls + CONVERTER_PLUGIN_RESOURCE_DIR = /resource/convert + ECOM_RESOURCE_DIR = /resource/plugins + ERROR_RESOURCE_DIR = /resource/errors + PROGRAMS_DIR = /sys/bin + FEP_RESOURCES_DIR = /resource/fep + HELP_FILE_DIR = /resource/help + LOG_ENGINE_RESOURCE_DIR = /resource/logengine + MTM_RESOURCE_DIR = /resource/messaging + MTM_INFO_FILE_DIR = /resource/messaging/mtm + PRINTER_DRIVER_DIR = /resource/printers + SHARED_LIB_DIR = /sys/bin + UIKLAF_RESOURCE_DIR = /resource/uiklaf + WAPPUSH_PLUGIN_RESOURCE_DIR = /resource/messaging/wappush + WATCHER_PLUGIN_RESOURCE_DIR = /resource/messaging/watchers + RECOGNISERS_DIR = /sys/bin + PARSERS_DIR = /sys/bin + NOTIFIERS_DIR = /sys/bin + PLUGINS_DIR = /sys/bin + PLUGINS_1_DIR = /sys/bin + RESOURCE_FILES_DIR = /resource + + CA_CERTIFICATES_DIR = /private/101f72a6 + COMMDB_DIR = /private/100012a5 + SS_CONFIG_FILE_DIR = /private/101f7989/esock + TRUSTED_FONTS_DIR = /private/10003a16/fonts + UNTRUSTED_FONT_DIR = /private/10003a16/import/fonts + WINDOW_SERVER_INI_DIR = /private/10003b20 + SKINS_DIR = /private/10207114 + BOOTDATA_DIR = /resource/bootdata +} + +isEmpty(QT_PLUGINS_BASE_DIR): QT_PLUGINS_BASE_DIR = /$$RESOURCE_FILES_DIR/qt/plugins +isEmpty(HW_ZDIR): HW_ZDIR = epoc32/data/z +isEmpty(REG_RESOURCE_DIR): REG_RESOURCE_DIR = /private/10003a3f/apps +isEmpty(REG_RESOURCE_IMPORT_DIR): REG_RESOURCE_IMPORT_DIR = /private/10003a3f/import/apps
\ No newline at end of file diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf new file mode 100644 index 000000000..7c9e8eea1 --- /dev/null +++ b/mkspecs/features/symbian/default_post.prf @@ -0,0 +1,31 @@ +load(default_post) + +contains(TEMPLATE, ".*app") { + contains(CONFIG, stdbinary) { + QMAKE_LIBS += + } else:contains(QT, gui):contains(CONFIG,qt) { + S60MAIN_LIBS = -leuser + QMAKE_LIBS += -lqtmain.lib $$S60MAIN_LIBS + } else { + QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY + } +} +contains(TEMPLATE, lib): { + contains(CONFIG, staticlib)|contains(CONFIG, static): { + # Static libs should not have LIBRARY statements in S60 + QMAKE_LIBS = + # Static libs do not need def files + MMP_RULES -= EXPORTUNFROZEN + } + contains(CONFIG, plugin):!contains(CONFIG, stdbinary): { + # Plugins based on normal libraries have predefined def file + MMP_RULES -= EXPORTUNFROZEN + } +} else { + # Applications don't need this + MMP_RULES -= EXPORTUNFROZEN +} + +contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG,qt) { + load(application_icon.prf) +}
\ No newline at end of file diff --git a/mkspecs/features/symbian/default_pre.prf b/mkspecs/features/symbian/default_pre.prf new file mode 100644 index 000000000..ddb23b315 --- /dev/null +++ b/mkspecs/features/symbian/default_pre.prf @@ -0,0 +1,2 @@ +CONFIG = stl_off $$CONFIG +load(default_pre) diff --git a/mkspecs/features/symbian/epocallowdlldata.prf b/mkspecs/features/symbian/epocallowdlldata.prf new file mode 100644 index 000000000..b336f488f --- /dev/null +++ b/mkspecs/features/symbian/epocallowdlldata.prf @@ -0,0 +1 @@ +TARGET.EPOCALLOWDLLDATA=1 diff --git a/mkspecs/features/symbian/moc.prf b/mkspecs/features/symbian/moc.prf new file mode 100644 index 000000000..9c21ed736 --- /dev/null +++ b/mkspecs/features/symbian/moc.prf @@ -0,0 +1,16 @@ +load(moc) + +RET = $$find(MOC_DIR, "(/|^)\.[^/]+/?$") +!isEmpty(RET):{ + error("Symbian does not support directories starting with a dot. Please set MOC_DIR to a different value in your profile. MOC_DIR: $$MOC_DIR") +} + +RET = $$find(RCC_DIR, "(/|^)\.[^/]+/?$") +!isEmpty(RET):{ + error("Symbian does not support directories starting with a dot. Please set RCC_DIR to a different value in your profile. RCC_DIR: $$RCC_DIR") +} + +RET = $$find(OBJECTS_DIR, "(/|^)\.[^/]+/?$") +!isEmpty(RET):{ + error("Symbian does not support directories starting with a dot. Please set OBJECTS_DIR to a different value in your profile. OBJECTS_DIR: $$OBJECTS_DIR") +} diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf new file mode 100644 index 000000000..bec9811c4 --- /dev/null +++ b/mkspecs/features/symbian/platform_paths.prf @@ -0,0 +1,480 @@ +# +# ============================================================================== +# Name : platform_paths.prf +# Part of : +# Interface : Platform Path Definitions API for Qt/S60 +# Description : Predefined include paths to be used in the pro-files for the +# components in the layered model. There is one definition for +# each layer. The pro-file should use the statement that is +# intended for the same layer as where the pro-file resides. +# +# Usage examples: +# +# Note: this file gets automatically added to all Qt/S60 projects +# +# Variable usages to add the system include paths +# +# The include paths has to be related to the layer in which your SW +# resides. Thus as an example: a component residing in middleware +# layer should use the MW specific macro. +# +# INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE +# INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_SYSTEMINCLUDE +# +# If there is a need to include public headers of some S60 component, +# various *_EXPORT_PATH macros can be utilized: +# +# INCLUDEPATH += $$OS_LAYER_PUBLIC_EXPORT_PATH(somecomponent) +# +# Variables related to using various parts of stdapis: +# +# To use STLLIB you need to have this in your pro-file: +# +# QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS +# DEFINES *= $$STLLIB_USAGE_DEFINES +# +# Depending on what module you are using from stdapis you need to have +# one or more of the following variables in your pro-file. +# +# INCLUDEPATH += $$OS_LAYER_LIBC_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_GLIB_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_SSL_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_BOOST_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_DBUS_SYSTEMINCLUDE +# INCLUDEPATH += $$OS_LAYER_LIBUTILITY_SYSTEMINCLUDE +# +# +# +# +# ============================================================================== + +exists($${EPOCROOT}epoc32/include/platform_paths.prf) { + + # Load platform specific paths + load($${EPOCROOT}epoc32/include/platform_paths.prf) + +} else { + + # No platform specific paths provided, use default paths + + exists($${EPOCROOT}epoc32/include/platform) { # New SF structure + + # --------------------------------------- + # Location, where the applications layer specific public headers are exported + # --------------------------------------- + + defineReplace(APP_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/app/$$1) + } + defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/app/$$1) + } + + # --------------------------------------- + # Location, where the applications layer specific platform headers are exported + # --------------------------------------- + + defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/platform/app/$$1) + } + defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/platform/app/$$1) + } + + # --------------------------------------- + # Location, where the middleware layer specific public headers are exported + # --------------------------------------- + + defineReplace(MW_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/mw/$$1) + } + defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/mw/$$1) + } + + # --------------------------------------- + # Location, where the middleware layer specific platform headers are exported + # --------------------------------------- + + defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/platform/mw/$$1) + } + defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/platform/mw/$$1) + } + + # --------------------------------------- + # Location, where the os layer specific public headers are exported + # --------------------------------------- + + defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/$$1) + } + # WARNING: If the following path changes see the exists() function around line 219 + defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/$$1) + } + + # --------------------------------------- + # Location, where the os specific platform headers are exported + # --------------------------------------- + + defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/platform/$$1) + } + defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/platform/$$1) + } + + # --------------------------------------- + # General comments about the 3 define statements related to include paths: + # 1) the /epoc32/include/oem is now defined there for backward compability. + # Once the directory is empty, the directory will be removed. However this + # enables us to ensure that if you use these define statements => you do + # not have to remove the statements later on, when the directory no longer + # exists. + # 2) These statements should be enough in normal cases. For certain specific + # cases you might need to add some specific directory from /epoc32/include + # (for instance /epoc32/include/ecom). + # In normal cases the include staments in code should be relative to one of + # the system include paths, but in certain cases, the included files requires + # that the subdirectory is also part of the system include paths. + # --------------------------------------- + + # This variable defines the include paths, which are intended to be + # used in the pro-files that are part of the applications-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # application-layer components. + # + # Applications layer is the last one in the list, since most likely the most of + # the headers come from middleware or os-layer => thus they are first. + + APP_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/mw \ + /epoc32/include/platform/mw \ + /epoc32/include/platform \ + /epoc32/include/app \ + /epoc32/include/platform/app \ + /epoc32/include/platform/loc \ + /epoc32/include/platform/mw/loc \ + /epoc32/include/platform/app/loc \ + /epoc32/include/platform/loc/sc \ + /epoc32/include/platform/mw/loc/sc \ + /epoc32/include/platform/app/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the middleware-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # middleware-layer components. + + MW_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/mw \ + /epoc32/include/platform/mw \ + /epoc32/include/platform \ + /epoc32/include/platform/loc \ + /epoc32/include/platform/mw/loc \ + /epoc32/include/platform/loc/sc \ + /epoc32/include/platform/mw/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the osextensions-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # os-layer components. + + OS_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/platform \ + /epoc32/include/platform/loc \ + /epoc32/include/platform/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the os-layer. This is intended + # to be only used by those components which need to use in their mmp-file either + # kern_ext.mmh or nkern_ext.mmh. Reason is that those + # 2 files already contain the /epoc32/include as system include path. + + OS_LAYER_KERNEL_SYSTEMINCLUDE = \ + /epoc32/include/platform + + + # --------------------------------------- + # Definitions that also define the systeminclude paths for various + # part of stdapis. Append to INCLUDEPATH in pro-file. + # --------------------------------------- + + OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys) + + OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject) + + OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) + + # stlportv5 is preferred over stlport as it has the throwing version of operator new + exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) + } else { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) + } + + OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) + + OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus) + + OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility) + + # --------------------------------------- + # Definitions to export IBY files to different folders where they will be taken + # to ROM image + # --------------------------------------- + + defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/app/$$1) + } + defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/mw/$$1) + } + defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/os/$$1) + } + defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/os/$$1) + } + defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/$$1) + } + + # You need to define the following in pro-file, if you are using the stllib: + # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS + # DEFINES *= $$STLLIB_USAGE_DEFINES + STLLIB_USAGE_CW_FLAGS = "-wchar_t on" + STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED + + } else { # Old pre-SF structure + + # --------------------------------------- + # Location, where the applications layer specific public headers are exported + # --------------------------------------- + + defineReplace(APP_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/applications/$$1) + } + defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/applications/$$1) + } + + # --------------------------------------- + # Location, where the applications layer specific platform headers are exported + # --------------------------------------- + + defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/domain/applications/$$1) + } + defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/domain/applications/$$1) + } + + # --------------------------------------- + # Location, where the middleware layer specific public headers are exported + # --------------------------------------- + + defineReplace(MW_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/middleware/$$1) + } + defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/middleware/$$1) + } + + # --------------------------------------- + # Location, where the middleware layer specific platform headers are exported + # --------------------------------------- + + defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/domain/middleware/$$1) + } + defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/domain/middleware/$$1) + } + + # --------------------------------------- + # Location, where the os layer specific public headers are exported + # --------------------------------------- + + defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) { + return (/epoc32/include/osextensions/$$1) + } + # WARNING: If the following path changes see the exists() function around line 430 + defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) { + return (/epoc32/include/osextensions/$$1) + } + + # --------------------------------------- + # Location, where the os specific platform headers are exported + # --------------------------------------- + + defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) { + return (/epoc32/include/domain/osextensions/$$1) + } + defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) { + return (/epoc32/include/domain/osextensions/$$1) + } + + # --------------------------------------- + # General comments about the 3 define statements related to include paths: + # 1) the /epoc32/include/oem is now defined there for backward compability. + # Once the directory is empty, the directory will be removed. However this + # enables us to ensure that if you use these define statements => you do + # not have to remove the statements later on, when the directory no longer + # exists. + # 2) These statements should be enough in normal cases. For certain specific + # cases you might need to add some specific directory from /epoc32/include + # (for instance /epoc32/include/ecom). + # In normal cases the include staments in code should be relative to one of + # the system include paths, but in certain cases, the included files requires + # that the subdirectory is also part of the system include paths. + # --------------------------------------- + + # This variable defines the include paths, which are intended to be + # used in the pro-files that are part of the applications-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # application-layer components. + # + # Applications layer is the last one in the list, since most likely the most of + # the headers come from middleware or os-layer => thus they are first. + + APP_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/oem \ + /epoc32/include/middleware \ + /epoc32/include/domain/middleware \ + /epoc32/include/osextensions \ + /epoc32/include/domain/osextensions \ + /epoc32/include/applications \ + /epoc32/include/domain/applications \ + /epoc32/include/domain/osextensions/loc \ + /epoc32/include/domain/middleware/loc \ + /epoc32/include/domain/applications/loc \ + /epoc32/include/domain/osextensions/loc/sc \ + /epoc32/include/domain/middleware/loc/sc \ + /epoc32/include/domain/applications/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the middleware-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # middleware-layer components. + + MW_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/oem \ + /epoc32/include/middleware \ + /epoc32/include/domain/middleware \ + /epoc32/include/osextensions \ + /epoc32/include/domain/osextensions \ + /epoc32/include/domain/osextensions/loc \ + /epoc32/include/domain/middleware/loc \ + /epoc32/include/domain/osextensions/loc/sc \ + /epoc32/include/domain/middleware/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the osextensions-layer. It includes all + # the needed directories from the /epoc32/include, that are valid ones for the + # os-layer components. + + OS_LAYER_SYSTEMINCLUDE = \ + /epoc32/include \ + /epoc32/include/oem \ + /epoc32/include/osextensions \ + /epoc32/include/domain/osextensions \ + /epoc32/include/domain/osextensions/loc \ + /epoc32/include/domain/osextensions/loc/sc + + # This define statements defines the include paths, which are intended to be + # used in the pro-files that are part of the os-layer. This is intended + # to be only used by those components which need to use in their mmp-file either + # kern_ext.mmh or nkern_ext.mmh. Reason is that those + # 2 files already contain the /epoc32/include as system include path. + + OS_LAYER_KERNEL_SYSTEMINCLUDE = \ + /epoc32/include/oem \ + /epoc32/include/osextensions \ + /epoc32/include/domain/osextensions + + + # --------------------------------------- + # Definitions that also define the systeminclude paths for various + # part of stdapis. Append to INCLUDEPATH in pro-file. + # --------------------------------------- + + OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys) \ + /epoc32/include/stdapis \ + /epoc32/include/stdapis/sys + + OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject) \ + /epoc32/include/stdapis/glib-2.0 \ + /epoc32/include/stdapis/glib-2.0/glib \ + /epoc32/include/stdapis/glib-2.0/gObject + + OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) \ + /epoc32/include/stdapis/openssl + + # stlportv5 is preferred over stlport as it has the throwing version of operator new + exists($${EPOCROOT}epoc32/include/osextensions/stdapis/stlportv5)|exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) \ + /epoc32/include/stdapis/stlportv5 + } else { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) \ + /epoc32/include/stdapis/stlport + } + + OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) \ + /epoc32/include/stdapis/boost + + OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \ + $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus) \ + /epoc32/include/stdapis/dbus-1.0 \ + /epoc32/include/stdapis/dbus-1.0/dbus + + OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility) \ + /epoc32/include/stdapis/utility + + # --------------------------------------- + # Definitions to export IBY files to different folders where they will be taken + # to ROM image + # --------------------------------------- + + defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/app/$$1) + } + defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/mw/$$1) + } + defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/osext/$$1) + } + defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/core/osext/$$1) + } + defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) { + return(/epoc32/rom/include/$$1) + } + + # You need to define the following in pro-file, if you are using the stllib: + # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS + # DEFINES *= $$STLLIB_USAGE_DEFINES + STLLIB_USAGE_CW_FLAGS = "-wchar_t on" + STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED + + } +} + + + diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf new file mode 100644 index 000000000..0f5b08b6a --- /dev/null +++ b/mkspecs/features/symbian/qt.prf @@ -0,0 +1,34 @@ +contains(DEFINES, QT_MAKEDLL)|contains(DEFINES, QT_DLL) { + CONFIG *= epocallowdlldata +} + +CONFIG += qtmain + +load(qt) + +# Allow .pro files to specify include path(s) to be prepended to the list. +# +# This allows the project to override the default ordering, whereby paths +# relative to $$QMAKE_INCDIR_QT always come first. This ordering can cause +# problems when both the epoc32/include tree and a Qt include directory +# contain a header of the same name - in this case, the Qt header is always +# included by virtue of its path appearing first in the SYSTEMINCLUDE +# directives in the generated MMP file. +# +# To work around this situation, the following line can be added to the .pro +# file: +# PREPEND_INCLUDEPATH = /epoc32/include +# +INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH + +# Add dependency to Qt package to all other projects besides Qt libs. +# Note: Qt libs with full capabilities has UID3 of 0x2001E61C, +# while self-signed version typically has temporary UID3 of 0xE001E61C. +contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C) { + default_deployment.pkg_prerules += \ + "; Default dependency to Qt libraries" \ + "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}" +} + +isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000 +isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000 diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf new file mode 100644 index 000000000..e21ee5ca0 --- /dev/null +++ b/mkspecs/features/symbian/stl.prf @@ -0,0 +1,25 @@ +CONFIG -= stl_off + +# STL usage in S60 requires the "OPTION CW -wchar_t on" mmp statement to be used. +# This statement is added via $$STLLIB_USAGE_CW_FLAGS variable below. +# S60 STL documentation instructs to use also "MACRO _WCHAR_T_DECLARED" statement, +# but QtS60 will not compile if that statement is set. + +QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS + +# Path to stlport headers +INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE + +# Remove mkspecs/common/symbian/stl-off from beginning of includepath +# in order to use new and delete operators from STL +INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off + +# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new +exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) { + LIBS *= -llibstdcppv5.dll + + # STDCPP turns on standard C++ new behaviour (ie. throwing new) + MMP_RULES += "STDCPP" +} else { + LIBS *= -llibstdcpp.dll +} diff --git a/mkspecs/features/symbian/stl_off.prf b/mkspecs/features/symbian/stl_off.prf new file mode 100644 index 000000000..d5d1c7c30 --- /dev/null +++ b/mkspecs/features/symbian/stl_off.prf @@ -0,0 +1,2 @@ +CONFIG -= stl + diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf index e768d0f0a..eaf373a52 100644 --- a/mkspecs/features/uic.prf +++ b/mkspecs/features/uic.prf @@ -1,11 +1,11 @@ isEmpty(QMAKE_UIC3) { - win32:QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe + contains(QMAKE_HOST.os,Windows):QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe else:QMAKE_UIC3 = $$[QT_INSTALL_BINS]/uic3 } isEmpty(QMAKE_UIC) { - win32:QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe + contains(QMAKE_HOST.os,Windows):QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe else:QMAKE_UIC = $$[QT_INSTALL_BINS]/uic } @@ -36,7 +36,7 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ !isEmpty(FORMS)|!isEmpty(FORMS3) { ui_dir_short = $$UI_HEADERS_DIR - win32:ui_dir_short ~= s,^.:,/, + contains(QMAKE_HOST.os,Windows):ui_dir_short ~= s,^.:,/, contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR } diff --git a/mkspecs/features/uitools.prf b/mkspecs/features/uitools.prf index 6eba066ae..2d14b04d9 100644 --- a/mkspecs/features/uitools.prf +++ b/mkspecs/features/uitools.prf @@ -2,7 +2,9 @@ QT += xml qt:load(qt) # Include the correct version of the UiLoader library -QTUITOOLS_LINKAGE = -lQtUiTools +symbian: QTUITOOLS_LINKAGE = -lQtUiTools.lib +else: QTUITOOLS_LINKAGE = -lQtUiTools + CONFIG(debug, debug|release) { mac: QTUITOOLS_LINKAGE = -lQtUiTools_debug win32: QTUITOOLS_LINKAGE = -lQtUiToolsd diff --git a/mkspecs/features/unix/opengl.prf b/mkspecs/features/unix/opengl.prf index 2fdf32423..f2db8190b 100644 --- a/mkspecs/features/unix/opengl.prf +++ b/mkspecs/features/unix/opengl.prf @@ -1,4 +1,22 @@ -INCLUDEPATH += $$QMAKE_INCDIR_OPENGL -!isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL -target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_QT -else:LIBS += $$QMAKE_LIBS_OPENGL +contains(QT_CONFIG, opengles1) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1 + !isEmpty(QMAKE_LIBDIR_OPENGL_ES1):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES1 + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1 + else:LIBS += $$QMAKE_LIBS_OPENGL_ES1 +} else:contains(QT_CONFIG, opengles1cl) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1CL + !isEmpty(QMAKE_LIBDIR_OPENGL_ES1CL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES1CL + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1CL + else:LIBS += $$QMAKE_LIBS_OPENGL_ES1CL +} else:contains(QT_CONFIG, opengles2) { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2 + !isEmpty(QMAKE_LIBDIR_OPENGL_ES2):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2 + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES2 + else:LIBS += $$QMAKE_LIBS_OPENGL_ES2 +} else { + INCLUDEPATH += $$QMAKE_INCDIR_OPENGL + !isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL + target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_QT + else:LIBS += $$QMAKE_LIBS_OPENGL +} + diff --git a/mkspecs/features/win32/opengl.prf b/mkspecs/features/win32/opengl.prf index 30af2a3b9..3414781c3 100644 --- a/mkspecs/features/win32/opengl.prf +++ b/mkspecs/features/win32/opengl.prf @@ -1,3 +1,11 @@ -QMAKE_LIBS += $$QMAKE_LIBS_OPENGL -QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL +# WinCE does not have a platform directory for .prf files, and the +# win32 directory is searched for .prfs by qmake on WinCE. Ideally +# there should be a features/wince/opengl.prf which contains the wince +# block below. +wince* { + include(../unix/opengl.prf) +} else { + QMAKE_LIBS += $$QMAKE_LIBS_OPENGL + QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL +} diff --git a/mkspecs/features/win32/rtti_off.prf b/mkspecs/features/win32/rtti_off.prf index 8f175dee7..b520bfa8b 100644 --- a/mkspecs/features/win32/rtti_off.prf +++ b/mkspecs/features/win32/rtti_off.prf @@ -1,3 +1,4 @@ CONFIG -= rtti QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF +DEFINES += QT_NO_DYNAMIC_CAST
\ No newline at end of file |