##!/bin/bash

if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "-help" ]; then
    echo "** valid options:"
    echo "  --use_xim=N : disable the support of XIM, exec size is 50k smaller"
    echo "  --prefix=dir_name : install prefix(e.g. /usr)"
    echo "  --new_gtk_im=Y/N :  enable/disable new gtk im module for firefox 1.5 over-the-spot"
    echo "  --use_tray=N : disable the support of system tray, exec size is 12k smaller"
    echo "  --use_i18n=Y : enable i18n"
    echo "  --use_tsin=N : disable Tsin input method"
    exit
fi

MAKE=make
which gmake > /dev/null 2> /dev/null
if [ $? = 0 ]; then
  MAKE=gmake
fi

FREEBSD=0
uname | grep FreeBSD > /dev/null 2> /dev/null
if [ $? = 0 ]; then
  FREEBSD=1
fi

SO_FLAGS="-shared"
MAC_OS=0
uname | grep Darwin > /dev/null 2> /dev/null
if [ $? = 0 ]; then
  FREEBSD=1
  MAC_OS=1
  SO_FLAGS="-dynamic -bundle -undefined suppress -flat_namespace"
fi

prefix="/usr/local"
use_xim='Y'
#new_gtk_im='N'
new_gtk_im='Y'
use_tray='Y'
use_i18n='N'
use_tsin='Y'

if [ "$GCIN_USE_XIM" ]; then
  use_xim=$GCIN_USE_XIM
fi

for opt do
  case "$opt" in
  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
  ;;
  --use_xim=*) use_xim=`echo $opt | cut -d '=' -f 2`
  ;;
  --new_gtk_im=*) new_gtk_im=`echo $opt | cut -d '=' -f 2`
  ;;
  --use_tray=*) use_tray=`echo $opt | cut -d '=' -f 2`
  ;;
  --use_i18n=*) use_i18n=`echo $opt | cut -d '=' -f 2`
  ;;
  --use_tsin=*) use_tsin=`echo $opt | cut -d '=' -f 2`
  ;;
  esac
done

echo "prefix: $prefix"


GTK=gtk+-2.0

echo -n ".... Testing $GTK : "

GTKINC=`pkg-config --cflags $GTK`

if [ $? != 0 ]; then
  echo "$GTK or above required --cflags"
  rm -f config.mak
  exit -1;
fi

## problem in MacOS, by candyz
if [ $MAC_OS = 1 ]; then
  GTKINC="-I/sw/include `pkg-config --cflags $GTK`"
fi

