mkspecs/features/symbian/def_files.prf
changeset 18 2f34d5167611
child 19 fcece45ef507
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/symbian/def_files.prf	Fri Apr 16 15:50:13 2010 +0300
@@ -0,0 +1,27 @@
+# With DEF files enabled, removed exported symbols are treated as errors
+# and there is binary compatibility between successive builds.
+
+CONFIG -= def_files_disabled
+
+# 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) {
+    # 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
+    # Static libraries obviously don't have DEF files, as they don't take part in dynamic linkage
+    !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
+        !isEmpty(defFilePath) {
+            defBlock = \
+            "$${LITERAL_HASH}ifdef WINSCW" \
+            "DEFFILE $$defFilePath/bwins/$${TARGET}.def" \
+            "$${LITERAL_HASH}elif defined EABI" \
+            "DEFFILE $$defFilePath/eabi/$${TARGET}.def" \
+            "$${LITERAL_HASH}endif"
+            
+            MMP_RULES += defBlock
+        }
+        
+    }
+}