#!/bin/sh
BUILD_TREE=`/bin/pwd`
SOURCE_TREE=`dirname $0`
SOURCE_TREE=`cd "$SOURCE_TREE"; /bin/pwd`
CONFIG_VARS="$BUILD_TREE/.config.vars"
INSTALL_PREFIX=
INSTALL_LIBS=
INSTALL_BINS=
INSTALL_HEADERS=
INSTALL_FEATURES=
INSTALL_IMPORTS=
INSTALL_QML=
BUILD_EXAMPLES=yes
BUILD_TESTS=yes
BUILD_UCHARDET=auto
BUILD_ICU=auto
QMAKE_CONFIG=
QMAKE_PARAMS=
QMAKE_DEBUG=
QMAKE_SPEC=
OPT_HELP=no
QMAKE=`which qmake || which qmake-qt5 || which qmake-qt4` 2>/dev/null
if [ -f "$CONFIG_VARS" ]; then
rm "$CONFIG_VARS"
fi
#-------------------------------------------------------------------------------
# parse command line arguments
#-------------------------------------------------------------------------------
# parse the arguments, setting things to "yes" or "no"
while [ "$#" -gt 0 ]; do
CURRENT_OPT="$1"
UNKNOWN_ARG=no
case "$1" in
#Autoconf style options
--enable-*)
VAR=`echo $1 | sed "s,^--enable-\(.*\),\1,"`
VAL=yes
;;
--disable-*)
VAR=`echo $1 | sed "s,^--disable-\(.*\),\1,"`
VAL=no
;;
--*=*)
VAR=`echo $1 | sed "s,^--\(.*\)=.*,\1,"`
VAL=`echo $1 | sed "s,^--.*=\(.*\),\1,"`
;;
--nomake|--make|--prefix|--libdir|--bindir|--headerdir|--featuredir|--importdir|--qmldir|--qmake|--spec|--config|--var)
VAR=`echo $1 | sed "s,^--\(.*\),\1,"`
shift
VAL="$1"
;;
--no-*)
VAR=`echo $1 | sed "s,^--no-\(.*\),\1,"`
VAL=no
;;
--*)
VAR=`echo $1 | sed "s,^--\(.*\),\1,"`
VAL=yes
;;
#Qt style options that pass an argument
-nomake|-make|-prefix|-libdir|-bindir|-headerdir|-featuredir|-importdir|-qmldir|-qmake|-spec|-config|-var)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
shift
VAL="$1"
;;
#Qt style no options
-no-uchardet|-no-icu)
VAR=`echo $1 | sed 's,^-no-\(.*\),\1,'`
VAL=no
;;
#Qt style yes options
-uchardet|-icu)
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
VAL=yes
;;
-*)
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
VAL=unknown
;;
*)
UNKNOWN_ARG=yes
;;
esac
if [ "$UNKNOWN_ARG" = "yes" ]; then
echo "$1: unknown argument"
OPT_HELP=yes
ERROR=yes
shift
continue
fi
shift
UNKNOWN_OPT=no
case "$VAR" in
prefix)
INSTALL_PREFIX="$VAL"
;;
libdir)
INSTALL_LIBS="$VAL"
;;
bindir)
INSTALL_BINS="$VAL"
;;
headerdir)
INSTALL_HEADERS="$VAL"
;;
featuredir)
INSTALL_FEATURES="$VAL"
;;
importdir)
INSTALL_IMPORTS="$VAL"
;;
qmldir)
INSTALL_QML="$VAL"
;;
nomake)
case "$VAL" in
examples)
BUILD_EXAMPLES=no
;;
tests)
BUILD_TESTS=no
;;
*)
CURRENT_OPT="$VAL"
UNKNOWN_OPT=yes
;;
esac
;;
make)
case "$VAL" in
examples)
BUILD_EXAMPLES=yes
;;
tests)
BUILD_TESTS=yes
;;
*)
CURRENT_OPT="$VAL"
UNKNOWN_OPT=yes
;;
esac
;;
verbose)
QMAKE_CONFIG="$QMAKE_CONFIG verbose"
;;
static)
QMAKE_CONFIG="$QMAKE_CONFIG static"
;;
qmake)
QMAKE="$VAL"
;;
spec)
QMAKE_SPEC="$VAL"
;;
config)
QMAKE_CONFIG="$QMAKE_CONFIG $VAL"
;;
var)
echo "$VAL" >> "$CONFIG_VARS"
;;
d)
QMAKE_DEBUG="$QMAKE_DEBUG -d"
;;
uchardet)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
BUILD_UCHARDET=$VAL
else
UNKNOWN_OPT=yes
fi
;;
icu)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
BUILD_ICU=$VAL
else
UNKNOWN_OPT=yes
fi
;;
h|help)
OPT_HELP=yes
;;
*)
UNKNOWN_OPT=yes
;;
esac
if [ "$UNKNOWN_OPT" = "yes" ]; then
echo "${CURRENT_OPT}: unknown option"
OPT_HELP=yes
ERROR=yes
fi
done
if [ "$OPT_HELP" = "yes" ]; then
cat << EOF
Usage: configure [options]
Installation options:
-prefix
............ The installation prefix
-libdir ............ Libraries will be installed to
(default QT_INSTALL_LIBS)
-bindir ............ Binaries will be installed to
(default QT_INSTALL_BINS)
-headerdir ......... Headers will be installed to
(default QT_INSTALL_HEADERS/Communi)
-featuredir ........ Features will be installed to
(default QT_HOST_DATA/mkspecs/features)
-importdir ......... Imports for QML1 will be installed to /Communi
(default QT_INSTALL_IMPORTS/Communi)
-qmldir ............ Imports for QML2 will be installed to /Communi
(default QT_INSTALL_QML/Communi)
Configure options:
-verbose ................. Verbose build output
-static .................. Build static library
-qmake ................... qmake to use
-config (config) ......... Additional configuration options recognized by qmake
(eg. -config warn_off)
-var (value) ............. Additional variables recognized by qmake
(eg. -var "QMAKE_LFLAGS += -L/path/to/icu")
-make (part) ............. Add part to the list of parts to be built at
make time (available parts: examples tests)
-nomake (part) ........... Exclude part from the list of parts to be built
Additional options:
-no-uchardet ............. Do not build uchardet support
-uchardet ................ Build uchardet support
-no-icu .................. Do not build ICU support
-icu ..................... Build ICU support
EOF
[ "x$ERROR" = "xyes" ] && exit 1
exit 0
fi
if [ ! -f "$QMAKE" ]; then
echo "ERROR: Unable to find qmake. Try $0 -qmake /path/to/qmake."
exit 1
fi
if [ "$INSTALL_PREFIX" != "" ]; then
[ "$INSTALL_LIBS" = "" ] && INSTALL_LIBS="$INSTALL_PREFIX/lib"
[ "$INSTALL_BINS" = "" ] && INSTALL_BINS="$INSTALL_PREFIX/bin"
[ "$INSTALL_HEADERS" = "" ] && INSTALL_HEADERS="$INSTALL_PREFIX/include"
[ "$INSTALL_FEATURES" = "" ] && INSTALL_FEATURES="$INSTALL_PREFIX/features"
[ "$INSTALL_IMPORTS" = "" ] && INSTALL_IMPORTS="$INSTALL_PREFIX/imports"
[ "$INSTALL_QML" = "" ] && INSTALL_QML="$INSTALL_PREFIX/qml"
fi
[ "$INSTALL_LIBS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_LIBS=$INSTALL_LIBS"
[ "$INSTALL_BINS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_BINS=$INSTALL_BINS"
[ "$INSTALL_HEADERS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_HEADERS=$INSTALL_HEADERS"
[ "$INSTALL_FEATURES" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_FEATURES=$INSTALL_FEATURES"
[ "$INSTALL_IMPORTS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_IMPORTS=$INSTALL_IMPORTS"
[ "$INSTALL_QML" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_QML=$INSTALL_QML"
[ "$INSTALL_LIBS" = "" ] && INSTALL_LIBS=`$QMAKE -query QT_INSTALL_LIBS`
[ "$INSTALL_BINS" = "" ] && INSTALL_BINS=`$QMAKE -query QT_INSTALL_BINS`
[ "$INSTALL_HEADERS" = "" ] && INSTALL_HEADERS=`$QMAKE -query QT_INSTALL_HEADERS`/Communi
if [ "$INSTALL_FEATURES" = "" ]; then
$QMAKE -query QT_HOST_DATA > /dev/null 2>&1
if [ $? != 0 ]; then
INSTALL_FEATURES=`$QMAKE -query QMAKE_MKSPECS`/features
else
INSTALL_FEATURES=`$QMAKE -query QT_HOST_DATA`/mkspecs/features
fi
fi
[ "$INSTALL_IMPORTS" = "" ] && INSTALL_IMPORTS=`$QMAKE -query QT_INSTALL_IMPORTS`
[ "$INSTALL_QML" = "" ] && INSTALL_QML=`$QMAKE -query QT_INSTALL_QML`
[ "$BUILD_EXAMPLES" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_examples"
[ "$BUILD_TESTS" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_tests"
[ "$BUILD_UCHARDET" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_uchardet"
[ "$BUILD_ICU" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_icu"
[ "$QMAKE_SPEC" != "" ] && QMAKE_SPEC="-spec $QMAKE_SPEC"
echo
echo "Running $QMAKE $QMAKE_SPEC..."
$QMAKE $QMAKE_SPEC $QMAKE_DEBUG $QMAKE_PARAMS "CONFIG+=$QMAKE_CONFIG" -r $SOURCE_TREE/libcommuni.pro
if [ $? != 0 ]; then
echo "ERROR: qmake run failed."
exit 1
fi
echo
echo "Communi build configuration:"
if [ "$QMAKE_CONFIG" != "" ]; then
echo "Configuration ...................$QMAKE_CONFIG"
fi
echo "uchardet support ................ $BUILD_UCHARDET"
echo "ICU support ..................... $BUILD_ICU"
echo "Examples ........................ $BUILD_EXAMPLES"
echo "Tests ........................... $BUILD_TESTS"
echo
echo "Install libs .................... $INSTALL_LIBS"
#echo "Install binaries ................ $INSTALL_BINS"
echo "Install headers ................. $INSTALL_HEADERS"
echo "Install features ................ $INSTALL_FEATURES"
echo "Install QML1 imports ............ $INSTALL_IMPORTS"
echo "Install QML2 imports ............ $INSTALL_QML"
echo
echo Communi is now configured for building. Just run \'make\'.
echo