FindQt4.cmake 51.4 KB
Newer Older
1
2
# - Find QT 4
# This module can be used to find Qt4.
3
4
# The most important issue is that the Qt4 qmake is available via the system path.
# This qmake is then used to detect basically everything else.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
5
# This module defines a number of key variables and macros. 
Clinton Stimpson's avatar
   
Clinton Stimpson committed
6
7
8
9
10
11
12
13
14
15
16
# The variable QT_USE_FILE is set which is the path to a CMake file that can be included 
# to compile Qt 4 applications and libraries.  It sets up the compilation
# environment for include directories, preprocessor defines and populates a
# QT_LIBRARIES variable.
#
# Typical usage could be something like:
#   find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtXml REQUIRED )
#   include(${QT_USE_FILE})
#   add_executable(myexe main.cpp)
#   target_link_libraries(myexe ${QT_LIBRARIES})
#
17
18
19
20
21
22
23
24
# The minimum required version can be specified using the standard find_package()-syntax
# (see example above). 
# For compatibility with older versions of FindQt4.cmake it is also possible to
# set the variable QT_MIN_VERSION to the minimum required version of Qt4 before the 
# find_package(Qt4) command. 
# If both are used, the version used in the find_package() command overrides the
# one from QT_MIN_VERSION.
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
25
26
27
# When using the components argument, QT_USE_QT* variables are automatically set
# for the QT_USE_FILE to pick up.  If one wishes to manually set them, the
# available ones to set include:
28
29
30
31
#                    QT_DONT_USE_QTCORE
#                    QT_DONT_USE_QTGUI
#                    QT_USE_QT3SUPPORT
#                    QT_USE_QTASSISTANT
Clinton Stimpson's avatar
   
Clinton Stimpson committed
32
33
#                    QT_USE_QAXCONTAINER
#                    QT_USE_QAXSERVER
34
35
#                    QT_USE_QTDESIGNER
#                    QT_USE_QTMOTIF
36
#                    QT_USE_QTMAIN
37
#                    QT_USE_QTMULTIMEDIA
38
39
40
41
42
#                    QT_USE_QTNETWORK
#                    QT_USE_QTNSPLUGIN
#                    QT_USE_QTOPENGL
#                    QT_USE_QTSQL
#                    QT_USE_QTXML
43
44
45
#                    QT_USE_QTSVG
#                    QT_USE_QTTEST
#                    QT_USE_QTUITOOLS
46
#                    QT_USE_QTDBUS
Alexander Neundorf's avatar
   
Alexander Neundorf committed
47
#                    QT_USE_QTSCRIPT
Clinton Stimpson's avatar
   
Clinton Stimpson committed
48
49
50
51
#                    QT_USE_QTASSISTANTCLIENT
#                    QT_USE_QTHELP
#                    QT_USE_QTWEBKIT
#                    QT_USE_QTXMLPATTERNS
Clinton Stimpson's avatar
   
Clinton Stimpson committed
52
#                    QT_USE_PHONON
Clinton Stimpson's avatar
   
Clinton Stimpson committed
53
#                    QT_USE_QTSCRIPTTOOLS
54
#                    QT_USE_QTDECLARATIVE
55
#
56
57
58
59
60
61
62
63
64
65
66
67
#  QT_USE_IMPORTED_TARGETS 
#        If this variable is set to TRUE, FindQt4.cmake will create imported
#        library targets for the various Qt libraries and set the 
#        library variables like QT_QTCORE_LIBRARY to point at these imported
#        targets instead of the library file on disk. This provides much better 
#        handling of the release and debug versions of the Qt libraries and is 
#       also always backwards compatible, except for the case that dependencies
#       of libraries are exported, these will then also list the names of the 
#       imported targets as dependency and not the file location on disk. This
#       is much more flexible, but requires that FindQt4.cmake is executed before
#       such an exported dependency file is processed.
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
68
69
# There are also some files that need processing by some Qt tools such as moc
# and uic.  Listed below are macros that may be used to process those files.
70
#  
71
#  macro QT4_WRAP_CPP(outfiles inputfile ... OPTIONS ...)
72
#        create moc code from a list of files containing Qt class with
Clinton Stimpson's avatar
   
Clinton Stimpson committed
73
74
75
#        the Q_OBJECT declaration.  Per-direcotry preprocessor definitions 
#        are also added.  Options may be given to moc, such as those found
#        when executing "moc -help".  
76
#
77
#  macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)
78
79
80
81
#        create code from a list of Qt designer ui files.
#        Options may be given to uic, such as those found
#        when executing "uic -help"
#
82
#  macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)
83
84
85
86
#        create code from a list of Qt resource files.
#        Options may be given to rcc, such as those found
#        when executing "rcc -help"
#
87
#  macro QT4_GENERATE_MOC(inputfile outputfile )
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#        creates a rule to run moc on infile and create outfile.
#        Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.
#        because you need a custom filename for the moc file or something similar.
#
#  macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... )
#        This macro is still experimental.
#        It can be used to have moc automatically handled.
#        So if you have the files foo.h and foo.cpp, and in foo.h a 
#        a class uses the Q_OBJECT macro, moc has to run on it. If you don't
#        want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert
#        #include "foo.moc"
#        in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will the
#        scan all listed files at cmake-time for such included moc files and if it finds
#        them cause a rule to be generated to run moc at build time on the 
#        accompanying header file foo.h.
#        If a source file has the SKIP_AUTOMOC property set it will be ignored by this macro.
104
105
106
107
108
109
110
111
112
113
114
#
#  macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)
#        create a the interface header and implementation files with the 
#        given basename from the given interface xml file and add it to 
#        the list of sources
#
#  macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )
#        create the interface header and implementation files 
#        for all listed interface xml files
#        the name will be automatically determined from the name of the xml file
#
115
#  macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname [basename] [classname])
116
117
118
119
#        create a dbus adaptor (header and implementation file) from the xml file
#        describing the interface, and add it to the list of sources. The adaptor
#        forwards the calls to a parent class, defined in parentheader and named
#        parentclassname. The name of the generated files will be
120
121
122
#        <basename>adaptor.{cpp,h} where basename defaults to the basename of the xml file.
#        If <classname> is provided, then it will be used as the classname of the
#        adaptor itself.
123
#
124
#  macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] OPTIONS ...)
125
126
127
128
#        generate the xml interface file from the given header.
#        If the optional argument interfacename is omitted, the name of the 
#        interface file is constructed from the basename of the header with
#        the suffix .xml appended.
129
#        Options may be given to qdbuscpp2xml, such as those found when executing "qdbuscpp2xml --help"
130
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
131
132
#  macro QT4_CREATE_TRANSLATION( qm_files directories ... sources ... 
#                                ts_files ... OPTIONS ...)
133
#        out: qm_files
Clinton Stimpson's avatar
   
Clinton Stimpson committed
134
#        in:  directories sources ts_files
Clinton Stimpson's avatar
   
Clinton Stimpson committed
135
136
#        options: flags to pass to lupdate, such as -extensions to specify
#        extensions for a directory scan.
137
#        generates commands to create .ts (vie lupdate) and .qm
Clinton Stimpson's avatar
   
