1
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2
::
3
:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
:: All rights reserved.
5
:: Contact: Nokia Corporation (qt-info@nokia.com)
6
::
7
:: This file is part of the Qt Mobility Components.
8
::
9
:: $QT_BEGIN_LICENSE:LGPL$
10
:: No Commercial Usage
11
:: This file contains pre-release code and may not be distributed.
12
:: You may use this file in accordance with the terms and conditions
13
:: contained in the Technology Preview License Agreement accompanying
14
:: this package.
15
::
16
:: GNU Lesser General Public License Usage
17
:: Alternatively, this file may be used under the terms of the GNU Lesser
18
:: General Public License version 2.1 as published by the Free Software
19
:: Foundation and appearing in the file LICENSE.LGPL included in the
20
:: packaging of this file.  Please review the following information to
21
:: ensure the GNU Lesser General Public License version 2.1 requirements
22
:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23
::
24
:: In addition, as a special exception, Nokia gives you certain additional
25
:: rights.  These rights are described in the Nokia Qt LGPL Exception
26
:: version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27
::
28
:: If you have questions regarding the use of this file, please contact
29
:: Nokia at qt-info@nokia.com.
30
::
31
::
32
::
33
::
34
::
35
::
36
::
37
::
38
:: $QT_END_LICENSE$
39
::
40
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
41
42
@echo off
43
44
set QT_MOBILITY_PREFIX= C:\QtMobility
45
set BUILD_PATH=%CD%
46
set SOURCE_PATH= %~dp0
47
cd /D %SOURCE_PATH%
48
set SOURCE_PATH=%CD%
49
cd /D %BUILD_PATH%
50
51
set PROJECT_CONFIG= %BUILD_PATH%\config.in
52
set PROJECT_LOG= %BUILD_PATH%\config.log
53
set RELEASEMODE=release
54
set WIN32_RELEASEMODE=debug_and_release build_all
55
set QT_MOBILITY_LIB=
56
set BUILD_UNITTESTS=no
57
set BUILD_EXAMPLES=no
58
set BUILD_DOCS=yes
59
set MOBILITY_MODULES=bearer location contacts multimedia publishsubscribe versit messaging systeminfo serviceframework sensors
60
set MOBILITY_MODULES_UNPARSED=
61
set VC_TEMPLATE_OPTION=
62
set QT_PATH=
63
set QMAKE_CACHE=%BUILD_PATH%\.qmake.cache
64
65
if exist "%QMAKE_CACHE%" del %QMAKE_CACHE%
66
if exist "%PROJECT_LOG%" del %PROJECT_LOG%
67
if exist "%PROJECT_CONFIG%" del %PROJECT_CONFIG%
68
69
echo QT_MOBILITY_SOURCE_TREE = %SOURCE_PATH% > %QMAKE_CACHE%
70
echo QT_MOBILITY_BUILD_TREE = %BUILD_PATH% >> %QMAKE_CACHE%
71
set QMAKE_CACHE=
72
73
:cmdline_parsing
74
if "%1" == ""               goto startProcessing
75
if "%1" == "-debug"         goto debugTag
76
if "%1" == "-release"       goto releaseTag
77
if "%1" == "-silent"        goto silentTag
78
if "%1" == "-prefix"        goto prefixTag
79
if "%1" == "-libdir"        goto libTag
80
if "%1" == "-bindir"        goto binTag
81
if "%1" == "-headerdir"     goto headerTag
82
if "%1" == "-tests"         goto testTag
83
if "%1" == "-examples"      goto exampleTag
84
if "%1" == "-qt"            goto qtTag
85
if "%1" == "-vc"            goto vcTag
86
if "%1" == "-no-docs"       goto nodocsTag
87
if "%1" == "-modules"       goto modulesTag
88
if "%1" == "/?"             goto usage
89
if "%1" == "-h"             goto usage
90
if "%1" == "-help"          goto usage
91
if "%1" == "--help"         goto usage
92
93
94
echo Unknown option: "%1"
95
goto usage
96
97
:usage
98
echo Usage: configure.bat [-prefix (dir)] [headerdir (dir)] [libdir (dir)]
99
    echo                  [-bindir (dir)] [-tests] [-examples]
100
    echo                  [-debug] [-release] [-silent]
101
    echo.
102
    echo Options:
103
    echo.
