qtcontactsmobility/configure
changeset 24 0ba2181d7c28
child 25 76a2435edfd4
equal deleted inserted replaced
0:e686773b3f54 24:0ba2181d7c28
       
     1 #!/bin/sh
       
     2 #############################################################################
       
     3 ##
       
     4 ## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     5 ## All rights reserved.
       
     6 ## Contact: Nokia Corporation (qt-info@nokia.com)
       
     7 ##
       
     8 ## This file is part of the Qt Mobility Components.
       
     9 ##
       
    10 ## $QT_BEGIN_LICENSE:LGPL$
       
    11 ## No Commercial Usage
       
    12 ## This file contains pre-release code and may not be distributed.
       
    13 ## You may use this file in accordance with the terms and conditions
       
    14 ## contained in the Technology Preview License Agreement accompanying
       
    15 ## this package.
       
    16 ##
       
    17 ## GNU Lesser General Public License Usage
       
    18 ## Alternatively, this file may be used under the terms of the GNU Lesser
       
    19 ## General Public License version 2.1 as published by the Free Software
       
    20 ## Foundation and appearing in the file LICENSE.LGPL included in the
       
    21 ## packaging of this file.  Please review the following information to
       
    22 ## ensure the GNU Lesser General Public License version 2.1 requirements
       
    23 ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    24 ##
       
    25 ## In addition, as a special exception, Nokia gives you certain additional
       
    26 ## rights.  These rights are described in the Nokia Qt LGPL Exception
       
    27 ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    28 ##
       
    29 ## If you have questions regarding the use of this file, please contact
       
    30 ## Nokia at qt-info@nokia.com.
       
    31 ##
       
    32 ##
       
    33 ##
       
    34 ##
       
    35 ##
       
    36 ##
       
    37 ##
       
    38 ##
       
    39 ## $QT_END_LICENSE$
       
    40 ##
       
    41 #############################################################################
       
    42 
       
    43 # the current directory (shadow build dir)
       
    44 shadowpath=`/bin/pwd`
       
    45 # the name of this script
       
    46 relconf=`basename $0`
       
    47 # the directory of this script is the "source tree"
       
    48 relpath=`dirname $0`
       
    49 relpath=`(cd "$relpath"; /bin/pwd)`
       
    50 
       
    51 CONFIG_IN="$shadowpath/config.in"
       
    52 QT_MOBILITY_PREFIX=$shadowpath/install
       
    53 QT_MOBILITY_INCLUDE=
       
    54 QT_MOBILITY_LIB=
       
    55 QT_MOBILITY_BIN=
       
    56 BUILD_UNITTESTS=
       
    57 BUILD_EXAMPLES=
       
    58 BUILD_DOCS=yes
       
    59 RELEASEMODE=
       
    60 BUILD_SILENT=
       
    61 LINUX_TARGET=
       
    62 QMAKE_CACHE="$shadowpath/.qmake.cache"
       
    63 LIB_PATH="lib"
       
    64 BIN_PATH="bin"
       
    65 MAC_SDK=
       
    66 MOBILITY_MODULES="bearer location contacts multimedia publishsubscribe versit messaging systeminfo serviceframework"
       
    67 MOBILITY_MODULES_UNPARSED=
       
    68 
       
    69 usage() 
       
    70 {
       
    71     echo "Usage: configure [-prefix <dir>] [headerdir <dir>] [libdir <dir>]"
       
    72     echo "                 [-bindir <dir>] [-tests] [-examples] [-no-docs]"
       
    73     echo "                 [-debug] [-release] [-silent] [-modules <list>]"
       
    74     echo
       
    75     echo "Options:"
       
    76     echo
       
    77     echo "-prefix <dir> ..... This will install everything relative to <dir>"
       
    78     echo "                    (default prefix: $shadowpath/install)"
       
    79     echo "-headerdir <dir> .. Header files will be installed to <dir>"
       
    80     echo "                    (default prefix: PREFIX/include)"
       
    81     echo "-libdir <dir> ..... Libraries will be installed to <dir>"
       
    82     echo "                    (default PREFIX/lib)"
       
    83     echo "-bindir <dir> ..... Executables will be installed to <dir>"
       
    84     echo "                    (default PREFIX/bin)"
       
    85     echo "-debug ............ Build with debugging symbols"
       
    86     echo "-release .......... Build without debugging symbols"
       
    87     echo "-silent ........... Reduces build output"
       
    88     echo "-tests ............ Build unit tests (not build by default)"
       
    89     echo "                    Note, this adds test symbols to all libraries"
       
    90     echo "                    and should not be used for release builds."
       
    91     echo "-examples ......... Build example applications"
       
    92     echo "-no-docs .......... Do not build documentation (build by default)"
       
    93     echo "-modules <list> ... Restrict list of modules to build (default all supported)"
       
    94     echo "                    Choose from: bearer contacts location publishsubscribe"
       
    95     echo "                    messaging multimedia systeminfo serviceframework versit"
       
    96     echo "                    Modules should be separated by a space and surrounded"
       
    97     echo "                    by double quotation. If a"
       
    98     echo "                    selected module depends on other modules dependencies"
       
    99     echo "                    will automatically be enabled."
       
   100     echo "-maemo6 ........... Build Qt Mobility for Maemo6 (Harmattan)."
       
   101     echo "-maemo5 ........... Build Qt Mobility for Maemo5 (Freemantle)."
       
   102     echo "-sdk <sdk>..........Build using Apple provided SDK <path/to/sdk>."
       
   103     echo "                    example: -sdk /Developer/SDKs/MacOSX10.6.sdk"
       
   104     echo
       
   105     
       
   106     rm -f "$CONFIG_IN"
       
   107     exit 1
       
   108 }
       
   109 
       
   110 rm -rf "$QMAKE_CACHE"
       
   111 CONFIG_LOG="$shadowpath/config.log"
       
   112 rm -rf "$CONFIG_LOG"
       
   113 
       
   114 while [ "$#" -gt 0 ]; do
       
   115     case "$1" in 
       
   116         -h|-help|--help)
       
   117             usage
       
   118             ;;
       
   119         -headerdir)
       
   120             QT_MOBILITY_INCLUDE="$2"
       
   121             shift
       
   122             ;;
       
   123         -libdir)
       
   124             QT_MOBILITY_LIB="$2"
       
   125             shift
       
   126             ;;
       
   127         --prefix|-prefix)
       
   128             QT_MOBILITY_PREFIX="$2"
       
   129             shift
       
   130             ;;
       
   131         -bindir)
       
   132             QT_MOBILITY_BIN="$2"
       
   133             shift
       
   134             ;;
       
   135         -tests)
       
   136             BUILD_UNITTESTS="yes"
       
   137             ;;
       
   138         -examples)
       
   139             BUILD_EXAMPLES="yes"
       
   140             ;;
       
   141         -no-docs)
       
   142             BUILD_DOCS=
       
   143             ;;
       
   144         -debug)
       
   145             RELEASEMODE=debug
       
   146             ;;
       
   147         -release)
       
   148             RELEASEMODE=release
       
   149             ;;
       
   150         -silent)
       
   151             BUILD_SILENT=yes
       
   152             ;;
       
   153         -maemo5)
       
   154             LINUX_TARGET=maemo5
       
   155             ;;
       
   156         -maemo6)
       
   157             LINUX_TARGET=maemo6
       
   158             ;;
       
   159         -sdk)
       
   160             MAC_SDK="$2"
       
   161             shift
       
   162             ;;
       
   163         -modules)
       
   164             MOBILITY_MODULES_UNPARSED=$2
       
   165             #reset default selection
       
   166             MOBILITY_MODULES=
       
   167             for m in $MOBILITY_MODULES_UNPARSED; do
       
   168                 case "$m" in
       
   169                     bearer|contacts|location|messaging|multimedia|publishsubscribe|serviceframework|systeminfo|versit)
       
   170                         MOBILITY_MODULES="$MOBILITY_MODULES $m";
       
   171                         ;;
       
   172                     *)
       
   173                         echo "Unknown module: $m"
       
   174                         echo
       
   175                         usage
       
   176                         ;;
       
   177 
       
   178                 esac
       
   179             done
       
   180             if [ -z "$MOBILITY_MODULES" ]; then
       
   181                 echo "List of selected modules is empty."
       
   182                 echo 
       
   183                 usage
       
   184             fi
       
   185             shift
       
   186             ;;
       
   187         *)
       
   188             echo "Unknown option: $1"
       
   189             usage
       
   190             ;;
       
   191     esac
       
   192     shift
       
   193 done
       
   194 
       
   195 findframeworks()
       
   196 {
       
   197 # figure out if Qt was built with frameworks
       
   198 # if so, install in the correct place.
       
   199 # and fix rpath
       
   200     echo "contains(QT_CONFIG,qt_framework):message(1)" > 1.pro
       
   201     SOMETHING=`qmake 1.pro 2>&1`
       
   202         if [ "$SOMETHING" = "Project MESSAGE: 1" ]; then
       
   203             LIB_PATH="Library/Frameworks"
       
   204             BIN_PATH="Applications"
       
   205         fi
       
   206     rm 1.pro
       
   207 }
       
   208 
       
   209 findframeworks
       
   210 
       
   211 if [ -n "$BUILD_SILENT" ]; then
       
   212     echo "CONFIG += silent"  > "$CONFIG_IN"
       
   213 fi
       
   214 
       
   215 if [ -z "$RELEASEMODE" ]; then
       
   216     RELEASEMODE="debug"
       
   217 fi
       
   218 echo "CONFIG += $RELEASEMODE" >> "$CONFIG_IN"
       
   219 
       
   220 #do we build for Maemo?
       
   221 if [ -n "$LINUX_TARGET" ]; then
       
   222     if [ "$LINUX_TARGET" = "maemo5" ]; then
       
   223         echo "CONFIG+=maemo5" >> "$CONFIG_IN"
       
   224     elif [ "$LINUX_TARGET" = "maemo6" ]; then
       
   225         echo "CONFIG+=maemo6" >> "$CONFIG_IN"
       
   226     fi
       
   227 fi
       
   228 
       
   229 #process PREFIX
       
   230 if [ -d "$QT_MOBILITY_PREFIX" ]; then
       
   231     QT_MOBILITY_PREFIX=`(cd "$QT_MOBILITY_PREFIX"; /bin/pwd)`
       
   232 else
       
   233     mkdir -p "$QT_MOBILITY_PREFIX"
       
   234     absPath=`(cd "$QT_MOBILITY_PREFIX"; /bin/pwd)`
       
   235     rm -rf "$QT_MOBILITY_PREFIX"
       
   236     QT_MOBILITY_PREFIX="$absPath"
       
   237 fi
       
   238 echo "QT_MOBILITY_PREFIX = $QT_MOBILITY_PREFIX" >> "$CONFIG_IN"
       
   239 
       
   240 #process include path
       
   241 if [ -z "$QT_MOBILITY_INCLUDE" ]; then
       
   242     QT_MOBILITY_INCLUDE="$QT_MOBILITY_PREFIX/include"
       
   243 elif [ -d "$QT_MOBILITY_INCLUDE" ]; then
       
   244     QT_MOBILITY_INCLUDE=`(cd "$QT_MOBILITY_INCLUDE"; /bin/pwd)`
       
   245 else
       
   246     mkdir -p "$QT_MOBILITY_INCLUDE"
       
   247     absPath=`(cd "$QT_MOBILITY_INCLUDE"; /bin/pwd)`
       
   248     rm -rf "$QT_MOBILITY_INCLUDE"
       
   249     QT_MOBILITY_INCLUDE="$absPath"
       
   250 fi
       
   251 echo "QT_MOBILITY_INCLUDE = $QT_MOBILITY_INCLUDE" >> "$CONFIG_IN"
       
   252 
       
   253 
       
   254 #process library path
       
   255 if [ -z "$QT_MOBILITY_LIB" ]; then
       
   256     QT_MOBILITY_LIB="$QT_MOBILITY_PREFIX/$LIB_PATH"
       
   257 elif [ -d "$QT_MOBILITY_LIB" ]; then
       
   258     QT_MOBILITY_LIB=`(cd "$QT_MOBILITY_LIB"; /bin/pwd)`
       
   259 else
       
   260     mkdir -p "$QT_MOBILITY_LIB"
       
   261     absPath=`(cd "$QT_MOBILITY_LIB"; /bin/pwd)`
       
   262     rm -rf "$QT_MOBILITY_LIB"
       
   263     QT_MOBILITY_LIB="$absPath"
       
   264 fi
       
   265 echo "QT_MOBILITY_LIB = $QT_MOBILITY_LIB" >> "$CONFIG_IN"
       
   266 
       
   267 #process binary path
       
   268 if [ -z "$QT_MOBILITY_BIN" ]; then
       
   269     QT_MOBILITY_BIN="$QT_MOBILITY_PREFIX/$BIN_PATH"
       
   270 elif [ -d "$QT_MOBILITY_BIN" ]; then
       
   271     QT_MOBILITY_BIN=`(cd "$QT_MOBILITY_BIN"; /bin/pwd)`
       
   272 else
       
   273     mkdir -p "$QT_MOBILITY_BIN"
       
   274     absPath=`(cd "$QT_MOBILITY_BIN"; /bin/pwd)`
       
   275     rm -rf "$QT_MOBILITY_BIN"
       
   276     QT_MOBILITY_BIN="$absPath"
       
   277 fi
       
   278 echo "QT_MOBILITY_BIN = $QT_MOBILITY_BIN" >> "$CONFIG_IN"
       
   279 
       
   280 echo "QT_MOBILITY_SOURCE_TREE = $relpath" >> "$QMAKE_CACHE"
       
   281 echo "QT_MOBILITY_BUILD_TREE = $shadowpath" >> "$QMAKE_CACHE"
       
   282 
       
   283 if [ -n "$MAC_SDK" ]; then
       
   284     QMAKE_MAC_SDK="$MAC_SDK"
       
   285    echo "QMAKE_MAC_SDK = $QMAKE_MAC_SDK" >> "$CONFIG_IN"
       
   286 fi
       
   287 
       
   288 if [ -z "$BUILD_UNITTESTS" ]; then
       
   289     echo "build_unit_tests = no" >> "$CONFIG_IN"
       
   290 else
       
   291     echo "build_unit_tests = yes" >> "$CONFIG_IN"
       
   292 fi
       
   293 
       
   294 if [ -z "$BUILD_EXAMPLES" ]; then
       
   295     echo "build_examples = no" >> "$CONFIG_IN"
       
   296 else
       
   297     echo "build_examples = yes" >> "$CONFIG_IN"
       
   298 fi
       
   299 
       
   300 if [ -z "$BUILD_DOCS" ]; then
       
   301     echo "build_docs = no" >> "$CONFIG_IN"
       
   302 else
       
   303     echo "build_docs = yes" >> "$CONFIG_IN"
       
   304 fi
       
   305 
       
   306 echo "Configuring Qt Mobility"
       
   307 echo 
       
   308 
       
   309 WHICH="$relpath/config.tests/tools/which.test"
       
   310 
       
   311 printf "Checking available Qt"
       
   312 if ! "$WHICH" qmake 2>/dev/null 1>&2; then
       
   313     printf " ... Not found\n\n" >&2
       
   314     echo >&2 "Cannot find 'qmake' in your PATH.";
       
   315     echo >&2 "Aborting." 
       
   316 else
       
   317     printf " ... "
       
   318     qmake -query QT_VERSION
       
   319 fi
       
   320 
       
   321 # find out which make we want to use
       
   322 MAKE=
       
   323 for m in make gmake; do
       
   324     if "$WHICH" $m >/dev/null 2>&1; then
       
   325         MAKE=`$WHICH $m`
       
   326         break
       
   327     fi
       
   328 done
       
   329 if [ -z "$MAKE" ]; then
       
   330     echo >&2 "Cannot find 'make' or 'gmake' in your PATH";
       
   331     echo >&2 "Aborting." 
       
   332 fi
       
   333 
       
   334 compileTest()
       
   335 {
       
   336     printf "Checking $1"
       
   337     CURRENT_PWD=`pwd`
       
   338     
       
   339     if [ "$shadowpath" = "$relpath" ]; then 
       
   340         #doing source tree build
       
   341         cd "$relpath/config.tests/$2"
       
   342         rm -rf ./$2
       
   343     else
       
   344         #using shadow build
       
   345         rm -rf config.tests/$2
       
   346         mkdir -p config.tests/$2
       
   347         cd config.tests/$2
       
   348     fi
       
   349 
       
   350     qmake "$relpath/config.tests/$2/$2.pro" >> "$CONFIG_LOG"
       
   351     printf  " ."
       
   352     "$MAKE" clean >> "$CONFIG_LOG"
       
   353     printf "."
       
   354     "$MAKE" >> "$CONFIG_LOG" 2>&1
       
   355     printf ". "
       
   356     if ./$2 >> "$CONFIG_LOG" 2>&1; then
       
   357         echo "OK"
       
   358         echo "$2_enabled = yes" >> "$CONFIG_IN"
       
   359     else
       
   360         echo "Not Found"
       
   361         echo "$2_enabled = no" >> "$CONFIG_IN"
       
   362     fi
       
   363     cd "$CURRENT_PWD"
       
   364 }
       
   365 
       
   366 #compile tests
       
   367 compileTest QMF qmf
       
   368 compileTest NetworkManager networkmanager
       
   369 compileTest "CoreWLAN (MacOS 10.6)" corewlan
       
   370 
       
   371 # Now module selection
       
   372 # using 'expr match ....' should help a bit
       
   373 #if [ -n "$MOBILITY_MODULES_UNPARSED" ]; then
       
   374     # In theory we should do some sanity checking here.
       
   375 #    MOBILITY_MODULES="$MOBILITY_MODULES_UNPARSED"
       
   376 #fi
       
   377 
       
   378 # It's a lot easier to make qmake do the dependency checking...
       
   379 echo "mobility_modules = $MOBILITY_MODULES" >> "$CONFIG_IN"
       
   380 echo "contains(mobility_modules,versit): mobility_modules *= contacts" >> "$CONFIG_IN"
       
   381 
       
   382 # Ideally we'd skip generating headers for modules that are not enabled
       
   383 echo "Generating Mobility Headers..."
       
   384 #remove old headers
       
   385 rm -rf $shadowpath/include
       
   386 mkdir $shadowpath/include
       
   387 $relpath/bin/syncheaders $shadowpath/include $relpath/src/global
       
   388 for module in $MOBILITY_MODULES; do
       
   389     case "$module" in 
       
   390         bearer)
       
   391             $relpath/bin/syncheaders $shadowpath/include $relpath/src/bearer
       
   392             ;;
       
   393         publishsubscribe)
       
   394             $relpath/bin/syncheaders $shadowpath/include $relpath/src/publishsubscribe
       
   395             ;;
       
   396         location)
       
   397             $relpath/bin/syncheaders $shadowpath/include $relpath/src/location
       
   398             ;;
       
   399         serviceframework)
       
   400             $relpath/bin/syncheaders $shadowpath/include $relpath/src/serviceframework
       
   401             ;;
       
   402         systeminfo)
       
   403             $relpath/bin/syncheaders $shadowpath/include $relpath/src/systeminfo
       
   404             ;;
       
   405         contacts)
       
   406             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts
       
   407             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/details
       
   408             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/requests
       
   409             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/filters
       
   410             ;;
       
   411         multimedia)
       
   412             $relpath/bin/syncheaders $shadowpath/include $relpath/src/multimedia
       
   413             $relpath/bin/syncheaders $shadowpath/include $relpath/src/multimedia/experimental
       
   414             ;;
       
   415         messaging)
       
   416             $relpath/bin/syncheaders $shadowpath/include $relpath/src/messaging
       
   417             ;;
       
   418         versit)
       
   419             #versit implies contacts
       
   420             $relpath/bin/syncheaders $shadowpath/include $relpath/src/versit
       
   421             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts
       
   422             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/details
       
   423             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/requests
       
   424             $relpath/bin/syncheaders $shadowpath/include $relpath/src/contacts/filters
       
   425             ;;
       
   426         *)
       
   427             echo "Cannot generate headers for $module"
       
   428             ;;
       
   429     esac
       
   430 done
       
   431 
       
   432 mv "$CONFIG_IN" config.pri
       
   433 mkdir -p "$shadowpath/features"
       
   434 
       
   435 echo "Running qmake..."
       
   436 if qmake -recursive "$relpath/qtcontactsmobility.pro"; then
       
   437     echo ""
       
   438     echo "configure has finished. You may run make or gmake to build the project now."
       
   439 else
       
   440     echo ""
       
   441     echo "configure failed."
       
   442 fi