Clinton Stimpson committed
138
#        (via lrelease) - files from directories and/or sources. The ts files are 
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#        created and/or updated in the source tree (unless given with full paths).
#        The qm files are generated in the build tree.
#        Updating the translations can be done by adding the qm_files
#        to the source list of your library/executable, so they are
#        always updated, or by adding a custom target to control when
#        they get updated/generated.
#
#  macro QT4_ADD_TRANSLATION( qm_files ts_files ... )
#        out: qm_files
#        in:  ts_files
#        generates commands to create .qm from .ts - files. The generated
#        filenames can be found in qm_files. The ts_files
#        must exists and are not updated in any way.
#
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
154
#  Below is a detailed list of variables that FindQt4.cmake sets.
Ken Martin's avatar
Ken Martin committed
155
156
#  QT_FOUND         If false, don't try to use Qt.
#  QT4_FOUND        If false, don't try to use Qt 4.
157
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
158
159
160
161
#  QT_VERSION_MAJOR The major version of Qt found.
#  QT_VERSION_MINOR The minor version of Qt found.
#  QT_VERSION_PATCH The patch version of Qt found.
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
162
163
164
165
166
167
#  QT_EDITION               Set to the edition of Qt (i.e. DesktopLight)
#  QT_EDITION_DESKTOPLIGHT  True if QT_EDITION == DesktopLight
#  QT_QTCORE_FOUND          True if QtCore was found.
#  QT_QTGUI_FOUND           True if QtGui was found.
#  QT_QT3SUPPORT_FOUND      True if Qt3Support was found.
#  QT_QTASSISTANT_FOUND     True if QtAssistant was found.
168
#  QT_QTASSISTANTCLIENT_FOUND  True if QtAssistantClient was found.
169
170
#  QT_QAXCONTAINER_FOUND    True if QAxContainer was found (Windows only).
#  QT_QAXSERVER_FOUND       True if QAxServer was found (Windows only).
Clinton Stimpson's avatar
   
Clinton Stimpson committed
171
172
173
#  QT_QTDBUS_FOUND          True if QtDBus was found.
#  QT_QTDESIGNER_FOUND      True if QtDesigner was found.
#  QT_QTDESIGNERCOMPONENTS  True if QtDesignerComponents was found.
174
#  QT_QTHELP_FOUND          True if QtHelp was found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
175
#  QT_QTMOTIF_FOUND         True if QtMotif was found.
176
#  QT_QTMULTIMEDIA_FOUND    True if QtMultimedia was found (since Qt 4.6.0).
Clinton Stimpson's avatar
   
Clinton Stimpson committed
177
178
179
180
181
182
#  QT_QTNETWORK_FOUND       True if QtNetwork was found.
#  QT_QTNSPLUGIN_FOUND      True if QtNsPlugin was found.
#  QT_QTOPENGL_FOUND        True if QtOpenGL was found.
#  QT_QTSQL_FOUND           True if QtSql was found.
#  QT_QTSVG_FOUND           True if QtSvg was found.
#  QT_QTSCRIPT_FOUND        True if QtScript was found.
183
#  QT_QTSCRIPTTOOLS_FOUND   True if QtScriptTools was found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
184
185
186
#  QT_QTTEST_FOUND          True if QtTest was found.
#  QT_QTUITOOLS_FOUND       True if QtUiTools was found.
#  QT_QTWEBKIT_FOUND        True if QtWebKit was found.
187
#  QT_QTXML_FOUND           True if QtXml was found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
188
#  QT_QTXMLPATTERNS_FOUND   True if QtXmlPatterns was found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
189
#  QT_PHONON_FOUND          True if phonon was found.
190
#  QT_QTDECLARATIVE_FOUND   True if QtDeclarative was found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
191
#
192
193
194
#  QT_MAC_USE_COCOA    For Mac OS X, its whether Cocoa or Carbon is used.
#                      In general, this should not be used, but its useful
#                      when having platform specific code.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
195
#
196
#  QT_DEFINITIONS   Definitions to use when compiling code that uses Qt.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
197
198
199
200
#                   You do not need to use this if you include QT_USE_FILE.
#                   The QT_USE_FILE will also define QT_DEBUG and QT_NO_DEBUG
#                   to fit your current build type.  Those are not contained
#                   in QT_DEFINITIONS.
201
202
#                  
#  QT_INCLUDES      List of paths to all include directories of 
203
#                   Qt4 QT_INCLUDE_DIR and QT_QTCORE_INCLUDE_DIR are
204
205
206
#                   always in this variable even if NOTFOUND,
#                   all other INCLUDE_DIRS are
#                   only added if they are found.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
207
#                   You do not need to use this if you include QT_USE_FILE.
208
#   
Clinton Stimpson's avatar
   
Clinton Stimpson committed
209
210
211
212
#
#  Include directories for the Qt modules are listed here.
#  You do not need to use these variables if you include QT_USE_FILE.
#
213
#  QT_INCLUDE_DIR              Path to "include" of Qt4
214
215
#  QT_QT3SUPPORT_INCLUDE_DIR   Path to "include/Qt3Support" 
#  QT_QTASSISTANT_INCLUDE_DIR  Path to "include/QtAssistant" 
216
#  QT_QTASSISTANTCLIENT_INCLUDE_DIR       Path to "include/QtAssistant"
217
218
#  QT_QAXCONTAINER_INCLUDE_DIR Path to "include/ActiveQt" (Windows only)
#  QT_QAXSERVER_INCLUDE_DIR    Path to "include/ActiveQt" (Windows only)
219
#  QT_QTCORE_INCLUDE_DIR       Path to "include/QtCore"         
220
#  QT_QTDBUS_INCLUDE_DIR       Path to "include/QtDBus" 
221
#  QT_QTDESIGNER_INCLUDE_DIR   Path to "include/QtDesigner" 
222
#  QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR   Path to "include/QtDesigner"
223
#  QT_QTGUI_INCLUDE_DIR        Path to "include/QtGui" 
224
#  QT_QTHELP_INCLUDE_DIR       Path to "include/QtHelp"
225
#  QT_QTMOTIF_INCLUDE_DIR      Path to "include/QtMotif" 
226
#  QT_QTMULTIMEDIA_INCLUDE_DIR Path to "include/QtMultimedia" 
227
228
229
#  QT_QTNETWORK_INCLUDE_DIR    Path to "include/QtNetwork" 
#  QT_QTNSPLUGIN_INCLUDE_DIR   Path to "include/QtNsPlugin" 
#  QT_QTOPENGL_INCLUDE_DIR     Path to "include/QtOpenGL" 
230
#  QT_QTSCRIPT_INCLUDE_DIR     Path to "include/QtScript"
231
#  QT_QTSQL_INCLUDE_DIR        Path to "include/QtSql" 
232
233
#  QT_QTSVG_INCLUDE_DIR        Path to "include/QtSvg"
#  QT_QTTEST_INCLUDE_DIR       Path to "include/QtTest"
Clinton Stimpson's avatar
   
Clinton Stimpson committed
234
#  QT_QTWEBKIT_INCLUDE_DIR     Path to "include/QtWebKit"
235
#  QT_QTXML_INCLUDE_DIR        Path to "include/QtXml" 
Clinton Stimpson's avatar
   
Clinton Stimpson committed
236
#  QT_QTXMLPATTERNS_INCLUDE_DIR  Path to "include/QtXmlPatterns"
Clinton Stimpson's avatar
   
Clinton Stimpson committed
237
#  QT_PHONON_INCLUDE_DIR       Path to "include/phonon"
Clinton Stimpson's avatar
   
Clinton Stimpson committed
238
#  QT_QTSCRIPTTOOLS_INCLUDE_DIR       Path to "include/QtScriptTools"
239
240
#  QT_QTDECLARATIVE_INCLUDE_DIR       Path to "include/QtDeclarative"
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
241
#  QT_BINARY_DIR               Path to "bin" of Qt4
242
#  QT_LIBRARY_DIR              Path to "lib" of Qt4
243
#  QT_PLUGINS_DIR              Path to "plugins" for Qt4
Clinton Stimpson's avatar
   
Clinton Stimpson committed
244
245
246
#  QT_TRANSLATIONS_DIR         Path to "translations" of Qt4
#  QT_DOC_DIR                  Path to "doc" of Qt4
#  QT_MKSPECS_DIR              Path to "mkspecs" of Qt4
247
#
248
#
Clinton Stimpson's avatar
   
Clinton Stimpson committed
249
# The Qt toolkit may contain both debug and release libraries.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
250
251
252
# In that case, the following library variables will contain both.
# You do not need to use these variables if you include QT_USE_FILE,
# and use QT_LIBRARIES.
Clinton Stimpson's avatar
   
