1#!/bin/sh 2 3BUILD_TREE=`/bin/pwd` 4SOURCE_TREE=`dirname $0` 5SOURCE_TREE=`cd "$SOURCE_TREE"; /bin/pwd` 6CONFIG_VARS="$BUILD_TREE/.config.vars" 7 8INSTALL_PREFIX= 9INSTALL_LIBS= 10INSTALL_BINS= 11INSTALL_HEADERS= 12INSTALL_FEATURES= 13INSTALL_IMPORTS= 14INSTALL_QML= 15 16BUILD_EXAMPLES=yes 17BUILD_QML=yes 18BUILD_TESTS=yes 19 20BUILD_UCHARDET=auto 21BUILD_ICU=auto 22 23QMAKE_CONFIG= 24QMAKE_PARAMS= 25QMAKE_DEBUG= 26QMAKE_SPEC= 27OPT_HELP=no 28 29QMAKE=`which qmake || which qmake-qt5 || which qmake-qt4` 2>/dev/null 30 31if [ -f "$CONFIG_VARS" ]; then 32 rm "$CONFIG_VARS" 33fi 34 35#------------------------------------------------------------------------------- 36# parse command line arguments 37#------------------------------------------------------------------------------- 38 39# parse the arguments, setting things to "yes" or "no" 40while [ "$#" -gt 0 ]; do 41 CURRENT_OPT="$1" 42 UNKNOWN_ARG=no 43 case "$1" in 44 #Autoconf style options 45 --enable-*) 46 VAR=`echo $1 | sed "s,^--enable-\(.*\),\1,"` 47 VAL=yes 48 ;; 49 --disable-*) 50 VAR=`echo $1 | sed "s,^--disable-\(.*\),\1,"` 51 VAL=no 52 ;; 53 --*=*) 54 VAR=`echo $1 | sed "s,^--\(.*\)=.*,\1,"` 55 VAL=`echo $1 | sed "s,^--.*=\(.*\),\1,"` 56 ;; 57 --nomake|--make|--prefix|--libdir|--bindir|--headerdir|--featuredir|--importdir|--qmldir|--qmake|--spec|--config|--var) 58 VAR=`echo $1 | sed "s,^--\(.*\),\1,"` 59 shift 60 VAL="$1" 61 ;; 62 --no-*) 63 VAR=`echo $1 | sed "s,^--no-\(.*\),\1,"` 64 VAL=no 65 ;; 66 --*) 67 VAR=`echo $1 | sed "s,^--\(.*\),\1,"` 68 VAL=yes 69 ;; 70 #Qt style options that pass an argument 71 -nomake|-make|-prefix|-libdir|-bindir|-headerdir|-featuredir|-importdir|-qmldir|-qmake|-spec|-config|-var) 72 VAR=`echo $1 | sed "s,^-\(.*\),\1,"` 73 shift 74 VAL="$1" 75 ;; 76 #Qt style no options 77 -no-uchardet|-no-icu) 78 VAR=`echo $1 | sed 's,^-no-\(.*\),\1,'` 79 VAL=no 80 ;; 81 #Qt style yes options 82 -uchardet|-icu) 83 VAR=`echo $1 | sed 's,^-\(.*\),\1,'` 84 VAL=yes 85 ;; 86 -*) 87 VAR=`echo $1 | sed 's,^-\(.*\),\1,'` 88 VAL=unknown 89 ;; 90 *) 91 UNKNOWN_ARG=yes 92 ;; 93 esac 94 if [ "$UNKNOWN_ARG" = "yes" ]; then 95 echo "$1: unknown argument" 96 OPT_HELP=yes 97 ERROR=yes 98 shift 99 continue 100 fi 101 shift 102 103 UNKNOWN_OPT=no 104 case "$VAR" in 105 prefix) 106 INSTALL_PREFIX="$VAL" 107 ;; 108 libdir) 109 INSTALL_LIBS="$VAL" 110 ;; 111 bindir) 112 INSTALL_BINS="$VAL" 113 ;; 114 headerdir) 115 INSTALL_HEADERS="$VAL" 116 ;; 117 featuredir) 118 INSTALL_FEATURES="$VAL" 119 ;; 120 importdir) 121 INSTALL_IMPORTS="$VAL" 122 ;; 123 qmldir) 124 INSTALL_QML="$VAL" 125 ;; 126 nomake) 127 case "$VAL" in 128 examples) 129 BUILD_EXAMPLES=no 130 ;; 131 qml) 132 BUILD_QML=no 133 ;; 134 tests) 135 BUILD_TESTS=no 136 ;; 137 *) 138 CURRENT_OPT="$VAL" 139 UNKNOWN_OPT=yes 140 ;; 141 esac 142 ;; 143 make) 144 case "$VAL" in 145 examples) 146 BUILD_EXAMPLES=yes 147 ;; 148 qml) 149 BUILD_QML=yes 150 ;; 151 tests) 152 BUILD_TESTS=yes 153 ;; 154 *) 155 CURRENT_OPT="$VAL" 156 UNKNOWN_OPT=yes 157 ;; 158 esac 159 ;; 160 verbose) 161 QMAKE_CONFIG="$QMAKE_CONFIG verbose" 162 ;; 163 static) 164 QMAKE_CONFIG="$QMAKE_CONFIG static" 165 ;; 166 qmake) 167 QMAKE="$VAL" 168 ;; 169 spec) 170 QMAKE_SPEC="$VAL" 171 ;; 172 config) 173 QMAKE_CONFIG="$QMAKE_CONFIG $VAL" 174 ;; 175 var) 176 echo "$VAL" >> "$CONFIG_VARS" 177 ;; 178 d) 179 QMAKE_DEBUG="$QMAKE_DEBUG -d" 180 ;; 181 uchardet) 182 if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then 183 BUILD_UCHARDET=$VAL 184 else 185 UNKNOWN_OPT=yes 186 fi 187 ;; 188 icu) 189 if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then 190 BUILD_ICU=$VAL 191 else 192 UNKNOWN_OPT=yes 193 fi 194 ;; 195 h|help) 196 OPT_HELP=yes 197 ;; 198 *) 199 UNKNOWN_OPT=yes 200 ;; 201 esac 202 if [ "$UNKNOWN_OPT" = "yes" ]; then 203 echo "${CURRENT_OPT}: unknown option" 204 OPT_HELP=yes 205 ERROR=yes 206 fi 207done 208 209if [ "$OPT_HELP" = "yes" ]; then 210 cat << EOF 211Usage: configure [options] 212 213Installation options: 214 215 -prefix <dir> ............ The installation prefix 216 -libdir <dir> ............ Libraries will be installed to <dir> 217 (default QT_INSTALL_LIBS) 218 -bindir <dir> ............ Binaries will be installed to <dir> 219 (default QT_INSTALL_BINS) 220 -headerdir <dir> ......... Headers will be installed to <dir> 221 (default QT_INSTALL_HEADERS/Communi) 222 -featuredir <dir> ........ Features will be installed to <dir> 223 (default QT_HOST_DATA/mkspecs/features) 224 -importdir <dir> ......... Imports for QML1 will be installed to <dir>/Communi 225 (default QT_INSTALL_IMPORTS/Communi) 226 -qmldir <dir> ............ Imports for QML2 will be installed to <dir>/Communi 227 (default QT_INSTALL_QML/Communi) 228 229Configure options: 230 231 -verbose ................. Verbose build output 232 -static .................. Build static library 233 -qmake ................... qmake to use 234 -config (config) ......... Additional configuration options recognized by qmake 235 (eg. -config warn_off) 236 -var (value) ............. Additional variables recognized by qmake 237 (eg. -var "QMAKE_LFLAGS += -L/path/to/icu") 238 -make (part) ............. Add part to the list of parts to be built at 239 make time (available parts: examples qml tests) 240 -nomake (part) ........... Exclude part from the list of parts to be built 241 242Additional options: 243 244 -no-uchardet ............. Do not build uchardet support 245 -uchardet ................ Build uchardet support 246 247 -no-icu .................. Do not build ICU support 248 -icu ..................... Build ICU support 249 250EOF 251 [ "x$ERROR" = "xyes" ] && exit 1 252 exit 0 253fi 254 255if [ ! -f "$QMAKE" ]; then 256 echo "ERROR: Unable to find qmake. Try $0 -qmake /path/to/qmake." 257 exit 1 258fi 259 260if [ "$INSTALL_PREFIX" != "" ]; then 261 [ "$INSTALL_LIBS" = "" ] && INSTALL_LIBS="$INSTALL_PREFIX/lib" 262 [ "$INSTALL_BINS" = "" ] && INSTALL_BINS="$INSTALL_PREFIX/bin" 263 [ "$INSTALL_HEADERS" = "" ] && INSTALL_HEADERS="$INSTALL_PREFIX/include" 264 [ "$INSTALL_FEATURES" = "" ] && INSTALL_FEATURES="$INSTALL_PREFIX/features" 265 [ "$INSTALL_IMPORTS" = "" ] && INSTALL_IMPORTS="$INSTALL_PREFIX/imports" 266 [ "$INSTALL_QML" = "" ] && INSTALL_QML="$INSTALL_PREFIX/qml" 267fi 268[ "$INSTALL_LIBS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_LIBS=$INSTALL_LIBS" 269[ "$INSTALL_BINS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_BINS=$INSTALL_BINS" 270[ "$INSTALL_HEADERS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_HEADERS=$INSTALL_HEADERS" 271[ "$INSTALL_FEATURES" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_FEATURES=$INSTALL_FEATURES" 272[ "$INSTALL_IMPORTS" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_IMPORTS=$INSTALL_IMPORTS" 273[ "$INSTALL_QML" != "" ] && QMAKE_PARAMS="$QMAKE_PARAMS IRC_INSTALL_QML=$INSTALL_QML" 274 275[ "$INSTALL_LIBS" = "" ] && INSTALL_LIBS=`$QMAKE -query QT_INSTALL_LIBS` 276[ "$INSTALL_BINS" = "" ] && INSTALL_BINS=`$QMAKE -query QT_INSTALL_BINS` 277[ "$INSTALL_HEADERS" = "" ] && INSTALL_HEADERS=`$QMAKE -query QT_INSTALL_HEADERS`/Communi 278 279if [ "$INSTALL_FEATURES" = "" ]; then 280 $QMAKE -query QT_HOST_DATA > /dev/null 2>&1 281 if [ $? != 0 ]; then 282 INSTALL_FEATURES=`$QMAKE -query QMAKE_MKSPECS`/features 283 else 284 INSTALL_FEATURES=`$QMAKE -query QT_HOST_DATA`/mkspecs/features 285 fi 286fi 287 288[ "$INSTALL_IMPORTS" = "" ] && INSTALL_IMPORTS=`$QMAKE -query QT_INSTALL_IMPORTS` 289[ "$INSTALL_QML" = "" ] && INSTALL_QML=`$QMAKE -query QT_INSTALL_QML` 290 291[ "$BUILD_EXAMPLES" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_examples" 292[ "$BUILD_QML" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_qml" 293[ "$BUILD_TESTS" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_tests" 294 295[ "$BUILD_UCHARDET" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_uchardet" 296[ "$BUILD_ICU" = "no" ] && QMAKE_PARAMS="$QMAKE_PARAMS -config no_icu" 297 298[ "$QMAKE_SPEC" != "" ] && QMAKE_SPEC="-spec $QMAKE_SPEC" 299 300echo 301echo "Running $QMAKE $QMAKE_SPEC..." 302 303$QMAKE $QMAKE_SPEC $QMAKE_DEBUG $QMAKE_PARAMS "CONFIG+=$QMAKE_CONFIG" -r $SOURCE_TREE/libcommuni.pro 304if [ $? != 0 ]; then 305 echo "ERROR: qmake run failed." 306 exit 1 307fi 308 309echo 310echo "Communi build configuration:" 311if [ "$QMAKE_CONFIG" != "" ]; then 312 echo "Configuration ...................$QMAKE_CONFIG" 313fi 314echo "uchardet support ................ $BUILD_UCHARDET" 315echo "ICU support ..................... $BUILD_ICU" 316echo "Examples ........................ $BUILD_EXAMPLES" 317echo "QML ............................. $BUILD_QML" 318echo "Tests ........................... $BUILD_TESTS" 319echo 320echo "Install libs .................... $INSTALL_LIBS" 321#echo "Install binaries ................ $INSTALL_BINS" 322echo "Install headers ................. $INSTALL_HEADERS" 323echo "Install features ................ $INSTALL_FEATURES" 324if [ "$BUILD_QML" = "yes" ]; then 325 echo "Install QML1 imports ............ $INSTALL_IMPORTS" 326 echo "Install QML2 imports ............ $INSTALL_QML" 327fi 328echo 329echo Communi is now configured for building. Just run \'make\'. 330echo 331