summaryrefslogtreecommitdiffstats
path: root/mkspecs/symbian-gcce/qmake.conf
blob: 02ad626fe5b881077130abbb139a945853598fc9 (plain)
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
94
95
96
#
# 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	+= -Wl,--no-undefined
QMAKE_LFLAGS_RPATH	= --rpath=

DEFINES		+= __GCCE__ \
                   UNICODE \
                   _STLP_NO_EXCEPTION_HEADER

QMAKE_LFLAGS_APP        += --entry=_E32Startup -u _E32Startup
QMAKE_LFLAGS_SHLIB      += -shared --default-symver --entry _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)
for(line, QMAKE_GCC_SEARCH_DIRS) {
    contains(line, "libraries:") {
        foundIt="1"
    } else {
        contains(foundIt, "1") {
            QMAKE_LFLAGS += $$replace(line, "[=:]", " -L")
        }
    }
}

QMAKE_LIBDIR += $${EPOCROOT}/epoc32/release/armv5/lib

INCLUDEPATH = ${EPOCROOT}/epoc32/include/ \
    $${EPOCROOT}/epoc32/include/variant \
    $${EPOCROOT}/epoc32/include/stdapis \
    $${EPOCROOT}/epoc32/include/gcce \
    ${EPOCROOT}/epoc32/include/stdapis/sys \
    ${EPOCROOT}/epoc32/include/stdapis/stlport \
    $$INCLUDEPATH