Clinton Stimpson committed
253
254
255
#
#  QT_QT3SUPPORT_LIBRARY            The Qt3Support library
#  QT_QTASSISTANT_LIBRARY           The QtAssistant library
256
#  QT_QTASSISTANTCLIENT_LIBRARY     The QtAssistantClient library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
257
258
#  QT_QAXCONTAINER_LIBRARY           The QAxContainer library (Windows only)
#  QT_QAXSERVER_LIBRARY                The QAxServer library (Windows only)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
259
260
261
262
263
#  QT_QTCORE_LIBRARY                The QtCore library
#  QT_QTDBUS_LIBRARY                The QtDBus library
#  QT_QTDESIGNER_LIBRARY            The QtDesigner library
#  QT_QTDESIGNERCOMPONENTS_LIBRARY  The QtDesignerComponents library
#  QT_QTGUI_LIBRARY                 The QtGui library
264
#  QT_QTHELP_LIBRARY                The QtHelp library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
265
#  QT_QTMOTIF_LIBRARY               The QtMotif library
266
#  QT_QTMULTIMEDIA_LIBRARY          The QtMultimedia library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
267
268
269
#  QT_QTNETWORK_LIBRARY             The QtNetwork library
#  QT_QTNSPLUGIN_LIBRARY            The QtNsPLugin library
#  QT_QTOPENGL_LIBRARY              The QtOpenGL library
270
#  QT_QTSCRIPT_LIBRARY              The QtScript library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
271
272
273
274
275
#  QT_QTSQL_LIBRARY                 The QtSql library
#  QT_QTSVG_LIBRARY                 The QtSvg library
#  QT_QTTEST_LIBRARY                The QtTest library
#  QT_QTUITOOLS_LIBRARY             The QtUiTools library
#  QT_QTWEBKIT_LIBRARY              The QtWebKit library
276
#  QT_QTXML_LIBRARY                 The QtXml library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
277
#  QT_QTXMLPATTERNS_LIBRARY         The QtXmlPatterns library
278
#  QT_QTMAIN_LIBRARY                The qtmain library for Windows
Clinton Stimpson's avatar
   
Clinton Stimpson committed
279
#  QT_PHONON_LIBRARY                The phonon library
Clinton Stimpson's avatar
   
Clinton Stimpson committed
280
#  QT_QTSCRIPTTOOLS_LIBRARY         The QtScriptTools library
281
#  
282
283
# The QtDeclarative library:             QT_QTDECLARATIVE_LIBRARY
#
284
# also defined, but NOT for general use are
285
286
287
288
289
290
291
292
293
#  QT_MOC_EXECUTABLE                   Where to find the moc tool.
#  QT_UIC_EXECUTABLE                   Where to find the uic tool.
#  QT_UIC3_EXECUTABLE                  Where to find the uic3 tool.
#  QT_RCC_EXECUTABLE                   Where to find the rcc tool
#  QT_DBUSCPP2XML_EXECUTABLE           Where to find the qdbuscpp2xml tool.
#  QT_DBUSXML2CPP_EXECUTABLE           Where to find the qdbusxml2cpp tool.
#  QT_LUPDATE_EXECUTABLE               Where to find the lupdate tool.
#  QT_LRELEASE_EXECUTABLE              Where to find the lrelease tool.
#  QT_QCOLLECTIONGENERATOR_EXECUTABLE  Where to find the qcollectiongenerator tool.
294
295
#  QT_DESIGNER_EXECUTABLE              Where to find the Qt designer tool.
#  QT_LINGUIST_EXECUTABLE              Where to find the Qt linguist tool.
296
#  
297
#
298
# These are around for backwards compatibility 
299
# they will be set
Ken Martin's avatar
Ken Martin committed
300
301
#  QT_WRAP_CPP  Set true if QT_MOC_EXECUTABLE is found
#  QT_WRAP_UI   Set true if QT_UIC_EXECUTABLE is found
302
#  
303
# These variables do _NOT_ have any effect anymore (compared to FindQt.cmake)
304
#  QT_MT_REQUIRED         Qt4 is now always multithreaded
305
306
#  
# These variables are set to "" Because Qt structure changed 
Ken Martin's avatar
Ken Martin committed
307
# (They make no sense in Qt4)
308
309
#  QT_QT_LIBRARY        Qt-Library is now split

310
311
312
313
314
315
316
317
318
319
320
321
#=============================================================================
# Copyright 2005-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distributed this file outside of CMake, substitute the full
#  License text for the above reference.)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340

# Use FIND_PACKAGE( Qt4 COMPONENTS ... ) to enable modules
IF( Qt4_FIND_COMPONENTS )
  FOREACH( component ${Qt4_FIND_COMPONENTS} )
    STRING( TOUPPER ${component} _COMPONENT )
    SET( QT_USE_${_COMPONENT} 1 )
  ENDFOREACH( component )
  
  # To make sure we don't use QtCore or QtGui when not in COMPONENTS
  IF(NOT QT_USE_QTCORE)
    SET( QT_DONT_USE_QTCORE 1 )
  ENDIF(NOT QT_USE_QTCORE)
  
  IF(NOT QT_USE_QTGUI)
    SET( QT_DONT_USE_QTGUI 1 )
  ENDIF(NOT QT_USE_QTGUI)

ENDIF( Qt4_FIND_COMPONENTS )

341
342
343
# If Qt3 has already been found, fail.
IF(QT_QT_LIBRARY)
  IF(Qt4_FIND_REQUIRED)
344
    MESSAGE( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
345
346
  ELSE(Qt4_FIND_REQUIRED)
    IF(NOT Qt4_FIND_QUIETLY)
347
      MESSAGE( STATUS    "Qt3 and Qt4 cannot be used together in one project.  If switching to Qt4, the CMakeCache.txt needs to be cleaned.")
348
349
350
    ENDIF(NOT Qt4_FIND_QUIETLY)
    RETURN()
  ENDIF(Qt4_FIND_REQUIRED)
Alexander Neundorf's avatar
Alexander Neundorf committed
351
ENDIF(QT_QT_LIBRARY)
352
353


354
INCLUDE(CheckSymbolExists)
Andy Cedilnik's avatar
Andy Cedilnik committed
355
INCLUDE(MacroAddFileDependencies)
356

357
358
359
360
SET(QT_USE_FILE ${CMAKE_ROOT}/Modules/UseQt4.cmake)

SET( QT_DEFINITIONS "")

361
362
SET(QT4_INSTALLED_VERSION_TOO_OLD FALSE)

363
#  macro for asking qmake to process pro files
364
MACRO(QT_QUERY_QMAKE outvar invar)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
365
  IF(QT_QMAKE_EXECUTABLE)
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
    FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake/tmp.pro
         "message(CMAKE_MESSAGE<$$${invar}>)")

    # Invoke qmake with the tmp.pro program to get the desired
    # information.  Use the same variable for both stdout and stderr
    # to make sure we get the output on all platforms.
    EXECUTE_PROCESS(COMMAND ${QT_QMAKE_EXECUTABLE}
      WORKING_DIRECTORY  
      ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake
      OUTPUT_VARIABLE _qmake_query_output
      RESULT_VARIABLE _qmake_result
      ERROR_VARIABLE _qmake_query_output )

    FILE(REMOVE_RECURSE 
         "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake")

    IF(_qmake_result)
      MESSAGE(WARNING " querying qmake for ${invar}.  qmake reported:\n${_qmake_query_output}")
    ELSE(_qmake_result)
      STRING(REGEX REPLACE ".*CMAKE_MESSAGE<([^>]*).*" "\\1" ${outvar} "${_qmake_query_output}")
    ENDIF(_qmake_result)
387

Clinton Stimpson's avatar
   
Clinton Stimpson committed
388
  ENDIF(QT_QMAKE_EXECUTABLE)
389
ENDMACRO(QT_QUERY_QMAKE)
390

391
GET_FILENAME_COMPONENT(qt_install_version "[HKEY_CURRENT_USER\\Software\\trolltech\\Versions;DefaultQtVersion]" NAME)
392
# check for qmake
393
394
395
# Debian uses qmake-qt4
# macports' Qt uses qmake-mac
FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake qmake4 qmake-qt4 qmake-mac PATHS
396
397
  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
398
  "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]/bin"
399
400
  $ENV{QTDIR}/bin
)
401
402
403

IF (QT_QMAKE_EXECUTABLE)

Clinton Stimpson's avatar
   
