diff -r 7516d6d86cf5 -r ed14f46c0e55 mkspecs/hb_functions.prf --- 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: -# 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: -# 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: -# 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: -# 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 /bin - return($$hbNativePath($$HB_BUILD_DIR/bin/$$1)) -} - -# params: -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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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: +# 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 /bin + return($$hbNativePath($$HB_BUILD_DIR/bin/$$1)) + } else { + # fall back to + return($$hbNativePath($$HB_BIN_DIR/$$1)) + } +} + +# params: +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) +}