1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
#
# qmake configuration for symbian-gcce
#
include(../common/symbian/symbian-makefile.conf)
include(../common/g++-unix.conf)
include(../common/gcc-base-unix.conf)
QMAKE_CC = arm-none-symbianelf-gcc
QMAKE_CXX = arm-none-symbianelf-g++
QMAKE_LINK = arm-none-symbianelf-ld
QMAKE_LINK_SHLIB = arm-none-symbianelf-ld
QMAKE_LINK_C = arm-none-symbianelf-ld
QMAKE_LINK_C_SHLIB = arm-none-symbianelf-ld
QMAKE_AR = arm-none-symbianelf-ar cqs
# gcce defaults to 'arm' instruction set. Lets use the better 'thumb' if possible
# notice that the middle part of the following set of vars matches the TARGET content of the libs
QMAKE_qtmain_CXXFLAGS = -mthumb
QMAKE_QtCore_CXXFLAGS = -mthumb
QMAKE_QtGui_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
QMAKE_QtDBus_CXXFLAGS = -mthumb
QMAKE_QtDeclarative_CXXFLAGS = -mthumb
QMAKE_QtMultimedia_CXXFLAGS = -mthumb
QMAKE_QtNetwork_CXXFLAGS = -mthumb
QMAKE_QtOpenGL_CXXFLAGS = -mthumb
QMAKE_QtOpenVG_CXXFLAGS = -mthumb
QMAKE_phonon_CXXFLAGS = -mthumb
QMAKE_QtScript_CXXFLAGS = -mthumb
QMAKE_QtScriptTools_CXXFLAGS = -mthumb
QMAKE_QtSql_CXXFLAGS = -mthumb
QMAKE_QtSvg_CXXFLAGS = -mthumb
QMAKE_QtTest_CXXFLAGS = -mthumb
QMAKE_QtXmlPatterns_CXXFLAGS = -mthumb
QMAKE_QtXml_CXXFLAGS = -mthumb
#TODO fails with; arm-none-symbianelf-ld: section .data loaded at [00e00000,00e05973] overlaps section .text loaded at [00008000,00fe748b]
QMAKE_QtWebKit_LFLAGS = -Ttext 0x8000 -Tdata 0xE00000
# never use -fPIC, gcce-linker doesn't like it.
# g++ conf above adds it if the host platform is 64 bit, so we remove it again
QMAKE_CFLAGS_SHLIB -= -fPIC
QMAKE_CFLAGS_STATIC_LIB -= -fPIC
QMAKE_CXXFLAGS_SHLIB -= -fPIC
QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC
QMAKE_LFLAGS_SONAME =
#QMAKE_LFLAGS_THREAD +=
QMAKE_LFLAGS_NOUNDEF =
QMAKE_LFLAGS_RPATH = --rpath=
DEFINES += __GCCE__ \
UNICODE
QMAKE_LFLAGS_APP += --entry=_E32Startup -u _E32Startup
QMAKE_LFLAGS_SHLIB += -shared --default-symver --entry _E32Dll -u _E32Dll
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
gcceExtraFlags = --include=$${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
QMAKE_CFLAGS += $${gcceExtraFlags}
QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden
#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
isEmpty(QT):contains(TEMPLATE, app) {
QMAKE_CXXFLAGS += --include=$${EPOCROOT}epoc32/include/stdapis/staticlibinit_gcce.h
}
QMAKE_LFLAGS += --target1-abs \
--no-undefined \
--nostdlib
QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/udeb/
# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
QMAKE_GCC_SEARCH_DIRS = $$system($$QMAKE_CXX -print-search-dirs)
QMAKE_GCC_SEARCH_DIRS = "$$join(QMAKE_GCC_SEARCH_DIRS, " ")"
QMAKE_GCC_SEARCH_DIRS = $$replace(QMAKE_GCC_SEARCH_DIRS, ".*libraries: *", "")
QMAKE_GCC_SEARCH_DIRS = $$replace(QMAKE_GCC_SEARCH_DIRS, "=", "")
contains(QMAKE_HOST.os,Windows) {
QMAKE_GCC_SEARCH_DIRS = $$split(QMAKE_GCC_SEARCH_DIRS, ;)
} else {
QMAKE_GCC_SEARCH_DIRS = $$split(QMAKE_GCC_SEARCH_DIRS, :)
}
for(line, QMAKE_GCC_SEARCH_DIRS):QMAKE_LIBDIR += $$line
QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
INCLUDEPATH = $${EPOCROOT}epoc32/include/ \
$${EPOCROOT}epoc32/include/variant \
$${EPOCROOT}epoc32/include/stdapis \
$${EPOCROOT}epoc32/include/gcce \
$$INCLUDEPATH
|