Clinton Stimpson committed
404
405
406
  IF(QT_QMAKE_EXECUTABLE_LAST)
    STRING(COMPARE NOTEQUAL "${QT_QMAKE_EXECUTABLE_LAST}" "${QT_QMAKE_EXECUTABLE}" QT_QMAKE_CHANGED)
  ENDIF(QT_QMAKE_EXECUTABLE_LAST)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
407
408
409

  SET(QT_QMAKE_EXECUTABLE_LAST "${QT_QMAKE_EXECUTABLE}" CACHE INTERNAL "" FORCE)

410
411
412
  SET(QT4_QMAKE_FOUND FALSE)
  
  EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION)
413

414
  # check for qt3 qmake and then try and find qmake4 or qmake-qt4 in the path
415
416
  IF("${QTVERSION}" MATCHES "Unknown")
    SET(QT_QMAKE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE)
417
    FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake4 qmake-qt4 PATHS
418
419
420
421
422
423
424
425
426
      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
      "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
      $ENV{QTDIR}/bin
      )
    IF(QT_QMAKE_EXECUTABLE)
      EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} 
        ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION)
    ENDIF(QT_QMAKE_EXECUTABLE)
  ENDIF("${QTVERSION}" MATCHES "Unknown")
427

428
429
430
431
432
433
434
435
  # check that we found the Qt4 qmake, Qt3 qmake output won't match here
  STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" qt_version_tmp "${QTVERSION}")
  IF (qt_version_tmp)

    # we need at least version 4.0.0
    IF (NOT QT_MIN_VERSION)
      SET(QT_MIN_VERSION "4.0.0")
    ENDIF (NOT QT_MIN_VERSION)
436

437
438
439
440
441
    #now parse the parts of the user given version string into variables
    STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" req_qt_major_vers "${QT_MIN_VERSION}")
    IF (NOT req_qt_major_vers)
      MESSAGE( FATAL_ERROR "Invalid Qt version string given: \"${QT_MIN_VERSION}\", expected e.g. \"4.0.1\"")
    ENDIF (NOT req_qt_major_vers)
442

443
444
445
446
    # now parse the parts of the user given version string into variables
    STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_qt_major_vers "${QT_MIN_VERSION}")
    STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_qt_minor_vers "${QT_MIN_VERSION}")
    STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_qt_patch_vers "${QT_MIN_VERSION}")
447

448
449
450
451
452
453
454
455
456
    # Suppport finding at least a particular version, for instance FIND_PACKAGE( Qt4 4.4.3 )
    # This implementation is a hack to avoid duplicating code and make sure we stay
    # source-compatible with CMake 2.6.x
    IF( Qt4_FIND_VERSION )
      SET( QT_MIN_VERSION ${Qt4_FIND_VERSION} )
      SET( req_qt_major_vers ${Qt4_FIND_VERSION_MAJOR} )
      SET( req_qt_minor_vers ${Qt4_FIND_VERSION_MINOR} )
      SET( req_qt_patch_vers ${Qt4_FIND_VERSION_PATCH} )
    ENDIF( Qt4_FIND_VERSION )
Clinton Stimpson's avatar
   
Clinton Stimpson committed
457

458
459
460
    IF (NOT req_qt_major_vers EQUAL 4)
      MESSAGE( FATAL_ERROR "Invalid Qt version string given: \"${QT_MIN_VERSION}\", major version 4 is required, e.g. \"4.0.1\"")
    ENDIF (NOT req_qt_major_vers EQUAL 4)
461

462
    # and now the version string given by qmake
Clinton Stimpson's avatar
   
Clinton Stimpson committed
463
464
465
    STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" QT_VERSION_MAJOR "${QTVERSION}")
    STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" QT_VERSION_MINOR "${QTVERSION}")
    STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" QT_VERSION_PATCH "${QTVERSION}")
466

467
468
    # compute an overall version number which can be compared at once
    MATH(EXPR req_vers "${req_qt_major_vers}*10000 + ${req_qt_minor_vers}*100 + ${req_qt_patch_vers}")
Clinton Stimpson's avatar
   
Clinton Stimpson committed
469
    MATH(EXPR found_vers "${QT_VERSION_MAJOR}*10000 + ${QT_VERSION_MINOR}*100 + ${QT_VERSION_PATCH}")
470

471
472
473
474
475
476
477
478
479
480
481
482
483
    # Support finding *exactly* a particular version, for instance FIND_PACKAGE( Qt4 4.4.3 EXACT )
    IF( Qt4_FIND_VERSION_EXACT )
      IF(found_vers EQUAL req_vers)
        SET( QT4_QMAKE_FOUND TRUE )
      ELSE(found_vers EQUAL req_vers)
        SET( QT4_QMAKE_FOUND FALSE )
        IF (found_vers LESS req_vers)
          SET(QT4_INSTALLED_VERSION_TOO_OLD TRUE)
        ELSE (found_vers LESS req_vers)
          SET(QT4_INSTALLED_VERSION_TOO_NEW TRUE)
        ENDIF (found_vers LESS req_vers)
      ENDIF(found_vers EQUAL req_vers)
    ELSE( Qt4_FIND_VERSION_EXACT )
Clinton Stimpson's avatar
   
Clinton Stimpson committed
484
      IF (found_vers LESS req_vers)
485
        SET(QT4_QMAKE_FOUND FALSE)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
486
487
        SET(QT4_INSTALLED_VERSION_TOO_OLD TRUE)
      ELSE (found_vers LESS req_vers)
488
        SET(QT4_QMAKE_FOUND TRUE)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
489
      ENDIF (found_vers LESS req_vers)
490
    ENDIF( Qt4_FIND_VERSION_EXACT )
491
  ENDIF (qt_version_tmp)
492
493
494
495
496
497

ENDIF (QT_QMAKE_EXECUTABLE)

IF (QT4_QMAKE_FOUND)

  # ask qmake for the library dir
498
  # Set QT_LIBRARY_DIR
Clinton Stimpson's avatar
   
Clinton Stimpson committed
499
  IF (NOT QT_LIBRARY_DIR OR QT_QMAKE_CHANGED)
500
    EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
Bill Hoffman's avatar
Bill Hoffman committed
501
502
      ARGS "-query QT_INSTALL_LIBS"
      OUTPUT_VARIABLE QT_LIBRARY_DIR_TMP )
503
504
    # make sure we have / and not \ as qmake gives on windows
    FILE(TO_CMAKE_PATH "${QT_LIBRARY_DIR_TMP}" QT_LIBRARY_DIR_TMP)
505
    IF(EXISTS "${QT_LIBRARY_DIR_TMP}")
Clinton Stimpson's avatar
   
Clinton Stimpson committed
506
      SET(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE PATH "Qt library dir" FORCE)
507
    ELSE(EXISTS "${QT_LIBRARY_DIR_TMP}")
Bill Hoffman's avatar
Bill Hoffman committed
508
      MESSAGE("Warning: QT_QMAKE_EXECUTABLE reported QT_INSTALL_LIBS as ${QT_LIBRARY_DIR_TMP}")
509
      MESSAGE("Warning: ${QT_LIBRARY_DIR_TMP} does NOT exist, Qt must NOT be installed correctly.")
510
    ENDIF(EXISTS "${QT_LIBRARY_DIR_TMP}")
Clinton Stimpson's avatar
   
Clinton Stimpson committed
511
  ENDIF(NOT QT_LIBRARY_DIR OR QT_QMAKE_CHANGED)
512
  
513
514
515
  IF (APPLE)
    IF (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework)
      SET(QT_USE_FRAMEWORKS ON
Clinton Stimpson's avatar
   
Clinton Stimpson committed
516
        CACHE BOOL "Set to ON if Qt build uses frameworks." FORCE)
517
    ELSE (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework)
Bill Hoffman's avatar
Bill Hoffman committed
518
      SET(QT_USE_FRAMEWORKS OFF
Clinton Stimpson's avatar
   
Clinton Stimpson committed
519
        CACHE BOOL "Set to ON if Qt build uses frameworks." FORCE)
520
    ENDIF (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework)
521
    
