#!/bin/bash
# This script will help you in compiling qtopia-x11 using the OM-Toolchain.
# 
# Usage:
#  . /usr/local/openmoko/set_env
#  mkdir qtopia-build
#  cd qtopia-build
#  qtopia-env qtopia-path/configure
#  make
#  make install
#
# Based on qtopia-phone-x11_git.bb
# (c) 2008 - Marco Trevisan (Treviño)

if [ -z "$1" ] || [ "$(basename "$1")" != "configure" ]; then
	echo "You should provide a valid configure file as parameter"
	exit 1
elif [ -n "$OMTOOL_DIR" ]; then
	QTOPIA_CONFIGURE="$1"
	QTOPIA_PATH=$(dirname "$1")
else
	echo "You must configure Openmoko Toolchain setting the \$OMTOOL_DIR path"
	exit 1
fi

QT_ARCH="arm"
#QT_ENDIAN="-little-endian"
PLATFORM="linux-oe-g++"
OE_QT_PREFIX="/opt/Qtopia"
TARGET_DEVICE="ficgta01"
HOST_SYS="arm-angstrom-linux-gnueabi"

OM_INCDIR="${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/usr/include"
OM_LIBIR="${OMTOOL_DIR}/arm/arm-angstrom-linux-gnueabi/usr/lib"

export CFLAGS="${CFLAGS/-Os/-O2} -fomit-frame-pointer -finline-functions -falign-functions=2 -falign-loops=2 -falign-jumps=2 -march=armv4t -mtune=arm920t -msoft-float"
export CXXFLAGS="${CXXFLAGS/-Os/-O2} -fomit-frame-pointer -finline-functions -falign-functions=2 -falign-loops=2 -falign-jumps=2 -march=armv4t -mtune=arm920t -msoft-float"

export OE_QMAKE_CC="$(echo ${CC/ccache/} | cut -d' ' -f1)"
export OE_QMAKE_CFLAGS="${CFLAGS}"
export OE_QMAKE_CXX="$(echo ${CXX/ccache/} | cut -d' ' -f1)"
export OE_QMAKE_LDFLAGS="${LDFLAGS}"
export OE_QMAKE_AR="$(echo ${AR/ccache/} | cut -d' ' -f1)"
export OE_QMAKE_STRIP="$STRIP"
export OE_QMAKE_RPATH="-Wl,-rpath-link,"

sed -i s%$\(OE_QMAKE_CC\)%"${CC}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_CFLAGS\)%"${CFLAGS}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_CXX\)%"${CXX}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_CXXFLAGS\)%"${CXXFLAGS}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_LINK\)%"${CXX}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_LDFLAGS\)%"${LDFLAGS}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_AR\)%"${AR}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf
sed -i s%$\(OE_QMAKE_STRIP\)%"${STRIP}"%g ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/mkspecs/qws/$PLATFORM/qmake.conf

sed -i "s%^TOOLCHAIN=.*%#\0%" ${QTOPIA_PATH}/devices/${TARGET_DEVICE}/environment

unset CC
unset CXX
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
unset STRIP

#echo "now you can configure qtopia-x11 with:
$QTOPIA_CONFIGURE -xplatform $PLATFORM -arch ${QT_ARCH} ${QT_ENDIAN} \
 -prefix ${OE_QT_PREFIX} -device ${TARGET_DEVICE} -verbose -no-drm \
 -no-sxe -displaysize 480x640-640x480 -dbus -release -no-test \
 -extra-qtopiacore-config "-qt-libjpeg -qt-zlib -qt-libpng -no-iconv \
 -no-sm -fontconfig -xrender -xrandr" -mediaengines gstreamer \
 -buildkey ${HOST_SYS} \
 -I${OM_INCDIR} \
 -I${OM_INCDIR}/freetype2 -I${OM_INCDIR}/fontconfig \
 -I${OM_INCDIR}/dbus-1.0 \
 -I${OM_INCDIR}/c++/4.1.2 \
 -I${OM_INCDIR}/c++/4.1.2/arm-angstrom-linux-gnueabi \
 -L${OM_LIBIR}
