#
# qmake configuration for all symbian mkspecs
#

TEMPLATE		= app
CONFIG			+= qt warn_on release incremental link_prl sis_targets run_on_phone
QT			+= core gui
QMAKE_INCREMENTAL_STYLE = sublib

DEFINES			+= UNICODE QT_KEYPAD_NAVIGATION QT_SOFTKEYS_ENABLED QT_USE_MATH_H_FLOATS

QMAKE_COMPILER_DEFINES  += SYMBIAN

QMAKE_EXT_OBJ           = .o
QMAKE_EXT_RES           = _res.o

QMAKE_LEX		= flex
QMAKE_LEXFLAGS		=
QMAKE_YACC		= byacc
QMAKE_YACCFLAGS		= -d
QMAKE_CFLAGS		=
QMAKE_CFLAGS_DEPS	=
QMAKE_CFLAGS_WARN_ON	=
QMAKE_CFLAGS_WARN_OFF	=
QMAKE_CFLAGS_RELEASE	=
QMAKE_CFLAGS_DEBUG	=
QMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses

MMP_OPTION_KEYWORDS = CW ARMCC GCCE
VERSION_FLAGS.ARMCC = ARMCC_4_0
QMAKE_CXXFLAGS		= $$QMAKE_CFLAGS
# Symbian build system applies -cwd source on the MWCC command line.
# this causes problems with include paths, -cwd include uses the same
# rules for include paths as ARMCC
# This should really be fixed in raptor, as using CXXFLAGS means we pass
# both on the command line and rely on the compiler using the last specified
QMAKE_CXXFLAGS.CW	= -cwd include
QMAKE_CXXFLAGS.ARMCC      = --visibility_inlines_hidden
QMAKE_CXXFLAGS.ARMCC_4_0  = --import_all_vtbl
QMAKE_CXXFLAGS.GCCE	= -fvisibility-inlines-hidden
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_YACC	= $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD	= $$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_RTTI_ON	=
QMAKE_CXXFLAGS_RTTI_OFF	=
QMAKE_CXXFLAGS_EXCEPTIONS_ON =
QMAKE_CXXFLAGS_EXCEPTIONS_OFF =

QMAKE_INCDIR		=
QMAKE_INCDIR_QT		= $$[QT_INSTALL_HEADERS]

QMAKE_LFLAGS            =
QMAKE_LFLAGS.ARMCC      = 
QMAKE_LFLAGS_EXCEPTIONS_ON =
QMAKE_LFLAGS_EXCEPTIONS_OFF =
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 -lefsrv -lhal -lbafl
QMAKE_LIBS_GUI          = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -lapparc -lcentralrepository
QMAKE_LIBS_NETWORK      = 
QMAKE_LIBS_EGL          = -llibEGL
QMAKE_LIBS_OPENGL       = -llibglesv2
QMAKE_LIBS_OPENGL_ES1   = -llibGLESv1_CM
QMAKE_LIBS_OPENGL_ES2   = -llibglesv2
QMAKE_LIBS_OPENGL_QT     = -llibglesv2 -lcone -lws32
QMAKE_LIBS_OPENGL_ES1_QT = -llibGLESv1_CM -lcone -lws32
QMAKE_LIBS_OPENGL_ES2_QT = -llibglesv2 -lcone -lws32
QMAKE_LIBS_OPENVG       = -llibOpenVG -lfbscli -lbitgdi -lgdi
QMAKE_LIBS_THREAD       = -llibpthread
QMAKE_LIBS_COMPAT       = 
QMAKE_LIBS_QT_ENTRY     = -llibcrt0.lib
QMAKE_LIBS_S60          = -lavkon -leikcoctl

exists($${EPOCROOT}epoc32/include/platform/sgresource/sgimage.h) {
    QMAKE_LIBS_OPENVG += -lsgresource
}