522
523
    MARK_AS_ADVANCED(QT_USE_FRAMEWORKS)
  ENDIF (APPLE)
524
  
525
  # ask qmake for the binary dir
526
  IF (QT_LIBRARY_DIR AND NOT QT_BINARY_DIR  OR  QT_QMAKE_CHANGED)
527
     EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE}
528
529
530
531
       ARGS "-query QT_INSTALL_BINS"
       OUTPUT_VARIABLE qt_bins )
     # make sure we have / and not \ as qmake gives on windows
     FILE(TO_CMAKE_PATH "${qt_bins}" qt_bins)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
532
     SET(QT_BINARY_DIR ${qt_bins} CACHE INTERNAL "" FORCE)
533
  ENDIF (QT_LIBRARY_DIR AND NOT QT_BINARY_DIR  OR  QT_QMAKE_CHANGED)
534
535

  # ask qmake for the include dir
536
  IF (QT_LIBRARY_DIR AND NOT QT_HEADERS_DIR  OR  QT_QMAKE_CHANGED)
537
538
      EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
        ARGS "-query QT_INSTALL_HEADERS" 
539
540
541
        OUTPUT_VARIABLE qt_headers ) 
      # make sure we have / and not \ as qmake gives on windows
      FILE(TO_CMAKE_PATH "${qt_headers}" qt_headers)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
542
      SET(QT_HEADERS_DIR ${qt_headers} CACHE INTERNAL "" FORCE)
543
  ENDIF (QT_LIBRARY_DIR AND NOT QT_HEADERS_DIR  OR  QT_QMAKE_CHANGED)
544
545
546


  # ask qmake for the documentation directory
547
  IF (QT_LIBRARY_DIR AND NOT QT_DOC_DIR  OR  QT_QMAKE_CHANGED)
548
549
550
    EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
      ARGS "-query QT_INSTALL_DOCS"
      OUTPUT_VARIABLE qt_doc_dir )
551
552
    # make sure we have / and not \ as qmake gives on windows
    FILE(TO_CMAKE_PATH "${qt_doc_dir}" qt_doc_dir)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
553
    SET(QT_DOC_DIR ${qt_doc_dir} CACHE PATH "The location of the Qt docs" FORCE)
554
  ENDIF (QT_LIBRARY_DIR AND NOT QT_DOC_DIR  OR  QT_QMAKE_CHANGED)
555
556

  # ask qmake for the mkspecs directory
557
  IF (QT_LIBRARY_DIR AND NOT QT_MKSPECS_DIR  OR  QT_QMAKE_CHANGED)
558
559
    EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
      ARGS "-query QMAKE_MKSPECS"
560
      OUTPUT_VARIABLE qt_mkspecs_dirs )
561
562
563
564
565
    # do not replace : on windows as it might be a drive letter
    # and windows should already use ; as a separator
    IF(UNIX)
      STRING(REPLACE ":" ";" qt_mkspecs_dirs "${qt_mkspecs_dirs}")
    ENDIF(UNIX)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
566
    SET(QT_MKSPECS_DIR NOTFOUND)
567
568
569
    FIND_PATH(QT_MKSPECS_DIR qconfig.pri PATHS ${qt_mkspecs_dirs}
      DOC "The location of the Qt mkspecs containing qconfig.pri"
      NO_DEFAULT_PATH )
570
  ENDIF (QT_LIBRARY_DIR AND NOT QT_MKSPECS_DIR  OR  QT_QMAKE_CHANGED)
571

572
  # ask qmake for the plugins directory
573
  IF (QT_LIBRARY_DIR AND NOT QT_PLUGINS_DIR  OR  QT_QMAKE_CHANGED)
574
575
576
    EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
      ARGS "-query QT_INSTALL_PLUGINS"
      OUTPUT_VARIABLE qt_plugins_dir )
577
578
    # make sure we have / and not \ as qmake gives on windows
    FILE(TO_CMAKE_PATH "${qt_plugins_dir}" qt_plugins_dir)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
579
    SET(QT_PLUGINS_DIR ${qt_plugins_dir} CACHE PATH "The location of the Qt plugins" FORCE)
580
  ENDIF (QT_LIBRARY_DIR AND NOT QT_PLUGINS_DIR  OR  QT_QMAKE_CHANGED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
581
582

  # ask qmake for the translations directory
583
  IF (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR  OR  QT_QMAKE_CHANGED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
584
585
586
587
588
589
    EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE}
      ARGS "-query QT_INSTALL_TRANSLATIONS"
      OUTPUT_VARIABLE qt_translations_dir )
    # make sure we have / and not \ as qmake gives on windows
    FILE(TO_CMAKE_PATH "${qt_translations_dir}" qt_translations_dir)
    SET(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE)