104
    echo -prefix (dir) ..... This will install everything relative to dir
105
    echo                     (default prefix: C:\QtMobility)
106
    echo -headerdir (dir) .. Header files will be installed to dir
107
    echo                     (default prefix: PREFIX/include)
108
    echo -libdir (dir) ..... Libraries will be installed to dir
109
    echo                     (default PREFIX/lib)
110
    echo -bindir (dir) ..... Executables will be installed to dir
111
    echo                     (default PREFIX/bin)
112
    echo -debug ............ Build with debugging symbols
113
    echo -release .......... Build without debugging symbols
114
    echo -silent ........... Reduces build output
115
    echo -tests ............ Build unit tests (not build by default)
116
    echo                     Note, this adds test symbols to all libraries 
117
    echo                     and should not be used for release builds.
118
    echo -examples ......... Build example applications
119
    echo -no-docs .......... Do not build documentation (build by default)
120
    echo -modules ^<list^> ... Build only the specified modules (default all)
121
    echo                     Choose from: bearer contacts location publishsubscribe
122
    echo                     messaging multimedia systeminfo serviceframework versit
123
    echo                     Modules should be separated by a space and surrounded
124
    echo                     by double quotation. If a
125
    echo                     selected module depends on other modules dependencies
126
    echo                     will automatically be enabled.
127
    echo -vc ............... Generate Visual Studio make files
