mkspecs/hb_functions.prf
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
--- a/mkspecs/hb_functions.prf	Mon Oct 04 17:49:30 2010 +0300
+++ b/mkspecs/hb_functions.prf	Mon Oct 18 18:23:13 2010 +0300
@@ -1,168 +1,230 @@
-#
-#############################################################################
-##
-## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (developer.feedback@nokia.com)
-##
-## This file is part of the UI Extensions for Mobile.
-##
-## GNU Lesser General Public License Usage
-## This file may be used under the terms of the GNU Lesser General Public
-## License version 2.1 as published by the Free Software Foundation and
-## appearing in the file LICENSE.LGPL included in the packaging of this file.
-## Please review the following information to ensure the GNU Lesser General
-## Public License version 2.1 requirements will be met:
-## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-##
-## In addition, as a special exception, Nokia gives you certain additional
-## rights.  These rights are described in the Nokia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## If you have questions regarding the use of this file, please contact
-## Nokia at developer.feedback@nokia.com.
-##
-#############################################################################
-#
-
-defineReplace(hbLibraryTarget) {
-    unset(LIBRARY_NAME)
-    LIBRARY_NAME = $$1
-    # the following leads to ugly vcproj names but had to be commented
-    # out, because it broke vcproj generator dependency checks
-    #!debug_and_release|build_pass { <-- 
-        CONFIG(debug, debug|release) {
-            mac:RET = $$member(LIBRARY_NAME, 0)_debug
-            else:win32:RET = $$member(LIBRARY_NAME, 0)d
-        }
-    #}
-    isEmpty(RET):RET = $$LIBRARY_NAME
-    return($$RET)
-}
-
-# params: <collection/library>
-# eg. hbAddLibrary(hbcore/HbCore)
-defineTest(hbAddLibrary) {
-    PARTS = $$split(1, "/")
-    COLLECTION = $$lower($$first(PARTS))
-    LIBRARY = $$last(PARTS)
-
-    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}
-    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/restricted
-    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/private
-    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}
-    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/restricted
-    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/private
-
-    LIBS *= -L$${HB_BUILD_DIR}/lib
-    LIBS *= -l$$hbLibraryTarget($$LIBRARY)
-    unix:HB_COVERAGE_EXCLUDE += \"*/$$COLLECTION/*\"
-
-    export(LIBS)
-    export(INCLUDEPATH)
-    export(DEPENDPATH)
-    export(HB_COVERAGE_EXCLUDE)
-    return(true)
-}
-
-# params: <collection>
-# NOTE: exports PUBLIC_HEADERS, RESTRICTED_HEADERS and CONVENIENCE_HEADERS
-# eg. hbExportHeaders(hbcore)
-defineTest(hbExportHeaders) {
-    for(PUBLIC_HEADER, PUBLIC_HEADERS) {
-        PUBLIC_HEADER = $$section(PUBLIC_HEADER, ":", 1)
-        EXPORT_PATH = $$sprintf($$HB_EXPORT_DIR, $$1, $$basename(PUBLIC_HEADER))
-        BLD_INF_RULES.prj_exports *= "$$PUBLIC_HEADER $$EXPORT_PATH"
-    }
-    for(RESTRICTED_HEADER, RESTRICTED_HEADERS) {
-        RESTRICTED_HEADER = $$section(RESTRICTED_HEADER, ":", 1)
-        EXPORT_PATH = $$sprintf($$HB_RESTRICTED_EXPORT_DIR, $$1, $$basename(RESTRICTED_HEADER))
-        BLD_INF_RULES.prj_exports *= "$$RESTRICTED_HEADER $$EXPORT_PATH"
-    }
-    for(CONVENIENCE_HEADER, CONVENIENCE_HEADERS) {
-        CONVENIENCE_HEADER = $$section(CONVENIENCE_HEADER, ":", 1)
-        EXPORT_PATH = $$sprintf($$HB_EXPORT_DIR, $$1, $$basename(CONVENIENCE_HEADER))
-        BLD_INF_RULES.prj_exports *= "$$CONVENIENCE_HEADER $$EXPORT_PATH"
-    }
-    export(BLD_INF_RULES.prj_exports)
-    return(true)
-}
-
-# params: -
-# eg. $$hbUnixStyle():CMD=/path/to/cmd else:CMD=\path\to\cmd
-defineTest(hbUnixStyle) {
-    contains(QMAKE_HOST.os, Windows):isEmpty(QMAKE_SH) {
-        unixstyle = false
-    } else {
-        unixstyle = true
-    }
-    return($$unixstyle)
-}
-
-# params: <path>
-# eg. features.path = $$hbNativePath($$[QMAKE_MKSPECS]/features)
-defineReplace(hbNativePath) {
-    contains(QMAKE_HOST.os, Windows) {
-        isEmpty(QMAKE_SH) {
-            1 = $$replace(1, \\\\, $$QMAKE_DIR_SEP)
-            1 = $$replace(1, /, $$QMAKE_DIR_SEP)
-        } else {
-            1 = $$replace(1, \\\\, /)
-            1 = $$replace(1, /, /)
-        }
-    } else {
-        1 = $$replace(1, \\\\, $$QMAKE_DIR_SEP)
-        1 = $$replace(1, /, $$QMAKE_DIR_SEP)
-    }
-    
-    return($$quote(\"$$1\"))
-}
-
-# params: <tool name>
-# eg. hbfoo.command = $$hbToolCommand(hbfoo)
-defineReplace(hbToolCommand) {
-    symbian {
-        # tool in PATH?
-        exists(/dev/null) {
-            DEVNULL = /dev/null
-        } else {
-            DEVNULL = nul
-        }
-        system($$1 > $$DEVNULL 2>&1):return($$1)
-
-        # host build is runnable?
-        hbtoolcmd = $$hbNativePath($$HB_BUILD_DIR/bin/$$1)
-        system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
-
-        # tool in HB_BIN_DIR?
-        hbtoolcmd = $$hbNativePath($$HB_BIN_DIR/$$1)
-        system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
-
-        # pre-built tool is runnable?
-        hbtoolcmd = $$hbNativePath($$sprintf("%1%2", $$HB_SOURCE_DIR/bin/$$1, "_symbian.exe"))
-        system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
-    }
-    # fall back to <builddir>/bin
-    return($$hbNativePath($$HB_BUILD_DIR/bin/$$1))
-}
-
-# params: <file> <dir>
-defineReplace(hbCopyCommand) {
-    file = $$hbNativePath($$1)
-    dir = $$hbNativePath($$2)
-
-    contains(QMAKE_HOST.os, Windows):isEmpty(QMAKE_SH) {
-        chk_dir_exists = if not exist $$dir
-        mkdir = mkdir $$dir
-        copy = copy /y $$file $$dir
-    } else {
-        chk_dir_exists = test -d $$dir
-        mkdir = mkdir -p $$dir
-        copy = cp $$file $$dir
-    }
-
-    hbUnixStyle(): chk_dir_exists_mkdir = $$chk_dir_exists || $$mkdir
-    else:chk_dir_exists_mkdir = $$chk_dir_exists $$mkdir
-
-    return(($$chk_dir_exists_mkdir) && $$copy)
-}
+#
+#############################################################################
+##
+## Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (developer.feedback@nokia.com)
+##
+## This file is part of the UI Extensions for Mobile.
+##
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this file.
+## Please review the following information to ensure the GNU Lesser General
+## Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights.  These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at developer.feedback@nokia.com.
+##
+#############################################################################
+#
+
+defineReplace(hbLibraryTarget) {
+    unset(LIBRARY_NAME)
+    LIBRARY_NAME = $$1
+    # the following leads to ugly vcproj names but had to be commented
+    # out, because it broke vcproj generator dependency checks
+    #!debug_and_release|build_pass { <-- 
+        CONFIG(debug, debug|release) {
+            mac:RET = $$member(LIBRARY_NAME, 0)_debug
+            else:win32:RET = $$member(LIBRARY_NAME, 0)d
+        }
+    #}
+    isEmpty(RET):RET = $$LIBRARY_NAME
+    return($$RET)
+}
+
+# params: <collection/library>
+# eg. hbAddLibrary(hbcore/HbCore)
+defineTest(hbAddLibrary) {
+    PARTS = $$split(1, "/")
+    COLLECTION = $$lower($$first(PARTS))
+    LIBRARY = $$last(PARTS)
+
+    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}
+    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/restricted
+    INCLUDEPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/private
+    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}
+    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/restricted
+    DEPENDPATH *= $${HB_BUILD_DIR}/include/$${COLLECTION}/private
+
+    LIBS *= -L$${HB_BUILD_DIR}/lib
+    LIBS *= -l$$hbLibraryTarget($$LIBRARY)
+    unix:HB_COVERAGE_EXCLUDE += \"*/$$COLLECTION/*\"
+
+    export(LIBS)
+    export(INCLUDEPATH)
+    export(DEPENDPATH)
+    export(HB_COVERAGE_EXCLUDE)
+    return(true)
+}
+
+# params: <path>
+# eg. foo_path = $$hbStripDriveLetter($$PWD)/foo.txt
+defineReplace(hbStripDriveLetter) {
+    stripped_path = $$1
+    symbian {
+        contains(QMAKE_HOST.os, Windows) {
+            colons_found = $$find( stripped_path, "\\:" )
+            !isEmpty(colons_found) {
+                stripped_path = $$section(stripped_path, ":", 1)
+            }         
+        }
+    }
+    return($$stripped_path)
+}
+
+# params: <sourcepath> <targetpath>
+# e.g. hbPrjExport("$${PWD}/foo.txt", "$${EPOCROOT}epoc32/release/foo.txt")
+defineTest(hbPrjExport) {
+    BLD_INF_RULES.prj_exports += "$$hbStripDriveLetter($$1) $$hbStripDriveLetter($$2)"
+    export(BLD_INF_RULES.prj_exports)
+    return(true)
+}
+
+# params: <sourcepath> <targetpath>
+# e.g. hbToolExport("$${HB_BUILD_DIR}/bin/docml2bin", "$${HB_BIN_DIR}/docml2bin")
+defineTest(hbToolExport) {
+    contains(QMAKE_HOST.os, Windows) {
+        1 = "$${1}.exe"
+        2 = "$${2}.exe"
+    }
+    exists($$1) {
+        hbPrjExport($$1, $$2)
+        return(true)
+    }
+    return(false)
+}
+
+# params: <collection>
+# NOTE: exports PUBLIC_HEADERS, RESTRICTED_HEADERS and CONVENIENCE_HEADERS
+# eg. hbExportHeaders(hbcore)
+defineTest(hbExportHeaders) {
+    for(PUBLIC_HEADER, PUBLIC_HEADERS) {
+        contains(QMAKE_HOST.os, Windows):PUBLIC_HEADER = $$section(PUBLIC_HEADER, ":", 1)
+        EXPORT_PATH = $$sprintf($$HB_EXPORT_DIR, $$1, $$basename(PUBLIC_HEADER))
+        BLD_INF_RULES.prj_exports *= "$$PUBLIC_HEADER $$EXPORT_PATH"
+    }
+    for(RESTRICTED_HEADER, RESTRICTED_HEADERS) {
+        contains(QMAKE_HOST.os, Windows):RESTRICTED_HEADER = $$section(RESTRICTED_HEADER, ":", 1)
+        EXPORT_PATH = $$sprintf($$HB_RESTRICTED_EXPORT_DIR, $$1, $$basename(RESTRICTED_HEADER))
+        BLD_INF_RULES.prj_exports *= "$$RESTRICTED_HEADER $$EXPORT_PATH"
+    }
+    for(CONVENIENCE_HEADER, CONVENIENCE_HEADERS) {
+        contains(QMAKE_HOST.os, Windows):CONVENIENCE_HEADER = $$section(CONVENIENCE_HEADER, ":", 1)
+        EXPORT_PATH = $$sprintf($$HB_EXPORT_DIR, $$1, $$basename(CONVENIENCE_HEADER))
+        BLD_INF_RULES.prj_exports *= "$$CONVENIENCE_HEADER $$EXPORT_PATH"
+    }
+    export(BLD_INF_RULES.prj_exports)
+    return(true)
+}
+
+# params: -
+# eg. $$hbUnixStyle():CMD=/path/to/cmd else:CMD=\path\to\cmd
+defineTest(hbUnixStyle) {
+    contains(QMAKE_HOST.os, Windows):isEmpty(QMAKE_SH) {
+        unixstyle = false
+    } else {
+        unixstyle = true
+    }
+    return($$unixstyle)
+}
+
+# params: <path>
+# eg. features.path = $$hbNativePath($$[QMAKE_MKSPECS]/features)
+defineReplace(hbNativePath) {
+    contains(QMAKE_HOST.os, Windows) {
+        isEmpty(QMAKE_SH) {
+            1 = $$replace(1, \\\\, $$QMAKE_DIR_SEP)
+            1 = $$replace(1, /, $$QMAKE_DIR_SEP)
+        } else {
+            1 = $$replace(1, \\\\, /)
+            1 = $$replace(1, /, /)
+        }
+    } else {
+        1 = $$replace(1, \\\\, $$QMAKE_DIR_SEP)
+        1 = $$replace(1, /, $$QMAKE_DIR_SEP)
+    }
+    
+    return($$quote(\"$$1\"))
+}
+
+# params: <tool name>
+# eg. hbfoo.command = $$hbToolCommand(hbfoo)
+defineReplace(hbToolCommand) {
+    symbian {
+        # tool in PATH?
+        exists(/dev/null) {
+            DEVNULL = /dev/null
+        } else {
+            DEVNULL = nul
+        }
+        system($$1 > $$DEVNULL 2>&1):return($$1)
+
+        # host build is runnable?
+        !isEmpty(HB_BUILD_DIR) {
+            hbtoolcmd = $$hbNativePath($$HB_BUILD_DIR/bin/$$1)
+            system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
+        }
+
+        # tool in HB_BIN_DIR?
+        hbtoolcmd = $$hbNativePath($$HB_BIN_DIR/$$1)
+        system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
+
+        # pre-built tool is runnable?
+        hbtoolcmd = $$hbNativePath($$sprintf("%1%2", $$HB_SOURCE_DIR/bin/$$1, "_symbian.exe"))
+        system($$hbtoolcmd > $$DEVNULL 2>&1):return($$hbtoolcmd)
+    }
+
+    !isEmpty(HB_BUILD_DIR) {
+        # prefer <builddir>/bin
+        return($$hbNativePath($$HB_BUILD_DIR/bin/$$1))
+    } else {
+        # fall back to <bindir>
+        return($$hbNativePath($$HB_BIN_DIR/$$1))
+    }
+}
+
+# params: <file> <dir>
+defineReplace(hbCopyCommand) {
+    file = $$hbNativePath($$1)
+    dir = $$hbNativePath($$2)
+
+    contains(QMAKE_HOST.os, Windows):isEmpty(QMAKE_SH) {
+        chk_dir_exists = if not exist $$dir
+        mkdir = mkdir $$dir
+        copy = copy /y $$file $$dir
+    } else {
+        chk_dir_exists = test -d $$dir
+        mkdir = mkdir -p $$dir
+        copy = cp $$file $$dir
+    }
+
+    hbUnixStyle(): chk_dir_exists_mkdir = $$chk_dir_exists || $$mkdir
+    else:chk_dir_exists_mkdir = $$chk_dir_exists $$mkdir
+
+    return(($$chk_dir_exists_mkdir) && $$copy)
+}
+
+defineReplace(hbCreateDir) {
+    dir = $$hbNativePath($$1)
+
+    contains(QMAKE_HOST.os, Windows):isEmpty(QMAKE_SH) {
+        chk_dir_exists = if not exist $$dir
+        mkdir = mkdir $$dir
+    } else {
+        chk_dir_exists = test -d $$dir
+        mkdir = mkdir -p $$dir
+    }
+
+    hbUnixStyle(): chk_dir_exists_mkdir = $$chk_dir_exists || $$mkdir
+    else:chk_dir_exists_mkdir = $$chk_dir_exists $$mkdir
+
+    return($$chk_dir_exists_mkdir)
+}