1
# config.pri specifies the configure options and is pulled in via staticconfig.pri
2
include(staticconfig.pri)
3
!include($$QT_MOBILITY_BUILD_TREE/config.pri) {
4
    error("Please run configure script");
5
    #also fails if .qmake.cache was not generated which may
6
    #happen if we are trying to shadow build w/o running configure
7
}
8
9
#don't build QtMobility if chosen config mismatches Qt's config
10
win32:!contains(CONFIG_WIN32,build_all) {
11
   contains(QT_CONFIG,debug):!contains(QT_CONFIG,release):contains(CONFIG_WIN32,release) {
12
       # Qt only build in debug mode
13
       error(QtMobility cannot be build in release mode if Qt is build in debug mode only)
14
   }
15
   !contains(QT_CONFIG,debug):contains(QT_CONFIG,release):contains(CONFIG_WIN32,debug) {
16
       # Qt only build in release mode
17
       error(QtMobility cannot be build in debug mode if Qt is build in release mode only)
18
   }
19
}
20
21
lessThan(QT_MAJOR_VERSION, 4) {
22
    error(Qt Mobility requires Qt 4.6 or higher. Qt $${QT_VERSION} was found.);
23
}
24
25
contains(QT_MAJOR_VERSION, 4):lessThan(QT_MINOR_VERSION, 6) {
26
    error(Qt Mobility requires Qt 4.6 or higher. Qt $${QT_VERSION} was found.);
27
}
28
29
30
# MCL builds for Symbian do not run configure and require some manual setup steps.
31
# This test permits SD builds to skip installation of mobility.prf from within qmake.
32
# It is installed in a separate step. MCL builds for SD must set the
33
# MOBILITY_SD_MCL_BUILD flag to yes.
34
!contains(MOBILITY_SD_MCL_BUILD, yes) {
35
    #generate prf file for Qt integration
36
    PRF_OUTPUT=$${QT_MOBILITY_BUILD_TREE}/features/mobility.prf
37
38
    system(echo MOBILITY_PREFIX=$${QT_MOBILITY_PREFIX} > $$PRF_OUTPUT)
39
    system(echo MOBILITY_INCLUDE=$${QT_MOBILITY_INCLUDE} >> $$PRF_OUTPUT)
40
    system(echo MOBILITY_LIB=$${QT_MOBILITY_LIB} >> $$PRF_OUTPUT)
41
42
    sourcePath = $${QT_MOBILITY_SOURCE_TREE}/features/mobility.prf.template
43
    contains(QMAKE_HOST.os,Windows) {
44
        sourcePath=$$replace(sourcePath,/,\\)
45
        system(type $${sourcePath} >> $$PRF_OUTPUT)
46
    } else {
47
        system(cat $${sourcePath} >> $$PRF_OUTPUT)
48
    }
49
50
    symbian:contains(nfc_symbian_enabled,yes) {
51
        contains(QMAKE_HOST.os,Windows) {
52
            system(echo $$LITERAL_HASH Connectivity depends on service framework on Symbian >> $$PRF_OUTPUT)
53
            system(echo contains(MOBILITY, connectivity):MOBILITY += serviceframework >> $$PRF_OUTPUT)
54
        } else {
55
            system(echo \\$$LITERAL_HASH Connectivity depends on service framework on Symbian >> $$PRF_OUTPUT)
56
            system(echo contains\\(MOBILITY, connectivity\\):MOBILITY += serviceframework >> $$PRF_OUTPUT)
57
        }
58
    }
59
60
    # Remember to update staticconfig.pri binary version statement
61
    # and pregenerated files under src/s60installs for Symbian RnD release
62
    PRF_CONFIG=$${QT_MOBILITY_BUILD_TREE}/features/mobilityconfig.prf
63
    system(echo MOBILITY_CONFIG=$${mobility_modules} > $$PRF_CONFIG)
64
    system(echo MOBILITY_VERSION = 1.2.2 >> $$PRF_CONFIG)
65
    system(echo MOBILITY_MAJOR_VERSION = 1 >> $$PRF_CONFIG)
66
    system(echo MOBILITY_MINOR_VERSION = 2 >> $$PRF_CONFIG)
67
    system(echo MOBILITY_PATCH_VERSION = 2 >> $$PRF_CONFIG)
68
69
    #symbian does not generate make install rule. we have to copy prf manually 
70
    symbian {
71
        sourcePath=$$QT_MOBILITY_BUILD_TREE/features/
72
        destPath=$$[QT_INSTALL_DATA]/mkspecs/features
73
74
        contains(QMAKE_HOST.os,Windows) {
75
            sourcePath=$$replace(sourcePath,/,\\)
76
            destPath=$$replace(destPath,/,\\)
77
        }
78
79
        system($$QMAKE_COPY "$${sourcePath}mobility.prf" "$$destPath")
80
        system($$QMAKE_COPY "$${sourcePath}mobilityconfig.prf" "$$destPath")
81
    }
82
83
    # install config file
84
    config.path = $$[QT_INSTALL_DATA]/mkspecs/features
85
    config.files = $$QT_MOBILITY_BUILD_TREE/features/mobilityconfig.prf
86
87
    # install feature file
88
    feature.path = $$[QT_INSTALL_DATA]/mkspecs/features
89
    feature.files = $$QT_MOBILITY_BUILD_TREE/features/mobility.prf
90
    INSTALLS += feature config
91
}
92
93
TEMPLATE = subdirs
94
CONFIG+=ordered
95
96
SUBDIRS += src
97
98
contains(build_tools, yes) {
99
    SUBDIRS += tools
100
}
101
102
SUBDIRS += plugins
103
104
#built documentation snippets, if enabled
105
contains(build_docs, yes) {
106
    SUBDIRS += doc
107
    include(doc/doc.pri)
108
109
    OTHER_FILES += \
110
        doc/src/*.qdoc \
111
        doc/src/legal/*.qdoc \
112
        doc/src/examples/*.qdoc \
113
        doc/src/plugins/*.qdoc
114
}
115
116
contains(build_unit_tests, yes):SUBDIRS+=tests
117
contains(build_examples, yes):SUBDIRS+=examples
118
contains(build_demos, yes):SUBDIRS+=demos
119
120
#updating and deployment of translations requires Qt 4.6.3/qtPrepareTool
121
!symbian:defined(qtPrepareTool):SUBDIRS += translations
122
123
# install Qt style headers
124
125
!symbian {
126
    qtmheadersglobal.path = $${QT_MOBILITY_INCLUDE}/QtMobility
127
    qtmheadersglobal.files = $${QT_MOBILITY_BUILD_TREE}/include/QtMobility/*
128
    INSTALLS += qtmheadersglobal
129
130
    contains(mobility_modules,bearer) {
131
        qtmheadersbearer.path = $${QT_MOBILITY_INCLUDE}/QtBearer
132
        qtmheadersbearer.files = $${QT_MOBILITY_BUILD_TREE}/include/QtBearer/*
133
        INSTALLS += qtmheadersbearer
134
    }
135
136
    contains(mobility_modules,contacts) {
137
        qtmheaderscontacts.path = $${QT_MOBILITY_INCLUDE}/QtContacts
138
        qtmheaderscontacts.files = $${QT_MOBILITY_BUILD_TREE}/include/QtContacts/*
139
        INSTALLS += qtmheaderscontacts
140
    }
141
142
    contains(mobility_modules,location) {
143
        qtmheaderslocation.path = $${QT_MOBILITY_INCLUDE}/QtLocation
144
        qtmheaderslocation.files = $${QT_MOBILITY_BUILD_TREE}/include/QtLocation/*
145
        INSTALLS += qtmheaderslocation
146
    }
147
148
    contains(qmf_enabled, yes)|wince*|win32|maemo5 {
149
        contains(mobility_modules,messaging) {
150
            qtmheadersmessaging.path = $${QT_MOBILITY_INCLUDE}/QtMessaging
151
            qtmheadersmessaging.files = $${QT_MOBILITY_BUILD_TREE}/include/QtMessaging/*
152
            INSTALLS += qtmheadersmessaging
153
        }
154
    }
155
156
    contains(mobility_modules,multimedia) {
157
        qtmheadersmultimedia.path = $${QT_MOBILITY_INCLUDE}/QtMultimediaKit
158
        qtmheadersmultimedia.files = $${QT_MOBILITY_BUILD_TREE}/include/QtMultimediaKit/*
159
        INSTALLS += qtmheadersmultimedia
160
    }
161
162
    contains(mobility_modules,publishsubscribe) {
163
        qtmheaderspubsub.path = $${QT_MOBILITY_INCLUDE}/QtPublishSubscribe
164
        qtmheaderspubsub.files = $${QT_MOBILITY_BUILD_TREE}/include/QtPublishSubscribe/*
165
        INSTALLS += qtmheaderspubsub
166
    }
167
168
    contains(mobility_modules,serviceframework) {
169
        qtmheaderssfw.path = $${QT_MOBILITY_INCLUDE}/QtServiceFramework
170
        qtmheaderssfw.files = $${QT_MOBILITY_BUILD_TREE}/include/QtServiceFramework/*
171
        INSTALLS += qtmheaderssfw
172
    }
173
174
    contains(mobility_modules,versit) {
175
        qtmheadersversit.path = $${QT_MOBILITY_INCLUDE}/QtVersit
176
        qtmheadersversit.files = $${QT_MOBILITY_BUILD_TREE}/include/QtVersit/*
177
        INSTALLS += qtmheadersversit
178
179
        contains(mobility_modules,organizer) {
180
            qtmheadersversitorg.path = $${QT_MOBILITY_INCLUDE}/QtVersitOrganizer
181
            qtmheadersversitorg.files = $${QT_MOBILITY_BUILD_TREE}/include/QtVersitOrganizer/*
182
            INSTALLS += qtmheadersversitorg
183
        }
184
    }
185
186
    contains(mobility_modules,systeminfo) {
187
        qtmheaderssysteminfo.path = $${QT_MOBILITY_INCLUDE}/QtSystemInfo
188
        qtmheaderssysteminfo.files = $${QT_MOBILITY_BUILD_TREE}/include/QtSystemInfo/*
189
        INSTALLS += qtmheaderssysteminfo
190
    }
191
192
    contains(mobility_modules,sensors) {
193
        qtmheaderssensors.path = $${QT_MOBILITY_INCLUDE}/QtSensors
194
        qtmheaderssensors.files = $${QT_MOBILITY_BUILD_TREE}/include/QtSensors/*
195
        INSTALLS += qtmheaderssensors
196
    }
197
198
    contains(mobility_modules,organizer) {
199
        qtmheadersorganizer.path = $${QT_MOBILITY_INCLUDE}/QtOrganizer
200
        qtmheadersorganizer.files = $${QT_MOBILITY_BUILD_TREE}/include/QtOrganizer/*
201
        INSTALLS += qtmheadersorganizer
202
    }
203
204
    contains(mobility_modules,feedback) {
205
        qtmheadersfeedback.path = $${QT_MOBILITY_INCLUDE}/QtFeedback
206
        qtmheadersfeedback.files = $${QT_MOBILITY_BUILD_TREE}/include/QtFeedback/*
207
        INSTALLS += qtmheadersfeedback
208
    }
209
210
    contains(mobility_modules,gallery) {
211
        qtmheadersgallery.path = $${QT_MOBILITY_INCLUDE}/QtGallery
212
        qtmheadersgallery.files = $${QT_MOBILITY_BUILD_TREE}/include/QtGallery/*
213
        INSTALLS += qtmheadersgallery
214
    }
215
216
    contains(mobility_modules,connectivity) {
217
        qtmheaderconnectivity.path = $${QT_MOBILITY_INCLUDE}/QtConnectivity
218
        qtmheaderconnectivity.files = $${QT_MOBILITY_BUILD_TREE}/include/QtConnectivity/*
219
        INSTALLS += qtmheaderconnectivity
220
    }
221
} else {
222
    # following needs to be set because symbian-abld or symbian-sbsv2 is not yet
223
    # defined in platform_paths.prf and the prj_export gets confused about paths.
224
    epocroot_prefix = /
225
    #absolute path does not work and 
226
    #include <QtMyLibrary/class.h> style does not work either
227
    qtmGlobalHeaders = include/QtMobility/*
228
    for(api, qtmGlobalHeaders) {
229
        INCLUDEFILES=$$files($$api);
230
        #files() attaches a ';' at the end which we need to remove
231
        cleanedFiles=$$replace(INCLUDEFILES, ;,)
232
        for(header, cleanedFiles) {
233
            exists($$header):
234
                BLD_INF_RULES.prj_exports += "$$header $$MW_LAYER_PUBLIC_EXPORT_PATH($$basename(header))"
235
        }
236
    }
237
238
239
    qtmAppHeaders = include/QtContacts/* \
240
                       include/QtVersit/* \
241
                       include/QtVersitOrganizer/* \
242
                       include/QtOrganizer/*
243
244
    qtmMwHeaders = include/QtBearer/* \
245
                       include/QtLocation/* \
246
                       include/QtMessaging/* \
247
                       include/QtMultimediaKit/* \
248
                       include/QtPublishSubscribe/* \
249
                       include/QtServiceFramework/* \
250
                       include/QtSystemInfo/* \
251
                       include/QtSensors/* \
252
                       include/QtFeedback/* \
253
                       include/QtGallery/* \
254
                       include/QtConnectivity/*
255
256
    contains(mobility_modules,contacts|versit|organizer) {
257
        for(api, qtmAppHeaders) {
258
            INCLUDEFILES=$$files($$api);
259
260
            #files() attaches a ';' at the end which we need to remove
261
            cleanedFiles=$$replace(INCLUDEFILES, ;,)
262
263
            #files() uses windows path separator ('\')  but bld.inf requires '/'
264
            INCLUDEFILES=$$cleanedFiles
265
            cleanedFiles=$$replace(INCLUDEFILES, \\\\,/)
266
267
            for(header, cleanedFiles) {
268
                exists($$header):
269
                    BLD_INF_RULES.prj_exports += "$$header $$APP_LAYER_PUBLIC_EXPORT_PATH($$basename(header))"
270
            }
271
        }
272
    }
273
274
    contains(mobility_modules,serviceframework|location|bearer|publishsubscribe|systeminfo|multimedia|messaging|feedback|sensors|gallery|connectivity) {
275
        for(api, qtmMwHeaders) {
276
            INCLUDEFILES=$$files($$api);
277
278
            #files() attaches a ';' at the end which we need to remove
279
            cleanedFiles=$$replace(INCLUDEFILES, ;,)
280
281
            #files() uses windows path separator ('\')  but bld.inf requires '/'
282
            INCLUDEFILES=$$cleanedFiles
283
            cleanedFiles=$$replace(INCLUDEFILES, \\\\,/)
284
285
            for(header, cleanedFiles) {
286
                exists($$header):
287
                    BLD_INF_RULES.prj_exports += "$$header $$MW_LAYER_PUBLIC_EXPORT_PATH($$basename(header))"
288
            }
289
        }
290
    }
291
}