128
129
130
if exist "%PROJECT_CONFIG%" del %PROJECT_CONFIG%
131
goto exitTag
132
133
:qtTag
134
shift
135
set QT_PATH=%1\
136
shift
137
goto cmdline_parsing
138
139
:debugTag
140
if "%RELEASEMODE%" == "release" set RELEASEMODE=debug
141
set WIN32_RELEASEMODE=
142
shift
143
goto cmdline_parsing
144
145
:releaseTag
146
if "%RELEASEMODE%" == "debug"   set RELEASEMODE=release
147
set WIN32_RELEASEMODE=
148
shift
149
goto cmdline_parsing
150
151
:silentTag
152
echo CONFIG += silent > %PROJECT_CONFIG%
153
shift
154
goto cmdline_parsing
155
156
:prefixTag
157
shift
158
set QT_MOBILITY_PREFIX=%1
159
shift
160
goto cmdline_parsing
161
162
:libTag
163
shift
164
echo QT_MOBILITY_LIB = %1 >> %PROJECT_CONFIG%
165
shift
166
goto cmdline_parsing
167
168
:binTag
169
shift
170
echo QT_MOBILITY_BIN = %1 >> %PROJECT_CONFIG%
171
shift
172
goto cmdline_parsing
173
174
:headerTag
175
shift
176
echo QT_MOBILITY_INCLUDE = %1 >> %PROJECT_CONFIG%
177
shift
178
goto cmdline_parsing
179
180
:testTag
181
set BUILD_UNITTESTS=yes
182
shift
183
goto cmdline_parsing
184
185
:exampleTag
186
set BUILD_EXAMPLES=yes
187
shift
188
goto cmdline_parsing
189
190
:vcTag
191
shift
192
set VC_TEMPLATE_OPTION=-tp vc
193
goto cmdline_parsing
194
195
:nodocsTag
196
set BUILD_DOCS=no
197
shift
198
goto cmdline_parsing
199
200
:modulesTag
201
shift
202
:: %1 can have leading/trailing quotes, so we can't use if "%1" == ""
203
if xx%1xx == xxxx (
204
    echo. >&2
205
    echo >&2The -modules option requires a list of modules.
206
    echo. >&2
207
    goto usage
208
)
209
210
:: Remove leading/trailing quotes, if we have them
211
set MOBILITY_MODULES_UNPARSED=xxx%1xxx
212
set MOBILITY_MODULES_UNPARSED=%MOBILITY_MODULES_UNPARSED:"xxx=%
213
set MOBILITY_MODULES_UNPARSED=%MOBILITY_MODULES_UNPARSED:xxx"=%
214
set MOBILITY_MODULES_UNPARSED=%MOBILITY_MODULES_UNPARSED:xxx=%
215
216
REM reset default modules as we expect a modules list
217
set MOBILITY_MODULES=
218
219
echo Checking selected modules:
220
:modulesTag2
221
222
for /f "tokens=1,*" %%a in ("%MOBILITY_MODULES_UNPARSED%") do ( 
223
    set FIRST=%%a 
224
    set REMAINING=%%b
225
)
226
227
: What we want is a switch as we need to check module name and only want to
228
: distinguish between false and correct module names being passed
229
if %FIRST% == bearer (
230
    echo     Bearer Management selected
231
) else if %FIRST% == contacts (
232
    echo     Contacts selected
233
) else if %FIRST% == location (
234
    echo     Location selected
235
) else if %FIRST% == messaging (
236
    echo     Messaging selected
237
) else if %FIRST% == multimedia (
238
    echo     Multimedia selected
239
) else if %FIRST% == publishsubscribe (
240
    echo     PublishSubscribe selected
241
) else if %FIRST% == systeminfo (
242
    echo     Systeminfo selected
243
) else if %FIRST% == serviceframework (
244
    echo     SerficeFramework selected
245
) else if %FIRST% == sensors (
246
    echo     Sensors selected
247
) else if %FIRST% == versit (
248
    echo     Versit selected ^(implies Contacts^)
249
) else (
250
    echo     Unknown module %FIRST%
251
    goto errorTag
252
)
253
254
set MOBILITY_MODULES=%MOBILITY_MODULES% %FIRST%
255
if "%REMAINING%" == "" (
256
    shift
257
) else (
258
    set MOBILITY_MODULES_UNPARSED=%REMAINING%
259
    goto modulesTag2
260
)
261
262
SET REMAINING=
263
SET FIRST=
264
goto cmdline_parsing
265
266
:startProcessing
267
268
echo CONFIG += %RELEASEMODE% >> %PROJECT_CONFIG%
269
echo CONFIG_WIN32 += %WIN32_RELEASEMODE% %RELEASEMODE% >> %PROJECT_CONFIG%
270
set RELEASEMODE=
271
set WIN32_RELEASEMODE=
272
273
set CURRENTDIR=%CD%
274
echo %CURRENTDIR%
275
if exist %QT_MOBILITY_PREFIX% goto prefixExists
276
mkdir %QT_MOBILITY_PREFIX%
277
if errorlevel 1 goto invalidPrefix
278
cd /D %QT_MOBILITY_PREFIX%
279
set QT_MOBILITY_PREFIX=%CD%
280
cd /D %CURRENTDIR%
281
rd /S /Q %QT_MOBILITY_PREFIX%
282
goto endprefixProcessing
283
284
:invalidPrefix
285
echo "%QT_MOBILITY_PREFIX%" is not a valid directory path.
286
goto :exitTag
287
288
:prefixExists
289
cd /D %QT_MOBILITY_PREFIX%
290
set QT_MOBILITY_PREFIX=%CD%
291
cd /D %CURRENTDIR%
292
293
:endprefixProcessing
294
echo QT_MOBILITY_PREFIX = %QT_MOBILITY_PREFIX% >> %PROJECT_CONFIG%
295
296
echo build_unit_tests = %BUILD_UNITTESTS% >> %PROJECT_CONFIG%
297
set BUILD_UNITTESTS=
298
299
echo build_examples = %BUILD_EXAMPLES% >> %PROJECT_CONFIG%
300
set BUILD_EXAMPLES=
301
302
echo build_docs = %BUILD_DOCS% >> %PROJECT_CONFIG%
303
set BUILD_DOCS=
304
305
echo qmf_enabled = no >> %PROJECT_CONFIG%
306
307
echo isEmpty($$QT_MOBILITY_INCLUDE):QT_MOBILITY_INCLUDE=$$QT_MOBILITY_PREFIX/include >> %PROJECT_CONFIG%
308
echo isEmpty($$QT_MOBILITY_LIB):QT_MOBILITY_LIB=$$QT_MOBILITY_PREFIX/lib >> %PROJECT_CONFIG%
309
echo isEmpty($$QT_MOBILITY_BIN):QT_MOBILITY_BIN=$$QT_MOBILITY_PREFIX/bin >> %PROJECT_CONFIG%
310
311
echo mobility_modules = %MOBILITY_MODULES%  >> %PROJECT_CONFIG%
312
REM no Sysinfo support on Maemo yet
313
echo maemo5^|maemo6:mobility_modules -= systeminfo >> %PROJECT_CONFIG%
314
echo contains(mobility_modules,versit): mobility_modules *= contacts  >> %PROJECT_CONFIG%
315
316
echo Checking available Qt
317
call %QT_PATH%qmake -v >> %PROJECT_LOG% 2>&1
318
if errorlevel 1 goto qmakeNotFound
319
goto qmakeFound
320
:qmakeNotFound
321
echo ... Not found  >> %PROJECT_LOG% 2>&1
322
if "%QT_PATH%" == "" (
323
    echo >&2Cannot find 'qmake' in your PATH.
324
    echo >&2Your PATH is: %PATH%
325
) else (
326
    echo >&2Cannot find 'qmake' in %QT_PATH%.
327
)
328
echo >&2Aborting.
329
goto errorTag
330
331
:qmakeFound
332
call %QT_PATH%qmake -query QT_VERSION
333
334
goto checkMake
335
336
:makeTest
337
setlocal
338
    set CURRENT_PWD=%CD%
