diff options
-rw-r--r-- | kde4/KDE4Macros.cmake | 92 | ||||
-rw-r--r-- | kde4/kde4uic.cmake | 24 | ||||
-rw-r--r-- | modules/FindQt4.cmake | 755 | ||||
-rw-r--r-- | modules/FindX11.cmake | 151 |
4 files changed, 990 insertions, 32 deletions
diff --git a/kde4/KDE4Macros.cmake b/kde4/KDE4Macros.cmake index 6ccdebc4..fae370b9 100644 --- a/kde4/KDE4Macros.cmake +++ b/kde4/KDE4Macros.cmake @@ -36,15 +36,22 @@ ENDMACRO(KDE4_ADD_FILE_DEPENDANCY) #usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers}) MACRO(KDE4_ADD_DCOP_SKELS _sources) FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) - SET(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel_skel.cpp) - SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.kidl) + IF(${_current_FILE} MATCHES "^/.+") #abs path + SET(_tmp_FILE ${_current_FILE}) + ELSE(${_current_FILE} MATCHES "^/.+") + SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}) + ENDIF(${_current_FILE} MATCHES "^/.+") + + GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE) + + SET(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.cpp) + SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl) ADD_CUSTOM_COMMAND(OUTPUT ${_kidl} COMMAND ${KDE4_DCOPIDL_EXECUTABLE} - ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} > ${_kidl} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} + ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} > ${_kidl} + DEPENDS ${_tmp_FILE} ) ADD_CUSTOM_COMMAND(OUTPUT ${_skel} @@ -72,12 +79,12 @@ MACRO(KDE4_ADD_DCOP_STUBS _sources) SET(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp) # SET(_stub_H ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.h) - SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.kidl) + SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl) ADD_CUSTOM_COMMAND(OUTPUT ${_kidl} COMMAND ${KDE4_DCOPIDL_EXECUTABLE} - ARGS ${tmp_FILE} > ${_kidl} - DEPENDS ${tmp_FILE} + ARGS --srcdir ${KDE4_KALYPTUS_DIR} ${_tmp_FILE} > ${_kidl} + DEPENDS ${_tmp_FILE} ) ADD_CUSTOM_COMMAND(OUTPUT ${_stub_CPP} @@ -144,7 +151,13 @@ ENDMACRO(KDE4_ADD_KCFG_FILES) MACRO(KDE4_ADD_UI_FILES _sources ) FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) + IF(${_current_FILE} MATCHES "^/.+") + SET(_tmp_FILE ${_current_FILE}) + ELSE(${_current_FILE} MATCHES "^/.+") + SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}) + ENDIF(${_current_FILE} MATCHES "^/.+") + + GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE) SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) # we need to run uic and replace some things in the generated file @@ -152,41 +165,72 @@ MACRO(KDE4_ADD_UI_FILES _sources ) ADD_CUSTOM_COMMAND(OUTPUT ${_header} COMMAND ${CMAKE_COMMAND} ARGS + -DKDE4_HEADER:BOOL=ON -DKDE_UIC_EXECUTABLE:FILEPATH=${QT_UIC_EXECUTABLE} - -DKDE_UIC_FILE:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} + -DKDE_UIC_FILE:FILEPATH=${_tmp_FILE} -DKDE_UIC_H_FILE:FILEPATH=${_header} -DKDE_UIC_BASENAME:STRING=${_basename} -# -DKDE_UIC_PLUGIN_DIR:FILEPATH="." -P ${CMAKE_ROOT}/Modules/kde4uic.cmake - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} + DEPENDS ${_tmp_FILE} ) ENDFOREACH (_current_FILE) ENDMACRO(KDE4_ADD_UI_FILES) +MACRO(KDE4_GET_MOC_INC_DIRS _moc_INC_DIRS) + SET(${_moc_INC_DIRS}) + GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) + + FOREACH(_current ${_inc_DIRS}) + SET(${_moc_INC_DIRS} ${${_moc_INC_DIRS}} "-I" ${_current}) + ENDFOREACH(_current ${_inc_DIRS}) +ENDMACRO(KDE4_GET_MOC_INC_DIRS _moc_INC_DIRS) + #create the implementation files from the ui files and add them to the list of sources #usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files}) MACRO(KDE4_ADD_UI3_FILES _sources ) + + KDE4_GET_MOC_INC_DIRS(_moc_INCS) + FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) + IF(${_current_FILE} MATCHES "^/.+") + SET(_tmp_FILE ${_current_FILE}) + ELSE(${_current_FILE} MATCHES "^/.+") + SET(_tmp_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}) + ENDIF(${_current_FILE} MATCHES "^/.+") + + + GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE) SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) SET(_src ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp) +# ADD_CUSTOM_COMMAND(OUTPUT ${_header} +# COMMAND ${QT_UIC3_EXECUTABLE} +# ARGS -nounload -o ${_header} ${_tmp_FILE} +# DEPENDS ${_tmp_FILE} +# ) + ADD_CUSTOM_COMMAND(OUTPUT ${_header} - COMMAND ${QT_UIC3_EXECUTABLE} - ARGS -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} + COMMAND ${CMAKE_COMMAND} + -DKDE3_HEADER:BOOL=ON + -DKDE_UIC_EXECUTABLE:FILEPATH=${QT_UIC3_EXECUTABLE} + -DKDE_UIC_FILE:FILEPATH=${_tmp_FILE} + -DKDE_UIC_H_FILE:FILEPATH=${_header} + -DKDE_UIC_BASENAME:STRING=${_basename} + -DKDE_UIC_PLUGIN_DIR:FILEPATH="." + -P ${CMAKE_ROOT}/Modules/kde4uic.cmake + DEPENDS ${_tmp_FILE} ) - # we need to run uic3 and replace some things in the generated file +# we need to run uic3 and replace some things in the generated file # this is done by executing the cmake script kde4uic.cmake ADD_CUSTOM_COMMAND(OUTPUT ${_src} COMMAND ${CMAKE_COMMAND} ARGS - -DKDE3:BOOL=ON + -DKDE3_IMPL:BOOL=ON -DKDE_UIC_EXECUTABLE:FILEPATH=${QT_UIC3_EXECUTABLE} - -DKDE_UIC_FILE:FILEPATH=${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} + -DKDE_UIC_FILE:FILEPATH=${_tmp_FILE} -DKDE_UIC_CPP_FILE:FILEPATH=${_src} -DKDE_UIC_H_FILE:FILEPATH=${_header} -DKDE_UIC_BASENAME:STRING=${_basename} @@ -197,7 +241,7 @@ MACRO(KDE4_ADD_UI3_FILES _sources ) ADD_CUSTOM_COMMAND(OUTPUT ${_moc} COMMAND ${QT_MOC_EXECUTABLE} - ARGS -I ${QT_INCLUDE_DIR} ${_header} -o ${_moc} + ARGS ${_moc_INCS} ${_header} -o ${_moc} DEPENDS ${_header} ) SET(${_sources} ${${_sources}} ${_src} ${_moc} ) @@ -205,12 +249,10 @@ MACRO(KDE4_ADD_UI3_FILES _sources ) ENDFOREACH (_current_FILE) ENDMACRO(KDE4_ADD_UI3_FILES) -IF(UNIX) - SET(_HACK_MOC_DEFINE -DQ_WS_X11 -DQ_OS_UNIX) -ENDIF(UNIX) - MACRO(KDE4_AUTOMOC) + KDE4_GET_MOC_INC_DIRS(_moc_INCS) + SET(_matching_FILES ) FOREACH (_current_FILE ${ARGN}) @@ -239,7 +281,7 @@ MACRO(KDE4_AUTOMOC) # MESSAGE(STATUS "----- moc: ${_moc}") ADD_CUSTOM_COMMAND(OUTPUT ${_moc} COMMAND ${QT_MOC_EXECUTABLE} - ARGS ${_HACK_MOC_DEFINE} ${_header} -o ${_moc} + ARGS ${_moc_INCS} ${_header} -o ${_moc} DEPENDS ${_header} ) diff --git a/kde4/kde4uic.cmake b/kde4/kde4uic.cmake index c51a8ae5..60fa6b9b 100644 --- a/kde4/kde4uic.cmake +++ b/kde4/kde4uic.cmake @@ -1,6 +1,6 @@ #using a ui3 file with uic3 -IF(KDE3) +IF(KDE3_IMPL) EXEC_PROGRAM(${KDE_UIC_EXECUTABLE} ARGS -nounload -tr tr2i18n @@ -8,19 +8,30 @@ IF(KDE3) ${KDE_UIC_FILE} OUTPUT_VARIABLE _uic_CONTENTS ) +ENDIF(KDE3_IMPL) + + +IF(KDE3_HEADER) + + EXEC_PROGRAM(${KDE_UIC_EXECUTABLE} ARGS + -nounload -tr tr2i18n + ${KDE_UIC_FILE} + OUTPUT_VARIABLE _uic_CONTENTS + ) + SET(KDE_UIC_CPP_FILE ${KDE_UIC_H_FILE}) +ENDIF(KDE3_HEADER) # the kde4 branch -ELSE(KDE3) +IF (KDE4_HEADER) EXEC_PROGRAM(${KDE_UIC_EXECUTABLE} ARGS -tr tr2i18n - -L ${KDE_UIC_PLUGIN_DIR} - -impl ${KDE_UIC_H_FILE} ${KDE_UIC_FILE} OUTPUT_VARIABLE _uic_CONTENTS ) -ENDIF(KDE3) + SET(KDE_UIC_CPP_FILE ${KDE_UIC_H_FILE}) +ENDIF (KDE4_HEADER) #replace tr218n("") with QString::null to avoid waring from KLocale @@ -30,6 +41,5 @@ STRING(REGEX REPLACE "tr2i18n\\(\"\", \"\"\\)" "QString::null" _uic_CONTENTS "${ #replace image15_data with img15_filename to make enable_final work STRING(REGEX REPLACE "image([0-9]+)_data" "img\\1_${KDE_UIC_BASENAME}" _uic_CONTENTS "${_uic_CONTENTS}") -FILE(WRITE ${KDE_UIC_CPP_FILE} "#include <kdialog.h>\n#include <klocale.h>\n\n") -FILE(APPEND ${KDE_UIC_CPP_FILE} "${_uic_CONTENTS}") +FILE(WRITE ${KDE_UIC_CPP_FILE} "#include <kdialog.h>\n#include <klocale.h>\n\n${_uic_CONTENTS}\n") diff --git a/modules/FindQt4.cmake b/modules/FindQt4.cmake new file mode 100644 index 00000000..47ac15d8 --- /dev/null +++ b/modules/FindQt4.cmake @@ -0,0 +1,755 @@ +# - Find QT 4 +# This module can be used to find Qt4. +# This module defines a number of key variables and macros. First is +# QT_USE_FILE which is the path to a CMake file that can be included to compile +# Qt 4 applications and libraries. By default, the QtCore and QtGui +# libraries are loaded. This behavior can be changed by setting one or more +# of the following variables to true: +# QT_DONT_USE_QTCORE +# QT_DONT_USE_QTGUI +# QT_USE_QT3SUPPORT +# QT_USE_QTASSISTANT +# QT_USE_QTDESIGNER +# QT_USE_QTMOTIF +# QT_USE_QTNETWORK +# QT_USE_QTNSPLUGIN +# QT_USE_QTOPENGL +# QT_USE_QTSQL +# QT_USE_QTXML +# All the libraries required are stored in a variable called QT_LIBRARIES. +# Add this variable to your TARGET_LINK_LIBRARIES. +# +# macro QT4_WRAP_CPP(outfiles inputfile ... ) +# macro QT4_WRAP_UI(outfiles inputfile ... ) +# macro QT4_ADD_RESOURCE(outfiles inputfile ... ) +# +# QT_FOUND If false, don't try to use Qt. +# QT4_FOUND If false, don't try to use Qt 4. +# +# 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. +# QT_QTDESIGNER_FOUND True if QtDesigner was found. +# QT_QTMOTIF_FOUND True if QtMotif was found. +# 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_QTXML_FOUND True if QtXml was found. +# +# QT_DEFINITIONS Definitions to use when compiling code that +# uses Qt. +# +# QT_INCLUDES List of paths to all include directories of +# Qt4 QT_INCLUDE_DIR, QT_QT_INCLUDE_DIR, +# and QT_QTGUI_INCLUDE_DIR are +# always in this variable even if NOTFOUND, +# all other INCLUDE_DIRS are +# only added if they are found. +# +# QT_INCLUDE_DIR Path to "include" of Qt4 +# QT_QT_INCLUDE_DIR Path to "include/Qt" +# QT_QT3SUPPORT_INCLUDE_DIR Path to "include/Qt3Support" +# QT_QTASSISTANT_INCLUDE_DIR Path to "include/QtAssistant" +# QT_QTCORE_INCLUDE_DIR Path to "include/QtCore" +# QT_QTDESIGNER_INCLUDE_DIR Path to "include/QtDesigner" +# QT_QTGUI_INCLUDE_DIR Path to "include/QtGui" +# QT_QTMOTIF_INCLUDE_DIR Path to "include/QtMotif" +# QT_QTNETWORK_INCLUDE_DIR Path to "include/QtNetwork" +# QT_QTNSPLUGIN_INCLUDE_DIR Path to "include/QtNsPlugin" +# QT_QTOPENGL_INCLUDE_DIR Path to "include/QtOpenGL" +# QT_QTSQL_INCLUDE_DIR Path to "include/QtSql" +# QT_QTXML_INCLUDE_DIR Path to "include/QtXml" +# +# QT_LIBRARY_DIR Path to "lib" of Qt4 +# +# QT_QT3SUPPORT_LIBRARY Fullpath to Qt3Support library +# QT_QTASSISTANT_LIBRARY Fullpath to QtAssistant library +# QT_QTCORE_LIBRARY Fullpath to QtCore library +# QT_QTDESIGNER_LIBRARY Fullpath to QtDesigner library +# QT_QTGUI_LIBRARY Fullpath to QtGui library +# QT_QTMOTIF_LIBRARY Fullpath to QtMotif library +# QT_QTNETWORK_LIBRARY Fullpath to QtNetwork library +# QT_QTNSPLUGIN_LIBRARY Fullpath to QtNsPlugin library +# QT_QTOPENGL_LIBRARY Fullpath to QtOpenGL library +# QT_QTSQL_LIBRARY Fullpath to QtSql library +# QT_QTXML_LIBRARY Fullpath to QtXml library +# +# QT_QT3SUPPORT_LIBRARY_DEBUG Fullpath to Qt3Support_debug library +# QT_QTASSISTANT_LIBRARY_DEBUG Fullpath to QtAssistant_debug library +# +# QT_QTCORE_LIBRARY_DEBUG Fullpath to QtCore_debug +# QT_QTDESIGNER_LIBRARY_DEBUG Fullpath to QtDesigner_debug +# QT_QTGUI_LIBRARY_DEBUG Fullpath to QtGui_debug +# QT_QTMOTIF_LIBRARY_DEBUG Fullpath to QtMotif_debug +# QT_QTNETWORK_LIBRARY_DEBUG Fullpath to QtNetwork_debug +# QT_QTNSPLUGIN_LIBRARY_DEBUG Fullpath to QtNsPlugin_debug +# QT_QTOPENGL_LIBRARY_DEBUG Fullpath to QtOpenGL_debug +# QT_QTSQL_LIBRARY_DEBUG Fullpath to QtSql_debug +# QT_QTXML_LIBRARY_DEBUG Fullpath to QtXml_debug +# +# also defined, but not for general use are +# 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 +# +# These are around for backwards compatibility +# they will be set +# QT_WRAP_CPP Set true if QT_MOC_EXECUTABLE is found +# QT_WRAP_UI Set true if QT_UIC_EXECUTABLE is found +# +# These variables do _NOT_ have any effect anymore (compared to FindQt.cmake) +# QT_MT_REQUIRED Qt4 is now always multithreaded +# +# These variables are set to "" Because Qt structure changed +# (They make no sense in Qt4) +# QT_QT_LIBRARY Qt-Library is now splitt +# QT_QTMAIN_LIBRARY Qt-Library is now splitt + +SET(QT_USE_FILE ${CMAKE_ROOT}/Modules/UseQt4.cmake) + +SET( QT_DEFINITIONS "") + +IF (WIN32) + SET(QT_DEFINITIONS -DQT_DLL) +ENDIF(WIN32) + +FILE(GLOB GLOB_TEMP_VAR /usr/local/Trolltech/Qt-4*/) +SET(GLOB_TEMP_VAR) +IF(GLOB_TEMP_VAR) + SET(QT4_PATHS ${QT4_PATHS} ${GLOB_TEMP_VAR}) +ENDIF(GLOB_TEMP_VAR) +SET(GLOB_TEMP_VAR) +FILE(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-4*/bin/) +IF(GLOB_TEMP_VAR) + SET(QT4_PATHS ${QT4_PATHS} ${GLOB_TEMP_VAR}) +ENDIF(GLOB_TEMP_VAR) +# check for qmake +FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake PATHS + "[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 + ${QT4_PATHS} +) + +IF(QT_QMAKE_EXECUTABLE) + EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" + OUTPUT_VARIABLE QTVERSION) + IF(QTVERSION MATCHES "4.*") + SET(QT4_QMAKE_FOUND TRUE) + ENDIF(QTVERSION MATCHES "4.*") +ENDIF(QT_QMAKE_EXECUTABLE) + +IF(QT4_QMAKE_FOUND) + # Set QT_LIBRARY_DIR + IF(NOT QT_LIBRARY_DIR) + EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE} + ARGS "-query QT_INSTALL_LIBS" + OUTPUT_VARIABLE QT_LIBRARY_DIR_TMP ) + IF(EXISTS "${QT_LIBRARY_DIR_TMP}") + SET(QT_LIBRARY_DIR ${QT_LIBRARY_DIR_TMP} CACHE PATH "Qt library dir") + ELSE(EXISTS "${QT_LIBRARY_DIR_TMP}") + MESSAGE("Warning: QT_QMAKE_EXECUTABLE reported QT_INSTALL_LIBS as ${QT_LIBRARY_DIR_TMP}") + MESSAGE("Warning: ${QT_LIBRARY_DIR_TMP} does not exist, Qt must not be installed correctly.") + ENDIF(EXISTS "${QT_LIBRARY_DIR_TMP}") + ENDIF(NOT QT_LIBRARY_DIR) + + IF (APPLE) + IF (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework) + SET(QT_USE_FRAMEWORKS ON + CACHE BOOL "Set to ON if Qt build uses frameworks.") + ELSE (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework) + SET(QT_USE_FRAMEWORKS OFF + CACHE BOOL "Set to ON if Qt build uses frameworks.") + ENDIF (EXISTS ${QT_LIBRARY_DIR}/QtCore.framework) + + MARK_AS_ADVANCED(QT_USE_FRAMEWORKS) + ENDIF (APPLE) + + ######################################## + # + # Setting the INCLUDE-Variables + # + ######################################## + IF (NOT QT_HEADERS_DIR) + # Set QT_QT_INCLUDE_DIR by searching for qglobal.h + IF(QT_QMAKE_EXECUTABLE) + EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE} + ARGS "-query QT_INSTALL_HEADERS" + OUTPUT_VARIABLE qt_headers ) + SET(QT_HEADERS_DIR ${qt_headers} CACHE INTERNAL "") + ENDIF(QT_QMAKE_EXECUTABLE) + ENDIF (NOT QT_HEADERS_DIR) + FILE(GLOB GLOB_TEMP_VAR /usr/local/qt-x11-commercial-3*/include/Qt/) + SET(QT_PATH_INCLUDE ${GLOB_TEMP_VAR}) + FILE(GLOB GLOB_TEMP_VAR /usr/local/Trolltech/Qt-4*/include/Qt/) + SET(QT_PATH_INCLUDE ${GLOB_TEMP_VAR}) + FIND_PATH( QT_QT_INCLUDE_DIR qglobal.h + "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/include/Qt" + ${QT_PATH_INCLUDE} + ${QT_HEADERS_DIR}/Qt + ${QT_LIBRARY_DIR}/QtCore.framework/Headers + $ENV{QTDIR}/include/Qt + /usr/local/qt/include/Qt + /usr/local/include/Qt + /usr/lib/qt/include/Qt + /usr/include/Qt + /usr/share/qt4/include/Qt + "C:/Program Files/qt/include/Qt" + /usr/include/qt4/Qt) + + # Set QT_INCLUDE_DIR by removine "/Qt" in the string ${QT_QT_INCLUDE_DIR} + IF( QT_QT_INCLUDE_DIR AND NOT QT_INCLUDE_DIR) + IF (QT_USE_FRAMEWORKS) + SET(QT_INCLUDE_DIR ${QT_HEADERS_DIR}) + ELSE (QT_USE_FRAMEWORKS) + STRING( REGEX REPLACE "/Qt$" "" qt4_include_dir ${QT_QT_INCLUDE_DIR}) + SET( QT_INCLUDE_DIR ${qt4_include_dir} CACHE PATH "") + ENDIF (QT_USE_FRAMEWORKS) + ENDIF( QT_QT_INCLUDE_DIR AND NOT QT_INCLUDE_DIR) + IF( NOT QT_INCLUDE_DIR) + IF( NOT Qt4_FIND_QUIETLY AND Qt4_FIND_REQUIRED) + MESSAGE( SEND_ERROR "Could not find qglobal.h") + ENDIF( NOT Qt4_FIND_QUIETLY AND Qt4_FIND_REQUIRED) + ENDIF( NOT QT_INCLUDE_DIR) + + IF (QT_USE_FRAMEWORKS) + SET(QT_DEFINITIONS ${QT_DEFINITIONS} + -F${QT_LIBRARY_DIR} + ) + ENDIF (QT_USE_FRAMEWORKS) + + # Set QT_QT3SUPPORT_INCLUDE_DIR + FIND_PATH( QT_QT3SUPPORT_INCLUDE_DIR Qt3Support + ${QT_INCLUDE_DIR}/Qt3Support + ${QT_LIBRARY_DIR}/Qt3Support.framework/Headers + ) + + # Set QT_QTCORE_INCLUDE_DIR + FIND_PATH( QT_QTCORE_INCLUDE_DIR QtCore + ${QT_INCLUDE_DIR}/QtCore + ${QT_LIBRARY_DIR}/QtCore.framework/Headers + ) + + # Set QT_QTGUI_INCLUDE_DIR + FIND_PATH( QT_QTGUI_INCLUDE_DIR QtGui + ${QT_INCLUDE_DIR}/QtGui + ${QT_LIBRARY_DIR}/QtGui.framework/Headers + ) + + # Set QT_QTMOTIF_INCLUDE_DIR + FIND_PATH( QT_QTMOTIF_INCLUDE_DIR QtMotif ${QT_INCLUDE_DIR}/QtMotif) + + # Set QT_QTNETWORK_INCLUDE_DIR + FIND_PATH( QT_QTNETWORK_INCLUDE_DIR QtNetwork + ${QT_INCLUDE_DIR}/QtNetwork + ${QT_LIBRARY_DIR}/QtNetwork.framework/Headers + ) + + # Set QT_QTNSPLUGIN_INCLUDE_DIR + FIND_PATH( QT_QTNSPLUGIN_INCLUDE_DIR QtNsPlugin + ${QT_INCLUDE_DIR}/QtNsPlugin + ${QT_LIBRARY_DIR}/QtNsPlugin.framework/Headers + ) + + # Set QT_QTOPENGL_INCLUDE_DIR + FIND_PATH( QT_QTOPENGL_INCLUDE_DIR QtOpenGL + ${QT_INCLUDE_DIR}/QtOpenGL + ${QT_LIBRARY_DIR}/QtOpenGL.framework/Headers + ) + + # Set QT_QTSQL_INCLUDE_DIR + FIND_PATH( QT_QTSQL_INCLUDE_DIR QtSql + ${QT_INCLUDE_DIR}/QtSql + ${QT_LIBRARY_DIR}/QtSql.framework/Headers + ) + + # Set QT_QTXML_INCLUDE_DIR + FIND_PATH( QT_QTXML_INCLUDE_DIR QtXml + ${QT_INCLUDE_DIR}/QtXml + ${QT_LIBRARY_DIR}/QtXml.framework/Headers + ) + + # Set QT_QTASSISTANT_INCLUDE_DIR + FIND_PATH( QT_QTASSISTANT_INCLUDE_DIR QtAssistant + ${QT_INCLUDE_DIR}/QtAssistant + ${QT_HEADERS_DIR}/QtAssistant + ) + + # Set QT_QTDESIGNER_INCLUDE_DIR + FIND_PATH( QT_QTDESIGNER_INCLUDE_DIR QDesignerComponents + ${QT_INCLUDE_DIR}/QtDesigner + ${QT_HEADERS_DIR}/QtDesigner + ) + + # Make variables changeble to the advanced user + MARK_AS_ADVANCED( + QT_LIBRARY_DIR + QT_INCLUDE_DIR + QT_QT_INCLUDE_DIR + QT_QT3SUPPORT_INCLUDE_DIR + QT_QTASSISTANT_INCLUDE_DIR + QT_QTCORE_INCLUDE_DIR + QT_QTDESIGNER_INCLUDE_DIR + QT_QTGUI_INCLUDE_DIR + QT_QTMOTIF_INCLUDE_DIR + QT_QTNETWORK_INCLUDE_DIR + QT_QTNSPLUGIN_INCLUDE_DIR + QT_QTOPENGL_INCLUDE_DIR + QT_QTSQL_INCLUDE_DIR + QT_QTXML_INCLUDE_DIR + ) + + # Set QT_INCLUDES + SET( QT_INCLUDES + ${QT_INCLUDE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QT_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ) + # append optional flags + MACRO(QT4_APPEND_INCLUDES_FLAG FLAG) + IF(${FLAG}) + SET(QT_INCLUDES ${QT_INCLUDES} "${${FLAG}}") + ENDIF(${FLAG}) + ENDMACRO(QT4_APPEND_INCLUDES_FLAG) + QT4_APPEND_INCLUDES_FLAG(QT_QT3SUPPORT_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTASSISTANT_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTDESIGNER_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTDESIGNER_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTMOTIF_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTNETWORK_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTNSPLUGIN_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTOPENGL_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTSQL_INCLUDE_DIR) + QT4_APPEND_INCLUDES_FLAG(QT_QTXML_INCLUDE_DIR) + + + ######################################## + # + # Setting the LIBRARY-Variables + # + ######################################## + + IF (QT_USE_FRAMEWORKS) + # If FIND_LIBRARY found libraries in Apple frameworks, we would not have + # to jump through these hoops. + SET(QT_QTCORE_LIBRARY "-F${QT_LIBRARY_DIR} -framework QtCore" + CACHE STRING "The QtCore library.") + SET(QT_QTCORE_LIBRARY_DEBUG "-F${QT_LIBRARY_DIR} -framework QtCore" + CACHE STRING "The QtCore library.") + SET(QT_QT3SUPPORT_LIBRARY "-framework Qt3Support" + CACHE STRING "The Qt3Support library.") + SET(QT_QT3SUPPORT_LIBRARY_DEBUG "-framework Qt3Support" + CACHE STRING "The Qt3Support library.") + SET(QT_QTGUI_LIBRARY "-framework QtGui" + CACHE STRING "The QtGui library.") + SET(QT_QTGUI_LIBRARY_DEBUG "-framework QtGui" + CACHE STRING "The QtGui library.") + SET(QT_QTNETWORK_LIBRARY "-framework QtNetwork" + CACHE STRING "The QtNetwork library.") + SET(QT_QTNETWORK_LIBRARY_DEBUG "-framework QtNetwork" + CACHE STRING "The QtNetwork library.") + SET(QT_QTOPENGL_LIBRARY "-framework QtOpenGL" + CACHE STRING "The QtOpenGL library.") + SET(QT_QTOPENGL_LIBRARY_DEBUG "-framework QtOpenGL" + CACHE STRING "The QtOpenGL library.") + SET(QT_QTSQL_LIBRARY "-framework QtSql" + CACHE STRING "The QtSql library.") + SET(QT_QTSQL_LIBRARY_DEBUG "-framework QtSql" + CACHE STRING "The QtSql library.") + SET(QT_QTXML_LIBRARY "-framework QtXml" + CACHE STRING "The QtXml library.") + SET(QT_QTXML_LIBRARY_DEBUG "-framework QtXml" + CACHE STRING "The QtXml library.") + ELSE (QT_USE_FRAMEWORKS) + + # Set QT_QTCORE_LIBRARY by searching for a lib with "QtCore." as part of + # the filename + FIND_LIBRARY( QT_QTCORE_LIBRARY + NAMES QtCore QtCore4 + PATHS + ${QT_LIBRARY_DIR} + $ENV{QTDIR}/lib + /usr/local/qt/lib + /usr/local/lib + /usr/lib/qt/lib + /usr/lib + /usr/share/qt4/lib + C:/Progra~1/qt/lib + /usr/lib/qt4 ) + + # Set QT_QTCORE_LIBRARY_DEBUG by searching for a lib with "QtCore_debug" + # as part of the filename + FIND_LIBRARY( QT_QTCORE_LIBRARY_DEBUG + NAMES QtCore_debug QtCored4 + PATHS + ${QT_LIBRARY_DIR} + $ENV{QTDIR}/lib + /usr/local/qt/lib + /usr/local/lib + /usr/lib/qt/lib + /usr/lib + /usr/share/qt4/lib + C:/Progra~1/qt/lib + /usr/lib/qt4 ) + + # Set QT_QT3SUPPORT_LIBRARY + FIND_LIBRARY(QT_QT3SUPPORT_LIBRARY NAMES Qt3Support Qt3Support4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QT3SUPPORT_LIBRARY_DEBUG NAMES Qt3Support_debug Qt3Supportd4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTGUI_LIBRARY + FIND_LIBRARY(QT_QTGUI_LIBRARY NAMES QtGui QtGui4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTGUI_LIBRARY_DEBUG NAMES QtGui_debug QtGuid4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTMOTIF_LIBRARY + FIND_LIBRARY(QT_QTMOTIF_LIBRARY NAMES QtMotif PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTMOTIF_LIBRARY_DEBUG NAMES QtMotif_debug PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTNETWORK_LIBRARY + FIND_LIBRARY(QT_QTNETWORK_LIBRARY NAMES QtNetwork QtNetwork4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTNETWORK_LIBRARY_DEBUG NAMES QtNetwork_debug QtNetworkd4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTNSPLUGIN_LIBRARY + FIND_LIBRARY(QT_QTNSPLUGIN_LIBRARY NAMES QtNsPlugin PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTNSPLUGIN_LIBRARY_DEBUG NAMES QtNsPlugin_debug PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTOPENGL_LIBRARY + FIND_LIBRARY(QT_QTOPENGL_LIBRARY NAMES QtOpenGL QtOpenGL4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTOPENGL_LIBRARY_DEBUG NAMES QtOpenGL_debug QtOpenGLd4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTSQL_LIBRARY + FIND_LIBRARY(QT_QTSQL_LIBRARY NAMES QtSql QtSql4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTSQL_LIBRARY_DEBUG NAMES QtSql_debug QtSqld4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTXML_LIBRARY + FIND_LIBRARY(QT_QTXML_LIBRARY NAMES QtXml QtXml4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTXML_LIBRARY_DEBUG NAMES QtXml_debug QtXmld4 PATHS ${QT_LIBRARY_DIR}) + + ENDIF (QT_USE_FRAMEWORKS) + + # Set QT_QTASSISTANT_LIBRARY + FIND_LIBRARY(QT_QTASSISTANT_LIBRARY NAMES QtAssistant QtAssistant4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_DEBUG NAMES QtAssistant_debug QtAssistantd4 PATHS ${QT_LIBRARY_DIR}) + + # Set QT_QTDESIGNER_LIBRARY + FIND_LIBRARY(QT_QTDESIGNER_LIBRARY NAMES QtDesigner QtDesigner4 PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTDESIGNER_LIBRARY_DEBUG NAMES QtDesigner_debug QtDesignerd4 PATHS ${QT_LIBRARY_DIR}) + + # Make variables changeble to the advanced user + MARK_AS_ADVANCED( + QT_QT3SUPPORT_LIBRARY + QT_QTASSISTANT_LIBRARY + QT_QTCORE_LIBRARY + QT_QTDESIGNER_LIBRARY + QT_QTGUI_LIBRARY + QT_QTMOTIF_LIBRARY + QT_QTNETWORK_LIBRARY + QT_QTNSPLUGIN_LIBRARY + QT_QTOPENGL_LIBRARY + QT_QTSQL_LIBRARY + QT_QTXML_LIBRARY ) + + # Make variables changeble to the advanced user + MARK_AS_ADVANCED( + QT_QT3SUPPORT_LIBRARY_DEBUG + QT_QTASSISTANT_LIBRARY_DEBUG + QT_QTCORE_LIBRARY_DEBUG + QT_QTDESIGNER_LIBRARY_DEBUG + QT_QTGUI_LIBRARY_DEBUG + QT_QTMOTIF_LIBRARY_DEBUG + QT_QTNETWORK_LIBRARY_DEBUG + QT_QTNSPLUGIN_LIBRARY_DEBUG + QT_QTOPENGL_LIBRARY_DEBUG + QT_QTSQL_LIBRARY_DEBUG + QT_QTXML_LIBRARY_DEBUG ) + + ############################################ + # + # Check the existence of the libraries. + # + ############################################ + + IF (QT_QTCORE_INCLUDE_DIR AND QT_QTCORE_LIBRARY) + SET(QT_QTCORE_FOUND 1) + IF (NOT QT_QTCORE_LIBRARY_DEBUG) + SET(QT_QTCORE_LIBRARY_DEBUG ${QT_QTCORE_LIBRARY}) + ENDIF (NOT QT_QTCORE_LIBRARY_DEBUG) + ENDIF (QT_QTCORE_INCLUDE_DIR AND QT_QTCORE_LIBRARY) + + IF (QT_QTGUI_INCLUDE_DIR AND QT_QTGUI_LIBRARY) + SET(QT_QTGUI_FOUND 1) + IF (NOT QT_QTGUI_LIBRARY_DEBUG) + SET(QT_QTGUI_LIBRARY_DEBUG ${QT_QTGUI_LIBRARY}) + ENDIF (NOT QT_QTGUI_LIBRARY_DEBUG) + ENDIF (QT_QTGUI_INCLUDE_DIR AND QT_QTGUI_LIBRARY) + + IF (QT_QT3SUPPORT_INCLUDE_DIR AND QT_QT3SUPPORT_LIBRARY) + SET(QT_QT3SUPPORT_FOUND 1) + IF (NOT QT_QT3SUPPORT_LIBRARY_DEBUG) + SET(QT_QT3SUPPORT_LIBRARY_DEBUG ${QT_QT3SUPPORT_LIBRARY}) + ENDIF (NOT QT_QT3SUPPORT_LIBRARY_DEBUG) + ENDIF (QT_QT3SUPPORT_INCLUDE_DIR AND QT_QT3SUPPORT_LIBRARY) + + IF (QT_QTASSISTANT_INCLUDE_DIR AND QT_QTASSISTANT_LIBRARY) + SET(QT_QTASSISTANT_FOUND 1) + IF (NOT QT_QTASSISTANT_LIBRARY_DEBUG) + SET(QT_QTASSISTANT_LIBRARY_DEBUG ${QT_QTASSISTANT_LIBRARY}) + ENDIF (NOT QT_QTASSISTANT_LIBRARY_DEBUG) + ENDIF (QT_QTASSISTANT_INCLUDE_DIR AND QT_QTASSISTANT_LIBRARY) + + IF (QT_QTDESIGNER_INCLUDE_DIR AND QT_QTDESIGNER_LIBRARY) + SET(QT_QTDESIGNER_FOUND 1) + IF (NOT QT_QTDESIGNER_LIBRARY_DEBUG) + SET(QT_QTDESIGNER_LIBRARY_DEBUG ${QT_QTDESIGNER_LIBRARY}) + ENDIF (NOT QT_QTDESIGNER_LIBRARY_DEBUG) + ENDIF (QT_QTDESIGNER_INCLUDE_DIR AND QT_QTDESIGNER_LIBRARY) + + IF (QT_QTMOTIF_INCLUDE_DIR AND QT_QTMOTIF_LIBRARY) + SET(QT_QTMOTIF_FOUND 1) + IF (NOT QT_QTMOTIF_LIBRARY_DEBUG) + SET(QT_QTMOTIF_LIBRARY_DEBUG ${QT_QTMOTIF_LIBRARY}) + ENDIF (NOT QT_QTMOTIF_LIBRARY_DEBUG) + ENDIF (QT_QTMOTIF_INCLUDE_DIR AND QT_QTMOTIF_LIBRARY) + + IF (QT_QTNETWORK_INCLUDE_DIR AND QT_QTNETWORK_LIBRARY) + SET(QT_QTNETWORK_FOUND 1) + IF (NOT QT_QTNETWORK_LIBRARY_DEBUG) + SET(QT_QTNETWORK_LIBRARY_DEBUG ${QT_QTNETWORK_LIBRARY}) + ENDIF (NOT QT_QTNETWORK_LIBRARY_DEBUG) + ENDIF (QT_QTNETWORK_INCLUDE_DIR AND QT_QTNETWORK_LIBRARY) + + IF (QT_QTNSPLUGIN_INCLUDE_DIR AND QT_QTNSPLUGIN_LIBRARY) + SET(QT_QTNSPLUGIN_FOUND 1) + IF (NOT QT_QTNSPLUGIN_LIBRARY_DEBUG) + SET(QT_QTNSPLUGIN_LIBRARY_DEBUG ${QT_QTNSPLUGIN_LIBRARY}) + ENDIF (NOT QT_QTNSPLUGIN_LIBRARY_DEBUG) + ENDIF (QT_QTNSPLUGIN_INCLUDE_DIR AND QT_QTNSPLUGIN_LIBRARY) + + IF (QT_QTOPENGL_INCLUDE_DIR AND QT_QTOPENGL_LIBRARY) + SET(QT_QTOPENGL_FOUND 1) + IF (NOT QT_QTOPENGL_LIBRARY_DEBUG) + SET(QT_QTOPENGL_LIBRARY_DEBUG ${QT_QTOPENGL_LIBRARY}) + ENDIF (NOT QT_QTOPENGL_LIBRARY_DEBUG) + ENDIF (QT_QTOPENGL_INCLUDE_DIR AND QT_QTOPENGL_LIBRARY) + + IF (QT_QTSQL_INCLUDE_DIR AND QT_QTSQL_LIBRARY) + SET(QT_QTSQL_FOUND 1) + IF (NOT QT_QTSQL_LIBRARY_DEBUG) + SET(QT_QTSQL_LIBRARY_DEBUG ${QT_QTSQL_LIBRARY}) + ENDIF (NOT QT_QTSQL_LIBRARY_DEBUG) + ENDIF (QT_QTSQL_INCLUDE_DIR AND QT_QTSQL_LIBRARY) + + IF (QT_QTXML_INCLUDE_DIR AND QT_QTXML_LIBRARY) + SET(QT_QTXML_FOUND 1) + IF (NOT QT_QTXML_LIBRARY_DEBUG) + SET(QT_QTXML_LIBRARY_DEBUG ${QT_QTXML_LIBRARY}) + ENDIF (NOT QT_QTXML_LIBRARY_DEBUG) + ENDIF (QT_QTXML_INCLUDE_DIR AND QT_QTXML_LIBRARY) + + ####################################### + # + # Check the executables of Qt + # ( moc, uic, rcc ) + # + ####################################### + IF (NOT QT_BINARY_DIR) + EXEC_PROGRAM( ${QT_QMAKE_EXECUTABLE} + ARGS "-query QT_INSTALL_BINS" + OUTPUT_VARIABLE qt_bins ) + SET(QT_BINARY_DIR ${qt_bins} CACHE INTERNAL "") + ENDIF (NOT QT_BINARY_DIR) + FIND_PROGRAM(QT_MOC_EXECUTABLE + NAMES moc + PATHS + ${QT_BINARY_DIR} + $ENV{QTDIR}/bin + /usr/local/qt/bin + /usr/local/bin + /usr/lib/qt/bin + /usr/bin + /usr/share/qt4/bin + C:/Progra~1/qt/bin + /usr/bin/qt4 + ) + + IF(QT_MOC_EXECUTABLE) + SET ( QT_WRAP_CPP "YES") + ENDIF(QT_MOC_EXECUTABLE) + + FIND_PROGRAM(QT_UIC3_EXECUTABLE + NAMES uic3 + PATHS + ${QT_BINARY_DIR} + $ENV{QTDIR}/bin + /usr/local/qt/bin + /usr/local/bin + /usr/lib/qt/bin + /usr/bin + /usr/share/qt4/bin + C:/Progra~1/qt/bin + /usr/bin/qt4 + ) + + FIND_PROGRAM(QT_UIC_EXECUTABLE + NAMES uic + PATHS + ${QT_BINARY_DIR} + $ENV{QTDIR}/bin + /usr/local/qt/bin + /usr/local/bin + /usr/lib/qt/bin + /usr/bin + /usr/share/qt4/bin + C:/Progra~1/qt/bin + /usr/bin/qt4 + ) + + IF(QT_UIC_EXECUTABLE) + SET ( QT_WRAP_UI "YES") + ENDIF(QT_UIC_EXECUTABLE) + + FIND_PROGRAM(QT_RCC_EXECUTABLE + NAMES rcc + PATHS + ${QT_BINARY_DIR} + $ENV{QTDIR}/bin + /usr/local/qt/bin + /usr/local/bin + /usr/lib/qt/bin + /usr/bin + /usr/share/qt4/bin + C:/Progra~1/qt/bin + /usr/bin/qt4 + ) + + MARK_AS_ADVANCED( + QT_UIC_EXECUTABLE + QT_UIC3_EXECUTABLE + QT_MOC_EXECUTABLE + QT_RCC_EXECUTABLE ) + + ###################################### + # + # Macros for building Qt files + # + ###################################### + + + # QT4_WRAP_CPP(outfiles inputfile ... ) + # TODO perhaps add support for -D, -U and other minor options + + MACRO(QT4_WRAP_CPP outfiles ) + + # get include dirs + GET_DIRECTORY_PROPERTY(moc_includes_tmp INCLUDE_DIRECTORIES) + SET(moc_includes) + FOREACH(it ${moc_includes_tmp}) + SET(moc_includes ${moc_includes} "-I${it}") + ENDFOREACH(it) + + FOREACH(it ${ARGN}) + GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) + + SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it}) + SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/moc_${outfile}.cxx) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_MOC_EXECUTABLE} + ARGS ${moc_includes} -o ${outfile} ${infile} + MAIN_DEPENDENCY ${infile}) + SET(${outfiles} ${${outfiles}} ${outfile}) + ENDFOREACH(it) + + ENDMACRO(QT4_WRAP_CPP) + + + # QT4_WRAP_UI(outfiles inputfile ... ) + + MACRO(QT4_WRAP_UI outfiles ) + + FOREACH(it ${ARGN}) + GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) + SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it}) + SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_UIC_EXECUTABLE} + ARGS -o ${outfile} ${infile} + MAIN_DEPENDENCY ${infile}) + SET(${outfiles} ${${outfiles}} ${outfile}) + ENDFOREACH(it) + + ENDMACRO(QT4_WRAP_UI) + + # QT4_ADD_RESOURCE(outfiles inputfile ... ) + # TODO perhaps consider adding support for compression and root options to rcc + + MACRO(QT4_ADD_RESOURCES outfiles ) + + FOREACH(it ${ARGN}) + GET_FILENAME_COMPONENT(outfilename ${it} NAME_WE) + SET(infile ${CMAKE_CURRENT_SOURCE_DIR}/${it}) + SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cxx) + ADD_CUSTOM_COMMAND(OUTPUT ${outfile} + COMMAND ${QT_RCC_EXECUTABLE} + ARGS -name ${outfilename} -o ${outfile} ${infile} + MAIN_DEPENDENCY ${infile} ) + SET(${outfiles} ${${outfiles}} ${outfile}) + ENDFOREACH(it) + + ENDMACRO(QT4_ADD_RESOURCES) + + + + ###################################### + # + # decide if Qt got found + # + ###################################### + # if the includes,libraries,moc,uic and rcc are found then we have it + IF( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE) + SET( QT4_FOUND "YES" ) + IF( NOT Qt4_FIND_QUIETLY) + MESSAGE(STATUS "Found Qt-Version ${QT_INST_MAJOR_VERSION}.${QT_INST_MINOR_VERSION}.${QT_INST_PATCH_VERSION}") + ENDIF( NOT Qt4_FIND_QUIETLY) + ELSE( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE) + SET( QT4_FOUND "NO") + IF( Qt4_FIND_REQUIRED) + MESSAGE( SEND_ERROR "Qt libraries, includes, moc, uic or/and rcc NOT found!") + ENDIF( Qt4_FIND_REQUIRED) + ENDIF( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE) + SET(QT_FOUND ${QT4_FOUND}) + + + ####################################### + # + # System dependent settings + # + ####################################### + # for unix add X11 stuff + IF(UNIX) + FIND_PACKAGE(X11) + ENDIF(UNIX) + + + ####################################### + # + # compatibility settings + # + ####################################### + # Backwards compatibility for CMake1.4 and 1.2 + SET (QT_MOC_EXE ${QT_MOC_EXECUTABLE} ) + SET (QT_UIC_EXE ${QT_UIC_EXECUTABLE} ) + + SET( QT_QT_LIBRARY "") + SET( QT_QTMAIN_LIBRARY "") +ELSE(QT4_QMAKE_FOUND) + IF(QT_QMAKE_EXECUTABLE) + MESSAGE("QT_QMAKE_EXECUTABLE set to qmake version: QTVERSION = ${QTVERSION}\nQT_QMAKE_EXECUTABLE = ${QT_QMAKE_EXECUTABLE}, please set to path to qmake from qt4.") + ENDIF(QT_QMAKE_EXECUTABLE) + IF( Qt4_FIND_REQUIRED) + MESSAGE( SEND_ERROR "Qt qmake not found!") + ENDIF( Qt4_FIND_REQUIRED) + +ENDIF(QT4_QMAKE_FOUND) diff --git a/modules/FindX11.cmake b/modules/FindX11.cmake new file mode 100644 index 00000000..25d6e1e4 --- /dev/null +++ b/modules/FindX11.cmake @@ -0,0 +1,151 @@ +# - Find X11 installation +# Try to find X11 on UNIX systems. The following values are defined +# X11_FOUND - True if X11 is available +# X11_INCLUDE_DIR - include directories to use X11 +# X11_LIBRARIES - link against these to use X11 + +IF (UNIX) + SET(X11_FOUND 0) + + SET(X11_INC_SEARCH_PATH + /usr/X11R6/include + /usr/local/include + /usr/include/X11 + /usr/openwin/include + /usr/openwin/share/include + /opt/graphics/OpenGL/include + /usr/include + ) + + SET(X11_LIB_SEARCH_PATH + /usr/X11R6/lib + /usr/local/lib + /usr/openwin/lib + /usr/lib + ) + + FIND_PATH(X11_X11_INCLUDE_PATH X11/X.h ${X11_INC_SEARCH_PATH}) + FIND_PATH(X11_Xlib_INCLUDE_PATH X11/Xlib.h ${X11_INC_SEARCH_PATH}) + FIND_PATH(X11_Xutil_INCLUDE_PATH X11/Xutil.h ${X11_INC_SEARCH_PATH}) + FIND_LIBRARY(X11_X11_LIB X11 ${X11_LIB_SEARCH_PATH}) + FIND_LIBRARY(X11_Xext_LIB Xext ${X11_LIB_SEARCH_PATH}) + + IF(X11_X11_INCLUDE_PATH) + SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_X11_INCLUDE_PATH}) + ENDIF(X11_X11_INCLUDE_PATH) + + IF(X11_Xlib_INCLUDE_PATH) + SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xlib_INCLUDE_PATH}) + ENDIF(X11_Xlib_INCLUDE_PATH) + + IF(X11_Xutil_INCLUDE_PATH) + SET(X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_Xutil_INCLUDE_PATH}) + ENDIF(X11_Xutil_INCLUDE_PATH) + + IF(X11_X11_LIB) + SET(X11_LIBRARIES ${X11_LIBRARIES} ${X11_X11_LIB}) + ENDIF(X11_X11_LIB) + + IF(X11_Xext_LIB) + SET(X11_LIBRARIES ${X11_LIBRARIES} ${X11_Xext_LIB}) + ENDIF(X11_Xext_LIB) + + # Deprecated variable for backwards compatibility with CMake 1.4 + IF(X11_X11_INCLUDE_PATH) + IF(X11_LIBRARIES) + SET(X11_FOUND 1) + ENDIF(X11_LIBRARIES) + ENDIF(X11_X11_INCLUDE_PATH) + + SET(X11_LIBRARY_DIR "") + IF(X11_X11_LIB) + GET_FILENAME_COMPONENT(X11_LIBRARY_DIR ${X11_X11_LIB} PATH) + ENDIF(X11_X11_LIB) + + IF(X11_FOUND) + INCLUDE(CheckFunctionExists) + INCLUDE(CheckLibraryExists) + + # Translated from an autoconf-generated configure script. + # See libs.m4 in autoconf's m4 directory. + IF($ENV{ISC} MATCHES "^yes$") + SET(X11_X_EXTRA_LIBS -lnsl_s -linet) + ELSE($ENV{ISC} MATCHES "^yes$") + SET(X11_X_EXTRA_LIBS "") + + # See if XOpenDisplay in X11 works by itself. + CHECK_LIBRARY_EXISTS("${X11_LIBRARIES}" "XOpenDisplay" "${X11_LIBRARY_DIR}" X11_LIB_X11_SOLO) + IF(NOT X11_LIB_X11_SOLO) + # Find library needed for dnet_ntoa. + CHECK_LIBRARY_EXISTS("dnet" "dnet_ntoa" "" X11_LIB_DNET_HAS_DNET_NTOA) + IF (X11_LIB_DNET_HAS_DNET_NTOA) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -ldnet) + ELSE (X11_LIB_DNET_HAS_DNET_NTOA) + CHECK_LIBRARY_EXISTS("dnet_stub" "dnet_ntoa" "" X11_LIB_DNET_STUB_HAS_DNET_NTOA) + IF (X11_LIB_DNET_STUB_HAS_DNET_NTOA) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -ldnet_stub) + ENDIF (X11_LIB_DNET_STUB_HAS_DNET_NTOA) + ENDIF (X11_LIB_DNET_HAS_DNET_NTOA) + ENDIF(NOT X11_LIB_X11_SOLO) + + # Find library needed for gethostbyname. + CHECK_FUNCTION_EXISTS("gethostbyname" CMAKE_HAVE_GETHOSTBYNAME) + IF(NOT CMAKE_HAVE_GETHOSTBYNAME) + CHECK_LIBRARY_EXISTS("nsl" "gethostbyname" "" CMAKE_LIB_NSL_HAS_GETHOSTBYNAME) + IF (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lnsl) + ELSE (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME) + CHECK_LIBRARY_EXISTS("bsd" "gethostbyname" "" CMAKE_LIB_BSD_HAS_GETHOSTBYNAME) + IF (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lbsd) + ENDIF (CMAKE_LIB_BSD_HAS_GETHOSTBYNAME) + ENDIF (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME) + ENDIF(NOT CMAKE_HAVE_GETHOSTBYNAME) + + # Find library needed for connect. + CHECK_FUNCTION_EXISTS("connect" CMAKE_HAVE_CONNECT) + IF(NOT CMAKE_HAVE_CONNECT) + CHECK_LIBRARY_EXISTS("socket" "connect" "" CMAKE_LIB_SOCKET_HAS_CONNECT) + IF (CMAKE_LIB_SOCKET_HAS_CONNECT) + SET (X11_X_EXTRA_LIBS -lsocket ${X11_X_EXTRA_LIBS}) + ENDIF (CMAKE_LIB_SOCKET_HAS_CONNECT) + ENDIF(NOT CMAKE_HAVE_CONNECT) + + # Find library needed for remove. + CHECK_FUNCTION_EXISTS("remove" CMAKE_HAVE_REMOVE) + IF(NOT CMAKE_HAVE_REMOVE) + CHECK_LIBRARY_EXISTS("posix" "remove" "" CMAKE_LIB_POSIX_HAS_REMOVE) + IF (CMAKE_LIB_POSIX_HAS_REMOVE) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lposix) + ENDIF (CMAKE_LIB_POSIX_HAS_REMOVE) + ENDIF(NOT CMAKE_HAVE_REMOVE) + + # Find library needed for shmat. + CHECK_FUNCTION_EXISTS("shmat" CMAKE_HAVE_SHMAT) + IF(NOT CMAKE_HAVE_SHMAT) + CHECK_LIBRARY_EXISTS("ipc" "shmat" "" CMAKE_LIB_IPS_HAS_SHMAT) + IF (CMAKE_LIB_IPS_HAS_SHMAT) + SET (X11_X_EXTRA_LIBS ${X11_X_EXTRA_LIBS} -lipc) + ENDIF (CMAKE_LIB_IPS_HAS_SHMAT) + ENDIF(NOT CMAKE_HAVE_SHMAT) + ENDIF($ENV{ISC} MATCHES "^yes$") + + CHECK_LIBRARY_EXISTS("ICE" "IceConnectionNumber" "${X11_LIBRARY_DIR}" + CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER) + IF(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER) + SET (X11_X_PRE_LIBS -lSM -lICE) + ENDIF(CMAKE_LIB_ICE_HAS_ICECONNECTIONNUMBER) + # Build the final list of libraries. + SET (X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS}) + ENDIF(X11_FOUND) + + MARK_AS_ADVANCED( + X11_X11_INCLUDE_PATH + X11_X11_LIB + X11_Xext_LIB + X11_Xlib_INCLUDE_PATH + X11_Xutil_INCLUDE_PATH + X11_LIBRARIES + ) + +ENDIF (UNIX) |