if [ ! -x /bin/bash ]; then
  for i in /usr/bin/bash /usr/local/bin/bash
  do
    [ -x $i ] || next
    echo "/bin/bash -> $i"
    for i in scripts/*
    do
      sed -e "s~/bin/bash~$i~" < $i > $i.tmp
      mv $i.tmp $i
    done
  done
fi


GTKLDFLAGS=`pkg-config --libs $GTK`

if [ $? != 0 ]; then
  echo "$GTK or above required --libs"
  echo "please install rpm/package libgtk+2.0_0-devel"
  rm -f config.mak
  exit -1;
else
  echo " found."
fi

LIB='lib'
if [ -d /lib64 ]; then
LIB='lib64'
fi

QT_IM='N'
for i in qt3 qt4
do
  QT_IM_DIR=/usr/lib/$i/plugins/$LIB/inputmethods
  echo "testing if you have QT_IM_MODULE dir:$QT_IM_DIR support"
  if [ -d  $QT_IM_DIR ]; then
    QT_IM='Y'
    QT=$i
    break
  fi
done

if [ $QT_IM = "Y" ]; then
    echo "-> Yes, you have QT_IM_MODULE $QT_IM_DIR support"
else
    echo "-> No, you don't have"
fi


bindir=$prefix/bin
datadir=$prefix/share
mandir=$datadir/man
libdir=$prefix/$LIB
includedir=$prefix/include
optdir=/opt
GCIN_VERSION=`cat VERSION.gcin`
sed -e "s/__gcin_version__/$GCIN_VERSION/" < gcin.spec.in > gcin.spec


# SUSE
if [ -d /opt/gnome/share/control-center-2.0/capplets ]; then
  GCIN_SETUP_DESKTOP=/opt/gnome/share/control-center-2.0/capplets
  GCIN_SETUP_DESKTOP_rpm='$(optdir)/gnome/share/control-center-2.0/capplets'
else
  GCIN_SETUP_DESKTOP=/usr/share/control-center-2.0/capplets
  GCIN_SETUP_DESKTOP_rpm='$(datadir)/control-center-2.0/capplets'
fi


if [ $QT_IM = 'N' ]; then
  mv gcin.spec gcin.spec.tmp
  grep -v qt3/plugins/inputmethods gcin.spec.tmp > gcin.spec
fi


OPTFLAGS="-g"
if [ $prefix = /usr ]; then
  OPTFLAGS="-O"
fi


echo "CC=gcc" > config.mak
echo "MAKE=$MAKE" >> config.mak
echo "GTKINC=$GTKINC" >> config.mak
echo "prefix=$prefix" >> config.mak
echo "bindir=\$(DESTDIR)$bindir" >> config.mak
echo "mandir=\$(DESTDIR)$mandir" >> config.mak
echo "man1dir=\$(mandir)/man1" >> config.mak
echo "bindir_r=$bindir" >> config.mak
echo "datadir=\$(DESTDIR)$datadir" >> config.mak
echo "datadir_r=$datadir" >> config.mak
echo "libdir=\$(DESTDIR)$libdir" >> config.mak
echo "gcinlibdir=\$(libdir)/gcin" >> config.mak
echo "includedir=\$(DESTDIR)$includedir" >> config.mak

echo "LDFLAGS=$GTKLDFLAGS" >> config.mak
echo "GCIN_VERSION=$GCIN_VERSION" >> config.mak
echo "GCIN_TABLE_DIR=\$(datadir_r)/gcin/table" >> config.mak
echo "GCIN_OGG_DIR=\$(datadir_r)/gcin/ogg" >> config.mak
echo "GCIN_TABLE_DIR_i=\$(datadir)/gcin/table" >> config.mak
echo "GCIN_SCRIPT_DIR=\$(datadir_r)/gcin/script" >> config.mak
echo "GCIN_SCRIPT_DIR_i=\$(datadir)/gcin/script" >> config.mak
echo "OPTFLAGS=$OPTFLAGS" >> config.mak
echo "DOC_DIR=\$(datadir_r)/doc/gcin-$GCIN_VERSION" >> config.mak
echo "DOC_DIR_i=\$(datadir)/doc/gcin-$GCIN_VERSION" >> config.mak
echo "GCIN_ICON_DIR=\$(datadir_r)/icons/gcin" >> config.mak
echo "SYS_ICON_DIR=\$(datadir_r)/icons" >> config.mak
echo "GCIN_ICON_DIR_i=\$(datadir)/icons/gcin" >> config.mak
echo "GCIN_BIN_DIR=\$(bindir_r)" >> config.mak
echo "FREEBSD=$FREEBSD" >> config.mak
echo "QT_IM=$QT_IM" >> config.mak
echo "QT=$QT" >> config.mak
echo "USE_XIM=$use_xim" >> config.mak
echo "GCIN_SETUP_DESKTOP=$GCIN_SETUP_DESKTOP" >> config.mak
echo "GCIN_SETUP_DESKTOP_rpm=$GCIN_SETUP_DESKTOP_rpm" >> config.mak
echo "NEW_GTK_IM=$new_gtk_im" >> config.mak
echo "LIB=$LIB" >> config.mak
echo "MAC_OS=$MAC_OS" >> config.mak
echo "SO_FLAGS=$SO_FLAGS" >> config.mak
echo "USE_TRAY=$use_tray" >> config.mak
echo "USE_I18N=$use_i18n" >> config.mak
echo "USE_TSIN=$use_tsin" >> config.mak


cd menu
for i in *.in
do
  outf=`echo $i | sed -e "s/\.in//"`
#  echo $outf
  if [ $bindir = /usr/bin ]; then
    sed -e "s~/usr/local/bin~/usr/bin~" < $i > $outf
  else
    cp $i $outf
  fi
done
