diff options
Diffstat (limited to 'mkspecs/features')
-rw-r--r-- | mkspecs/features/sis_targets.prf | 15 | ||||
-rw-r--r-- | mkspecs/features/symbian/def_files.prf | 5 | ||||
-rw-r--r-- | mkspecs/features/symbian/def_files_disabled.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/symbian/platform_paths.prf | 20 | ||||
-rw-r--r-- | mkspecs/features/symbian/run_on_phone.prf | 32 | ||||
-rw-r--r-- | mkspecs/features/symbian/symbian_building.prf | 7 |
6 files changed, 68 insertions, 13 deletions
diff --git a/mkspecs/features/sis_targets.prf b/mkspecs/features/sis_targets.prf index 13ee1ad..b149a22 100644 --- a/mkspecs/features/sis_targets.prf +++ b/mkspecs/features/sis_targets.prf @@ -1,5 +1,15 @@ # Sis file creation -contains(TEMPLATE, app)|!count(DEPLOYMENT, 1) { +GENERATE_SIS_TARGETS = false + +contains(TEMPLATE, app): GENERATE_SIS_TARGETS = true +else:!equals(DEPLOYMENT, default_deployment) { + for(dep_item, $$list($$DEPLOYMENT)) { + dep_item_sources = $$eval($${dep_item}.sources) + !isEmpty(dep_item_sources): GENERATE_SIS_TARGETS = true + } +} + +equals(GENERATE_SIS_TARGETS, true) { symbian-abld|symbian-sbsv2 { sis_destdir = make_cache_name = .make.cache @@ -129,7 +139,8 @@ contains(TEMPLATE, app)|!count(DEPLOYMENT, 1) { } else { # Make sure we build everything, since other sis targets in a recursive invocation # may depend on them, even if this one is empty. - sis_target.depends = first + # In abld/sbsv2, we assume that subdir has been built already, as all builds are recursive. + !symbian-abld:!symbian-sbsv2: sis_target.depends = first } sis_target.commands = sis_target.target = sis diff --git a/mkspecs/features/symbian/def_files.prf b/mkspecs/features/symbian/def_files.prf index eb17402..1b8e551 100644 --- a/mkspecs/features/symbian/def_files.prf +++ b/mkspecs/features/symbian/def_files.prf @@ -7,7 +7,8 @@ symbian-abld|symbian-sbsv2 { # Firstly, if the MMP_RULES already contain a defBlock variable, don't generate another one # (this bit is slightly magic, because it depends upon everyone creating their DEFFILE statements # in a defBlock variable; but otherwise we have to expand MMP_RULES then scan for the DEFFILE keyword) - !contains(MMP_RULES, defBlock) { + # Similarly, explicit EXPORTUNFROZEN should block adding defBlock + !contains(MMP_RULES, defBlock):!contains(MMP_RULES, EXPORTUNFROZEN) { # Apps are executables on Symbian, so don't have exports, and therefore don't have DEF files # Plugins use standard DEF files, which qmake generates, so shouldn't be using these DEFFILE # statements - they use the qmake generated statements instead @@ -41,7 +42,7 @@ symbian-abld|symbian-sbsv2 { } } -} else:contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { +} else:contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib):!contains(CONFIG, plugin) { !isEmpty(DEF_FILE) { defFile = $$DEF_FILE } else { diff --git a/mkspecs/features/symbian/def_files_disabled.prf b/mkspecs/features/symbian/def_files_disabled.prf index 557c5e3..0344911 100644 --- a/mkspecs/features/symbian/def_files_disabled.prf +++ b/mkspecs/features/symbian/def_files_disabled.prf @@ -8,6 +8,6 @@ CONFIG -= def_files !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): { # with EXPORTUNFROZEN enabled, new exports are included in the dll and dso/lib without # needing to run abld/sbs freeze - MMP_RULES += EXPORTUNFROZEN + MMP_RULES *= EXPORTUNFROZEN } } diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf index 0e8770d..5c190c8 100644 --- a/mkspecs/features/symbian/platform_paths.prf +++ b/mkspecs/features/symbian/platform_paths.prf @@ -45,8 +45,17 @@ # INCLUDEPATH += $$OS_LAYER_DBUS_SYSTEMINCLUDE # INCLUDEPATH += $$OS_LAYER_LIBUTILITY_SYSTEMINCLUDE # +# These paths are primarily meant to be used as is in bld.inf and .mmp +# files, so they do not contain epocroot when using official symbian +# toolchains (symbian-abld or symbian-sbsv2). +# For makefile based mkspecs, epocroot is prepended to all paths for +# convenience. # -# +# To use paths defined here in other contexts that require epocroot to be +# prepended always, such as exists checks, please use prependEpocroot +# replacement function: +# +# exists($$prependEpocroot($$MW_LAYER_PUBLIC_EXPORT_PATH(foobar.h))) # # ============================================================================== @@ -472,4 +481,13 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) { STLLIB_USAGE_CW_FLAGS = "-wchar_t on" STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED + # Smart prepend of EPOCROOT to a string + defineReplace(prependEpocroot) { + contains(1, ^$${EPOCROOT}) { + return($$1) + } else { + return($${EPOCROOT}$$replace(1,"^/",)) + } + } + } diff --git a/mkspecs/features/symbian/run_on_phone.prf b/mkspecs/features/symbian/run_on_phone.prf index c4c7baf..6948a48 100644 --- a/mkspecs/features/symbian/run_on_phone.prf +++ b/mkspecs/features/symbian/run_on_phone.prf @@ -1,9 +1,31 @@ # make sure we have a sis file and then call 'runonphone' to execute it on the phone -contains(TEMPLATE, app) { - run_target.target = runonphone - run_target.depends = sis - run_target.commands = runonphone $(QT_RUN_ON_PHONE_OPTIONS) --sis "$${sis_destdir}$${TARGET}.sis" "$${TARGET}.exe" $(QT_RUN_OPTIONS) +GENERATE_RUN_TARGETS = false - QMAKE_EXTRA_TARGETS += run_target +contains(TEMPLATE, app): GENERATE_RUN_TARGETS = true +else:!equals(DEPLOYMENT, default_deployment) { + for(dep_item, $$list($$DEPLOYMENT)) { + dep_item_sources = $$eval($${dep_item}.sources) + !isEmpty(dep_item_sources): GENERATE_RUN_TARGETS = true + } +} + +equals(GENERATE_RUN_TARGETS, true) { + sis_destdir = $$DESTDIR + !isEmpty(sis_destdir):!contains(sis_destdir, "[/\\\\]$"):sis_destdir = $${sis_destdir}/ + contains(QMAKE_HOST.os, "Windows"):sis_destdir = $$replace(sis_destdir, "/", "\\") + + contains(SYMBIAN_PLATFORMS, "WINSCW"):contains(TEMPLATE, "app") { + run_target.target = run + run_target.commands = call "$${EPOCROOT}epoc32/release/winscw/udeb/$${TARGET}.exe" $(QT_RUN_OPTIONS) + + QMAKE_EXTRA_TARGETS += run_target + } + + runonphone_target.target = runonphone + runonphone_target.depends = sis + runonphone_target.commands = runonphone $(QT_RUN_ON_PHONE_OPTIONS) --sis "$${sis_destdir}$${TARGET}.sis" + contains(TEMPLATE, "app"):runonphone_target.commands += "$${TARGET}.exe" $(QT_RUN_OPTIONS) + + QMAKE_EXTRA_TARGETS += runonphone_target } diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf index c230272..9fc4d1e 100644 --- a/mkspecs/features/symbian/symbian_building.prf +++ b/mkspecs/features/symbian/symbian_building.prf @@ -1,7 +1,7 @@ # we have some module specific options (defined in qt.prf) lets add them -!contains(TARGET, ".*[ -].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_CXXFLAGS) +!contains(TARGET, ".*[ -/].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_CXXFLAGS) !isEmpty(TMPVAR):QMAKE_CXXFLAGS += $$TMPVAR -!contains(TARGET, ".*[ -].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_LFLAGS) +!contains(TARGET, ".*[ -/].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_LFLAGS) !isEmpty(TMPVAR) { QMAKE_LFLAGS += $$TMPVAR } else :linux-gcce { # lets provide a simple default. Without elf2e32 complains @@ -96,6 +96,9 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { QMAKE_POST_LINK = $$replace(QMAKE_POST_LINK, "^@", "") QMAKE_POST_LINK = && $$QMAKE_POST_LINK } + + contains(CONFIG, plugin):QMAKE_ELF2E32_FLAGS += --definput=plugin_commonu.def + # The tee and grep at the end work around the issue that elf2e32 doesn't return non-null on error. # The comparison of dso files is to avoid extra building of modules that depend on this dso, in # case it has not changed. |