590
  ENDIF (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR  OR  QT_QMAKE_CHANGED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
591

592
593
594
595
596
  # Make variables changeble to the advanced user
  MARK_AS_ADVANCED( QT_LIBRARY_DIR QT_DOC_DIR QT_MKSPECS_DIR
                    QT_PLUGINS_DIR QT_TRANSLATIONS_DIR)


597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
  #############################################
  #
  # Find out what window system we're using
  #
  #############################################
  # Save required variable
  SET(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
  SET(CMAKE_REQUIRED_FLAGS_SAVE    ${CMAKE_REQUIRED_FLAGS})
  # Add QT_INCLUDE_DIR to CMAKE_REQUIRED_INCLUDES
  SET(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES};${QT_HEADERS_DIR}")
  # On Mac OS X when Qt has framework support, also add the framework path
  IF( QT_USE_FRAMEWORKS )
    SET(CMAKE_REQUIRED_FLAGS "-F${QT_LIBRARY_DIR} ")
  ENDIF( QT_USE_FRAMEWORKS )
  # Check for Window system symbols (note: only one should end up being set)
  CHECK_SYMBOL_EXISTS(Q_WS_X11 "QtCore/qglobal.h" Q_WS_X11)
  CHECK_SYMBOL_EXISTS(Q_WS_WIN "QtCore/qglobal.h" Q_WS_WIN)
  CHECK_SYMBOL_EXISTS(Q_WS_QWS "QtCore/qglobal.h" Q_WS_QWS)
  CHECK_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
  IF(Q_WS_MAC)
    IF(QT_QMAKE_CHANGED)
      UNSET(QT_MAC_USE_COCOA CACHE)
    ENDIF(QT_QMAKE_CHANGED)
    CHECK_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
  ENDIF(Q_WS_MAC)

  IF (QT_QTCOPY_REQUIRED)
     CHECK_SYMBOL_EXISTS(QT_IS_QTCOPY "QtCore/qglobal.h" QT_KDE_QT_COPY)
     IF (NOT QT_IS_QTCOPY)
        MESSAGE(FATAL_ERROR "qt-copy is required, but hasn't been found")
     ENDIF (NOT QT_IS_QTCOPY)
  ENDIF (QT_QTCOPY_REQUIRED)

  # Restore CMAKE_REQUIRED_INCLUDES and CMAKE_REQUIRED_FLAGS variables
  SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
  SET(CMAKE_REQUIRED_FLAGS    ${CMAKE_REQUIRED_FLAGS_SAVE})
  #
  #############################################



638
639
640
641
642
  ########################################
  #
  #       Setting the INCLUDE-Variables
  #
  ########################################
643

Clinton Stimpson's avatar
   
Clinton Stimpson committed
644
  SET(QT_MODULES QtCore QtGui Qt3Support QtSvg QtScript QtTest QtUiTools 
645
                 QtHelp QtWebKit QtXmlPatterns phonon QtNetwork QtMultimedia
646
647
                 QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools
                 QtDeclarative)
648
649
650
651
  
  IF(Q_WS_X11)
    SET(QT_MODULES ${QT_MODULES} QtMotif)
  ENDIF(Q_WS_X11)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
652
653
654
655
656
657
658
659
660
661
662
663
664
665

  IF(QT_QMAKE_CHANGED)
    FOREACH(QT_MODULE ${QT_MODULES})
      STRING(TOUPPER ${QT_MODULE} _upper_qt_module)
      SET(QT_${_upper_qt_module}_INCLUDE_DIR NOTFOUND)
      SET(QT_${_upper_qt_module}_LIBRARY_RELEASE NOTFOUND)
      SET(QT_${_upper_qt_module}_LIBRARY_DEBUG NOTFOUND)
    ENDFOREACH(QT_MODULE)
    SET(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR NOTFOUND)
    SET(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG NOTFOUND)
    SET(QT_QTASSISTANTCLIENT_INCLUDE_DIR NOTFOUND)
    SET(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
666
667
668
    SET(QT_QTASSISTANT_INCLUDE_DIR NOTFOUND)
    SET(QT_QTASSISTANT_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QTASSISTANT_LIBRARY_DEBUG NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
669
670
    SET(QT_QTCLUCENE_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QTCLUCENE_LIBRARY_DEBUG NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
671
672
673
674
675
676
    SET(QT_QAXCONTAINER_INCLUDE_DIR NOTFOUND)
    SET(QT_QAXCONTAINER_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QAXCONTAINER_LIBRARY_DEBUG NOTFOUND)
    SET(QT_QAXSERVER_INCLUDE_DIR NOTFOUND)
    SET(QT_QAXSERVER_LIBRARY_RELEASE NOTFOUND)
    SET(QT_QAXSERVER_LIBRARY_DEBUG NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
677
678
679
680
    IF(WIN32)
      SET(QT_QTMAIN_LIBRARY_DEBUG NOTFOUND)
      SET(QT_QTMAIN_LIBRARY_RELEASE NOTFOUND)
    ENDIF(WIN32)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
681
682
683
684
685
686
687
688
689
690
  ENDIF(QT_QMAKE_CHANGED)

  FOREACH(QT_MODULE ${QT_MODULES})
    STRING(TOUPPER ${QT_MODULE} _upper_qt_module)
    FIND_PATH(QT_${_upper_qt_module}_INCLUDE_DIR ${QT_MODULE}
              PATHS
              ${QT_HEADERS_DIR}/${QT_MODULE}
              ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
              NO_DEFAULT_PATH
      )
691
692
693
694
695
696
697
698
699
700
    # phonon doesn't seem consistent, let's try phonondefs.h for some
    # installations
    IF(${QT_MODULE} STREQUAL "phonon")
      FIND_PATH(QT_${_upper_qt_module}_INCLUDE_DIR phonondefs.h
                PATHS
                ${QT_HEADERS_DIR}/${QT_MODULE}
                ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers
                NO_DEFAULT_PATH
        )
    ENDIF(${QT_MODULE} STREQUAL "phonon")
Clinton Stimpson's avatar
   
Clinton Stimpson committed
701
  ENDFOREACH(QT_MODULE)
702

Clinton Stimpson's avatar
   
Clinton Stimpson committed
703
704
705
706
707
708
709
710
711
712
713
714
715
716
  IF(WIN32)
    SET(QT_MODULES ${QT_MODULES} QAxContainer QAxServer)
    # Set QT_AXCONTAINER_INCLUDE_DIR and QT_AXSERVER_INCLUDE_DIR
    FIND_PATH(QT_QAXCONTAINER_INCLUDE_DIR ActiveQt
      PATHS
      ${QT_HEADERS_DIR}/ActiveQt
      NO_DEFAULT_PATH
      )
    FIND_PATH(QT_QAXSERVER_INCLUDE_DIR ActiveQt
      PATHS
      ${QT_HEADERS_DIR}/ActiveQt
      NO_DEFAULT_PATH
      )
  ENDIF(WIN32)
717

Clinton Stimpson's avatar
   
Clinton Stimpson committed
718
719
  # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
  FIND_PATH(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents
Bill Hoffman's avatar
Bill Hoffman committed
720
    PATHS
Clinton Stimpson's avatar
   
Clinton Stimpson committed
721
    ${QT_HEADERS_DIR}/QtDesigner
Clinton Stimpson's avatar
   
Clinton Stimpson committed
722
    ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers
Andy Cedilnik's avatar
Andy Cedilnik committed
723
    NO_DEFAULT_PATH
724
    )
Clinton Stimpson's avatar
   
Clinton Stimpson committed
725
726
  
  # Set QT_QTASSISTANT_INCLUDE_DIR
727
  FIND_PATH(QT_QTASSISTANT_INCLUDE_DIR QtAssistant
Clinton Stimpson's avatar
   
Clinton Stimpson committed
728
    PATHS
Clinton Stimpson's avatar
   
Clinton Stimpson committed
729
    ${QT_HEADERS_DIR}/QtAssistant
Clinton Stimpson's avatar
   
Clinton Stimpson committed
730
731
732
733
    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
    NO_DEFAULT_PATH
    )
  
Clinton Stimpson's avatar
   
Clinton Stimpson committed
734
735
736
  # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR
  FIND_PATH(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient
    PATHS
Clinton Stimpson's avatar
   
Clinton Stimpson committed
737
    ${QT_HEADERS_DIR}/QtAssistant
Clinton Stimpson's avatar
   
Clinton Stimpson committed
738
739
740
    ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
    NO_DEFAULT_PATH
    )
741

742
  # Set QT_INCLUDE_DIR by removine "/QtCore" in the string ${QT_QTCORE_INCLUDE_DIR}
743
  IF( QT_QTCORE_INCLUDE_DIR )
744
745
746
    IF (QT_USE_FRAMEWORKS)
      SET(QT_INCLUDE_DIR ${QT_HEADERS_DIR})
    ELSE (QT_USE_FRAMEWORKS)
747
      STRING( REGEX REPLACE "/QtCore$" "" qt4_include_dir ${QT_QTCORE_INCLUDE_DIR})
Clinton Stimpson's avatar
   
Clinton Stimpson committed
748
      SET( QT_INCLUDE_DIR ${qt4_include_dir})
749
    ENDIF (QT_USE_FRAMEWORKS)
750
  ENDIF( QT_QTCORE_INCLUDE_DIR )
751

752
  IF( NOT QT_INCLUDE_DIR)
753
    IF(Qt4_FIND_REQUIRED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
754
      MESSAGE( FATAL_ERROR "Could NOT find QtCore header")
755
    ENDIF(Qt4_FIND_REQUIRED)
756
  ENDIF( NOT QT_INCLUDE_DIR)
757

758
759
760
  # Make variables changeble to the advanced user
  MARK_AS_ADVANCED( QT_INCLUDE_DIR )

Clinton Stimpson's avatar
   
Clinton Stimpson committed
761
762
763
  # Set QT_INCLUDES
  SET( QT_INCLUDES ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} )

764

765

766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784


  #######################################
  #
  #       Qt configuration
  #
  #######################################
  IF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri")
    FILE(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents)
    STRING(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}")
    STRING(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}")
    STRING(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}")
    STRING(REGEX MATCH "QT_LIBINFIX[^\n]+" _qconfig_qt_libinfix "${_qconfig_FILE_contents}")
    STRING(REGEX REPLACE "QT_LIBINFIX *= *([^\n]*)" "\\1" QT_LIBINFIX "${_qconfig_qt_libinfix}")
  ENDIF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri")
  IF("${QT_EDITION}" MATCHES "DesktopLight")
    SET(QT_EDITION_DESKTOPLIGHT 1)
  ENDIF("${QT_EDITION}" MATCHES "DesktopLight")

785
786
787
788
789
  ########################################
  #
  #       Setting the LIBRARY-Variables
  #
  ########################################
790

Clinton Stimpson's avatar
   
Clinton Stimpson committed
791
792
793
794
  # find the libraries
  FOREACH(QT_MODULE ${QT_MODULES})
    STRING(TOUPPER ${QT_MODULE} _upper_qt_module)
    FIND_LIBRARY(QT_${_upper_qt_module}_LIBRARY_RELEASE 
795
                 NAMES ${QT_MODULE}${QT_LIBINFIX} ${QT_MODULE}${QT_LIBINFIX}4
Clinton Stimpson's avatar
   
Clinton Stimpson committed
796
797
798
                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH
        )
    FIND_LIBRARY(QT_${_upper_qt_module}_LIBRARY_DEBUG 
799
                 NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}${QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4
Clinton Stimpson's avatar
   
Clinton Stimpson committed
800
801
802
                 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH
        )
  ENDFOREACH(QT_MODULE)
803

804
805
  # QtUiTools not with other frameworks with binary installation (in /usr/lib)
  IF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE)
806
    FIND_LIBRARY(QT_QTUITOOLS_LIBRARY_RELEASE NAMES QtUiTools${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
807
  ENDIF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE)
808

Andy Cedilnik's avatar
Andy Cedilnik committed
809
  IF( NOT QT_QTCORE_LIBRARY_DEBUG AND NOT QT_QTCORE_LIBRARY_RELEASE )
Clinton Stimpson's avatar
   
Clinton Stimpson committed
810
811
812
813
814
815
816
817
    
    # try dropping a hint if trying to use Visual Studio with Qt built by mingw
    IF(QT_LIBRARY_DIR AND MSVC)
      IF(EXISTS ${QT_LIBRARY_DIR}/libqtmain.a)
        MESSAGE( FATAL_ERROR "It appears you're trying to use Visual Studio with Qt built by mingw")
      ENDIF(EXISTS ${QT_LIBRARY_DIR}/libqtmain.a)
    ENDIF(QT_LIBRARY_DIR AND MSVC)

818
    IF(Qt4_FIND_REQUIRED)
819
      MESSAGE( FATAL_ERROR "Could NOT find QtCore. Check ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log for more details.")
820
    ENDIF(Qt4_FIND_REQUIRED)
Andy Cedilnik's avatar
Andy Cedilnik committed
821
  ENDIF( NOT QT_QTCORE_LIBRARY_DEBUG AND NOT QT_QTCORE_LIBRARY_RELEASE )
822

823
  # Set QT_QTDESIGNERCOMPONENTS_LIBRARY
824
825
  FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NAMES QtDesignerComponents${QT_LIBINFIX} QtDesignerComponents${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR}        NO_DEFAULT_PATH)
  FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG   NAMES QtDesignerComponents${QT_LIBINFIX}_debug QtDesignerComponents${QT_LIBINFIX}d QtDesignerComponents${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
826

Bill Hoffman's avatar
Bill Hoffman committed
827
828
  # Set QT_QTMAIN_LIBRARY
  IF(WIN32)
829
    FIND_LIBRARY(QT_QTMAIN_LIBRARY_RELEASE NAMES qtmain${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR}
Bill Hoffman's avatar
Bill Hoffman committed
830
      NO_DEFAULT_PATH)
831
    FIND_LIBRARY(QT_QTMAIN_LIBRARY_DEBUG NAMES qtmain${QT_LIBINFIX}d PATHS ${QT_LIBRARY_DIR}
Bill Hoffman's avatar
Bill Hoffman committed
832
833
      NO_DEFAULT_PATH)
  ENDIF(WIN32)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
834
835
  
  # Set QT_QTASSISTANTCLIENT_LIBRARY
836
837
  FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR}        NO_DEFAULT_PATH)
  FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
838
839
  
  # Set QT_QTASSISTANT_LIBRARY
840
841
  FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 QtAssistant${QT_LIBINFIX} QtAssistant${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR}        NO_DEFAULT_PATH)
  FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_DEBUG   NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 QtAssistant${QT_LIBINFIX}_debug QtAssistant${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
842
843

  # Set QT_QTHELP_LIBRARY
844
845
  FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} QtCLucene${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR}        NO_DEFAULT_PATH)
  FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_DEBUG   NAMES QtCLucene${QT_LIBINFIX}_debug QtCLucene${QT_LIBINFIX}d QtCLucene${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
846
847
  # QtCLucene not with other frameworks with binary installation (in /usr/lib)
  IF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE)
848
    FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR})
