#
# qmake configuration for linux-mipsel-broadcom-97425-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)

load(device_config)

defineTest(qtConfSanitizeMkspec) {
    isEmpty(B_REFSW_DEBUG): \
        error("B_REFSW_DEBUG needs to be set via -device-option B_REFSW_DEBUG=(y|n)")
    isEmpty(BRCM_ROCKFORD_PATH): \
        error("BRCM_ROCKFORD_PATH needs to be set via -device-option BRCM_ROCKFORD_PATH=<path>")
    isEmpty(BRCM_APPLIBS_PATH): \
        error("BRCM_APPLIBS_PATH needs to be set via -device-option BRCM_APPLIBS_PATH=<path>")
    deviceSanityCheckCompiler()
}

# Modify the defaults we loaded above
CROSS_COMPILE           = mipsel-linux-
QMAKE_CC                = $${CROSS_COMPILE}gcc
QMAKE_CXX               = $${CROSS_COMPILE}g++
QMAKE_LINK              = $${QMAKE_CXX}
QMAKE_LINK_SHLIB        = $${QMAKE_CXX}

QMAKE_AR                = $${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY           = $${CROSS_COMPILE}objcopy
QMAKE_NM                = $${CROSS_COMPILE}nm -P
QMAKE_STRIP             = $${CROSS_COMPILE}strip

#TODO: Clean Qt to work with uclibc not calling itself GLIBC.
#QMAKE_CFLAGS           += -D__FORCE_NOGLIBC
#QMAKE_CXXFLAGS         += -D__FORCE_NOGLIBC


BRCM_PLATFORM           = 97425

# Figure the kind of directfb build used.
BRCM_BUILD_TYPE         = debug
contains(B_REFSW_DEBUG, [Nn]) {
    BRCM_BUILD_TYPE     = release
}

QMAKE_INCDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/interface/khronos/include
QMAKE_LIBDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE}
QMAKE_LIBS_OPENGL_ES2   = -lv3ddriver -lrt
QMAKE_LIBS_EGL          =

QMAKE_INCDIR_POST      += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
QMAKE_LIBDIR_POST      += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
QMAKE_RPATHLINKDIR_POST += $$QMAKE_LIBDIR_OPENGL_ES2 $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3

# DirectFB platform hooks for this hardware
QT_CONFIG              += directfb_egl egl
DIRECTFB_PLATFORM_HOOKS_SOURCES = $$PWD/qdirectfbeglhooks_bcm97425.cpp
DIRECTFB_PLATFORM_HOOKS_INCLUDEPATH = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb
DIRECTFB_PLATFORM_HOOKS_LIBS = -ldbpl
DIRECTFB_PLATFORM_HOOKS_LIBDIR = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE}

QT_QPA_DEFAULT_PLATFORM = directfbegl

load(qt_config)