339
340
    if %BUILD_PATH% == %SOURCE_PATH% (
341
        cd %SOURCE_PATH%\config.tests\make
342
        if exist make del make
343
    ) else (
344
        rmdir /S /Q config.tests\make
345
        mkdir config.tests\make
346
        cd config.tests\make
347
    )
348
349
    for /f "tokens=3" %%i in ('call %QT_PATH%qmake %SOURCE_PATH%\config.tests\make\make.pro 2^>^&1 1^>NUL') do set BUILDSYSTEM=%%i
350
351
    if %BUILDSYSTEM% == symbian-abld (
352
        call make -h >> %PROJECT_LOG% 2>&1
353
        if not errorlevel 1 (
354
            echo ... Symbian abld make found.
355
            set MAKE=make
356
        )
357
    ) else if %BUILDSYSTEM% == symbian-sbsv2 (
358
        call make -h >> %PROJECT_LOG% 2>&1
359
        if not errorlevel 1 (
360
            echo ... Symbian sbsv2 make found.
361
            set MAKE=make
362
        )
363
    ) else if %BUILDSYSTEM% == win32-nmake (
364
        call nmake /? >> %PROJECT_LOG% 2>&1
365
        if not errorlevel 1 (
366
            echo ... nmake found.
367
            set MAKE=nmake
368
        )
369
    ) else if %BUILDSYSTEM% == win32-mingw (
370
        call mingw32-make -v >> %PROJECT_LOG% 2>&1
371
        if not errorlevel 1 (
372
            echo ... mingw32-make found.
373
            set MAKE=mingw32-make
374
        )
375
    ) else (
376
        echo ... Unknown target environment %BUILDSYSTEM%.
377
    )
378
    call cd %CURRENT_PWD%
379
call endlocal&set %1=%MAKE%&set %2=%BUILDSYSTEM%&goto :EOF
380
381
:checkMake
382
echo Checking make
383
call :makeTest MOBILITY_MAKE MOBILITY_BUILDSYSTEM
384
if not "%MOBILITY_MAKE%" == "" goto compileTests
385
386
echo >&2Cannot find 'nmake', 'mingw32-make' or 'make' in your PATH
387
echo >&2Aborting.
388
goto errorTag
389
390
:compileTest
391
setlocal
392
    echo Checking %1
393
    set CURRENT_PWD=%CD%
394
395
    if %BUILD_PATH% == %SOURCE_PATH% (
396
        cd %SOURCE_PATH%\config.tests\%2
397
        if exist %2 del %2
398
    ) else (
399
        rmdir /S /Q config.tests\%2
400
        mkdir config.tests\%2
401
        cd config.tests\%2
402
    )
403
404
    call %QT_PATH%qmake %SOURCE_PATH%\config.tests\%2\%2.pro >> %PROJECT_LOG% 2>&1
405
    call %MOBILITY_MAKE% clean >> %PROJECT_LOG% 2>&1
406
    call %MOBILITY_MAKE% >> %PROJECT_LOG% 2>&1
407
408
    set FAILED=0
409
    if %MOBILITY_BUILDSYSTEM% == symbian-sbsv2 (
410
        for /f "tokens=2" %%i in ('%MOBILITY_MAKE% SBS^="@sbs --check"') do set FAILED=1
411
    ) else if %MOBILITY_BUILDSYSTEM% == symbian-abld (
412
        for /f "tokens=2" %%i in ('%MOBILITY_MAKE% ABLD^="@ABLD.BAT -c" 2^>^&1') do if not %%i == bldfiles set FAILED=1
413
    ) else if errorlevel 1 (
414
        set FAILED=1
415
    )