Clinton Stimpson's avatar
   
Clinton Stimpson committed
849
  ENDIF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
850

851
852
853
854
855
856
  ############################################
  #
  # Check the existence of the libraries.
  #
  ############################################

857
858
859
860
861
862
863
864
865
866
867
868
  # On OSX when Qt is found as framework, never use the imported targets for now, since 
  # in this case the handling of the framework directory currently does not work correctly.
  IF(QT_USE_FRAMEWORKS)
    SET(QT_USE_IMPORTED_TARGETS FALSE)
  ENDIF(QT_USE_FRAMEWORKS)


  MACRO (_QT4_ADJUST_LIB_VARS _camelCaseBasename)

    STRING(TOUPPER "${_camelCaseBasename}" basename)

    # The name of the imported targets, i.e. the prefix "Qt4::" must not change,
869
870
    # since it is stored in EXPORT-files as name of a required library. If the name would change
    # here, this would lead to the imported Qt4-library targets not being resolved by cmake anymore.
871
    IF (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)
872
873
874

      IF(NOT TARGET Qt4::${_camelCaseBasename})
        ADD_LIBRARY(Qt4::${_camelCaseBasename} UNKNOWN IMPORTED )
875
876

        IF (QT_${basename}_LIBRARY_RELEASE)
877
878
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${QT_${basename}_LIBRARY_RELEASE}" )
879
880
881
        ENDIF (QT_${basename}_LIBRARY_RELEASE)

        IF (QT_${basename}_LIBRARY_DEBUG)
882
883
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${QT_${basename}_LIBRARY_DEBUG}" )
884
        ENDIF (QT_${basename}_LIBRARY_DEBUG)
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
      ENDIF(NOT TARGET Qt4::${_camelCaseBasename})

      # If QT_USE_IMPORTED_TARGETS is enabled, the QT_QTFOO_LIBRARY variables are set to point at these
      # imported targets. This works better in general, and is also in almost all cases fully
      # backward compatible. The only issue is when a project A which had this enabled then exports its 
      # libraries via export or EXPORT_LIBRARY_DEPENDENCIES(). In this case the libraries from project
      # A will depend on the imported Qt targets, and the names of these imported targets will be stored
      # in the dependency files on disk. This means when a project B then uses project A, these imported
      # targets must be created again, otherwise e.g. "Qt4__QtCore" will be interpreted as name of a 
      # library file on disk, and not as a target, and linking will fail:
      IF(QT_USE_IMPORTED_TARGETS)
          SET(QT_${basename}_LIBRARY       Qt4::${_camelCaseBasename} )
          SET(QT_${basename}_LIBRARIES     Qt4::${_camelCaseBasename} )
      ELSE(QT_USE_IMPORTED_TARGETS)

        # if the release- as well as the debug-version of the library have been found:
        IF (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)
          # if the generator supports configuration types then set
          # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
          IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
            SET(QT_${basename}_LIBRARY       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
          ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
            # if there are no configuration types and CMAKE_BUILD_TYPE has no value
            # then just use the release libraries
            SET(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE} )
          ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
          SET(QT_${basename}_LIBRARIES       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
        ENDIF (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)

        # if only the release version was found, set the debug variable also to the release version
        IF (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)
          SET(QT_${basename}_LIBRARY_DEBUG ${QT_${basename}_LIBRARY_RELEASE})
          SET(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE})
          SET(QT_${basename}_LIBRARIES     ${QT_${basename}_LIBRARY_RELEASE})
        ENDIF (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)

        # if only the debug version was found, set the release variable also to the debug version
        IF (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)
          SET(QT_${basename}_LIBRARY_RELEASE ${QT_${basename}_LIBRARY_DEBUG})
          SET(QT_${basename}_LIBRARY         ${QT_${basename}_LIBRARY_DEBUG})
          SET(QT_${basename}_LIBRARIES       ${QT_${basename}_LIBRARY_DEBUG})
        ENDIF (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)

        # put the value in the cache:
        SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE)

      ENDIF(QT_USE_IMPORTED_TARGETS)

# message(STATUS "QT_${basename}_LIBRARY: ${QT_${basename}_LIBRARY}")

      SET(QT_${basename}_FOUND 1)
936

937
938
939
    ENDIF (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)

    IF (QT_${basename}_INCLUDE_DIR)
940
      #add the include directory to QT_INCLUDES
Clinton Stimpson's avatar
   
