aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2009-11-08 18:06:55 +0000
committerAlexander Neundorf <neundorf@kde.org>2009-11-08 18:06:55 +0000
commit0b44a7baaa68cf9a620f942874e9e594f7ad4048 (patch)
tree81e97612d5311f1d6e8af0a6fc0626b2c78b9394
parent04700c7c77e786bc71a9b9d2f957221e89579d9c (diff)
downloadextra-cmake-modules-0b44a7baaa68cf9a620f942874e9e594f7ad4048.tar.gz
extra-cmake-modules-0b44a7baaa68cf9a620f942874e9e594f7ad4048.tar.bz2
some more syncing with FindQt4.cmake from cmake:
-use the same cmake code for finding the include dirs for the different Qt modules -move the mark_as_advanced() around a bit -fix the the -F flag for moc on OSX Alex svn path=/trunk/KDE/kdelibs/; revision=1046417
-rw-r--r--modules/FindQt4.cmake322
1 files changed, 94 insertions, 228 deletions
diff --git a/modules/FindQt4.cmake b/modules/FindQt4.cmake
index 3550d2a9..1ce79201 100644
--- a/modules/FindQt4.cmake
+++ b/modules/FindQt4.cmake
@@ -617,18 +617,93 @@ IF (QT4_QMAKE_FOUND)
SET(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE)
ENDIF (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR OR QT_QMAKE_CHANGED)
+ # 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)
+
+
########################################
#
# Setting the INCLUDE-Variables
#
########################################
- FIND_PATH(QT_QTCORE_INCLUDE_DIR QtGlobal
- ${QT_HEADERS_DIR}/QtCore
- ${QT_LIBRARY_DIR}/QtCore.framework/Headers
+ SET(QT_MODULES QtCore QtGui Qt3Support QtSvg QtScript QtTest QtUiTools
+ QtHelp QtWebKit QtXmlPatterns QtNetwork
+ QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools)
+
+ 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
+ )
+ ENDFOREACH(QT_MODULE)
+
+ IF(WIN32)
+ # Set QT_QTAXSERVER_INCLUDE_DIR
+ FIND_PATH(QT_QTAXSERVER_INCLUDE_DIR QtAxServer
+ PATHS
+ ${QT_INCLUDE_DIR}/QtAxServer
+ ${QT_HEADERS_DIR}/QtAxServer
+ NO_DEFAULT_PATH
+ )
+
+ # Set QT_QTAXCONTAINER_INCLUDE_DIR
+ FIND_PATH(QT_QTAXCONTAINER_INCLUDE_DIR QtAxContainer
+ PATHS
+ ${QT_INCLUDE_DIR}/QtAxContainer
+ ${QT_HEADERS_DIR}/QtAxContainer
+ NO_DEFAULT_PATH
+ )
+ ENDIF(WIN32)
+
+ # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
+ FIND_PATH(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents
+ PATHS
+ ${QT_HEADERS_DIR}/QtDesigner
+ ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers
+ NO_DEFAULT_PATH
+ )
+
+ # Set QT_QTASSISTANT_INCLUDE_DIR
+ FIND_PATH(QT_QTASSISTANT_INCLUDE_DIR QtAssistant
+ PATHS
+ ${QT_HEADERS_DIR}/QtAssistant
+ ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
NO_DEFAULT_PATH
)
+ # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR
+ FIND_PATH(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient
+ PATHS
+ ${QT_HEADERS_DIR}/QtAssistant
+ ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
+ NO_DEFAULT_PATH
+ )
+
+ # Set QT_QT_INCLUDE_DIR
+ FIND_PATH(QT_QT_INCLUDE_DIR qglobal.h
+ PATHS
+ ${QT_INCLUDE_DIR}/Qt
+ ${QT_LIBRARY_DIR}/QtCore.framework/Headers
+ NO_DEFAULT_PATH
+ )
+
+ # Set QT_PHONON_INCLUDE_DIR
+ # Qt >= 4.5.3 (or kde-qt-4.5.2 which has the fix too) : Phonon/ClassName is inside include/phonon
+ # With previous versions of Qt, this could not work; upgrade Qt or use a standalone phonon
+ FIND_PATH(QT_PHONON_INCLUDE_DIR Phonon
+ PATHS
+ ${QT_HEADERS_DIR}/phonon
+ NO_DEFAULT_PATH
+ )
+
+ # Make variables changeble to the advanced user
+ MARK_AS_ADVANCED( QT_INCLUDE_DIR QT_QT_INCLUDE_DIR)
+
# Set QT_INCLUDE_DIR by removine "/QtCore" in the string ${QT_QTCORE_INCLUDE_DIR}
IF( QT_QTCORE_INCLUDE_DIR AND NOT QT_INCLUDE_DIR)
IF (QT_USE_FRAMEWORKS)
@@ -641,16 +716,12 @@ IF (QT4_QMAKE_FOUND)
IF( NOT QT_INCLUDE_DIR)
IF(Qt4_FIND_REQUIRED)
- MESSAGE( FATAL_ERROR "Could NOT find QtGlobal header")
+ MESSAGE( FATAL_ERROR "Could NOT find QtCore header")
ENDIF(Qt4_FIND_REQUIRED)
ENDIF( NOT QT_INCLUDE_DIR)
- # Make variables changeble to the advanced user
- MARK_AS_ADVANCED( QT_LIBRARY_DIR QT_INCLUDE_DIR QT_DOC_DIR QT_MKSPECS_DIR
- QT_PLUGINS_DIR QT_TRANSLATIONS_DIR)
-
# Set QT_INCLUDES
- SET( QT_INCLUDES ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} )
+ SET( QT_INCLUDES ${QT_QT_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} )
#############################################
@@ -690,6 +761,14 @@ IF (QT4_QMAKE_FOUND)
#
#############################################
+ # This check is after the check for the window system, since it uses Q_WS_X11:
+ # Set QT_QTMOTIF_INCLUDE_DIR
+ IF(Q_WS_X11)
+ FIND_PATH(QT_QTMOTIF_INCLUDE_DIR QtMotif
+ PATHS
+ ${QT_INCLUDE_DIR}/QtMotif
+ NO_DEFAULT_PATH )
+ ENDIF(Q_WS_X11)
#######################################
@@ -714,218 +793,6 @@ IF (QT4_QMAKE_FOUND)
SET(QT_DEFINITIONS ${QT_DEFINITIONS} -F${QT_LIBRARY_DIR} -L${QT_LIBRARY_DIR} )
ENDIF (QT_USE_FRAMEWORKS)
- # Set QT_QT3SUPPORT_INCLUDE_DIR
- FIND_PATH(QT_QT3SUPPORT_INCLUDE_DIR Qt3Support
- PATHS
- ${QT_INCLUDE_DIR}/Qt3Support
- ${QT_LIBRARY_DIR}/Qt3Support.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QT_INCLUDE_DIR
- FIND_PATH(QT_QT_INCLUDE_DIR qglobal.h
- PATHS
- ${QT_INCLUDE_DIR}/Qt
- ${QT_LIBRARY_DIR}/QtCore.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTGUI_INCLUDE_DIR
- FIND_PATH(QT_QTGUI_INCLUDE_DIR QtGui
- PATHS
- ${QT_INCLUDE_DIR}/QtGui
- ${QT_LIBRARY_DIR}/QtGui.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTSVG_INCLUDE_DIR
- FIND_PATH(QT_QTSVG_INCLUDE_DIR QtSvg
- PATHS
- ${QT_INCLUDE_DIR}/QtSvg
- ${QT_LIBRARY_DIR}/QtSvg.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTSCRIPT_INCLUDE_DIR
- FIND_PATH(QT_QTSCRIPT_INCLUDE_DIR QtScript
- PATHS
- ${QT_INCLUDE_DIR}/QtScript
- ${QT_LIBRARY_DIR}/QtScript.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTSCRIPTTOOLS_INCLUDE_DIR
- FIND_PATH(QT_QTSCRIPTTOOLS_INCLUDE_DIR QtScriptTools
- PATHS
- ${QT_INCLUDE_DIR}/QtScriptTools
- ${QT_LIBRARY_DIR}/QtScriptTools.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTTEST_INCLUDE_DIR
- FIND_PATH(QT_QTTEST_INCLUDE_DIR QtTest
- PATHS
- ${QT_INCLUDE_DIR}/QtTest
- ${QT_LIBRARY_DIR}/QtTest.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTUITOOLS_INCLUDE_DIR
- FIND_PATH(QT_QTUITOOLS_INCLUDE_DIR QtUiTools
- PATHS
- ${QT_INCLUDE_DIR}/QtUiTools
- ${QT_LIBRARY_DIR}/QtUiTools.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTMOTIF_INCLUDE_DIR
- IF(Q_WS_X11)
- FIND_PATH(QT_QTMOTIF_INCLUDE_DIR QtMotif
- PATHS
- ${QT_INCLUDE_DIR}/QtMotif
- NO_DEFAULT_PATH )
- ENDIF(Q_WS_X11)
-
- # Set QT_QTNETWORK_INCLUDE_DIR
- FIND_PATH(QT_QTNETWORK_INCLUDE_DIR QtNetwork
- PATHS
- ${QT_INCLUDE_DIR}/QtNetwork
- ${QT_LIBRARY_DIR}/QtNetwork.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTNSPLUGIN_INCLUDE_DIR
- FIND_PATH(QT_QTNSPLUGIN_INCLUDE_DIR QtNsPlugin
- PATHS
- ${QT_INCLUDE_DIR}/QtNsPlugin
- ${QT_LIBRARY_DIR}/QtNsPlugin.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTOPENGL_INCLUDE_DIR
- FIND_PATH(QT_QTOPENGL_INCLUDE_DIR QtOpenGL
- PATHS
- ${QT_INCLUDE_DIR}/QtOpenGL
- ${QT_LIBRARY_DIR}/QtOpenGL.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTSQL_INCLUDE_DIR
- FIND_PATH(QT_QTSQL_INCLUDE_DIR QtSql
- PATHS
- ${QT_INCLUDE_DIR}/QtSql
- ${QT_LIBRARY_DIR}/QtSql.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTXML_INCLUDE_DIR
- FIND_PATH(QT_QTXML_INCLUDE_DIR QtXml
- PATHS
- ${QT_INCLUDE_DIR}/QtXml
- ${QT_LIBRARY_DIR}/QtXml.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTASSISTANT_INCLUDE_DIR
- FIND_PATH(QT_QTASSISTANT_INCLUDE_DIR QtAssistant
- PATHS
- ${QT_INCLUDE_DIR}/QtAssistant
- ${QT_HEADERS_DIR}/QtAssistant
- ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers
- NO_DEFAULT_PATH
- )
-
- IF(WIN32)
- # Set QT_QTAXSERVER_INCLUDE_DIR
- FIND_PATH(QT_QTAXSERVER_INCLUDE_DIR QtAxServer
- PATHS
- ${QT_INCLUDE_DIR}/QtAxServer
- ${QT_HEADERS_DIR}/QtAxServer
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTAXCONTAINER_INCLUDE_DIR
- FIND_PATH(QT_QTAXCONTAINER_INCLUDE_DIR QtAxContainer
- PATHS
- ${QT_INCLUDE_DIR}/QtAxContainer
- ${QT_HEADERS_DIR}/QtAxContainer
- NO_DEFAULT_PATH
- )
- ENDIF(WIN32)
- # Set QT_QTDESIGNER_INCLUDE_DIR
- FIND_PATH(QT_QTDESIGNER_INCLUDE_DIR QDesignerComponents
- PATHS
- ${QT_INCLUDE_DIR}/QtDesigner
- ${QT_HEADERS_DIR}/QtDesigner
- ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR
- FIND_PATH(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents
- PATHS
- ${QT_INCLUDE_DIR}/QtDesigner
- ${QT_HEADERS_DIR}/QtDesigner
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTDBUS_INCLUDE_DIR
- FIND_PATH(QT_QTDBUS_INCLUDE_DIR QtDBus
- PATHS
- ${QT_INCLUDE_DIR}/QtDBus
- ${QT_HEADERS_DIR}/QtDBus
- ${QT_LIBRARY_DIR}/QtDBus.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR
- FIND_PATH(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient
- PATHS
- ${QT_INCLUDE_DIR}/QtAssistant
- ${QT_HEADERS_DIR}/QtAssistant
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTHELP_INCLUDE_DIR
- FIND_PATH(QT_QTHELP_INCLUDE_DIR QtHelp
- PATHS
- ${QT_INCLUDE_DIR}/QtHelp
- ${QT_HEADERS_DIR}/QtHelp
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTWEBKIT_INCLUDE_DIR
- FIND_PATH(QT_QTWEBKIT_INCLUDE_DIR QtWebKit
- PATHS
- ${QT_INCLUDE_DIR}/QtWebKit
- ${QT_HEADERS_DIR}/QtWebKit
- ${QT_LIBRARY_DIR}/QtWebKit.framework/Headers
- NO_DEFAULT_PATH
- )
-
- # Set QT_QTXMLPATTERNS_INCLUDE_DIR
- FIND_PATH(QT_QTXMLPATTERNS_INCLUDE_DIR QtXmlPatterns
- PATHS
- ${QT_INCLUDE_DIR}/QtXmlPatterns
- ${QT_HEADERS_DIR}/QtXmlPatterns
- NO_DEFAULT_PATH
- )
-
- # Set QT_PHONON_INCLUDE_DIR
- # Qt >= 4.5.3 (or kde-qt-4.5.2 which has the fix too) : Phonon/ClassName is inside include/phonon
- # With previous versions of Qt, this could not work; upgrade Qt or use a standalone phonon
- FIND_PATH(QT_PHONON_INCLUDE_DIR Phonon
- PATHS
- ${QT_HEADERS_DIR}/phonon
- NO_DEFAULT_PATH
- )
-
- # Make variables changeble to the advanced user
- MARK_AS_ADVANCED( QT_QT_INCLUDE_DIR)
-
- # Set QT_INCLUDES
- SET( QT_INCLUDES ${QT_QT_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} )
-
########################################
#
# Setting the LIBRARY-Variables
@@ -1402,7 +1269,12 @@ IF (QT4_QMAKE_FOUND)
GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES)
FOREACH(_current ${_inc_DIRS})
- SET(${_moc_flags} ${${_moc_flags}} "-I${_current}")
+ IF("${_current}" MATCHES ".framework/?$")
+ STRING(REGEX REPLACE "/[^/]+.framework" "" framework_path "${_current}")
+ SET(${_moc_flags} ${${_moc_flags}} "-F${framework_path}")
+ ELSE("${_current}" MATCHES ".framework/?$")
+ SET(${_moc_flags} ${${_moc_flags}} "-I${_current}")
+ ENDIF("${_current}" MATCHES ".framework/?$")
ENDFOREACH(_current ${_inc_DIRS})
GET_DIRECTORY_PROPERTY(_defines COMPILE_DEFINITIONS)
@@ -1414,12 +1286,6 @@ IF (QT4_QMAKE_FOUND)
SET(${_moc_flags} ${${_moc_flags}} -DWIN32)
ENDIF(Q_WS_WIN)
- # if Qt is installed only as framework, add -F /library/Frameworks to the moc arguments
- # otherwise moc can't find the headers in the framework include dirs
- IF(APPLE AND "${QT_QTCORE_INCLUDE_DIR}" MATCHES "/Library/Frameworks/")
- SET(${_moc_INC_DIRS} ${${_moc_INC_DIRS}} "-F/Library/Frameworks")
- ENDIF(APPLE AND "${QT_QTCORE_INCLUDE_DIR}" MATCHES "/Library/Frameworks/")
-
ENDMACRO(QT4_GET_MOC_FLAGS)
# helper macro to set up a moc rule