416
417
    if %FAILED% == 0 (
418
        echo ... OK
419
        echo %2_enabled = yes >> %PROJECT_CONFIG%
420
    ) else (
421
        echo ... Not Found
422
        echo %2_enabled = no >> %PROJECT_CONFIG%
423
    )
424
425
    cd %CURRENT_PWD%
426
endlocal&goto :EOF
427
428
:compileTests
429
430
echo.
431
echo Start of compile tests
432
REM compile tests go here.
433
call :compileTest LBT lbt
434
call :compileTest SNAP snap
435
echo End of compile tests
436
echo.
437
echo.
438
439
REM we could skip generating headers if a module is not enabled
440
if not exist "%BUILD_PATH%\features" mkdir %BUILD_PATH%\features
441
echo Generating Mobility Headers...
442
rd /s /q %BUILD_PATH%\include
443
mkdir %BUILD_PATH%\include
444
perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\global
445
446
set MODULES_TEMP=%MOBILITY_MODULES%
447
448
:generateHeaders
449
450
for /f "tokens=1,*" %%a in ("%MODULES_TEMP%") do ( 
451
    set FIRST=%%a 
452
    set REMAINING=%%b
453
)
454
455
if %FIRST% == bearer (
456
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\bearer
457
) else if %FIRST% == contacts (
458
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts
459
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\requests
460
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\filters
461
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\details
462
) else if %FIRST% == location (
463
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\location
464
) else if %FIRST% == messaging (
465
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\messaging
466
) else if %FIRST% == multimedia (
467
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\multimedia
468
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\multimedia\experimental
469
) else if %FIRST% == publishsubscribe (
470
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\publishsubscribe
471
) else if %FIRST% == systeminfo (
472
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\systeminfo
473
) else if %FIRST% == serviceframework (
474
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\serviceframework
475
) else if %FIRST% == versit (
476
    REM versit implies contacts
477
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\versit
478
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts
479
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\requests
480
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\filters
481
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\contacts\details
482
) else if %FIRST% == sensors (
483
    perl -S %SOURCE_PATH%\bin\syncheaders %BUILD_PATH%\include %SOURCE_PATH%\src\sensors
484
)
485
486
if "%REMAINING%" == "" (
487
    shift
488
) else (
489
    set MODULES_TEMP=%REMAINING%
490
    goto generateHeaders
491
)
492
493
SET REMAINING=
494
SET FIRST=
495
SET MODULES_TEMP=
496
497
if exist config.pri del config.pri
498
ren %PROJECT_CONFIG% config.pri
499
500
echo.
501
echo Running qmake...
502
call %QT_PATH%qmake -recursive %VC_TEMPLATE_OPTION% %SOURCE_PATH%\qtmobility.pro
503
if errorlevel 1 goto qmakeRecError
504
echo.
505
echo configure has finished. You may run %MOBILITY_MAKE% to build the project now.
506
goto exitTag
507
508
:qmakeRecError
509
echo.
510
echo configure failed.
511
goto errorTag
512
513
:errorTag
514
set BUILD_PATH=
515
set CURRENTDIR=
516
set MOBILITY_MAKE=
517
set MOBILITY_BUILDSYSTEM=
518
set PROJECT_CONFIG=
519
set PROJECT_LOG=
520
set QT_MOBILITY_PREFIX=
521
set QT_PATH=
522
set SOURCE_PATH=
523
set MOBILITY_MODULES=
524
set MOBILITY_MODULES_UNPARSED=
525
SET REMAINING=
526
SET FIRST=
527
SET MODULES_TEMP=
528
exit /b 1
529
530
:exitTag
531
set BUILD_PATH=
532
set CURRENTDIR=
533
set MOBILITY_MAKE=
534
set MOBILITY_BUILDSYSTEM=
535
set PROJECT_CONFIG=
536
set PROJECT_LOG=
537
set QT_MOBILITY_PREFIX=
538
set QT_PATH=
539
set SOURCE_PATH=
540
set MOBILITY_MODULES=
541
set MOBILITY_MODULES_UNPARSED=
542
SET REMAINING=
543
SET FIRST=
544
SET MODULES_TEMP=
545
exit /b 0