Clinton Stimpson committed
941
      SET(QT_INCLUDES "${QT_${basename}_INCLUDE_DIR}" ${QT_INCLUDES})
942
    ENDIF (QT_${basename}_INCLUDE_DIR)
943
944
945
946
947
948

    # Make variables changeble to the advanced user
    MARK_AS_ADVANCED(QT_${basename}_LIBRARY QT_${basename}_LIBRARY_RELEASE QT_${basename}_LIBRARY_DEBUG QT_${basename}_INCLUDE_DIR)
  ENDMACRO (_QT4_ADJUST_LIB_VARS)


949
950
  # Set QT_xyz_LIBRARY variable and add 
  # library include path to QT_INCLUDES
951
952
953
954
955
956
957
  _QT4_ADJUST_LIB_VARS(QtCore)
  _QT4_ADJUST_LIB_VARS(QtGui)
  _QT4_ADJUST_LIB_VARS(Qt3Support)
  _QT4_ADJUST_LIB_VARS(QtAssistant)
  _QT4_ADJUST_LIB_VARS(QtAssistantClient)
  _QT4_ADJUST_LIB_VARS(QtCLucene)
  _QT4_ADJUST_LIB_VARS(QtDBus)
958
  _QT4_ADJUST_LIB_VARS(QtDeclarative)
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
  _QT4_ADJUST_LIB_VARS(QtDesigner)
  _QT4_ADJUST_LIB_VARS(QtDesignerComponents)
  _QT4_ADJUST_LIB_VARS(QtHelp)
  _QT4_ADJUST_LIB_VARS(QtMultimedia)
  _QT4_ADJUST_LIB_VARS(QtNetwork)
  _QT4_ADJUST_LIB_VARS(QtNsPlugin)
  _QT4_ADJUST_LIB_VARS(QtOpenGL)
  _QT4_ADJUST_LIB_VARS(QtScript)
  _QT4_ADJUST_LIB_VARS(QtScriptTools)
  _QT4_ADJUST_LIB_VARS(QtSql)
  _QT4_ADJUST_LIB_VARS(QtSvg)
  _QT4_ADJUST_LIB_VARS(QtTest)
  _QT4_ADJUST_LIB_VARS(QtUiTools)
  _QT4_ADJUST_LIB_VARS(QtWebKit)
  _QT4_ADJUST_LIB_VARS(QtXml)
  _QT4_ADJUST_LIB_VARS(QtXmlPatterns)
  _QT4_ADJUST_LIB_VARS(phonon)
976
977
978

  # platform dependent libraries
  IF(Q_WS_X11)
979
    _QT4_ADJUST_LIB_VARS(QtMotif)
980
  ENDIF(Q_WS_X11)
981
  IF(WIN32)
982
983
984
    _QT4_ADJUST_LIB_VARS(qtmain)
    _QT4_ADJUST_LIB_VARS(QAxServer)
    _QT4_ADJUST_LIB_VARS(QAxContainer)
985
  ENDIF(WIN32)
986
987
988
989
990
991
992
993
994
995

  # If Qt is installed as a framework, we need to add QT_QTCORE_LIBRARY here (which
  # is the framework directory in that case), since this will make the cmake include_directories()
  # command recognize that we need the framework flag with the respective directory (-F)
  IF(QT_USE_FRAMEWORKS)
    SET(QT_INCLUDES       ${QT_INCLUDES} ${QT_QTCORE_LIBRARY} )
    SET(QT_INCLUDE_DIR ${QT_INCLUDE_DIR} ${QT_QTCORE_LIBRARY} )
  ENDIF(QT_USE_FRAMEWORKS)


996

997
998
  #######################################
  #
999
  #       Check the executables of Qt 
1000
1001
1002
  #          ( moc, uic, rcc )
  #
  #######################################
1003

1004

Clinton Stimpson's avatar
   
Clinton Stimpson committed
1005
  IF(QT_QMAKE_CHANGED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
1006
1007
    SET(QT_UIC_EXECUTABLE NOTFOUND)
    SET(QT_MOC_EXECUTABLE NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
1008
1009
1010
1011
1012
1013
    SET(QT_UIC3_EXECUTABLE NOTFOUND)
    SET(QT_RCC_EXECUTABLE NOTFOUND)
    SET(QT_DBUSCPP2XML_EXECUTABLE NOTFOUND)
    SET(QT_DBUSXML2CPP_EXECUTABLE NOTFOUND)
    SET(QT_LUPDATE_EXECUTABLE NOTFOUND)
    SET(QT_LRELEASE_EXECUTABLE NOTFOUND)
1014
    SET(QT_QCOLLECTIONGENERATOR_EXECUTABLE NOTFOUND)
1015
1016
    SET(QT_DESIGNER_EXECUTABLE NOTFOUND)
    SET(QT_LINGUIST_EXECUTABLE NOTFOUND)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
1017
  ENDIF(QT_QMAKE_CHANGED)
Clinton Stimpson's avatar
   
Clinton Stimpson committed
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
  
  FIND_PROGRAM(QT_MOC_EXECUTABLE
    NAMES moc-qt4 moc
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

  FIND_PROGRAM(QT_UIC_EXECUTABLE
    NAMES uic-qt4 uic
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )
1030

1031
1032
1033
1034
1035
1036
  FIND_PROGRAM(QT_UIC3_EXECUTABLE
    NAMES uic3
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

1037
  FIND_PROGRAM(QT_RCC_EXECUTABLE 
1038
    NAMES rcc
1039
1040
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
1041
    )
1042

1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
  FIND_PROGRAM(QT_DBUSCPP2XML_EXECUTABLE 
    NAMES qdbuscpp2xml
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

  FIND_PROGRAM(QT_DBUSXML2CPP_EXECUTABLE 
    NAMES qdbusxml2cpp
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

1055
  FIND_PROGRAM(QT_LUPDATE_EXECUTABLE
1056
    NAMES lupdate-qt4 lupdate
1057
1058
1059
1060
1061
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

  FIND_PROGRAM(QT_LRELEASE_EXECUTABLE
1062
    NAMES lrelease-qt4 lrelease
1063
1064
1065
1066
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

1067
1068
1069
1070
1071
1072
  FIND_PROGRAM(QT_QCOLLECTIONGENERATOR_EXECUTABLE
    NAMES qcollectiongenerator-qt4 qcollectiongenerator
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
  FIND_PROGRAM(QT_DESIGNER_EXECUTABLE
    NAMES designer-qt4 designer
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

  FIND_PROGRAM(QT_LINGUIST_EXECUTABLE
    NAMES linguist-qt4 linguist
    PATHS ${QT_BINARY_DIR}
    NO_DEFAULT_PATH
    )

1085
  IF (QT_MOC_EXECUTABLE)
1086
     SET(QT_WRAP_CPP "YES")
1087
1088
1089
  ENDIF (QT_MOC_EXECUTABLE)

  IF (QT_UIC_EXECUTABLE)
1090
     SET(QT_WRAP_UI "YES")
1091
1092
1093
1094
  ENDIF (QT_UIC_EXECUTABLE)



1095
1096
  MARK_AS_ADVANCED( QT_UIC_EXECUTABLE QT_UIC3_EXECUTABLE QT_MOC_EXECUTABLE
    QT_RCC_EXECUTABLE QT_DBUSXML2CPP_EXECUTABLE QT_DBUSCPP2XML_EXECUTABLE
1097
1098
    QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_QCOLLECTIONGENERATOR_EXECUTABLE
    QT_DESIGNER_EXECUTABLE QT_LINGUIST_EXECUTABLE)
1099

1100
1101
1102
1103

  # get the directory of the current file, used later on in the file
  GET_FILENAME_COMPONENT( _qt4_current_dir  "${CMAKE_CURRENT_LIST_FILE}" PATH)

1104
1105
1106
1107
1108
1109
  ######################################
  #
  #       Macros for building Qt files
  #
  ######################################

1110
  INCLUDE("${_qt4_current_dir}/Qt4Macros.cmake")
1111
1112
1113
1114


  ######################################
  #
Bill Hoffman's avatar
Bill Hoffman committed
1115
  #       decide if Qt got found