summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.s60-mkspec72
-rwxr-xr-xbin/winewrapper24
-rwxr-xr-xconfigure57
-rw-r--r--mkspecs/common/armcc.conf40
-rw-r--r--mkspecs/common/symbian/symbian-makefile.conf32
-rw-r--r--mkspecs/common/symbian/symbian-mmp.conf50
-rw-r--r--mkspecs/common/symbian/symbian.conf98
-rw-r--r--mkspecs/common/unix.conf3
-rw-r--r--mkspecs/features/symbian/debug.prf1
-rw-r--r--mkspecs/features/symbian/moc.prf24
-rw-r--r--mkspecs/features/symbian/platform_paths.prf217
-rw-r--r--mkspecs/features/symbian/release.prf1
-rw-r--r--mkspecs/symbian-abld/qmake.conf2
-rw-r--r--mkspecs/symbian-sbsv2/qmake.conf2
-rw-r--r--mkspecs/symbian/linux-armcc/features/default_post.prf5
-rw-r--r--mkspecs/symbian/linux-armcc/features/qt.prf12
-rw-r--r--mkspecs/symbian/linux-armcc/features/symbian_building.prf130
-rw-r--r--mkspecs/symbian/linux-armcc/platformlibs.conf1
-rw-r--r--mkspecs/symbian/linux-armcc/qmake.conf7
-rw-r--r--mkspecs/symbian/linux-armcc/qplatformdefs.h167
-rw-r--r--qmake/generators/makefile.cpp4
-rw-r--r--qmake/generators/unix/unixmake.cpp41
-rw-r--r--qmake/generators/unix/unixmake2.cpp40
-rw-r--r--qmake/option.cpp1
-rw-r--r--qmake/project.cpp19
-rw-r--r--src/corelib/global/qglobal.cpp5
-rw-r--r--src/corelib/io/io.pri2
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp2
-rw-r--r--src/corelib/io/qprocess_symbian.cpp2
-rw-r--r--src/corelib/kernel/qsystemsemaphore_symbian.cpp2
-rw-r--r--src/gui/dialogs/qerrormessage.cpp2
-rw-r--r--src/gui/kernel/qapplication_s60.cpp4
-rw-r--r--src/gui/kernel/qcursor_s60.cpp2
-rw-r--r--src/gui/kernel/qdnd_s60.cpp2
-rw-r--r--src/gui/kernel/qsound_s60.cpp2
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp4
-rw-r--r--src/gui/s60framework/s60framework.pri2
-rw-r--r--src/gui/text/qfont.cpp2
-rw-r--r--src/gui/text/qfont_s60.cpp4
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp6
-rw-r--r--src/gui/text/qfontengine_s60_p.h2
-rw-r--r--src/gui/widgets/qmenu_symbian.cpp2
-rw-r--r--src/gui/widgets/widgets.pri2
-rw-r--r--src/plugins/graphicssystems/trace/trace.pro1
-rw-r--r--src/plugins/imageformats/tiff/tiff.pro2
-rw-r--r--src/plugins/plugins.pro3
-rw-r--r--src/plugins/sqldrivers/sqlite/sqlite.pro2
-rw-r--r--src/s60main/s60main.rsg3
-rw-r--r--src/src.pro8
-rw-r--r--src/tools/tools.pro2
-rw-r--r--templates/.gitattributes1
-rw-r--r--templates/.gitignore1
-rw-r--r--templates/pkg_template.pkg27
-rw-r--r--templates/wiggly.rscbin0 -> 93 bytes
-rw-r--r--templates/wiggly_reg.rscbin0 -> 103 bytes
55 files changed, 887 insertions, 262 deletions
diff --git a/README.s60-mkspec b/README.s60-mkspec
new file mode 100644
index 0000000..a065426
--- /dev/null
+++ b/README.s60-mkspec
@@ -0,0 +1,72 @@
+How to build Qt for Symbian using the Linux makespec.
+
+Prerequisites:
+
+ - Working RVCT 2.2 native Linux compiler. The new publicly
+ available RVCT 4.0 compiler may work, but it hasn't been tested
+ yet.
+
+ - A working GnuPoc environment. See this page for details:
+ http://www.martin.st/symbian/
+ Download the latest version, unpack it and run the 'install_eka2_tools' script as
+ described in the last part under the EKA2 part. The part about the your own gcc
+ are not needed as we use the rvct compiler.
+ Make sure you do the part about Wine setup as well.
+
+ - Anderson Lizardo's patches for GnuPoc. Look for the
+ qt_s60_gnupoc_v10.patch on this page:
+ http://lizardo.wordpress.com/2009/09/24/installing-qt-for-s60-daily-snapshots-on-linux/
+ and carry out the instructions under point 8: Installing Open C.
+
+Compiling:
+
+ 1. First a few environment variables need to be set:
+
+ export RVCT22LIB=<rvct-dir>/lib/armlib
+ export EPOCROOT=<s60-root>
+ export PATH=$PATH:<s60-root>/epoc32/tools:<rvctInstallDir>/bin
+ export PATH=$PATH:<qt-root>/bin
+
+ Replace the s60-root with the installation directory of your SDK,
+ and the qt-root with the root of your Qt repository.
+ These are good candidates for putting in a script somewhere.
+
+ 2. Run configure. It needs a bit more switches than usual, so here's
+ the full line:
+
+ ./configure -developer-build -platform linux-g++ -xplatform \
+ symbian/linux-armcc -little-endian -host-little-endian \
+ -arch symbian
+
+ 3. Compile Qt
+
+ cd src
+ make
+
+ and then wait for a while.
+
+ 4. Compile some helloworld application (I leave the details to you
+ ;-)
+
+ qmake
+ make
+
+ 5. Package and run on the phone. This is unfortunately a bit of a
+ manual step at the moment. Your best bet is to look at a Windows
+ build of the same application, and manually grab the .rsc files
+ that it refers to and put them in the application directory on
+ Linux. Then you can take the pkg_template.pkg file provided in
+ the repository and tweak it to include the files you want. Note
+ that due to limitations on how the makesis tool interprets file
+ paths, all the files included need to be in the current directory
+ (or a link from there).
+
+ Assuming that all the files are in place, do this:
+
+ cp <qt-root>/src/s60installs/selfsigned.* .
+ winewrapper makesis.exe MyApp.pkg MyApp_unsigned.sis
+ winewrapper signsis.exe MyApp_unsigned.sis MyApp.sis \
+ selfsigned.cer selfsigned.key
+
+ 7. Enjoy QObjects and "hello world" on the phone!
+
diff --git a/bin/winewrapper b/bin/winewrapper
new file mode 100755
index 0000000..94cc38a
--- /dev/null
+++ b/bin/winewrapper
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+if [ "$1" = "" ]; then
+ echo "Must supply parameters"
+ exit 3
+fi
+
+oldIFS="$IFS"
+IFS=:
+for i in $PATH; do
+ if [ -e $i/$1 ]; then
+ executable="$i/$1"
+ break
+ fi
+done
+
+if [ "$executable" = "" ]; then
+ echo "$1 not found in path" 1>&2
+ exit 3
+fi
+
+IFS="$oldIFS"
+shift
+wine "$executable" "$@"
diff --git a/configure b/configure
index 81872f9..b47281b 100755
--- a/configure
+++ b/configure
@@ -643,6 +643,7 @@ CFG_XSYNC=auto
CFG_XINERAMA=runtime
CFG_XFIXES=runtime
CFG_ZLIB=auto
+CFG_S60=auto
CFG_SQLITE=qt
CFG_GIF=auto
CFG_TIFF=auto
@@ -921,7 +922,7 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@@ -1479,7 +1480,6 @@ while [ "$#" -gt 0 ]; do
fi
;;
feature-*)
- if [ "$PLATFORM_QWS" = "yes" ]; then
FEATURE=`echo $VAR | sed "s,^[^-]*-\([^-]*\),\1," | tr 'abcdefghijklmnopqrstuvwxyz-' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
if [ "$VAL" = "no" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_$FEATURE"
@@ -1488,9 +1488,6 @@ while [ "$#" -gt 0 ]; do
else
UNKNOWN_OPT=yes
fi
- else
- UNKNOWN_OPT=yes
- fi
;;
shared)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
@@ -1637,6 +1634,13 @@ while [ "$#" -gt 0 ]; do
# No longer supported:
#[ "$VAL" = "no" ] && CFG_LIBPNG=no
;;
+ s60)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_S60="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
sqlite)
if [ "$VAL" = "system" ]; then
CFG_SQLITE=system
@@ -3300,6 +3304,7 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-no-audio-backend] [-audio-backend] [-no-openssl] [-openssl] [-openssl-linked]
[-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-no-javascript-jit] [-javascript-jit]
[-no-script] [-script] [-no-scripttools] [-scripttools] [-no-declarative] [-declarative]
+ [-no-s60] [-s60]
[additional platform specific options (see below)]
@@ -3478,6 +3483,9 @@ EOF
fi
cat << EOF
+ -no-s60 ............ Do not compile in S60 support.
+ + -s60 ............... Compile with support for the S60 UI Framework.
+
-no-mmx ............ Do not compile with use of MMX instructions.
-no-3dnow .......... Do not compile with use of 3DNOW instructions.
-no-sse ............ Do not compile with use of SSE instructions.
@@ -3930,7 +3938,7 @@ if [ "$PLATFORM_QWS" = "yes" ]; then
Platform="Qt for Embedded Linux"
elif [ "$PLATFORM_MAC" = "yes" ]; then
Platform="Qt for Mac OS X"
-else
+elif [ '!' -z "`getQMakeConf \"$XQMAKESPEC\" | grep QMAKE_LIBS_X11 | awk '{print $3;}'`" ]; then
PLATFORM_X11=yes
Platform="Qt for Linux/X11"
fi
@@ -4549,6 +4557,14 @@ if [ "$CFG_ZLIB" = "auto" ]; then
fi
fi
+if [ "$CFG_S60" = "auto" ]; then
+ if echo "$XQMAKESPEC" | grep symbian > /dev/null; then
+ CFG_S60=yes
+ else
+ CFG_S60=no
+ fi
+fi
+
# detect how jpeg should be built
if [ "$CFG_JPEG" = "auto" ]; then
if [ "$CFG_SHARED" = "yes" ]; then
@@ -5640,7 +5656,7 @@ if [ "$CFG_DOUBLEFORMAT" = "auto" ]; then
fi
HAVE_STL=no
-if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then
+if echo "$XQMAKESPEC" | grep symbian > /dev/null || "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stl "STL" $L_FLAGS $I_FLAGS $l_FLAGS; then
HAVE_STL=yes
fi
@@ -5998,9 +6014,9 @@ case "$PLATFORM,$CFG_MAC_COCOA" in
;;
esac
-# disable Qt 3 support on VxWorks
+# disable Qt 3 support on VxWorks and Symbian
case "$XPLATFORM" in
- unsupported/vxworks*)
+ unsupported/vxworks*|symbian*)
CFG_QT3SUPPORT="no"
;;
esac
@@ -6054,6 +6070,13 @@ else
fi
fi
+# Disable OpenGL on Symbian.
+case "$XPLATFORM" in
+ symbian*)
+ CFG_OPENGL="no"
+ ;;
+esac
+
# enable opengl
if [ "$CFG_OPENGL" = "no" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENGL"
@@ -6233,6 +6256,10 @@ elif [ "$CFG_ZLIB" = "system" ]; then
QT_CONFIG="$QT_CONFIG system-zlib"
fi
+if [ "$CFG_S60" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG s60"
+fi
+
[ "$CFG_NIS" = "yes" ] && QT_CONFIG="$QT_CONFIG nis"
[ "$CFG_CUPS" = "yes" ] && QT_CONFIG="$QT_CONFIG cups"
[ "$CFG_ICONV" = "yes" ] && QT_CONFIG="$QT_CONFIG iconv"
@@ -7009,6 +7036,7 @@ QMakeVar set sql-plugins "$SQL_PLUGINS"
[ "$CFG_JPEG" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_JPEG"
[ "$CFG_MNG" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_MNG"
[ "$CFG_ZLIB" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ZLIB"
+[ "$CFG_S60" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_S60"
[ "$CFG_EXCEPTIONS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EXCEPTIONS"
[ "$CFG_IPV6" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IPV6"
[ "$CFG_SXE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SXE"
@@ -7061,6 +7089,15 @@ fi
[ '!' -z "$AWK" ] && QCONFIG_FLAGS=`echo $QCONFIG_FLAGS | $AWK '{ gsub(" ", "\n"); print }' | sort | uniq`
QCONFIG_FLAGS=`echo $QCONFIG_FLAGS`
+if echo $XPLATFORM | grep symbian >/dev/null
+then
+ # Enable Symbian DLLs and export rules.
+ # We cannot use Linux's default export rules since they export everything.
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_DLL"
+ # Disable non-working features.
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_CONCURRENT QT_NO_QFUTURE QT_NO_CRASHHANDLER QT_NO_PRINTER QT_NO_CURSOR QT_NO_SYSTEMTRAYICON"
+fi
+
if [ -n "$QCONFIG_FLAGS" ]; then
for cfg in $QCONFIG_FLAGS; do
cfgd=`echo $cfg | sed 's/=.*$//'` # trim pushed 'Foo=Bar' defines
@@ -7432,6 +7469,7 @@ if [ "$CFG_WEBKIT" = "yes" ]; then
fi
fi
echo "Declarative module .. $CFG_DECLARATIVE"
+echo "Support for S60 ..... $CFG_S60"
echo "STL support ......... $CFG_STL"
echo "PCH support ......... $CFG_PRECOMPILE"
echo "MMX/3DNOW/SSE/SSE2.. ${CFG_MMX}/${CFG_3DNOW}/${CFG_SSE}/${CFG_SSE2}"
@@ -7753,7 +7791,6 @@ for file in .projects .projects.3; do
case $a in
*winmain/winmain.pro) continue ;;
- *s60main/s60main.pro) continue ;;
*examples/activeqt/*) continue ;;
*/qmake/qmake.pro) continue ;;
*tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;;
diff --git a/mkspecs/common/armcc.conf b/mkspecs/common/armcc.conf
new file mode 100644
index 0000000..c9a518b
--- /dev/null
+++ b/mkspecs/common/armcc.conf
@@ -0,0 +1,40 @@
+#
+# qmake configuration for armcc
+#
+
+QMAKE_CC = armcc
+QMAKE_CFLAGS +=
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON +=
+QMAKE_CFLAGS_WARN_OFF += -W
+QMAKE_CFLAGS_RELEASE += -O2
+QMAKE_CFLAGS_DEBUG += -g -O0
+QMAKE_CFLAGS_HIDESYMS += --visibility_inlines_hidden
+
+QMAKE_CXX = armcc
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS --exceptions --exceptions_unwind
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS
+
+QMAKE_LINK = armlink
+QMAKE_LINK_SHLIB = armlink
+QMAKE_LINK_C = armlink
+QMAKE_LINK_C_SHLIB = armlink
+QMAKE_LFLAGS +=
+QMAKE_LFLAGS_RELEASE +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_SHLIB +=
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_THREAD +=
+
+QMAKE_AR = armar --create
+QMAKE_RANLIB =
+
diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf
new file mode 100644
index 0000000..bf4f43c
--- /dev/null
+++ b/mkspecs/common/symbian/symbian-makefile.conf
@@ -0,0 +1,32 @@
+#
+# qmake configuration for makefile based symbian
+#
+
+MAKEFILE_GENERATOR = UNIX
+
+include(symbian.conf)
+
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
+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
+
+DEFINES += __SYMBIAN32__ EKA2 __S60_50__ __S60_3X__ __SERIES60_3X__ __EPOC32__ __MARM__ __EABI__ __ARMCC__ __ARMcc_2__ __ARMCC_2_2__ __MARM_ARMV5__ __MARM_THUMB__ __MARM_INTERWORK__ __DLL__ _UNICODE __SUPPORT_CPP_EXCEPTIONS__
+
+include(../../common/unix.conf)
+
+QMAKE_PREFIX_SHLIB =
+QMAKE_EXTENSION_SHLIB = dll
+CONFIG *= no_plugin_name_prefix
+QMAKE_EXTENSION_PLUGIN = dll
+QMAKE_PREFIX_STATICLIB =
+QMAKE_EXTENSION_STATICLIB = lib
+QMAKE_SYMBIAN_SHLIB = 1
diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf
new file mode 100644
index 0000000..3a22647
--- /dev/null
+++ b/mkspecs/common/symbian/symbian-mmp.conf
@@ -0,0 +1,50 @@
+#
+# qmake configuration for symbian-*
+#
+
+QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
+QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
+QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
+
+include(symbian.conf)
+
+symbian-abld {
+# Versions of abld prior to Symbian^3 have a bug where you cannot remove something from the command line without replacing it
+# Rather than figure out which version of abld we're using, we'll replace the command with a macro *that should never be used*
+ MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl -D__QT_NOEFFECTMACRO_DONOTUSE"
+} else {
+ MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl"
+}
+MMP_RULES += PAGED
+MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
+SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6
+
+# Legacy support requires some hardcoded stdapis paths.
+INCLUDEPATH = \
+ $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \
+ $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \
+ $${EPOCROOT}epoc32/include \
+ $$OS_LAYER_LIBC_SYSTEMINCLUDE \
+ $$INCLUDEPATH
+
+# Supports S60 3.0, 3.1, 3.2 and 5.0 by default
+default_deployment.pkg_prerules = \
+ "; Default HW/platform dependencies" \
+ "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
+ "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
+ "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
+ "[0x1028315F],0,0,0,{\"S60ProductID\"}" \
+ " "
+
+DEPLOYMENT += default_deployment
+
+exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v5.0.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v5.0.sis) {
+ S60_VERSION = 5.0
+} else {
+ exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v3.2.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v3.2.sis) {
+ S60_VERSION = 3.2
+ } else {
+ S60_VERSION = 3.1
+ MMP_RULES -= PAGED
+ }
+}
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 0f06b92..c05bd3d 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -1,9 +1,9 @@
#
-# qmake configuration for symbian-*
+# qmake configuration for all symbian mkspecs
#
TEMPLATE = app
-CONFIG += qt warn_on release incremental
+CONFIG += qt warn_on release incremental link_prl rvct_linker
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
@@ -13,7 +13,6 @@ QMAKE_COMPILER_DEFINES += SYMBIAN
QMAKE_EXT_OBJ = .o
QMAKE_EXT_RES = _res.o
-QMAKE_CC = gcc
QMAKE_LEX = flex
QMAKE_LEXFLAGS =
QMAKE_YACC = byacc
@@ -26,7 +25,6 @@ QMAKE_CFLAGS_RELEASE =
QMAKE_CFLAGS_DEBUG =
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CXX = g++
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
QMAKE_CXXFLAGS.CW =
QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
@@ -45,12 +43,6 @@ QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
QMAKE_INCDIR =
QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
-QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
-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 =
QMAKE_LFLAGS =
QMAKE_LFLAGS.ARMCC =
QMAKE_LFLAGS_EXCEPTIONS_ON =
@@ -75,75 +67,33 @@ QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
QMAKE_LIBS_S60 = -lavkon
!isEmpty(QMAKE_SH) {
- QMAKE_COPY = cp
- QMAKE_COPY_DIR = cp -r
- QMAKE_MOVE = mv
- QMAKE_DEL_FILE = rm -f
- QMAKE_MKDIR = mkdir
- QMAKE_DEL_DIR = rmdir
- QMAKE_CHK_DIR_EXISTS = test -d
+ QMAKE_COPY = cp -f
+ QMAKE_COPY_FILE = $(COPY)
+ QMAKE_COPY_DIR = $(COPY) -r
+ QMAKE_MOVE = mv -f
+ QMAKE_DEL_FILE = rm -f
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = test -d
+ QMAKE_MKDIR = mkdir -p
} else {
- QMAKE_COPY = copy /y
- QMAKE_COPY_DIR = xcopy /s /q /y /i
- QMAKE_MOVE = move
- QMAKE_DEL_FILE = del
- QMAKE_MKDIR = mkdir
- QMAKE_DEL_DIR = rmdir
- QMAKE_CHK_DIR_EXISTS = if not exist
+ QMAKE_COPY = copy /y
+ QMAKE_COPY_DIR = xcopy /s /q /y /i
+ QMAKE_MOVE = move
+ QMAKE_DEL_FILE = del
+ QMAKE_MKDIR = mkdir
+ QMAKE_DEL_DIR = rmdir
+ QMAKE_CHK_DIR_EXISTS = if not exist
}
-QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
-QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
-QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
+QMAKE_IDL = midl
+QMAKE_LIB = ar -ru
+QMAKE_RC = windres
+QMAKE_ZIP = zip -r -9
-QMAKE_IDL = midl
-QMAKE_LIB = ar -ru
-QMAKE_RC = windres
-QMAKE_ZIP = zip -r -9
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
-QMAKE_STRIP = strip
-QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QT_ARCH = symbian
load(qt_config)
load(platform_paths)
-
-symbian-abld {
-# Versions of abld prior to Symbian^3 have a bug where you cannot remove something from the command line without replacing it
-# Rather than figure out which version of abld we're using, we'll replace the command with a macro *that should never be used*
- MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl -D__QT_NOEFFECTMACRO_DONOTUSE"
-} else {
- MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl"
-}
-MMP_RULES += PAGED
-MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
-SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6
-
-# Legacy support requires some hardcoded stdapis paths.
-INCLUDEPATH = \
- $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \
- $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \
- $${EPOCROOT}epoc32/include \
- $$OS_LAYER_LIBC_SYSTEMINCLUDE \
- $$INCLUDEPATH
-
-# Supports S60 3.0, 3.1, 3.2 and 5.0 by default
-default_deployment.pkg_prerules = \
- "; Default HW/platform dependencies" \
- "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
- "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
- "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
- "[0x1028315F],0,0,0,{\"S60ProductID\"}" \
- " "
-
-DEPLOYMENT += default_deployment
-
-exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v5.0.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v5.0.sis) {
- S60_VERSION = 5.0
-} else {
- exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/Series60v3.2.sis )|exists($${EPOCROOT}epoc32/data/z/system/install/Series60v3.2.sis) {
- S60_VERSION = 3.2
- } else {
- S60_VERSION = 3.1
- MMP_RULES -= PAGED
- }
-}
diff --git a/mkspecs/common/unix.conf b/mkspecs/common/unix.conf
index 4cb171e..c480ba4 100644
--- a/mkspecs/common/unix.conf
+++ b/mkspecs/common/unix.conf
@@ -9,3 +9,6 @@ QMAKE_YACCFLAGS += -d
QMAKE_YACCFLAGS_MANGLE += -p $base -b $base
QMAKE_YACC_HEADER = $base.tab.h
QMAKE_YACC_SOURCE = $base.tab.c
+QMAKE_PREFIX_SHLIB = lib
+QMAKE_PREFIX_STATICLIB = lib
+QMAKE_EXTENSION_STATICLIB = a
diff --git a/mkspecs/features/symbian/debug.prf b/mkspecs/features/symbian/debug.prf
new file mode 100644
index 0000000..19f5348
--- /dev/null
+++ b/mkspecs/features/symbian/debug.prf
@@ -0,0 +1 @@
+QMAKE_LIBDIR_QT += $${EPOCROOT}epoc32/release/armv5/udeb
diff --git a/mkspecs/features/symbian/moc.prf b/mkspecs/features/symbian/moc.prf
index 9c21ed7..29e0d8d 100644
--- a/mkspecs/features/symbian/moc.prf
+++ b/mkspecs/features/symbian/moc.prf
@@ -1,16 +1,18 @@
load(moc)
-RET = $$find(MOC_DIR, "(/|^)\.[^/]+/?$")
-!isEmpty(RET):{
- error("Symbian does not support directories starting with a dot. Please set MOC_DIR to a different value in your profile. MOC_DIR: $$MOC_DIR")
-}
+symbian-abld|symbian-sbsv2 {
+ RET = $$find(MOC_DIR, "(/|^)\.[^/]+/?$")
+ !isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set MOC_DIR to a different value in your profile. MOC_DIR: $$MOC_DIR")
+ }
-RET = $$find(RCC_DIR, "(/|^)\.[^/]+/?$")
-!isEmpty(RET):{
- error("Symbian does not support directories starting with a dot. Please set RCC_DIR to a different value in your profile. RCC_DIR: $$RCC_DIR")
-}
+ RET = $$find(RCC_DIR, "(/|^)\.[^/]+/?$")
+ !isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set RCC_DIR to a different value in your profile. RCC_DIR: $$RCC_DIR")
+ }
-RET = $$find(OBJECTS_DIR, "(/|^)\.[^/]+/?$")
-!isEmpty(RET):{
- error("Symbian does not support directories starting with a dot. Please set OBJECTS_DIR to a different value in your profile. OBJECTS_DIR: $$OBJECTS_DIR")
+ RET = $$find(OBJECTS_DIR, "(/|^)\.[^/]+/?$")
+ !isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set OBJECTS_DIR to a different value in your profile. OBJECTS_DIR: $$OBJECTS_DIR")
+ }
}
diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf
index c723d8c..1bfc116 100644
--- a/mkspecs/features/symbian/platform_paths.prf
+++ b/mkspecs/features/symbian/platform_paths.prf
@@ -50,6 +50,12 @@
#
# ==============================================================================
+symbian-abld|symbian-sbsv2 {
+ epocroot_prefix = /
+} else {
+ epocroot_prefix = $${EPOCROOT}
+}
+
exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# Load platform specific paths
@@ -66,10 +72,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/app/$$1)
+ return ($${epocroot_prefix}epoc32/include/app/$$1)
}
defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/app/$$1)
+ return ($${epocroot_prefix}epoc32/include/app/$$1)
}
# ---------------------------------------
@@ -77,10 +83,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/platform/app/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/app/$$1)
}
defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/platform/app/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/app/$$1)
}
# ---------------------------------------
@@ -88,10 +94,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/mw/$$1)
+ return ($${epocroot_prefix}epoc32/include/mw/$$1)
}
defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/mw/$$1)
+ return ($${epocroot_prefix}epoc32/include/mw/$$1)
}
# ---------------------------------------
@@ -99,10 +105,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/platform/mw/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/mw/$$1)
}
defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/platform/mw/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/mw/$$1)
}
# ---------------------------------------
@@ -110,11 +116,11 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/$$1)
+ return ($${epocroot_prefix}epoc32/include/$$1)
}
# WARNING: If the following path changes see the exists() function around line 219
defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/$$1)
+ return ($${epocroot_prefix}epoc32/include/$$1)
}
# ---------------------------------------
@@ -122,10 +128,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/platform/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/$$1)
}
defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/platform/$$1)
+ return ($${epocroot_prefix}epoc32/include/platform/$$1)
}
# ---------------------------------------
@@ -152,18 +158,18 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# the headers come from middleware or os-layer => thus they are first.
APP_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/mw \
- /epoc32/include/platform/mw \
- /epoc32/include/platform \
- /epoc32/include/app \
- /epoc32/include/platform/app \
- /epoc32/include/platform/loc \
- /epoc32/include/platform/mw/loc \
- /epoc32/include/platform/app/loc \
- /epoc32/include/platform/loc/sc \
- /epoc32/include/platform/mw/loc/sc \
- /epoc32/include/platform/app/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/mw \
+ $${epocroot_prefix}epoc32/include/platform/mw \
+ $${epocroot_prefix}epoc32/include/platform \
+ $${epocroot_prefix}epoc32/include/app \
+ $${epocroot_prefix}epoc32/include/platform/app \
+ $${epocroot_prefix}epoc32/include/platform/loc \
+ $${epocroot_prefix}epoc32/include/platform/mw/loc \
+ $${epocroot_prefix}epoc32/include/platform/app/loc \
+ $${epocroot_prefix}epoc32/include/platform/loc/sc \
+ $${epocroot_prefix}epoc32/include/platform/mw/loc/sc \
+ $${epocroot_prefix}epoc32/include/platform/app/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the middleware-layer. It includes all
@@ -171,14 +177,14 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# middleware-layer components.
MW_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/mw \
- /epoc32/include/platform/mw \
- /epoc32/include/platform \
- /epoc32/include/platform/loc \
- /epoc32/include/platform/mw/loc \
- /epoc32/include/platform/loc/sc \
- /epoc32/include/platform/mw/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/mw \
+ $${epocroot_prefix}epoc32/include/platform/mw \
+ $${epocroot_prefix}epoc32/include/platform \
+ $${epocroot_prefix}epoc32/include/platform/loc \
+ $${epocroot_prefix}epoc32/include/platform/mw/loc \
+ $${epocroot_prefix}epoc32/include/platform/loc/sc \
+ $${epocroot_prefix}epoc32/include/platform/mw/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the osextensions-layer. It includes all
@@ -186,10 +192,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# os-layer components.
OS_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/platform \
- /epoc32/include/platform/loc \
- /epoc32/include/platform/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/platform \
+ $${epocroot_prefix}epoc32/include/platform/loc \
+ $${epocroot_prefix}epoc32/include/platform/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the os-layer. This is intended
@@ -198,7 +204,7 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# 2 files already contain the /epoc32/include as system include path.
OS_LAYER_KERNEL_SYSTEMINCLUDE = \
- /epoc32/include/platform
+ $${epocroot_prefix}epoc32/include/platform
# ---------------------------------------
@@ -236,19 +242,19 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/app/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/app/$$1)
}
defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/mw/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/mw/$$1)
}
defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/os/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/os/$$1)
}
defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/os/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/os/$$1)
}
defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/$$1)
}
# You need to define the following in pro-file, if you are using the stllib:
@@ -264,10 +270,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/applications/$$1)
+ return ($${epocroot_prefix}epoc32/include/applications/$$1)
}
defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/applications/$$1)
+ return ($${epocroot_prefix}epoc32/include/applications/$$1)
}
# ---------------------------------------
@@ -275,10 +281,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/domain/applications/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/applications/$$1)
}
defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/domain/applications/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/applications/$$1)
}
# ---------------------------------------
@@ -286,10 +292,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/middleware/$$1)
+ return ($${epocroot_prefix}epoc32/include/middleware/$$1)
}
defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/middleware/$$1)
+ return ($${epocroot_prefix}epoc32/include/middleware/$$1)
}
# ---------------------------------------
@@ -297,10 +303,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/domain/middleware/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/middleware/$$1)
}
defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/domain/middleware/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/middleware/$$1)
}
# ---------------------------------------
@@ -308,11 +314,11 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
- return (/epoc32/include/osextensions/$$1)
+ return ($${epocroot_prefix}epoc32/include/osextensions/$$1)
}
# WARNING: If the following path changes see the exists() function around line 430
defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
- return (/epoc32/include/osextensions/$$1)
+ return ($${epocroot_prefix}epoc32/include/osextensions/$$1)
}
# ---------------------------------------
@@ -320,10 +326,10 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
- return (/epoc32/include/domain/osextensions/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/osextensions/$$1)
}
defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
- return (/epoc32/include/domain/osextensions/$$1)
+ return ($${epocroot_prefix}epoc32/include/domain/osextensions/$$1)
}
# ---------------------------------------
@@ -350,20 +356,20 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# the headers come from middleware or os-layer => thus they are first.
APP_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/oem \
- /epoc32/include/middleware \
- /epoc32/include/domain/middleware \
- /epoc32/include/osextensions \
- /epoc32/include/domain/osextensions \
- /epoc32/include/applications \
- /epoc32/include/domain/applications \
- /epoc32/include/domain/osextensions/loc \
- /epoc32/include/domain/middleware/loc \
- /epoc32/include/domain/applications/loc \
- /epoc32/include/domain/osextensions/loc/sc \
- /epoc32/include/domain/middleware/loc/sc \
- /epoc32/include/domain/applications/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/oem \
+ $${epocroot_prefix}epoc32/include/middleware \
+ $${epocroot_prefix}epoc32/include/domain/middleware \
+ $${epocroot_prefix}epoc32/include/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions \
+ $${epocroot_prefix}epoc32/include/applications \
+ $${epocroot_prefix}epoc32/include/domain/applications \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc \
+ $${epocroot_prefix}epoc32/include/domain/middleware/loc \
+ $${epocroot_prefix}epoc32/include/domain/applications/loc \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc/sc \
+ $${epocroot_prefix}epoc32/include/domain/middleware/loc/sc \
+ $${epocroot_prefix}epoc32/include/domain/applications/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the middleware-layer. It includes all
@@ -371,16 +377,16 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# middleware-layer components.
MW_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/oem \
- /epoc32/include/middleware \
- /epoc32/include/domain/middleware \
- /epoc32/include/osextensions \
- /epoc32/include/domain/osextensions \
- /epoc32/include/domain/osextensions/loc \
- /epoc32/include/domain/middleware/loc \
- /epoc32/include/domain/osextensions/loc/sc \
- /epoc32/include/domain/middleware/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/oem \
+ $${epocroot_prefix}epoc32/include/middleware \
+ $${epocroot_prefix}epoc32/include/domain/middleware \
+ $${epocroot_prefix}epoc32/include/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc \
+ $${epocroot_prefix}epoc32/include/domain/middleware/loc \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc/sc \
+ $${epocroot_prefix}epoc32/include/domain/middleware/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the osextensions-layer. It includes all
@@ -388,12 +394,12 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# os-layer components.
OS_LAYER_SYSTEMINCLUDE = \
- /epoc32/include \
- /epoc32/include/oem \
- /epoc32/include/osextensions \
- /epoc32/include/domain/osextensions \
- /epoc32/include/domain/osextensions/loc \
- /epoc32/include/domain/osextensions/loc/sc
+ $${epocroot_prefix}epoc32/include \
+ $${epocroot_prefix}epoc32/include/oem \
+ $${epocroot_prefix}epoc32/include/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc \
+ $${epocroot_prefix}epoc32/include/domain/osextensions/loc/sc
# This define statements defines the include paths, which are intended to be
# used in the pro-files that are part of the os-layer. This is intended
@@ -402,9 +408,9 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# 2 files already contain the /epoc32/include as system include path.
OS_LAYER_KERNEL_SYSTEMINCLUDE = \
- /epoc32/include/oem \
- /epoc32/include/osextensions \
- /epoc32/include/domain/osextensions
+ $${epocroot_prefix}epoc32/include/oem \
+ $${epocroot_prefix}epoc32/include/osextensions \
+ $${epocroot_prefix}epoc32/include/domain/osextensions
# ---------------------------------------
@@ -414,41 +420,41 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \
$$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys) \
- /epoc32/include/stdapis \
- /epoc32/include/stdapis/sys
+ $${epocroot_prefix}epoc32/include/stdapis \
+ $${epocroot_prefix}epoc32/include/stdapis/sys
OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
$$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
$$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject) \
- /epoc32/include/stdapis/glib-2.0 \
- /epoc32/include/stdapis/glib-2.0/glib \
- /epoc32/include/stdapis/glib-2.0/gObject
+ $${epocroot_prefix}epoc32/include/stdapis/glib-2.0 \
+ $${epocroot_prefix}epoc32/include/stdapis/glib-2.0/glib \
+ $${epocroot_prefix}epoc32/include/stdapis/glib-2.0/gObject
OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) \
- /epoc32/include/stdapis/openssl
+ $${epocroot_prefix}epoc32/include/stdapis/openssl
# stlportv5 is preferred over stlport as it has the throwing version of operator new
OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) \
- /epoc32/include/stdapis/stlportv5
+ $${epocroot_prefix}epoc32/include/stdapis/stlportv5
exists($${EPOCROOT}epoc32/include/osextensions/stdapis/stlport) \
|exists($${EPOCROOT}epoc32/include/stdapis/stlport) {
!exists($${EPOCROOT}epoc32/include/osextensions/stdapis/stlportv5) \
:!exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) {
OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) \
- /epoc32/include/stdapis/stlport
+ $${epocroot_prefix}epoc32/include/stdapis/stlport
}
}
OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) \
- /epoc32/include/stdapis/boost
+ $${epocroot_prefix}epoc32/include/stdapis/boost
OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
$$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus) \
- /epoc32/include/stdapis/dbus-1.0 \
- /epoc32/include/stdapis/dbus-1.0/dbus
+ $${epocroot_prefix}epoc32/include/stdapis/dbus-1.0 \
+ $${epocroot_prefix}epoc32/include/stdapis/dbus-1.0/dbus
OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility) \
- /epoc32/include/stdapis/utility
+ $${epocroot_prefix}epoc32/include/stdapis/utility
# ---------------------------------------
# Definitions to export IBY files to different folders where they will be taken
@@ -456,19 +462,19 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
# ---------------------------------------
defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/app/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/app/$$1)
}
defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/mw/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/mw/$$1)
}
defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/osext/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/osext/$$1)
}
defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/core/osext/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/core/osext/$$1)
}
defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
- return(/epoc32/rom/include/$$1)
+ return($${epocroot_prefix}epoc32/rom/include/$$1)
}
# You need to define the following in pro-file, if you are using the stllib:
@@ -480,5 +486,4 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
}
}
-
-
+epocroot_prefix =
diff --git a/mkspecs/features/symbian/release.prf b/mkspecs/features/symbian/release.prf
new file mode 100644
index 0000000..abfa3ac
--- /dev/null
+++ b/mkspecs/features/symbian/release.prf
@@ -0,0 +1 @@
+QMAKE_LIBDIR_QT += $${EPOCROOT}epoc32/release/armv5/urel
diff --git a/mkspecs/symbian-abld/qmake.conf b/mkspecs/symbian-abld/qmake.conf
index 499bf63..b83876d 100644
--- a/mkspecs/symbian-abld/qmake.conf
+++ b/mkspecs/symbian-abld/qmake.conf
@@ -6,4 +6,4 @@
MAKEFILE_GENERATOR = SYMBIAN_ABLD
-include(../common/symbian/symbian.conf)
+include(../common/symbian/symbian-mmp.conf)
diff --git a/mkspecs/symbian-sbsv2/qmake.conf b/mkspecs/symbian-sbsv2/qmake.conf
index 0a5e878..f6cf58c 100644
--- a/mkspecs/symbian-sbsv2/qmake.conf
+++ b/mkspecs/symbian-sbsv2/qmake.conf
@@ -6,4 +6,4 @@
MAKEFILE_GENERATOR = SYMBIAN_SBSV2
-include(../common/symbian/symbian.conf)
+include(../common/symbian/symbian-mmp.conf)
diff --git a/mkspecs/symbian/linux-armcc/features/default_post.prf b/mkspecs/symbian/linux-armcc/features/default_post.prf
new file mode 100644
index 0000000..7aa1f4d
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/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-armcc/features/qt.prf b/mkspecs/symbian/linux-armcc/features/qt.prf
new file mode 100644
index 0000000..f8a074d
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/features/qt.prf
@@ -0,0 +1,12 @@
+QMAKE_LIBDIR_QT += $${EPOCROOT}epoc32/release/armv5/lib
+QMAKE_LIBDIR_QT *= $$(RVCT22LIB)
+
+INCLUDEPATH = $${EPOCROOT}epoc32/include \
+ $${EPOCROOT}epoc32/include/rvct2_2 \
+ $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $$INCLUDEPATH
+
+DEFINES *= __PRODUCT_INCLUDE__=$${EPOCROOT}epoc32/include/variant/symbian_os.hrh
+
+load(qt)
diff --git a/mkspecs/symbian/linux-armcc/features/symbian_building.prf b/mkspecs/symbian/linux-armcc/features/symbian_building.prf
new file mode 100644
index 0000000..d2d4faa
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/features/symbian_building.prf
@@ -0,0 +1,130 @@
+QMAKE_CFLAGS += $$QMAKE_CFLAGS.ARMCC
+QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS.ARMCC
+
+symbianDestdir=$$DESTDIR
+isEmpty(symbianDestdir) {
+ symbianDestdir = .
+}
+
+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
+
+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
+ 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=$${symbianDestdir}/$${TARGET}.sym --output=$${symbianDestdir}/$${TARGET}.dll --dso=$$symbianDestdir/$${TARGET}.dso --defoutput=$$OBJECTS_DIR/$${TARGET}.def --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.sym
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${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 $$symbianDestdir/$${TARGET} $$symbianDestdir/$${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=$${symbianDestdir}/$${TARGET}.sym --output=$${symbianDestdir}/$${TARGET}.exe --unfrozen --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe --compressionmethod bytepair $$elf2e32_LIBPATH --unpaged
+ QMAKE_DISTCLEAN += $${symbianDestdir}/$${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
diff --git a/mkspecs/symbian/linux-armcc/platformlibs.conf b/mkspecs/symbian/linux-armcc/platformlibs.conf
new file mode 100644
index 0000000..ac57790
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/platformlibs.conf
@@ -0,0 +1 @@
+QMAKE_LIBS += -lusrt2_2.lib -ldfpaeabi.dso -ldfprvct2_2.dso -ldrtaeabi.dso -lscppnwdl.dso -ldrtrvct2_2.dso -lh_t__uf.l\\(switch8.o\\)
diff --git a/mkspecs/symbian/linux-armcc/qmake.conf b/mkspecs/symbian/linux-armcc/qmake.conf
new file mode 100644
index 0000000..c98c1f0
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/qmake.conf
@@ -0,0 +1,7 @@
+#
+# qmake configuration for symbian/linux-armcc
+#
+
+include(../../common/symbian/symbian-makefile.conf)
+
+include(../../common/armcc.conf)
diff --git a/mkspecs/symbian/linux-armcc/qplatformdefs.h b/mkspecs/symbian/linux-armcc/qplatformdefs.h
new file mode 100644
index 0000000..a96742a
--- /dev/null
+++ b/mkspecs/symbian/linux-armcc/qplatformdefs.h
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+//#include <features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+//#include <signal.h>
+#include <dlfcn.h>
+#include <sys/select.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+#include <arpa/inet.h>
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct stat64
+#define QT_STATBUF4TSTAT struct stat64
+#define QT_STAT ::stat64
+#define QT_FSTAT ::fstat64
+#define QT_LSTAT ::lstat64
+#define QT_OPEN ::open64
+#define QT_TRUNCATE ::truncate64
+#define QT_FTRUNCATE ::ftruncate64
+#define QT_LSEEK ::lseek64
+#else
+#define QT_STATBUF struct stat
+#define QT_STATBUF4TSTAT struct stat
+#define QT_STAT ::stat
+#define QT_FSTAT ::fstat
+#define QT_LSTAT ::lstat
+#define QT_OPEN ::open
+#define QT_TRUNCATE ::truncate
+#define QT_FTRUNCATE ::ftruncate
+#define QT_LSEEK ::lseek
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FOPEN ::fopen64
+#define QT_FSEEK ::fseeko64
+#define QT_FTELL ::ftello64
+#define QT_FGETPOS ::fgetpos64
+#define QT_FSETPOS ::fsetpos64
+#define QT_FPOS_T fpos64_t
+#define QT_OFF_T off64_t
+#else
+#define QT_FOPEN ::fopen
+#define QT_FSEEK ::fseek
+#define QT_FTELL ::ftell
+#define QT_FGETPOS ::fgetpos
+#define QT_FSETPOS ::fsetpos
+#define QT_MMAP ::mmap
+#define QT_FPOS_T fpos_t
+#define QT_OFF_T long
+#endif
+
+#define QT_STAT_REG S_IFREG
+#define QT_STAT_DIR S_IFDIR
+#define QT_STAT_MASK S_IFMT
+#define QT_STAT_LNK S_IFLNK
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+#define QT_FILENO fileno
+#define QT_CLOSE ::close
+#define QT_READ ::read
+#define QT_WRITE ::write
+#define QT_ACCESS ::access
+#define QT_GETCWD ::getcwd
+#define QT_CHDIR ::chdir
+#define QT_MKDIR ::mkdir
+#define QT_RMDIR ::rmdir
+#define QT_OPEN_RDONLY O_RDONLY
+#define QT_OPEN_WRONLY O_WRONLY
+#define QT_OPEN_RDWR O_RDWR
+#define QT_OPEN_CREAT O_CREAT
+#define QT_OPEN_TRUNC O_TRUNC
+#define QT_OPEN_APPEND O_APPEND
+
+#define QT_SIGNAL_RETTYPE void
+#define QT_SIGNAL_ARGS int
+#define QT_SIGNAL_IGNORE SIG_IGN
+
+#if (defined(__GLIBC__) && (__GLIBC__ >= 2)) || defined(Q_OS_SYMBIAN)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+
+#endif // QPLATFORMDEFS_H
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 7424d1d..26bea13 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -1795,7 +1795,7 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
tmp_clean = tmp_out;
if(tmp_clean.indexOf("${QMAKE_") == -1) {
t << "\n\t" << "-$(DEL_FILE) " << tmp_clean;
- if (isForSymbian())
+ if (Option::shellPath.isEmpty())
t << " 2> NUL"; // Eliminate unnecessary warnings
wrote_clean = true;
}
@@ -1825,7 +1825,7 @@ MakefileGenerator::writeExtraCompilerTargets(QTextStream &t)
}
}
if(!cleans.isEmpty())
- if (isForSymbian())
+ if (Option::shellPath.isEmpty())
t << valGlue(cleans, "\n\t" + del_statement, " 2> NUL\n\t" + del_statement, " 2> NUL");
else
t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp
index 670e3a0..3497ae7 100644
--- a/qmake/generators/unix/unixmake.cpp
+++ b/qmake/generators/unix/unixmake.cpp
@@ -65,6 +65,10 @@ UnixMakefileGenerator::init()
}
}
+ if (project->isEmpty("QMAKE_PREFIX_SHLIB"))
+ // Prevent crash when using the empty variable.
+ project->values("QMAKE_PREFIX_SHLIB").append("");
+
if(!project->isEmpty("QMAKE_FAILED_REQUIREMENTS")) /* no point */
return;
@@ -451,7 +455,9 @@ UnixMakefileGenerator::findLibraries()
if(!libdirs.contains(f))
libdirs.append(f);
} else if(opt.startsWith("-l")) {
- if (project->isActiveConfig("rvct_linker")) {
+ if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) {
+ (*it) = opt.mid(2);
+ } else if (project->isActiveConfig("rvct_linker")) {
(*it) = "lib" + opt.mid(2) + ".so";
} else {
stub = opt.mid(2);
@@ -491,26 +497,29 @@ UnixMakefileGenerator::findLibraries()
QStringList extens;
if(!extn.isNull())
extens << extn;
+ else if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB"))
+ // In Symbian you link to the stub .lib file, but run with the .dll file.
+ extens << "lib";
else
extens << project->values("QMAKE_EXTENSION_SHLIB").first() << "a";
for(QStringList::Iterator extit = extens.begin(); extit != extens.end(); ++extit) {
if(dir.isNull()) {
- QString lib_stub;
for(QList<QMakeLocalFileName>::Iterator dep_it = libdirs.begin(); dep_it != libdirs.end(); ++dep_it) {
- if(exists((*dep_it).local() + Option::dir_sep + "lib" + stub +
- "." + (*extit))) {
- lib_stub = stub;
+ QString pathToLib = ((*dep_it).local() + Option::dir_sep
+ + project->values("QMAKE_PREFIX_SHLIB").first()
+ + stub + "." + (*extit));
+ if(exists(pathToLib)) {
+ if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB"))
+ (*it) = pathToLib;
+ else
+ (*it) = "-l" + stub;
+ found = true;
break;
}
}
- if(!lib_stub.isNull()) {
- (*it) = "-l" + lib_stub;
- found = true;
- break;
- }
} else {
- if(exists("lib" + stub + "." + (*extit))) {
- (*it) = "lib" + stub + "." + (*extit);
+ if(exists(project->values("QMAKE_PREFIX_SHLIB").first() + stub + "." + (*extit))) {
+ (*it) = project->values("QMAKE_PREFIX_SHLIB").first() + stub + "." + (*extit);
found = true;
break;
}
@@ -518,8 +527,8 @@ UnixMakefileGenerator::findLibraries()
}
if(!found && project->isActiveConfig("compile_libtool")) {
for(int dep_i = 0; dep_i < libdirs.size(); ++dep_i) {
- if(exists(libdirs[dep_i].local() + Option::dir_sep + "lib" + stub + Option::libtool_ext)) {
- (*it) = libdirs[dep_i].real() + Option::dir_sep + "lib" + stub + Option::libtool_ext;
+ if(exists(libdirs[dep_i].local() + Option::dir_sep + project->values("QMAKE_PREFIX_SHLIB").first() + stub + Option::libtool_ext)) {
+ (*it) = libdirs[dep_i].real() + Option::dir_sep + project->values("QMAKE_PREFIX_SHLIB").first() + stub + Option::libtool_ext;
found = true;
break;
}
@@ -560,7 +569,7 @@ UnixMakefileGenerator::processPrlFiles()
for(int dep_i = 0; dep_i < libdirs.size(); ++dep_i) {
const QMakeLocalFileName &lfn = libdirs[dep_i];
if(!project->isActiveConfig("compile_libtool")) { //give them the .libs..
- QString la = lfn.local() + Option::dir_sep + "lib" + lib + Option::libtool_ext;
+ QString la = lfn.local() + Option::dir_sep + project->values("QMAKE_PREFIX_SHLIB").first() + lib + Option::libtool_ext;
if(exists(la) && QFile::exists(lfn.local() + Option::dir_sep + ".libs")) {
QString dot_libs = lfn.real() + Option::dir_sep + ".libs";
l.append("-L" + dot_libs);
@@ -568,7 +577,7 @@ UnixMakefileGenerator::processPrlFiles()
}
}
- QString prl = lfn.local() + Option::dir_sep + "lib" + lib;
+ QString prl = lfn.local() + Option::dir_sep + project->values("QMAKE_PREFIX_SHLIB").first() + lib;
if(!project->isEmpty("QMAKE_" + lib.toUpper() + "_SUFFIX"))
prl += project->first("QMAKE_" + lib.toUpper() + "_SUFFIX");
if(processPrlFile(prl)) {
diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp
index 025882e..6516786 100644
--- a/qmake/generators/unix/unixmake2.cpp
+++ b/qmake/generators/unix/unixmake2.cpp
@@ -233,6 +233,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
if(!project->isEmpty("QMAKE_BUNDLE")) {
t << "TARGETD = " << escapeFilePath(var("TARGET_x.y")) << endl;
t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl;
+ } else if(!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) {
+ t << "TARGETD = " << escapeFilePath(var("TARGET")) << endl;
} else if(project->isEmpty("QMAKE_HPUX_SHLIB")) {
t << "TARGETD = " << escapeFilePath(var("TARGET_x.y.z")) << endl;
t << "TARGET0 = " << escapeFilePath(var("TARGET_")) << endl;
@@ -332,7 +334,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
t << "SUBLIBS = ";
QStringList &l = project->values("SUBLIBS");
for(QStringList::Iterator it = l.begin(); it != l.end(); ++it)
- t << libdir << "lib" << (*it) << ".a ";
+ t << libdir << project->first("QMAKE_PREFIX_STATICLIB") << (*it) << "."
+ << project->first("QMAKE_EXTENSION_STATICLIB") << " ";
t << endl << endl;
}
if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) {
@@ -545,6 +548,17 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
if(!project->isEmpty("QMAKE_POST_LINK"))
t << "\n\t" << var("QMAKE_POST_LINK");
t << endl << endl;
+ } else if(!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) {
+ t << "\n\t"
+ << "-$(DEL_FILE) $(TARGET)" << "\n\t"
+ << var("QMAKE_LINK_SHLIB_CMD");
+ if(!destdir.isEmpty())
+ t << "\n\t"
+ << "-$(DEL_FILE) " << destdir << "$(TARGET)\n\t"
+ << "-$(MOVE) $(TARGET) " << destdir;
+ if(!project->isEmpty("QMAKE_POST_LINK"))
+ t << "\n\t" << var("QMAKE_POST_LINK");
+ t << endl << endl;
} else if(project->isEmpty("QMAKE_HPUX_SHLIB")) {
t << "\n\t"
<< "-$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)" << "\n\t"
@@ -860,7 +874,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
libdir = project->first("SUBLIBS_DIR");
QStringList &l = project->values("SUBLIBS");
for(it = l.begin(); it != l.end(); ++it)
- t << libdir << "lib" << (*it) << ".a" << ":\n\t"
+ t << libdir << project->first("QMAKE_PREFIX_STATICLIB") << (*it) << "."
+ << project->first("QMAKE_EXTENSION_STATICLIB") << ":\n\t"
<< var(QString("MAKELIB") + (*it)) << endl << endl;
}
@@ -875,9 +890,10 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t-$(LIBTOOL) --mode=clean $(DEL_FILE) " << "$(TARGET)" << endl;
} else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty() &&
!project->isActiveConfig("plugin")) {
- t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << endl
- << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) "
- << destdir << "$(TARGET2) $(TARGETA)" << endl;
+ t << "\t-$(DEL_FILE) " << destdir << "$(TARGET)" << " " << endl;
+ if (project->values("QMAKE_SYMBIAN_SHLIB").isEmpty())
+ t << "\t-$(DEL_FILE) " << destdir << "$(TARGET0) " << destdir << "$(TARGET1) "
+ << destdir << "$(TARGET2) $(TARGETA)" << endl;
} else {
t << "\t-$(DEL_FILE) " << "$(TARGET)" << " " << endl;
}
@@ -992,12 +1008,13 @@ void UnixMakefileGenerator::init2()
if (!project->values("QMAKE_CYGWIN_EXE").isEmpty())
project->values("TARGET_EXT").append(".exe");
} else if (project->isActiveConfig("staticlib")) {
- project->values("TARGET").first().prepend("lib");
- project->values("TARGET").first() += ".a";
+ project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB"));
+ project->values("TARGET").first() += "." + project->first("QMAKE_EXTENSION_STATICLIB");
if(project->values("QMAKE_AR_CMD").isEmpty())
project->values("QMAKE_AR_CMD").append("$(AR) $(TARGET) $(OBJECTS)");
} else {
- project->values("TARGETA").append(project->first("DESTDIR") + "lib" + project->first("TARGET") + ".a");
+ project->values("TARGETA").append(project->first("DESTDIR") + project->first("QMAKE_PREFIX_STATICLIB")
+ + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_STATICLIB"));
if(project->isActiveConfig("compile_libtool"))
project->values("TARGET_la") = QStringList(project->first("DESTDIR") + "lib" + project->first("TARGET") + Option::libtool_ext);
@@ -1045,7 +1062,8 @@ void UnixMakefileGenerator::init2()
project->first("VER_MAJ"));
project->values("TARGET") = project->values("TARGET_x");
} else if (!project->isEmpty("QMAKE_AIX_SHLIB")) {
- project->values("TARGET_").append("lib" + project->first("TARGET") + ".a");
+ project->values("TARGET_").append(project->first("QMAKE_PREFIX_STATICLIB") + project->first("TARGET")
+ + "." + project->first("QMAKE_EXTENSION_STATICLIB"));
if(project->isActiveConfig("lib_version_first")) {
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("VER_MAJ") + "." +
@@ -1074,6 +1092,10 @@ void UnixMakefileGenerator::init2()
project->first("VER_PAT"));
}
project->values("TARGET") = project->values("TARGET_x.y.z");
+ } else if (!project->isEmpty("QMAKE_SYMBIAN_SHLIB")) {
+ project->values("TARGET_").append(project->first("TARGET") + "." +
+ project->first("QMAKE_EXTENSION_SHLIB"));
+ project->values("TARGET") = project->values("TARGET_");
} else {
project->values("TARGET_").append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB"));
diff --git a/qmake/option.cpp b/qmake/option.cpp
index 9577a28..f28a188 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -389,6 +389,7 @@ Option::init(int argc, char **argv)
Option::shellPath = detectShellPath();
#else
Option::dirlist_sep = ":";
+ Option::shellPath = QStringList("sh");
#endif
Option::sysenv_mod = "QMAKE_ENV_";
Option::field_sep = ' ';
diff --git a/qmake/project.cpp b/qmake/project.cpp
index c2e033e..ee75fb4 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -513,6 +513,7 @@ enum isForSymbian_enum {
isForSymbian_FALSE = 0,
isForSymbian_ABLD = 1,
isForSymbian_SBSV2 = 2,
+ isForSymbian_MAKEFILE = 3,
};
static isForSymbian_enum isForSymbian_value = isForSymbian_NOT_SET;
@@ -525,11 +526,16 @@ static void init_symbian(const QMap<QString, QStringList>& vars)
if (isForSymbian_value != isForSymbian_NOT_SET)
return;
- QString spec = QFileInfo(Option::mkfile::qmakespec).fileName();
- if (spec.startsWith("symbian-abld", Qt::CaseInsensitive)) {
+ QString spec = QDir::fromNativeSeparators(QFileInfo(Option::mkfile::qmakespec).canonicalFilePath());
+ int pos = spec.lastIndexOf('/');
+ pos = spec.lastIndexOf('/', pos - 1);
+ spec = spec.mid(pos + 1);
+ if (spec.endsWith("symbian-abld", Qt::CaseInsensitive)) {
isForSymbian_value = isForSymbian_ABLD;
- } else if (spec.startsWith("symbian-sbsv2", Qt::CaseInsensitive)) {
+ } else if (spec.endsWith("symbian-sbsv2", Qt::CaseInsensitive)) {
isForSymbian_value = isForSymbian_SBSV2;
+ } else if (spec.startsWith("symbian/", Qt::CaseInsensitive)) {
+ isForSymbian_value = isForSymbian_MAKEFILE;
} else {
QStringList generatorList = vars["MAKEFILE_GENERATOR"];
@@ -546,8 +552,9 @@ static void init_symbian(const QMap<QString, QStringList>& vars)
}
}
- // Force recursive on Symbian, as non-recursive is not really a viable option there
- if (isForSymbian_value != isForSymbian_FALSE)
+ // Force recursive on Symbian native build system, as non-recursive is not really
+ // a viable option there
+ if (isForSymbian_value != isForSymbian_FALSE && isForSymbian_value != isForSymbian_MAKEFILE)
Option::recursive = true;
}
@@ -558,7 +565,7 @@ bool isForSymbian()
if (isForSymbian_value == isForSymbian_NOT_SET)
init_symbian(QMap<QString, QStringList>());
- return (isForSymbian_value != isForSymbian_FALSE);
+ return (isForSymbian_value != isForSymbian_NOT_SET && isForSymbian_value != isForSymbian_FALSE);
}
bool isForSymbianSbsv2()
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index f48c1b3..20e5609 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -58,6 +58,11 @@
#include <stdarg.h>
#include <string.h>
+#ifndef QT_NO_EXCEPTIONS
+# include <string>
+# include <exception>
+#endif
+
#if !defined(Q_OS_WINCE)
# include <errno.h>
# if defined(Q_CC_MSVC)
diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri
index 02a1586..9178a2e 100644
--- a/src/corelib/io/io.pri
+++ b/src/corelib/io/io.pri
@@ -72,7 +72,7 @@ win32 {
SOURCES += io/qsettings_mac.cpp io/qfilesystemwatcher_fsevents.cpp
}
- linux-*:{
+ linux-*:!symbian {
SOURCES += \
io/qfilesystemwatcher_inotify.cpp \
io/qfilesystemwatcher_dnotify.cpp
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 722d6d3..43e978f 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -55,7 +55,7 @@
#include <stdlib.h>
#include <limits.h>
#if defined(Q_OS_SYMBIAN)
-# include <syslimits.h>
+# include <sys/syslimits.h>
# include <f32file.h>
# include <pathinfo.h>
# include "private/qcore_symbian_p.h"
diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp
index ddced73..a1f2047 100644
--- a/src/corelib/io/qprocess_symbian.cpp
+++ b/src/corelib/io/qprocess_symbian.cpp
@@ -66,7 +66,7 @@
#include "qstring.h"
#include "qprocess.h"
#include "qprocess_p.h"
-#include "qeventdispatcher_symbian_p.h"
+#include "private/qeventdispatcher_symbian_p.h"
#include <private/qthread_p.h>
#include <qmutex.h>
diff --git a/src/corelib/kernel/qsystemsemaphore_symbian.cpp b/src/corelib/kernel/qsystemsemaphore_symbian.cpp
index c252dd5..8cef611 100644
--- a/src/corelib/kernel/qsystemsemaphore_symbian.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_symbian.cpp
@@ -44,7 +44,7 @@
#include "qcoreapplication.h"
#include <qdebug.h>
-#include <qcore_symbian_p.h>
+#include "qcore_symbian_p.h"
#include <e32cmn.h>
QT_BEGIN_NAMESPACE
diff --git a/src/gui/dialogs/qerrormessage.cpp b/src/gui/dialogs/qerrormessage.cpp
index 0bca811..7be7481 100644
--- a/src/gui/dialogs/qerrormessage.cpp
+++ b/src/gui/dialogs/qerrormessage.cpp
@@ -70,10 +70,10 @@ extern bool qt_wince_is_high_dpi(); //defined in qguifunctions_wince.cpp
#if defined(QT_SOFTKEYS_ENABLED)
#include <qaction.h>
+#endif
#ifdef Q_WS_S60
#include "private/qt_s60_p.h"
#endif
-#endif
QT_BEGIN_NAMESPACE
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 361d231..5d7af4c 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -63,7 +63,7 @@
#include "private/qsoftkeymanager_p.h"
#include "apgwgnam.h" // For CApaWindowGroupName
-#include <MdaAudioTonePlayer.h> // For CMdaAudioToneUtility
+#include <mdaaudiotoneplayer.h> // For CMdaAudioToneUtility
#if defined(Q_WS_S60)
# if !defined(QT_NO_IM)
@@ -1204,11 +1204,13 @@ void qt_init(QApplicationPrivate * /* priv */, int)
S60->virtualMouseRequired = false;
}
+#ifdef QT_KEYPAD_NAVIGATION
if (touch) {
QApplicationPrivate::navigationMode = Qt::NavigationModeNone;
} else {
QApplicationPrivate::navigationMode = Qt::NavigationModeKeypadDirectional;
}
+#endif
#ifndef QT_NO_CURSOR
//Check if window server pointer cursors are supported or not
diff --git a/src/gui/kernel/qcursor_s60.cpp b/src/gui/kernel/qcursor_s60.cpp
index 54a9176..68e079e 100644
--- a/src/gui/kernel/qcursor_s60.cpp
+++ b/src/gui/kernel/qcursor_s60.cpp
@@ -44,7 +44,7 @@
#include <private/qapplication_p.h>
#include <coecntrl.h>
#include <qcursor.h>
-#include <qt_s60_p.h>
+#include <private/qt_s60_p.h>
#include <qbitmap.h>
#include <w32std.h>
#include <qapplication.h>
diff --git a/src/gui/kernel/qdnd_s60.cpp b/src/gui/kernel/qdnd_s60.cpp
index 24f0090..1aa30af 100644
--- a/src/gui/kernel/qdnd_s60.cpp
+++ b/src/gui/kernel/qdnd_s60.cpp
@@ -52,7 +52,7 @@
#include "qdnd_p.h"
#include "qt_s60_p.h"
-#include <COECNTRL.H>
+#include <coecntrl.h>
// pointer cursor
#include <w32std.h>
#include <gdi.h>
diff --git a/src/gui/kernel/qsound_s60.cpp b/src/gui/kernel/qsound_s60.cpp
index 1832b85..df2830b 100644
--- a/src/gui/kernel/qsound_s60.cpp
+++ b/src/gui/kernel/qsound_s60.cpp
@@ -51,7 +51,7 @@
#include <private/qcore_symbian_p.h>
#include <e32std.h>
-#include <MdaAudioSamplePlayer.h>
+#include <mdaaudiosampleplayer.h>
QT_BEGIN_NAMESPACE
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index b41dc2c..82b2dfb 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -44,8 +44,8 @@
#include <QtGui/qpaintdevice.h>
#include <private/qwidget_p.h>
#include "qwindowsurface_s60_p.h"
-#include "qpixmap_s60_p.h"
-#include "qt_s60_p.h"
+#include <private/qpixmap_s60_p.h>
+#include <private/qt_s60_p.h>
#include "private/qdrawhelper_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/gui/s60framework/s60framework.pri b/src/gui/s60framework/s60framework.pri
index 5884b68..df2feec 100644
--- a/src/gui/s60framework/s60framework.pri
+++ b/src/gui/s60framework/s60framework.pri
@@ -9,6 +9,8 @@ minimalAppResource31 = \
"END"
MMP_RULES += minimalAppResource31
+SYMBIAN_RESOURCES += s60framework/s60main.rss
+
SOURCES += s60framework/qs60mainapplication.cpp \
s60framework/qs60mainappui.cpp \
s60framework/qs60maindocument.cpp
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index bbd35f1..3b5b7d7 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -73,7 +73,7 @@
#endif
#endif
#ifdef Q_OS_SYMBIAN
-#include "qt_s60_p.h"
+#include <private/qt_s60_p.h>
#endif
#include <QMutexLocker>
diff --git a/src/gui/text/qfont_s60.cpp b/src/gui/text/qfont_s60.cpp
index 52c77d6..ccd17a2 100644
--- a/src/gui/text/qfont_s60.cpp
+++ b/src/gui/text/qfont_s60.cpp
@@ -40,8 +40,8 @@
****************************************************************************/
#include "qfont.h"
-#include "qt_s60_p.h"
-#include "qpixmap_s60_p.h"
+#include <private/qt_s60_p.h>
+#include <private/qpixmap_s60_p.h>
#include "qmutex.h"
QT_BEGIN_NAMESPACE
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp
index f8de08f..4b678ed 100644
--- a/src/gui/text/qfontdatabase_s60.cpp
+++ b/src/gui/text/qfontdatabase_s60.cpp
@@ -45,12 +45,12 @@
#include "qfontengine_s60_p.h"
#include "qabstractfileengine.h"
#include "qdesktopservices.h"
-#include "qpixmap_s60_p.h"
-#include "qt_s60_p.h"
+#include <private/qpixmap_s60_p.h>
+#include <private/qt_s60_p.h>
#include "qendian.h"
#include <private/qcore_symbian_p.h>
#if defined(QT_NO_FREETYPE)
-#include <OPENFONT.H>
+#include <openfont.h>
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <graphics/openfontrasterizer.h> // COpenFontRasterizer has moved to a new header file
#endif // SYMBIAN_ENABLE_SPLIT_HEADERS
diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h
index ff819e2..6d47b9d 100644
--- a/src/gui/text/qfontengine_s60_p.h
+++ b/src/gui/text/qfontengine_s60_p.h
@@ -56,7 +56,7 @@
#include "qconfig.h"
#include "qfontengine_p.h"
#include "qsize.h"
-#include <OPENFONT.H>
+#include <openfont.h>
class CFbsBitmap;
class CFbsBitmapDevice;
diff --git a/src/gui/widgets/qmenu_symbian.cpp b/src/gui/widgets/qmenu_symbian.cpp
index 28b27d4..b8370ec 100644
--- a/src/gui/widgets/qmenu_symbian.cpp
+++ b/src/gui/widgets/qmenu_symbian.cpp
@@ -48,7 +48,7 @@
#include <private/qapplication_p.h>
#include <private/qmenu_p.h>
#include <private/qmenubar_p.h>
-#include <qt_s60_p.h>
+#include <private/qt_s60_p.h>
#include <QtCore/qlibrary.h>
#ifdef Q_WS_S60
diff --git a/src/gui/widgets/widgets.pri b/src/gui/widgets/widgets.pri
index 6883dd8..937b8d6 100644
--- a/src/gui/widgets/widgets.pri
+++ b/src/gui/widgets/widgets.pri
@@ -164,6 +164,6 @@ wince*: {
!static: QMAKE_WRITE_DEFAULT_RC = 1
}
-symbian*: {
+symbian: {
SOURCES += widgets/qmenu_symbian.cpp
}
diff --git a/src/plugins/graphicssystems/trace/trace.pro b/src/plugins/graphicssystems/trace/trace.pro
index d548a6c..07472e2 100644
--- a/src/plugins/graphicssystems/trace/trace.pro
+++ b/src/plugins/graphicssystems/trace/trace.pro
@@ -4,6 +4,7 @@ include(../../qpluginbase.pri)
QT += network
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/graphicssystems
+symbian:TARGET.UID3 = 0x2002130E
SOURCES = main.cpp qgraphicssystem_trace.cpp
diff --git a/src/plugins/imageformats/tiff/tiff.pro b/src/plugins/imageformats/tiff/tiff.pro
index 312f99c..2334b50 100644
--- a/src/plugins/imageformats/tiff/tiff.pro
+++ b/src/plugins/imageformats/tiff/tiff.pro
@@ -56,7 +56,7 @@ contains(QT_CONFIG, system-tiff) {
wince*: {
SOURCES += ../../../corelib/kernel/qfunctions_wince.cpp
}
- symbian*: {
+ symbian: {
SOURCES += ../../../3rdparty/libtiff/port/lfind.c
}
}
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 004b816..dc83176 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -1,6 +1,6 @@
TEMPLATE = subdirs
-SUBDIRS *= accessible imageformats sqldrivers iconengines script
+SUBDIRS *= imageformats sqldrivers iconengines script
unix:!symbian {
contains(QT_CONFIG,iconv)|contains(QT_CONFIG,gnu-libiconv):SUBDIRS *= codecs
} else {
@@ -9,6 +9,7 @@ unix:!symbian {
!embedded:SUBDIRS *= graphicssystems
embedded:SUBDIRS *= gfxdrivers decorations mousedrivers kbddrivers
!win32:!embedded:!mac:!symbian:SUBDIRS *= inputmethods
+!symbian:SUBDIRS += accessible
symbian:SUBDIRS += s60
contains(QT_CONFIG, phonon): SUBDIRS *= phonon
contains(QT_CONFIG, multimedia): SUBDIRS *= audio
diff --git a/src/plugins/sqldrivers/sqlite/sqlite.pro b/src/plugins/sqldrivers/sqlite/sqlite.pro
index c609a9e..f24db9d 100644
--- a/src/plugins/sqldrivers/sqlite/sqlite.pro
+++ b/src/plugins/sqldrivers/sqlite/sqlite.pro
@@ -1,5 +1,7 @@
TARGET = qsqlite
+symbian:TARGET.UID3=0x2001E631
+
HEADERS = ../../../sql/drivers/sqlite/qsql_sqlite.h
SOURCES = smain.cpp \
../../../sql/drivers/sqlite/qsql_sqlite.cpp
diff --git a/src/s60main/s60main.rsg b/src/s60main/s60main.rsg
new file mode 100644
index 0000000..8cdf3ba
--- /dev/null
+++ b/src/s60main/s60main.rsg
@@ -0,0 +1,3 @@
+#define R_DEFAULT_DOCUMENT_NAME 0x55567002
+#define R_QT_WRAPPERAPP_MENUBAR 0x55567004
+#define R_QT_WRAPPERAPP_MENU 0x55567005
diff --git a/src/src.pro b/src/src.pro
index 8dec49b..92101d6 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -7,6 +7,9 @@ wince*:{
SRC_SUBDIRS += src_corelib src_xml src_gui src_sql src_network src_testlib
} else:symbian {
SRC_SUBDIRS += src_s60main src_corelib src_xml src_gui src_network src_sql src_testlib src_s60installs
+ !symbian-abld:!symbian-sbsv2 {
+ include(tools/tools.pro)
+ }
} else {
SRC_SUBDIRS += src_corelib src_xml src_network src_gui src_sql src_testlib
!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
@@ -80,7 +83,7 @@ src_declarative.subdir = $$QT_SOURCE_TREE/src/declarative
src_declarative.target = sub-declarative
#CONFIG += ordered
-!wince*:!symbian:!ordered {
+!wince*:!ordered {
src_corelib.depends = src_tools_moc src_tools_rcc
src_gui.depends = src_corelib src_tools_uic
embedded: src_gui.depends += src_network
@@ -117,7 +120,7 @@ src_declarative.target = sub-declarative
contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2): src_plugins.depends += src_opengl
}
-!symbian {
+
# This creates a sub-src rule
sub_src_target.CONFIG = recursive
sub_src_target.recurse = $$TOOLS_SUBDIRS $$SRC_SUBDIRS
@@ -164,6 +167,5 @@ for(subname, SRC_SUBDIRS) {
debug.depends = $$EXTRA_DEBUG_TARGETS
release.depends = $$EXTRA_RELEASE_TARGETS
QMAKE_EXTRA_TARGETS += debug release
-}
SUBDIRS += $$SRC_SUBDIRS
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
index 25527e3..cd7cd9b 100644
--- a/src/tools/tools.pro
+++ b/src/tools/tools.pro
@@ -20,7 +20,7 @@ src_tools_uic3.target = sub-uic3
src_tools_idc.subdir = $$QT_SOURCE_TREE/src/tools/idc
src_tools_idc.target = sub-idc
-!wince*:!symbian:!ordered {
+!wince*:!ordered {
# Set dependencies for each subdir
src_tools_moc.depends = src_tools_bootstrap
src_tools_rcc.depends = src_tools_bootstrap
diff --git a/templates/.gitattributes b/templates/.gitattributes
new file mode 100644
index 0000000..6540c78
--- /dev/null
+++ b/templates/.gitattributes
@@ -0,0 +1 @@
+pkg_template.pkg -crlf
diff --git a/templates/.gitignore b/templates/.gitignore
new file mode 100644
index 0000000..1bb0965
--- /dev/null
+++ b/templates/.gitignore
@@ -0,0 +1 @@
+!*.pkg
diff --git a/templates/pkg_template.pkg b/templates/pkg_template.pkg
new file mode 100644
index 0000000..5d98347
--- /dev/null
+++ b/templates/pkg_template.pkg
@@ -0,0 +1,27 @@
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"MyApp"},(0xE001e45e),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+
+; Executable and default resource files
+"MyApp.exe" - "!:\sys\bin\MyApp.exe"
+"QtCore.dll" - "!:\sys\bin\QtCore.dll"
+"QtGui.dll" - "!:\sys\bin\QtGui.dll"
+; Currently you need to get this from a Windows build, but there are some
+; precompiled ones in this directory for testing.
+"wiggly.rsc" - "!:\resource\apps\wiggly.rsc"
+"wiggly_reg.rsc" - "!:\private\10003a3f\import\apps\wiggly_reg.rsc"
diff --git a/templates/wiggly.rsc b/templates/wiggly.rsc
new file mode 100644
index 0000000..cb487c3
--- /dev/null
+++ b/templates/wiggly.rsc
Binary files differ
diff --git a/templates/wiggly_reg.rsc b/templates/wiggly_reg.rsc
new file mode 100644
index 0000000..6f52a2c
--- /dev/null
+++ b/templates/wiggly_reg.rsc
Binary files differ