#!/bin/sh # # # Configures the build of Kiltdown. # # Copyright (c) 2001 Marc Wandschneider. All Rights Reserved # ######################## # # These are our local variables for working. # HELP= I_FLAGS= L_FLAGS= l_FLAGS= R_FLAGS= PLATFORM= DEBUG=-O CURDIR=`dirname $0` ######################## # # These are the variables we're trying to determine values for. # QTINC= QTLIB= DBINC= DBLIB= KDEINC= KDELIB= echo ######################## # # Process the command lines arguments # while [ -n "$1" ]; do case `echo $1 | sed -e 's/^-*//'` in qtdir) shift; QTDIR=$1; ;; qtdir=?*) QTDIR=`echo $1 | awk -F '=' '{print $2}'`; ;; qtinc) shift; QTINC=$1; ;; qtinc=?*) QTINC=`echo $1 | awk -F '=' '{print $2}'`; ;; qtlib) shift; QTLIB=$1; ;; qtlib=?*) QTLIB=`echo $1 | awk -F '=' '{print $2}'`; ;; dbdir) shift; DBDIR=$1; ;; dbdir=?*) DBDIR=`echo $1 | awk -F '=' '{print $2}'`; ;; dbinc) shift; DBINC=$1; ;; dbinc=?*) DBINC=`echo $1 | awk -F '=' '{print $2}'`; ;; dblib) shift; DBLIB=$1; ;; dblib=?*) DBLIB=`echo $1 | awk -F '=' '{print $2}'`; ;; platform) shift; PLATFORM=$1; ;; platform=?*) PLATFORM=`echo $1 | awk -F '=' '{print $2}'`; ;; kdedir) shift; CONF_KDEDIR=$1; ;; kdedir=?*) CONF_KDEDIR=`echo $1 | awk -F '=' '{print $2}'`; ;; kdeinc) shift; KDEINC=$1; ;; kdeinc=?*) KDEINC=`echo $1 | awk -F '=' '{print $2}'`; ;; kdelib) shift; KDELIB=$1; ;; kdelib=?*) KDELIB=`echo $1 | awk -F '=' '{print $2}'`; ;; debug) DEBUG='-g -DK_DEBUG' ;; release) DEBUG='-O' ;; I?*) I_FLAGS="$I_FLAGS $1" ;; L?*) L_FLAGS="$L_FLAGS $1" ;; R?*) R_FLAGS="$R_FLAGS $1" ;; l?*) l_FLAGS="$l_FLAGS $1" ;; I) shift I_FLAGS="$I_FLAGS -I$1" ;; L) shift L_FLAGS="$L_FLAGS -L$1" ;; R) shift R_FLAGS="$R_FLAGS -R$1" ;; l) shift l_FlAGS="$l_FLAGS -l$1" ;; help) HELP=yes ;; *) echo 'Unknown Argument: $1' HELP=yes ERROR=yes ;; esac shift done if [ "x$HELP" = "xyes" ] then cat < Use the specified configuration file in configs/ dir. (auto-detected by default) -qtdir Use the given directory as the location for Qt 2.2.3 -qtinc If you don't specify "qtdir", you can specify the include dir separately. -qtlib If you don't specify "qtlib", you can specify the lib dir separately. -dbdir Use the given directory as the location for DB libraries (version 3.1.17 or 3.2.9) -dbinc If you don't specify "dbdir", you can specify the include dir separately. -dblib If you don't specify "dblib", you can specify the lib dir separately. -kdedir You can optionally have this application be a KDE 2.1 application and participate in KDE styles. If you do not specify this, then Kiltdown will be a regular X windows Application. -kdeinc If you don't specify "kdedir", you can specify the include files for KDE 2.1 separately -kdelib If you don't specify "kdedir", you can specify the library files separately. -help Display this message. You can also specify extra command line arguments for the compiler, linker, and runtime searchpath using: -I -L -R -l EOF [ "x$ERROR" = "xyes" ] && exit 1 exit 0; fi ######################## # # Do some sanity checking on the values they gave us for incs and libs # # # Qt 2.3 # if [ -z "$QTINC" ] then if [ -n "$QTDIR" ] then QTINC=$QTDIR/include fi fi if [ -z "$QTLIB" ] then if [ -n "$QTDIR" ] then QTLIB=$QTDIR/lib fi fi if [ -n "$QTDIR" ] then QTBIN=$QTDIR/bin/ fi # # DB 3 # if [ -z "$DBINC" ] then if [ -n "$DBDIR" ] then DBINC=$DBDIR/include DBLIB=$DBDIR/lib fi fi if [ -z "$DBLIB" ] then if [ -n "$DBDIR" ] then DBLIB=$DBDIR/lib fi fi # # KDE # if [ -z "$KDEINC" ] then if [ -n "$CONF_KDEDIR" ] then KDEINC=$CONF_KDEDIR/include KDELIB=$CONF_KDEDIR/lib fi fi if [ -z "$KDELIB" ] then if [ -n "$CONF_KDEDIR" ] then KDELIB=$CONF_KDEDIR/lib fi fi ######################## # # Verify the Qt Version # echo -n 'Verifying Qt version 2.2.3 ... ' SD="/usr/include /usr/X11R6/include /usr/local/include `echo $I_FLAGS | sed -e 's/-I//g'`" if [ -z "$QTINC" ] then SRCHDIRS=$SD else if [ -n "$QTINC" ] then if [ -d "$QTINC" ] then SRCHDIRS=$QTINC else SRCHDIRS=$SD fi else SRCHDIRS=$SD fi fi for qd in $SRCHDIRS do if [ -f $qd/qglobal.h ] then HAVEQGLOBAL=yes break fi done if [ "x$HAVEQGLOBAL" != "xyes" ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo " Unable to determine what version of Qt you're" echo " running. Please verify the command line arguments" echo " or the value of the $QTDIR environment variable" echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi QTVERSION=`grep QT_VERSION $qd/qglobal.h | grep -v QT_VERSION_ | grep define | awk '{print $3}'` if [ '!' 0$QTVERSION -eq 230 ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo "You are not running a version of Qt that has been" echo "properly tested with Kiltdown. Currently only" echo "Qt 2.2.3 has been verified to work acceptably." echo "(2.2.4 has been tested, and has too many bugs)." echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo fi echo ok. ######################## # # Verify the DB Version # # echo -n 'Verifying Berkeley DB version >= 3.1 ... ' SD="/usr/include /usr/local/include `echo $I_FLAGS | sed -e 's/-I//g'`" if [ -z "$DBINC" ] then SRCHDIRS=$SD else if [ -n "$DBINC" ] then if [ -d "$DBINC" ] then SRCHDIRS=$DBINC else SRCHDIRS=$SD fi else SRCHDIRS=$SD fi fi for di in $SRCHDIRS do if [ -f $di/db.h ] then HAVEDGLOBAL=yes break fi done if [ "x$HAVEDGLOBAL" != "xyes" ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo " Unable to determine what version of DB you're" echo " running. Please verify the command line arguments" echo " or the value of the $DBDIR environment variable" echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi DBVM=`grep 'DB_VERSION_MAJOR' $di/db.h | awk '{print $3}'` DBVN=`grep 'DB_VERSION_MINOR' $di/db.h | awk '{print $3}'` if [ '!' 0$DBVM -eq 3 ] then DBVGOOD=no fi if [ '!' 0$DBVM -ge 1 ] then DBVGOOD=no fi if [ "x$DBVGOOD" = "xno" ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo echo "* You are not running a version of Berkely DB that has been" echo " properly tested with Kiltdown. Currently only" echo ' 3.x (x >= 1) have been tested and found to work acceptably' echo " well" echo echo '* Please note that many systems have in /usr/include' echo " but this is often not the right version. You will need to" echo " download db 3.1.17 or db 3.2.9 from www.sleepycat.com and" echo " specify that directory on the command line for $0" echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi echo ok. ######################## # # Verify the KDE Version # # if [ "x$KDEINC" != "x" ] then echo -n 'Verifying KDE version >= 2 ... ' SD="/usr/include /usr/local/include /usr/include/kde /usr/local/kde/include `echo $I_FLAGS | sed -e 's/-I//g'`" if [ -z "$KDEINC" ] then SRCHDIRS=$SD else if [ -n "$KDEINC" ] then if [ -d "$KDEINC" ] then SRCHDIRS=$KDEINC else SRCHDIRS=$SD fi else SRCHDIRS=$SD fi fi for di in $SRCHDIRS do if [ -f $di/kapp.h ] then HAVEDGLOBAL=yes break fi done if [ "x$HAVEDGLOBAL" != "xyes" ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo " Unable to determine what version of KDE you're" echo " running. Please verify the command line arguments." echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi KDEVM=`grep 'KDE_VERSION_MAJOR' $di/kapp.h | awk '{print $3}'` if [ '!' 0$KDEVM -eq 2 ] then KDEVGOOD=no fi if [ "x$KDEVGOOD" = "xno" ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo echo "* You are not running a version of KDE that will work with" echo " Kiltdown. Currently only 2.x versions will work." echo echo '* If you believe you are receiving this message in error, please' echo ' note that many systems have in /usr/include/kde' echo " but this is often not the right version. You will need to" echo " point this configure script at the KDE 2.x header files." echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi # # Great -- it worked. Now set up the environment variables for this! # MWBASE=KMainWindow KDEFLAGS=-D_KILTDOWN_USEKDE I_KDEINC=-I$KDEINC if [ -n "$KDELIB" ] then L_KDELIB=-L$KDELIB fi l_KDELIB="-lkdeui -lkdecore" echo ok. else # # No KDE # MWBASE=QMainWindow KDEFLAGS= fi ######################## # # Figure out the platform information # # echo -n "Verifying platform ... " OS_NAME=`uname -s` OS_VERSION=`uname -r` if [ -z "$PLATFORM" ] then case "$OS_NAME:$OS_VERSION" in Linux:*) PLATFORM=linux-generic ;; FreeBSD:*) PLATFORM=bsd-generic ;; OpenBSD:*) PLATFORM=bsd-generic ;; NetBSD:*) PLATFORM=bsd-generic ;; SunOS:5.*) PLATFORM=solaris-gcc WARNINGS=" Currently, on Solaris, we only support building with GNU utilities -- in particular gcc, (g)make, and libstdc++. For the latter, you will need to make sure that libstdc++ is both in your LD_LIBRARY_PATH to BOTH BUILD *AND* RUN Kiltdown. i.e. (csh) # setenv LD_LIBRARY_PATH /usr/local/lib (sh) # LD_LIBRARY_PATH=/usr/local/lib # export LD_LIBRARY_PATH Your system administrator should really ensure that this library is always in the search path if it is installed (thus making the above unnecessary). " ;; *) echo Fatal Error. echo echo " $0 was unable to find a platform suitably matched to your" echo " computer. You can try to run $0 with \"-platform generic\"" echo " on the command line. This might require some tweaking of" echo " Makefile variables, but should be very close." echo echo " Either way, please send mail to mw@kiltdown.org so he can try" echo " and build a configuration file for your OS." echo echo exit 1; esac fi CONFIG=$CURDIR/configs/$PLATFORM if [ '!' -f $CONFIG ] then echo echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo " The config file \"$PLATFORM\" is not in $CURDIR/configs. Something" echo " is wrong with the source package." echo echo 'DANGER WILL ROBINSON!! DANGER WILL ROBINSON!! DANGER!!! DANGER !!!' echo echo exit 1; fi echo done ######################## # # Okay, now create the Makefiles from Makefile.in. # for mkf in `find $CURDIR -name Makefile.in -print` do mkfb=`echo $mkf | sed -e 's/.in$//'` echo -n "Generating $mkfb ... " rm -f $mkfb cat >> $mkfb <> $mkfb cat $mkf >> $mkfb echo "done" done ######################## # # Print out any warnings we may have generated along the way. # if [ -n "$WARNINGS" ] then echo $WARNINGS fi ######################## # # finito # echo echo echo 'Please be sure, if you have configured Qt 2.3.0 with the' echo '-xft option, that you have added -lXft to this configuration' echo 'command (type "make distclean" and then "configure ..." to run' echo 'again). If not, you will see a bunch of link errors when' echo 'compiling.' echo echo Configuration Complete echo