From f0de149de54d9c058722161bc3d66a89fc7cce53 Mon Sep 17 00:00:00 2001 From: axis Date: Fri, 13 Nov 2009 11:13:00 +0100 Subject: Added automatic mangling of LIBS to include vtable exports. --- .../symbian/linux-armcc/features/default_post.prf | 78 ------------------ mkspecs/symbian/linux-armcc/features/qt.prf | 96 ++++++++++++++++++++++ mkspecs/symbian/linux-armcc/platformlibs.conf | 1 + mkspecs/symbian/linux-armcc/qmake.conf | 3 +- 4 files changed, 98 insertions(+), 80 deletions(-) delete mode 100644 mkspecs/symbian/linux-armcc/features/default_post.prf create mode 100644 mkspecs/symbian/linux-armcc/features/qt.prf create mode 100644 mkspecs/symbian/linux-armcc/platformlibs.conf diff --git a/mkspecs/symbian/linux-armcc/features/default_post.prf b/mkspecs/symbian/linux-armcc/features/default_post.prf deleted file mode 100644 index c570eba..0000000 --- a/mkspecs/symbian/linux-armcc/features/default_post.prf +++ /dev/null @@ -1,78 +0,0 @@ -isEmpty(DESTDIR) { - DESTDIR = . -} - -contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { - exports.commands = winewrapper getexports.exe ${QMAKE_FILE_NAME} > ${OBJECTS_DIR}${QMAKE_FILE_BASE}.exports - exports.output = $$OBJECTS_DIR/${QMAKE_FILE_BASE}.exports - exports.input = OBJECTS - exports.variable_out = ORDINALMAP - exports.CONFIG = no_link - - deffile.input = ORDINALMAP - deffile.output = $$OBJECTS_DIR/$${TARGET}.def - deffile.commands = makedeffile $$OBJECTS_DIR/$${TARGET}.def ${QMAKE_FILE_NAME} - deffile.variable_out = DEFFILE - deffile.CONFIG = no_link combine - - expfile.input = DEFFILE - expfile.output = $$OBJECTS_DIR/$${TARGET}.exp - expfile.commands = makeexpfile ${QMAKE_FILE_NAME} $$OBJECTS_DIR/$${TARGET}.exp - expfile.variable_out = QMAKE_LIBS - expfile.CONFIG = target_predeps - - ordinalmap.input = DEFFILE - ordinalmap.output = $$DESTDIR/$${TARGET}.lib - ordinalmap.commands = makeordinalmap $$OBJECTS_DIR ${QMAKE_FILE_NAME} $${TARGET}.dll $$DESTDIR/$${TARGET}.lib - ordinalmap.variable_out = PRE_TARGETDEPS - - !isEmpty($$QMAKE_POST_LINK):QMAKE_POST_LINK += && - QMAKE_POST_LINK += $$QMAKE_MOVE $$DESTDIR/$${TARGET}.dll $$DESTDIR/$${TARGET}.sym - QMAKE_POST_LINK += && winewrapper elftran.exe -version 4.1536 -sid 0xe001b2dc -allow -nocall -heap 0x00020000 0x00800000 -stack 0x00014000 -unpaged -uid1 0x10000079 -uid2 0x1000008d -uid3 0xe001b2dc -fpu softvfp -capability None $${DESTDIR}/$${TARGET}.sym $${DESTDIR}/$${TARGET}.dll - QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.sym - - QMAKE_EXTRA_COMPILERS += exports - QMAKE_EXTRA_COMPILERS += deffile - QMAKE_EXTRA_COMPILERS += expfile - QMAKE_EXTRA_COMPILERS += ordinalmap - - QMAKE_LIBS += -ledllstub -ledll.lib\\(uc_dll_.o\\) -} - -contains(TEMPLATE, app) { - QMAKE_POST_LINK += winewrapper elftran.exe -version 10.0 -sid 0xe4d10fc9 -nocall -heap 0x00020000 0x00800000 -stack 0x00014000 -unpaged -uid1 0x1000007a -uid2 0x1000008d -uid3 0xe4d10fc9 -fpu softvfp -capability None $${DESTDIR}/$${TARGET} $${DESTDIR}/$${TARGET}.tran - QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.tran - - QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\) -} - -# Symbian resource files - -linux-armcc:symbian_resources_INCLUDES = -I$$(RVCT22INC) -symbian_resources_INCLUDES = $$replace(symbian_resources_INCLUDES, ",", " -I") -symbian_resources_INCLUDES += $$join(INCLUDEPATH, " -I", "-I") -symbian_resources_DEFINES = $$join(DEFINES, " -D", "-D") -symbian_resources_RCC_DIR = $$replace(RCC_DIR, "/$", "") - -for(symbian_resource, SYMBIAN_RESOURCES) { - symbian_resource = $$basename(symbian_resource) - symbian_resource_clean = $$replace(symbian_resource, "\.rss$", ".rsc") - QMAKE_CLEAN += $${symbian_resources_RCC_DIR}/$${symbian_resource_clean} - symbian_resource_clean = $$replace(symbian_resource, "\.rss$", ".rpp") - QMAKE_CLEAN += $${symbian_resources_RCC_DIR}/$${symbian_resource_clean} -} - -symbianresources.input = SYMBIAN_RESOURCES -symbianresources.output = $$symbian_resources_RCC_DIR/${QMAKE_FILE_BASE}.rsg -symbianresources.commands = cpp -nostdinc -undef \ - $$symbian_resources_INCLUDES \ - $$symbian_resources_DEFINES \ - ${QMAKE_FILE_NAME} \ - -o $${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \ - && rcomp -s$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \ - -o$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rsc \ - -h$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rsg \ - -i${QMAKE_FILE_NAME} -symbianresources.CONFIG = target_predeps no_link - -QMAKE_EXTRA_COMPILERS += symbianresources diff --git a/mkspecs/symbian/linux-armcc/features/qt.prf b/mkspecs/symbian/linux-armcc/features/qt.prf new file mode 100644 index 0000000..50c219d --- /dev/null +++ b/mkspecs/symbian/linux-armcc/features/qt.prf @@ -0,0 +1,96 @@ +load(qt) + +isEmpty(DESTDIR) { + DESTDIR = . +} + +for(libraries, LIBS) { + isLib = $$find(libraries, \.lib) + isEmpty(isLib) { + LIBS += $${libraries}.lib\\(VtblExports.o\\) + } +} +for(libraries, QMAKE_LIBS) { + isLib = $$find(libraries, \.lib) + isEmpty(isLib) { + QMAKE_LIBS += $${libraries}.lib\\(VtblExports.o\\) + } +} + +# This needs to be done after the above LIBS mangling. +include(../platformlibs.conf) + +contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { + exports.commands = winewrapper getexports.exe ${QMAKE_FILE_NAME} > ${OBJECTS_DIR}${QMAKE_FILE_BASE}.exports + exports.output = $$OBJECTS_DIR/${QMAKE_FILE_BASE}.exports + exports.input = OBJECTS + exports.variable_out = ORDINALMAP + exports.CONFIG = no_link + + deffile.input = ORDINALMAP + deffile.output = $$OBJECTS_DIR/$${TARGET}.def + deffile.commands = makedeffile $$OBJECTS_DIR/$${TARGET}.def ${QMAKE_FILE_NAME} + deffile.variable_out = DEFFILE + deffile.CONFIG = no_link combine + + expfile.input = DEFFILE + expfile.output = $$OBJECTS_DIR/$${TARGET}.exp + expfile.commands = makeexpfile ${QMAKE_FILE_NAME} $$OBJECTS_DIR/$${TARGET}.exp + expfile.variable_out = QMAKE_LIBS + expfile.CONFIG = target_predeps + + ordinalmap.input = DEFFILE + ordinalmap.output = $$DESTDIR/$${TARGET}.lib + ordinalmap.commands = makeordinalmap $$OBJECTS_DIR ${QMAKE_FILE_NAME} $${TARGET}.dll $$DESTDIR/$${TARGET}.lib + ordinalmap.variable_out = PRE_TARGETDEPS + + !isEmpty($$QMAKE_POST_LINK):QMAKE_POST_LINK += && + QMAKE_POST_LINK += $$QMAKE_MOVE $$DESTDIR/$${TARGET}.dll $$DESTDIR/$${TARGET}.sym + QMAKE_POST_LINK += && winewrapper elftran.exe -version 4.1536 -sid 0xe001b2dc -allow -nocall -heap 0x00020000 0x00800000 -stack 0x00014000 -unpaged -uid1 0x10000079 -uid2 0x1000008d -uid3 0xe001b2dc -fpu softvfp -capability None $${DESTDIR}/$${TARGET}.sym $${DESTDIR}/$${TARGET}.dll + QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.sym + + QMAKE_EXTRA_COMPILERS += exports + QMAKE_EXTRA_COMPILERS += deffile + QMAKE_EXTRA_COMPILERS += expfile + QMAKE_EXTRA_COMPILERS += ordinalmap + + QMAKE_LIBS += -ledllstub -ledll.lib\\(uc_dll_.o\\) +} + +contains(TEMPLATE, app) { + QMAKE_POST_LINK += winewrapper elftran.exe -version 10.0 -sid 0xe4d10fc9 -nocall -heap 0x00020000 0x00800000 -stack 0x00014000 -unpaged -uid1 0x1000007a -uid2 0x1000008d -uid3 0xe4d10fc9 -fpu softvfp -capability None $${DESTDIR}/$${TARGET} $${DESTDIR}/$${TARGET}.tran + QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.tran + + QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\) +} + +# Symbian resource files + +linux-armcc:symbian_resources_INCLUDES = -I$$(RVCT22INC) +symbian_resources_INCLUDES = $$replace(symbian_resources_INCLUDES, ",", " -I") +symbian_resources_INCLUDES += $$join(INCLUDEPATH, " -I", "-I") +symbian_resources_DEFINES = $$join(DEFINES, " -D", "-D") +symbian_resources_RCC_DIR = $$replace(RCC_DIR, "/$", "") + +for(symbian_resource, SYMBIAN_RESOURCES) { + symbian_resource = $$basename(symbian_resource) + symbian_resource_clean = $$replace(symbian_resource, "\.rss$", ".rsc") + QMAKE_CLEAN += $${symbian_resources_RCC_DIR}/$${symbian_resource_clean} + symbian_resource_clean = $$replace(symbian_resource, "\.rss$", ".rpp") + QMAKE_CLEAN += $${symbian_resources_RCC_DIR}/$${symbian_resource_clean} +} + +symbianresources.input = SYMBIAN_RESOURCES +symbianresources.output = $$symbian_resources_RCC_DIR/${QMAKE_FILE_BASE}.rsg +symbianresources.commands = cpp -nostdinc -undef \ + $$symbian_resources_INCLUDES \ + $$symbian_resources_DEFINES \ + ${QMAKE_FILE_NAME} \ + -o $${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \ + && rcomp -s$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \ + -o$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rsc \ + -h$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rsg \ + -i${QMAKE_FILE_NAME} +symbianresources.CONFIG = target_predeps no_link + +QMAKE_EXTRA_COMPILERS += symbianresources diff --git a/mkspecs/symbian/linux-armcc/platformlibs.conf b/mkspecs/symbian/linux-armcc/platformlibs.conf new file mode 100644 index 0000000..9ef31dc --- /dev/null +++ b/mkspecs/symbian/linux-armcc/platformlibs.conf @@ -0,0 +1 @@ +QMAKE_LIBS += -lusrt2_2 -ldfpaeabi -ldfprvct2_2.lib -ldrtaeabi -ldrtaeabi.lib\\(VtblExports.o\\) -lscppnwdl -ldrtrvct2_2 diff --git a/mkspecs/symbian/linux-armcc/qmake.conf b/mkspecs/symbian/linux-armcc/qmake.conf index 577c4e2..8639367 100644 --- a/mkspecs/symbian/linux-armcc/qmake.conf +++ b/mkspecs/symbian/linux-armcc/qmake.conf @@ -39,7 +39,6 @@ DEFINES += __SYMBIAN32__ EKA2 __S60_50__ __S60_3X__ __SERIES60_3X__ INCLUDEPATH += $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off # ### FIXME Move these to proper locations. -QMAKE_LIBS += -llibc -llibm -leuser -llibdl -llibpthread -lefsrv -llibstdcpp -llibc.lib\\(VtblExports.o\\) -llibm.lib\\(VtblExports.o\\) -leuser.lib\\(VtblExports.o\\) -llibdl.lib\\(VtblExports.o\\) -llibpthread.lib\\(VtblExports.o\\) -lefsrv.lib\\(VtblExports.o\\) -llibstdcpp.lib\\(VtblExports.o\\) -QMAKE_LIBS += -lusrt2_2 -ldfpaeabi -ldfprvct2_2.lib -ldrtaeabi -ldrtaeabi.lib\\(VtblExports.o\\) -lscppnwdl -ldrtrvct2_2 +QMAKE_LIBS += -llibc -llibm -leuser -llibdl -llibpthread -lefsrv -llibstdcpp include(../../common/unix.conf) -- cgit v0.12