summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mkspecs/common/symbian/symbian.conf21
-rw-r--r--qmake/generators/symbian/symmake.cpp44
2 files changed, 53 insertions, 12 deletions
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 1acfefe..79bac42 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -50,17 +50,18 @@ 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_LINK = g++
-QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
-QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl
+QMAKE_LINK =
+QMAKE_LFLAGS =
+QMAKE_LFLAGS.ARMCC =
+QMAKE_LFLAGS_EXCEPTIONS_ON =
QMAKE_LFLAGS_EXCEPTIONS_OFF =
-QMAKE_LFLAGS_RELEASE = -Wl,-s
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
-QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
-QMAKE_LFLAGS_DLL = -shared
-QMAKE_LINK_OBJECT_MAX = 10
-QMAKE_LINK_OBJECT_SCRIPT= object_script
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_CONSOLE =
+QMAKE_LFLAGS_WINDOWS =
+QMAKE_LFLAGS_DLL =
+QMAKE_LINK_OBJECT_MAX =
+QMAKE_LINK_OBJECT_SCRIPT=
QMAKE_LIBS = -llibc -llibm -leuser -llibdl
QMAKE_LIBS_CORE = $$QMAKE_LIBS -llibpthread -lefsrv
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 19af1da..8ec4b3f 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -74,6 +74,9 @@
#define MMP_OPTION_CW "OPTION CW"
#define MMP_OPTION_ARMCC "OPTION ARMCC"
#define MMP_OPTION_GCCE "OPTION GCCE"
+#define MMP_LINKEROPTION_CW "LINKEROPTION CW"
+#define MMP_LINKEROPTION_ARMCC "LINKEROPTION ARMCC"
+#define MMP_LINKEROPTION_GCCE "LINKEROPTION GCCE"
#define SIS_TARGET "sis"
#define OK_SIS_TARGET "ok_sis"
@@ -655,8 +658,7 @@ void SymbianMakefileGenerator::initMmpVariables()
// Check MMP_RULES for singleton keywords that are overridden
QStringList overridableMmpKeywords;
- overridableMmpKeywords << QLatin1String(MMP_TARGETTYPE) << QLatin1String(MMP_OPTION_CW)
- << QLatin1String(MMP_OPTION_ARMCC) << QLatin1String(MMP_OPTION_GCCE);
+ overridableMmpKeywords << QLatin1String(MMP_TARGETTYPE);
foreach (QString item, project->values("MMP_RULES")) {
if (project->values(item).isEmpty()) {
@@ -971,6 +973,7 @@ void SymbianMakefileGenerator::writeMmpFileCapabilityPart(QTextStream& t)
void SymbianMakefileGenerator::writeMmpFileCompilerOptionPart(QTextStream& t)
{
QString cw, armcc, gcce;
+ QString cwlink, armlink, gccelink;
if (0 != project->values("QMAKE_CXXFLAGS.CW").size()) {
cw.append(project->values("QMAKE_CXXFLAGS.CW").join(" "));
@@ -1020,12 +1023,42 @@ void SymbianMakefileGenerator::writeMmpFileCompilerOptionPart(QTextStream& t)
gcce.append(" ");
}
+ if (0 != project->values("QMAKE_LFLAGS.CW").size()) {
+ cwlink.append(project->values("QMAKE_LFLAGS.CW").join(" "));
+ cwlink.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_LFLAGS.ARMCC").size()) {
+ armlink.append(project->values("QMAKE_LFLAGS.ARMCC").join(" "));
+ armlink.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_LFLAGS.GCCE").size()) {
+ gccelink.append(project->values("QMAKE_LFLAGS.GCCE").join(" "));
+ gccelink.append(" ");
+ }
+
+ if (0 != project->values("QMAKE_LFLAGS").size()) {
+ cwlink.append(project->values("QMAKE_LFLAGS").join(" "));
+ cwlink.append(" ");
+ armlink.append(project->values("QMAKE_LFLAGS").join(" "));
+ armlink.append(" ");
+ gccelink.append(project->values("QMAKE_LFLAGS").join(" "));
+ gccelink.append(" ");
+ }
+
if (!cw.isEmpty() && cw[cw.size()-1] == ' ')
cw.chop(1);
if (!armcc.isEmpty() && armcc[armcc.size()-1] == ' ')
armcc.chop(1);
if (!gcce.isEmpty() && gcce[gcce.size()-1] == ' ')
gcce.chop(1);
+ if (!cwlink.isEmpty() && cwlink[cwlink.size()-1] == ' ')
+ cwlink.chop(1);
+ if (!armlink.isEmpty() && armlink[armlink.size()-1] == ' ')
+ armlink.chop(1);
+ if (!gccelink.isEmpty() && gccelink[gccelink.size()-1] == ' ')
+ gccelink.chop(1);
if (!cw.isEmpty() && !overriddenMmpKeywords.contains(MMP_OPTION_CW))
t << MMP_OPTION_CW " " << cw << endl;
@@ -1034,6 +1067,13 @@ void SymbianMakefileGenerator::writeMmpFileCompilerOptionPart(QTextStream& t)
if (!gcce.isEmpty() && !overriddenMmpKeywords.contains(MMP_OPTION_GCCE))
t << MMP_OPTION_GCCE " " << gcce << endl;
+ if (!cwlink.isEmpty() && !overriddenMmpKeywords.contains(MMP_LINKEROPTION_CW))
+ t << MMP_LINKEROPTION_CW " " << cwlink << endl;
+ if (!armlink.isEmpty() && !overriddenMmpKeywords.contains(MMP_LINKEROPTION_ARMCC))
+ t << MMP_LINKEROPTION_ARMCC " " << armlink << endl;
+ if (!gccelink.isEmpty() && !overriddenMmpKeywords.contains(MMP_LINKEROPTION_GCCE))
+ t << MMP_LINKEROPTION_GCCE " " << gccelink << endl;
+
t << endl;
}