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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
load(qt)
isEmpty(DESTDIR) {
DESTDIR = .
}
for(libraries, LIBS) {
isFullName = $$find(libraries, \.)
isEmpty(isFullName) {
newLIBS += "$${libraries}.dso"
} else {
newLIBS += "$${libraries}"
}
}
LIBS = $$newLIBS
newLIBS =
for(libraries, QMAKE_LIBS) {
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"
}
# 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, ".")
# Default Symbian version if none is specified.
isEmpty(splitVersion):splitVersion = 10
hexVersion = "00"
versionPart = 1
versionPart1 = 10
versionPart2 = 0
versionPart3 = 0
for(verNumber, splitVersion) {
# Poor man's printf
hexVersion = $$hexVersion$$system("sh -c 'printf %02x $$verNumber'")
contains(versionPart, 3) {
versionPart3 = $$verNumber
versionPart = 4
}
contains(versionPart, 2) {
versionPart2 = $$verNumber
versionPart = 3
}
contains(versionPart, 1) {
versionPart1 = $$verNumber
versionPart = 2
}
}
!contains(hexVersion, "[0-9a-z]{8}"):hexVersion = "$${hexVersion}00"
!contains(hexVersion, "[0-9a-z]{8}"):hexVersion = "$${hexVersion}00"
decVersion = $$sprintf("%1.%2", $$versionPart1, $$system("sh -c 'echo \$[$$versionPart2 * 256 + $$versionPart3]'"))
intUid3 = $$lower($$replace(TARGET.UID3, "^0x", ""))
isEmpty(TARGET.SID):TARGET.SID = $$TARGET.UID3
isEmpty(TARGET.UID2):TARGET.UID2 = 0x00000000
contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) {
!isEmpty($$QMAKE_POST_LINK):QMAKE_POST_LINK += &&
QMAKE_POST_LINK += $$QMAKE_MOVE $$DESTDIR/$${TARGET}.dll $$DESTDIR/$${TARGET}.sym
QMAKE_POST_LINK += && elf2e32 --version=$$decVersion --sid=$$TARGET.SID --uid1=0x10000079 --uid2=$$TARGET.UID2 --uid3=$$TARGET.UID3 --dlldata --heap=0x00020000,0x00800000 --stack=0x00014000 --capability=None --fpu=softvfp --targettype=DLL --elfinput=$${DESTDIR}/$${TARGET}.sym --output=$${DESTDIR}/$${TARGET}.dll --dso=$$DESTDIR/$${TARGET}.dso --defoutput=$$OBJECTS_DIR/$${TARGET}.def --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged
QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.sym
QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.dso
QMAKE_CLEAN += $${OBJECTS_DIR}/$${TARGET}.def
QMAKE_LIBS += -ledllstub.lib -ledll.lib\\(uc_dll_.o\\)
QMAKE_LFLAGS += --symver_soname --soname $${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll
}
contains(TEMPLATE, app) {
!isEmpty($$QMAKE_POST_LINK):QMAKE_POST_LINK += &&
QMAKE_POST_LINK += $$QMAKE_MOVE $$DESTDIR/$${TARGET} $$DESTDIR/$${TARGET}.sym
QMAKE_POST_LINK += && elf2e32 --version $$decVersion --sid=$$TARGET.SID --uid1=0x1000007a --uid2=$$TARGET.UID2 --uid3=$$TARGET.UID3 --dlldata --heap=0x00020000,0x00800000 --stack=0x00014000 --capability=None --fpu=softvfp --targettype=EXE --elfinput=$${DESTDIR}/$${TARGET}.sym --output=$${DESTDIR}/$${TARGET}.exe --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged
QMAKE_DISTCLEAN += $${DESTDIR}/$${TARGET}.exe
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_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 -u -m045,046,047 \
-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.dependency_type = TYPE_C
symbianresources.CONFIG = no_link
QMAKE_EXTRA_COMPILERS += symbianresources
|