mkspecs/features/sis_targets.prf
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
child 37 758a864f9613
--- a/mkspecs/features/sis_targets.prf	Tue Jul 06 15:10:48 2010 +0300
+++ b/mkspecs/features/sis_targets.prf	Wed Aug 18 10:37:55 2010 +0300
@@ -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)) {
+        eval(dep_item_sources = $${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
@@ -22,6 +32,24 @@
         ok_sis_target.commands = createpackage.bat $(QT_SIS_OPTIONS) $$basename(TARGET)_template.pkg \
                                      $(QT_SIS_TARGET) $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)
 
+        unsigned_sis_target.target = unsigned_sis
+        unsigned_sis_target.commands = $(if $(wildcard $$basename(TARGET)_template.pkg), \
+                                  $(if $(wildcard $$make_cache_name), \
+                                      $(MAKE) -f $(MAKEFILE) ok_unsigned_sis MAKEFILES=$$make_cache_name \
+                                  , \
+                                      $(if $(QT_SIS_TARGET), \
+                                          $(MAKE) -f $(MAKEFILE) ok_unsigned_sis \
+                                      , \
+                                          $(MAKE) -f $(MAKEFILE) fail_sis_nocache \
+                                      ) \
+                                  ) \
+                              , \
+                                  $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
+                              )
+
+        ok_unsigned_sis_target.target = ok_unsigned_sis
+        ok_unsigned_sis_target.commands = createpackage.bat $(QT_SIS_OPTIONS) -o $$basename(TARGET)_template.pkg $(QT_SIS_TARGET)
+
         target_sis_target.target = $${sis_destdir}$${TARGET}.sis
         target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis
 
@@ -64,6 +92,8 @@
 
         QMAKE_EXTRA_TARGETS += sis_target \
                                ok_sis_target \
+                               unsigned_sis_target \
+                               ok_unsigned_sis_target \
                                target_sis_target \
                                installer_sis_target \
                                ok_installer_sis_target \
@@ -96,31 +126,49 @@
         }
     } else {
         sis_destdir = $$DESTDIR
-        !isEmpty(sis_destdir):!contains(sis_destdir, "[/\\]$"):sis_destdir = $${sis_destdir}/
-        contains(QMAKE_HOST.os, "Windows"):sis_destdir = $$replace(sis_destdir, "/", "\\")
+        isEmpty(sis_destdir):sis_destdir = .
+        baseTarget = $$basename(TARGET)
+        !equals(TARGET, "$$baseTarget"):sis_destdir = $$sis_destdir/$$dirname(TARGET)
 
         sis_target.target = sis
-        sis_target.commands = createpackage $(QT_SIS_OPTIONS) $$basename(TARGET)_template.pkg \
+        sis_target.commands = createpackage $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \
                                   - $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)
         sis_target.depends = first
 
-        target_sis_target.target = $${sis_destdir}$${TARGET}.sis
+        unsigned_sis_target.target = unsigned_sis
+        unsigned_sis_target.commands = createpackage $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg
+        unsigned_sis_target.depends = first
+
+        target_sis_target.target = $${sis_destdir}/$${baseTarget}.sis
         target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis
 
         installer_sis_target.target = installer_sis
-        installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) $$basename(TARGET)_installer.pkg - \
+        installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \
                                             $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)
-        installer_sis_target.depends = $${sis_destdir}$${TARGET}.sis
+        installer_sis_target.depends = $${sis_destdir}/$${baseTarget}.sis
 
-        !isEmpty(DESTDIR) {
-            sis_target.commands += && $$QMAKE_MOVE $$basename(TARGET).sis $$DESTDIR
-            installer_sis_target.commands += && $$QMAKE_MOVE $$basename(TARGET).sis $$DESTDIR
+        !isEmpty(sis_destdir):!equals(sis_destdir, "."):!equals(sis_destdir, "./") {
+            sis_target.commands += && $$QMAKE_MOVE $${baseTarget}.sis $$sis_destdir
+            installer_sis_target.commands += && $$QMAKE_MOVE $${baseTarget}.sis $$sis_destdir
         }
 
         QMAKE_EXTRA_TARGETS += sis_target \
+                               unsigned_sis_target \
                                target_sis_target \
                                installer_sis_target
+
+        QMAKE_DISTCLEAN += $${sis_destdir}/$${baseTarget}.sis
     }
+
+    deploy_target.target = deploy
+    contains(QMAKE_HOST.os, "Windows") {
+        deploy_target.depends = sis
+        deploy_target.commands = call $$target_sis_target.target
+    } else {
+        deploy_target.commands = @echo Deployment not supported in this environment
+    }
+    QMAKE_EXTRA_TARGETS += deploy_target
+
 } else {
     contains(TEMPLATE, subdirs) {
         # Enable recursive sis target.
@@ -129,11 +177,16 @@
     } 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
     QMAKE_EXTRA_TARGETS += sis_target
+
+    symbian-abld {
+        # Create dummy store_build target to avoid errors from .mk callbacks during build
+        store_build_target.target = store_build
+        QMAKE_EXTRA_TARGETS += store_build_target
+    }
 }
-
-QMAKE_DISTCLEAN += $${sis_destdir}$${TARGET}.sis