contains(QMAKE_HOST.os,Windows) {
    QMAKE_COPY           = copy /y
    QMAKE_COPY_DIR       = xcopy /s /q /y /i
    QMAKE_MOVE           = move
    QMAKE_DEL_FILE       = del 2> NUL
    QMAKE_MKDIR          = mkdir
    QMAKE_DEL_DIR        = rmdir
    QMAKE_DEL_TREE       = rmdir /s /q
    QMAKE_CHK_DIR_EXISTS = if not exist
} else {
    QMAKE_COPY           = cp
    QMAKE_COPY_DIR       = cp -r
    QMAKE_MOVE           = mv
    QMAKE_DEL_FILE       = rm -f
    QMAKE_MKDIR          = mkdir
    QMAKE_DEL_DIR        = rmdir
    QMAKE_DEL_TREE       = rm -rf
    QMAKE_CHK_DIR_EXISTS = test -d
}

QMAKE_IDL		  = midl
QMAKE_LIB		  = ar -ru
QMAKE_RC		  = windres
QMAKE_ZIP		  = zip -r -9
QMAKE_UNZIP               = unzip -o

QMAKE_TAR                 = tar -cf
QMAKE_GZIP                = gzip -9f

QT_ARCH               = symbian

load(qt_config)

# These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS
QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins
QT_IMPORTS_BASE_DIR = /resource/qt/imports

load(symbian/platform_paths)

# The Symbian^3 PDK does not necessarily contain the required sis files.
# However, libstdcppv5 first appeared in Symbian^3 (S60 5.2), so check for that too.
exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.2.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.2.sis)|exists($${EPOCROOT}epoc32/release/armv5/lib/libstdcppv5.dso) {
    S60_VERSION = 5.2
} else {
    exists($${EPOCROOT}epoc32/release/winscw/udeb/z/system/install/series60v5.1.sis)|exists($${EPOCROOT}epoc32/data/z/system/install/series60v5.1.sis) {
        S60_VERSION = 5.1
    } else {
        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
            }
        }
    }
}

contains(S60_VERSION, "3\\.1") {
    SYMBIAN_VERSION = 9.2
} else:contains(S60_VERSION, "3\\.2") {
    SYMBIAN_VERSION = 9.3
} else:contains(S60_VERSION, "5\\.0") {
    SYMBIAN_VERSION = 9.4
} else:contains(S60_VERSION, "5\\.1") {
    SYMBIAN_VERSION = Symbian2
} else:contains(S60_VERSION, "5\\.2") {
    SYMBIAN_VERSION = Symbian3
}

# pkg_depends_webkit, pkg_depends_core, and pkg_platform_dependencies can be removed by developer
# if multiple languages need to be supported by pkg file. In that case the developer should declare
# multiple language compatible dependency statements him/herself.

default_deployment.pkg_prerules += pkg_depends_webkit pkg_depends_qt pkg_platform_dependencies

# Supports S60 3.0, 3.1, 3.2, 5.0 and Symbian^3 by default
pkg_platform_dependencies = \
    "; Default HW/platform dependencies" \
    "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
    "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
    "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
    "[0x1028315F],0,0,0,{\"S60ProductID\"}" \
    "[0x20022e6d],0,0,0,{\"S60ProductID\"}" \
    " "

DEPLOYMENT += default_deployment

defineReplace(symbianRemoveSpecialCharacters) {
    # Produce identical string to what SymbianCommonGenerator::removeSpecialCharacters and
    # SymbianCommonGenerator::removeEpocSpecialCharacters produce

    fixedStr = $$1

    fixedStr = $$replace(fixedStr, /,_)
    fixedStr = $$replace(fixedStr, \\\\,_)
    fixedStr = $$replace(fixedStr, " ",_)
    symbian-abld|symbian-sbsv2 {
        fixedStr = $$replace(fixedStr, -,_)
        fixedStr = $$replace(fixedStr, \\.,_)
        fixedStr = $$replace(fixedStr, :,_)
    }

    return ($$fixedStr)
}

