summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorThomas Zander <t.zander@nokia.com>2010-02-22 12:52:39 (GMT)
committerThomas Zander <t.zander@nokia.com>2010-02-24 17:20:06 (GMT)
commit9f0899d86afcc2304c9de824c43e363d2a881339 (patch)
treed15ed8c121a1283589c9748ba7314e90430b314c /mkspecs
parenta670009fd378d48ff891602ec31204614e8a476f (diff)
downloadQt-9f0899d86afcc2304c9de824c43e363d2a881339.zip
Qt-9f0899d86afcc2304c9de824c43e363d2a881339.tar.gz
Qt-9f0899d86afcc2304c9de824c43e363d2a881339.tar.bz2
Clone the symbian/armcc mkspec for symbian/gcce. Very first start.
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/common/symbian/symbian-makefile.conf12
-rw-r--r--mkspecs/symbian/linux-armcc/features/symbian_building.prf13
-rw-r--r--mkspecs/symbian/linux-gcce/features/default_post.prf5
-rw-r--r--mkspecs/symbian/linux-gcce/features/qt.prf29
-rw-r--r--mkspecs/symbian/linux-gcce/features/symbian_building.prf207
-rw-r--r--mkspecs/symbian/linux-gcce/platformlibs.conf1
-rw-r--r--mkspecs/symbian/linux-gcce/qmake.conf16
-rw-r--r--mkspecs/symbian/linux-gcce/qplatformdefs.h2
8 files changed, 271 insertions, 14 deletions
diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf
index c8a88dd..8c2bb35 100644
--- a/mkspecs/common/symbian/symbian-makefile.conf
+++ b/mkspecs/common/symbian/symbian-makefile.conf
@@ -13,18 +13,6 @@ QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
-QMAKE_CFLAGS += --dllimport_runtime --preinclude rvct2_2.h --diag_suppress 186,654,1300 --thumb --fpu softvfp --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --no_parse_templates
-QMAKE_LFLAGS += --diag_suppress 6331,6780 --bpabi --reloc --datacompressor=off --split --rw-base 0x800000 --dll --no_scanlib
-QMAKE_LFLAGS_APP += --entry _E32Startup
-QMAKE_LFLAGS_SHLIB += --entry _E32Dll
-QMAKE_CFLAGS_DEBUG += -g
-QMAKE_CXXFLAGS_DEBUG += -g
-QMAKE_CFLAGS_RELEASE += -O2 -Otime
-QMAKE_CXXFLAGS_RELEASE += -O2 -Otime
-
-DEFINES += __SYMBIAN32__ EKA2 __S60_50__ __S60_3X__ __SERIES60_3X__ __EPOC32__ __MARM__ __EABI__ __ARMCC__ __ARMcc_2__ __ARMCC_2_2__ __MARM_ARMV5__ __MARM_INTERWORK__ __DLL__ _UNICODE __SUPPORT_CPP_EXCEPTIONS__
-
include(../../common/unix.conf)
QMAKE_PREFIX_SHLIB =
diff --git a/mkspecs/symbian/linux-armcc/features/symbian_building.prf b/mkspecs/symbian/linux-armcc/features/symbian_building.prf
index b0185d0..41d4325 100644
--- a/mkspecs/symbian/linux-armcc/features/symbian_building.prf
+++ b/mkspecs/symbian/linux-armcc/features/symbian_building.prf
@@ -1,5 +1,14 @@
-QMAKE_CFLAGS += $$QMAKE_CFLAGS.ARMCC
-QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS.ARMCC
+QMAKE_CFLAGS += --dllimport_runtime --preinclude rvct2_2.h --diag_suppress 186,654,1300 --thumb --fpu softvfp --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter $$QMAKE_CFLAGS.ARMCC
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --no_parse_templates $$QMAKE_CXXFLAGS.ARMCC
+QMAKE_LFLAGS += --diag_suppress 6331,6780 --bpabi --reloc --datacompressor=off --split --rw-base 0x800000 --dll --no_scanlib
+QMAKE_LFLAGS_APP += --entry _E32Startup
+QMAKE_LFLAGS_SHLIB += --entry _E32Dll
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CXXFLAGS_DEBUG += -g
+QMAKE_CFLAGS_RELEASE += -O2 -Otime
+QMAKE_CXXFLAGS_RELEASE += -O2 -Otime
+
+DEFINES += __SYMBIAN32__ EKA2 __S60_50__ __S60_3X__ __SERIES60_3X__ __EPOC32__ __MARM__ __EABI__ __ARMCC__ __ARMcc_2__ __ARMCC_2_2__ __MARM_ARMV5__ __MARM_INTERWORK__ __DLL__ _UNICODE __SUPPORT_CPP_EXCEPTIONS__
symbianObjdir=$$OBJECTS_DIR
isEmpty(symbianObjdir) {
diff --git a/mkspecs/symbian/linux-gcce/features/default_post.prf b/mkspecs/symbian/linux-gcce/features/default_post.prf
new file mode 100644
index 0000000..7aa1f4d
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/features/default_post.prf
@@ -0,0 +1,5 @@
+load(default_post.prf)
+
+# It is important that this config be executed last,
+# and qmake does them in reverse order.
+CONFIG = symbian_building $$CONFIG
diff --git a/mkspecs/symbian/linux-gcce/features/qt.prf b/mkspecs/symbian/linux-gcce/features/qt.prf
new file mode 100644
index 0000000..7c97368
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/features/qt.prf
@@ -0,0 +1,29 @@
+QMAKE_LIBDIR_QT += $${EPOCROOT}epoc32/release/armv5/lib
+
+INCLUDEPATH = $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $${EPOCROOT}epoc32/include/gcce \
+ ${EPOCROOT}epoc32/include/stdapis/sys \
+ ${EPOCROOT}epoc32/include/stdapis/stlport \
+ $$INCLUDEPATH
+
+DEFINES *= __PRODUCT_INCLUDE__=\<$${EPOCROOT}epoc32/include/variant/symbian_os.hrh\> \
+ __SYMBIAN32__ \
+ __MARM_THUMB__ \
+ __MARM_INTERWORK__ \
+ NDEBUG \
+ _UNICODE \
+ __S60_50__ \
+ __S60_3X__ \
+ __SERIES60_3X__ \
+ __GCCE__ \
+ __EPOC32__ \
+ __MARM__ \
+ __EABI__ \
+ __MARM_ARMV5__ \
+ __EXE__ \
+ UNICODE \
+ _STLP_NO_EXCEPTION_HEADER \
+ __SUPPORT_CPP_EXCEPTIONS__
+
+load(qt)
diff --git a/mkspecs/symbian/linux-gcce/features/symbian_building.prf b/mkspecs/symbian/linux-gcce/features/symbian_building.prf
new file mode 100644
index 0000000..3e5324f
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/features/symbian_building.prf
@@ -0,0 +1,207 @@
+gcceExtraFlags = --include=${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -fvisibility-inlines-hidden -mthumb -msoft-float -T script
+QMAKE_CFLAGS += $${gcceExtraFlags}
+QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time
+
+# QMAKE_CFLAGS += --dllimport_runtime --preinclude rvct2_2.h --diag_suppress 186,654,1300 --thumb --fpu softvfp --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter $$QMAKE_CFLAGS.ARMCC
+# QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --no_parse_templates $$QMAKE_CXXFLAGS.ARMCC
+# QMAKE_LFLAGS += --diag_suppress 6331,6780 --bpabi --reloc --datacompressor=off --split --rw-base 0x800000 --dll --no_scanlib
+# QMAKE_LFLAGS_APP += --entry _E32Startup
+# QMAKE_LFLAGS_SHLIB += --entry _E32Dll
+# QMAKE_CFLAGS_DEBUG += -g
+# QMAKE_CXXFLAGS_DEBUG += -g
+# QMAKE_CFLAGS_RELEASE += -O2 -Otime
+# QMAKE_CXXFLAGS_RELEASE += -O2 -Otime
+#
+
+symbianObjdir=$$OBJECTS_DIR
+isEmpty(symbianObjdir) {
+ symbianObjdir = .
+}
+symbianDestdir=$$DESTDIR
+isEmpty(symbianDestdir) {
+ symbianDestdir = .
+}
+
+contains(QMAKE_CFLAGS, "--thumb")|contains(QMAKE_CXXFLAGS, "--thumb") {
+ DEFINES += __MARM_THUMB__
+}
+
+for(libraries, LIBS) {
+ libraries = $$replace(libraries, "\.dll$", ".dso")
+ isFullName = $$find(libraries, \.)
+ isEmpty(isFullName) {
+ newLIBS += "$${libraries}.dso"
+ } else {
+ newLIBS += "$${libraries}"
+ }
+}
+LIBS = $$newLIBS
+newLIBS =
+for(libraries, QMAKE_LIBS) {
+ libraries = $$replace(libraries, "\.dll$", ".dso")
+ isFullName = $$find(libraries, \.)
+ isEmpty(isFullName) {
+ newLIBS += "$${libraries}.dso"
+ } else {
+ newLIBS += "$${libraries}"
+ }
+}
+QMAKE_LIBS = $$newLIBS
+
+# This needs to be done after the above LIBS mangling.
+include(../platformlibs.conf)
+
+elf2e32_LIBPATH =
+for(libPath, QMAKE_LIBDIR) {
+ elf2e32_LIBPATH += "--libpath=$$libPath"
+}
+
+isEmpty(VERSION) {
+ VERSION = $$QT_VERSION
+}
+
+# Check for version validity.
+!isEmpty(VERSION):!contains(VERSION, "[0-9]+"):!contains(VERSION, "[0-9]+\.[0-9]+")!contains(VERSION, "[0-9]+(\.[0-9]+){2}") {
+ error("Invalid VERSION for Symbian: $$VERSION")
+}
+
+splitVersion = $$split(VERSION, ".")
+count(splitVersion, 1) {
+ # Default Symbian version if none is specified.
+ hexVersion = "000a0000"
+ decVersion = "10.0"
+} else {
+ count(splitVersion, 3) {
+ hexVersion = $$system("sh -c 'printf %02x $$member(splitVersion, 0)'")
+ hexPart2 = $$system("sh -c 'printf %02x $$member(splitVersion, 1)'")"
+ hexPart2 = $$hexPart2$$system("sh -c 'printf %02x $$member(splitVersion, 2)'")"
+ decVersion = $$system("sh -c 'printf %1d 0x$$hexVersion'").
+ hexVersion = $$hexVersion$$hexPart2
+ decVersion = $$decVersion$$system("sh -c 'printf %d 0x$$hexPart2'")
+ !contains(hexVersion, "[0-9a-f]{8}"):hexVersion = "00$${hexVersion}"
+ } else { # app code may have different numbering...
+ hexVersion = $$VERSION
+ decVersion = $$VERSION
+ }
+}
+#error ("hexVersion: $$hexVersion, decVersion: $$decVersion")
+
+intUid3 = $$lower($$replace(TARGET.UID3, "^0x", ""))
+isEmpty(TARGET.SID):TARGET.SID = $$TARGET.UID3
+isEmpty(TARGET.UID2):TARGET.UID2 = 0x00000000
+
+capability = $$replace(TARGET.CAPABILITY, " ", "+")
+capability = $$join(capability, "+")
+capability = $$replace(capability, "\+-", "-")
+isEmpty(capability): capability = "None"
+capability = "--capability=$$capability"
+
+contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
+ !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += &&
+ QMAKE_POST_LINK += $$QMAKE_MOVE $$symbianDestdir/$${TARGET}.dll $$symbianDestdir/$${TARGET}.sym
+ # the tee and grep at the end work around the issue that elf2e32 doesn't return non-null on error
+ QMAKE_POST_LINK += && elf2e32 --version=$$decVersion --sid=$$TARGET.SID --uid1=0x10000079 --uid2=$$TARGET.UID2 --uid3=$$TARGET.UID3 --dlldata --heap=0x00020000,0x00800000 --stack=0x00014000 --fpu=softvfp --targettype=DLL --elfinput=$${symbianDestdir}/$${TARGET}.sym --output=$${symbianDestdir}/$${TARGET}.dll --dso=$$symbianDestdir/$${TARGET}.dso --defoutput=$$symbianObjdir/$${TARGET}.def --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged $$capability | tee elf2e32.log && test `grep -c 'Error:' elf2e32.log` = 0 && rm elf2e32.log
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.sym
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.dso
+ QMAKE_CLEAN += $${symbianObjdir}/$${TARGET}.def
+
+ QMAKE_LIBS += -ledllstub.lib -ledll.lib\\(uc_dll_.o\\)
+
+ QMAKE_LFLAGS += --symver_soname --soname $${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll
+}
+
+contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@.*") {
+ !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += &&
+
+ QMAKE_POST_LINK += $$QMAKE_MOVE $$symbianDestdir/$${TARGET} $$symbianDestdir/$${TARGET}.sym
+ # the tee and grep at the end work around the issue that elf2e32 doesn't return non-null on error
+ QMAKE_POST_LINK += && elf2e32 --version $$decVersion --sid=$$TARGET.SID --uid1=0x1000007a --uid2=$$TARGET.UID2 --uid3=$$TARGET.UID3 --dlldata --heap=0x00020000,0x00800000 --stack=0x00014000 --fpu=softvfp --targettype=EXE --elfinput=$${symbianDestdir}/$${TARGET}.sym --output=$${symbianDestdir}/$${TARGET}.exe --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged $$capability | tee elf2e32.log && test `grep -c 'Error:' elf2e32.log` = 0 && rm elf2e32.log
+ QMAKE_POST_LINK += && ln "$${TARGET}.exe" "$$TARGET"
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.sym
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.exe
+ QMAKE_CLEAN += $${symbianDestdir}/$${TARGET}
+
+ QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\)
+
+ QMAKE_LFLAGS += --symver_soname --soname $${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe
+}
+
+# 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, "/$", "")
+symbian_resources_INCLUDES += "-I $$symbian_resources_RCC_DIR"
+
+for(symbian_resource, SYMBIAN_RESOURCES) {
+ symbian_resource = $$basename(symbian_resource)
+ symbian_resource_clean = $$replace(symbian_resource, "\.rss$", ".rsc")
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${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 -u -m045,046,047 \
+ -s$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rpp \
+ -o$${symbianDestdir}/${QMAKE_FILE_BASE}.rsc \
+ -h$${symbian_resources_RCC_DIR}/${QMAKE_FILE_BASE}.rsg \
+ -i${QMAKE_FILE_NAME}
+symbianresources.dependency_type = TYPE_C
+symbianresources.CONFIG = no_link target_predeps
+
+QMAKE_EXTRA_COMPILERS += symbianresources
+
+contains(TEMPLATE, "app"):!contains(CONFIG, "no_icon") {
+ baseTarget = $$basename(TARGET)
+ baseTarget = $$replace(baseTarget, -,_)
+ baseTarget = $$replace(baseTarget, :,_)
+ baseTarget = $$replace(baseTarget, \.,_)
+ baseTarget = $$replace(baseTarget, " ",_)
+
+ # Make our own extra compiler target in order to get dependencies for generated
+ # files right. This also avoids the warning about files not found.
+ symbianGenResource.inputFile = $${baseTarget}.rss
+ symbianGenResource.input = symbianGenResource.inputFile
+ # Reuse the command from earlier.
+ symbianGenResource.commands = $$symbianresources.commands
+ symbianGenResource.output = $$symbianresources.output
+ symbianGenResource.CONFIG = no_link target_predeps
+
+ symbianGenRegResource.inputFile = $${baseTarget}_reg.rss
+ symbianGenRegResource.input = symbianGenRegResource.inputFile
+ symbianGenRegResource.commands = $$symbianresources.commands
+ symbianGenRegResource.output = $$symbianresources.output
+ symbianGenRegResource.CONFIG = no_link target_predeps
+ symbianGenRegResource.depends = $${symbian_resources_RCC_DIR}/$${baseTarget}.rsg
+
+ QMAKE_EXTRA_COMPILERS += symbianGenResource symbianGenRegResource
+
+ QMAKE_DISTCLEAN += $${TARGET}.rss
+ QMAKE_DISTCLEAN += $${TARGET}.rsc
+ QMAKE_DISTCLEAN += $${TARGET}_reg.rss
+ QMAKE_DISTCLEAN += $${TARGET}_reg.rsc
+ QMAKE_DISTCLEAN += $${TARGET}.loc
+}
+
+# Generated pkg files
+
+QMAKE_DISTCLEAN += $${TARGET}_template.pkg
+
+# Pre 2.6.23 Linux kernels have a limit on the environment size that can be passed to
+# a forked process. We quite easily overstep this boundary when building big projects
+# on Symbian, and since we depend on running the system() command, this causes the build
+# to fail. Test here that system() can be successfully run. It is important that this
+# check happens as late as possible, otherwise it will not be caught.
+execve_sanity_test = $$system("echo testing")
+!contains(execve_sanity_test, "testing") {
+ error("Running system() failed. Maybe your kernel is too old? (Linux kernels need at least version 2.6.23)")
+}
diff --git a/mkspecs/symbian/linux-gcce/platformlibs.conf b/mkspecs/symbian/linux-gcce/platformlibs.conf
new file mode 100644
index 0000000..0a74ba9
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/platformlibs.conf
@@ -0,0 +1 @@
+QMAKE_LIBS += -lusrt2_2.lib -ldfpaeabi.dso -ldrtaeabi.dso -lscppnwdl.dso :lh_t__uf.l\\(switch8.o\\)
diff --git a/mkspecs/symbian/linux-gcce/qmake.conf b/mkspecs/symbian/linux-gcce/qmake.conf
new file mode 100644
index 0000000..e4b08c1
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/qmake.conf
@@ -0,0 +1,16 @@
+#
+# qmake configuration for symbian/linux-gcce
+#
+
+include(../../common/symbian/symbian-makefile.conf)
+
+include(../../common/g++.conf)
+
+QMAKE_CC = arm-none-symbianelf-gcc
+QMAKE_CXX = arm-none-symbianelf-g++
+QMAKE_LINK = arm-none-symbianelf-g++
+QMAKE_LINK_SHLIB = arm-none-symbianelf-g++
+QMAKE_LINK_C = arm-none-symbianelf-gcc
+QMAKE_LINK_C_SHLIB = arm-none-symbianelf-gcc
+QMAKE_AR = arm-none-symbianelf-ar cqs
+
diff --git a/mkspecs/symbian/linux-gcce/qplatformdefs.h b/mkspecs/symbian/linux-gcce/qplatformdefs.h
new file mode 100644
index 0000000..4a658c5
--- /dev/null
+++ b/mkspecs/symbian/linux-gcce/qplatformdefs.h
@@ -0,0 +1,2 @@
+#include "../../common/symbian/qplatformdefs.h"
+