#
# qmake configuration for symbian-gcce
#

include(../common/symbian/symbian-makefile.conf)

include(../common/g++.conf)

QMAKE_CC		= arm-none-symbianelf-gcc
QMAKE_CXX		= arm-none-symbianelf-g++
QMAKE_LINK		= arm-none-symbianelf-ld
QMAKE_LINK_SHLIB	= arm-none-symbianelf-ld
QMAKE_LINK_C		= arm-none-symbianelf-ld
QMAKE_LINK_C_SHLIB	= arm-none-symbianelf-ld
QMAKE_AR		= arm-none-symbianelf-ar cqs

# gcce defaults to 'arm' instruction set.  Lets use the better 'thumb' if possible
# notice that the middle part of the following set of vars matches the TARGET content of the libs

QMAKE_qtmain_CXXFLAGS	= -mthumb
QMAKE_QtCore_CXXFLAGS	= -mthumb
#QMAKE_QtGui_LFLAGS	= -Ttext 0x8000 -Tdata 0xE00000
QMAKE_QtDBus_CXXFLAGS	= -mthumb
QMAKE_QtDeclarative_CXXFLAGS	= -mthumb
QMAKE_QtMultimedia_CXXFLAGS	= -mthumb
QMAKE_QtNetwork_CXXFLAGS	= -mthumb
QMAKE_QtOpenGL_CXXFLAGS	= -mthumb
QMAKE_QtOpenVG_CXXFLAGS	= -mthumb
QMAKE_phonon_CXXFLAGS	= -mthumb
QMAKE_QtScript_CXXFLAGS	= -mthumb
QMAKE_QtScriptTools_CXXFLAGS	= -mthumb
QMAKE_QtSql_CXXFLAGS	= -mthumb
QMAKE_QtSvg_CXXFLAGS	= -mthumb
QMAKE_QtTest_CXXFLAGS	= -mthumb
QMAKE_QtXmlPatterns_CXXFLAGS	= -mthumb
QMAKE_QtXml_CXXFLAGS	= -mthumb
#QMAKE_QtWebKit_LFLAGS	= -Ttext 0x8000 -Tdata 0xE00000

# never use -fPIC, gcce-linker doesn't like it.
# g++ conf above adds it if the host platform is 64 bit, so we remove it again
QMAKE_CFLAGS_SHLIB	-= -fPIC
QMAKE_CFLAGS_STATIC_LIB	-= -fPIC
QMAKE_CXXFLAGS_SHLIB	-= -fPIC
QMAKE_CXXFLAGS_STATIC_LIB	-= -fPIC

QMAKE_LFLAGS_SONAME	=
#QMAKE_LFLAGS_THREAD	+=
QMAKE_LFLAGS_NOUNDEF	=
QMAKE_LFLAGS_RPATH	= --rpath=

DEFINES		+= __GCCE__ \
                   UNICODE

QMAKE_LFLAGS_APP        += --entry=_E32Startup -u _E32Startup
QMAKE_LFLAGS_SHLIB      += -shared --default-symver --entry=_E32Dll -u _E32Dll
QMAKE_LFLAGS_PLUGIN     += $$QMAKE_LFLAGS_SHLIB

gcceExtraFlags = --include=$${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float
QMAKE_CFLAGS += $${gcceExtraFlags}
QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden -Os
#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
isEmpty(QT):contains(TEMPLATE, app) {
    QMAKE_CXXFLAGS += --include=$${EPOCROOT}epoc32/include/stdapis/staticlibinit_gcce.h
}

QMAKE_LFLAGS += --target1-abs \
                --no-undefined \
                --nostdlib

QMAKE_LIBDIR	+= $${EPOCROOT}epoc32/release/armv5/udeb/

# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
QMAKE_GCC_SEARCH_DIRS = $$system($$QMAKE_CXX -print-search-dirs)
QMAKE_GCC_SEARCH_DIRS = "$$join(QMAKE_GCC_SEARCH_DIRS, " ")"
QMAKE_GCC_SEARCH_DIRS = $$replace(QMAKE_GCC_SEARCH_DIRS, ".*libraries: *", "")
QMAKE_GCC_SEARCH_DIRS = $$replace(QMAKE_GCC_SEARCH_DIRS, "=", "")
contains(QMAKE_HOST.os,Windows) {
    QMAKE_GCC_SEARCH_DIRS = $$split(QMAKE_GCC_SEARCH_DIRS, ;)
} else {
    QMAKE_GCC_SEARCH_DIRS = $$split(QMAKE_GCC_SEARCH_DIRS, :)
}
for(line, QMAKE_GCC_SEARCH_DIRS):QMAKE_LIBDIR += $$line

QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib

INCLUDEPATH = $${EPOCROOT}epoc32/include/ \
    $${EPOCROOT}epoc32/include/variant \
    $${EPOCROOT}epoc32/include/stdapis \
    $${EPOCROOT}epoc32/include/gcce \
    $$INCLUDEPATH

