summaryrefslogtreecommitdiffstats
path: root/ConfigureChecks.cmake
diff options
context:
space:
mode:
authorsamelian <samelian@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-03-27 21:56:52 +0000
committersamelian <samelian@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-03-27 21:56:52 +0000
commite70558cf0adab0c4395abaa9d147fd5c5d9eacc8 (patch)
treeff9a4e7dec28e428ecc1415cfb59f96f337cdbba /ConfigureChecks.cmake
parentbe540072adcf609548f7f72ad17a47c6c6899276 (diff)
downloadtqtinterface-e70558cf0adab0c4395abaa9d147fd5c5d9eacc8.tar.gz
tqtinterface-e70558cf0adab0c4395abaa9d147fd5c5d9eacc8.zip
[cmake] reworked tqtinterface build system
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/dependencies/tqtinterface@1226235 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ConfigureChecks.cmake')
-rw-r--r--ConfigureChecks.cmake182
1 files changed, 182 insertions, 0 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
new file mode 100644
index 0000000..b405ec1
--- /dev/null
+++ b/ConfigureChecks.cmake
@@ -0,0 +1,182 @@
+#################################################
+#
+# (C) 2010-2011 Serghei Amelian
+# serghei (DOT) amelian (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+macro( qt_message )
+ message( STATUS "${ARGN}" )
+endmacro( )
+
+
+if( DEFINED USE_QT3 )
+ set( QT_VERSION "3" )
+elseif( DEFINED USE_QT4 )
+ set( QT_VERSION "4" )
+endif()
+
+
+if( NOT DEFINED QT_VERSION )
+ tde_message_fatal( "You must select a Qt version, like this:\n \n cmake -DQT_VERSION=3 [arguments...]\n or\n cmake -DUSE_QT3=ON [arguments...]" )
+endif( )
+
+
+if( NOT (QT_VERSION STREQUAL "3" OR QT_VERSION STREQUAL "4") )
+ tde_message_fatal( "You have chosen an invalid version.\n QT_VERSION should be 3 or 4." )
+else( )
+ qt_message( "Checking for Qt${QT_VERSION}..." )
+endif( )
+
+
+# qt prefix directory
+if( NOT DEFINED QT_PREFIX_DIR )
+ if( NOT $ENV{QTDIR} STREQUAL "" AND QT_VERSION STREQUAL "3" )
+ set( QT_PREFIX_DIR "$ENV{QTDIR}" )
+ qt_message( " QT_PREFIX_DIR is set to QTDIR" )
+ else( )
+ set( QT_PREFIX_DIR "/usr" )
+ endif( )
+endif( )
+qt_message( " QT_PREFIX_DIR : ${QT_PREFIX_DIR}" )
+
+
+# qt headers
+if( NOT DEFINED QT_INCLUDE_DIR )
+ if( QT_PREFIX_DIR STREQUAL "/usr" )
+ set( QT_INCLUDE_DIR "${QT_PREFIX_DIR}/include/qt${QT_VERSION}" )
+ else( )
+ set( QT_INCLUDE_DIR "${QT_PREFIX_DIR}/include" )
+ endif( )
+endif( )
+qt_message( " QT_INCLUDE_DIR: ${QT_INCLUDE_DIR}" )
+
+
+# qt library path
+if( NOT DEFINED QT_LIBRARY_DIR )
+ set( QT_LIBRARY_DIR "${QT_PREFIX_DIR}/lib${LIB_SUFFIX}" )
+ if( QT_VERSION STREQUAL "4" )
+ if( NOT EXISTS "${QT_LIBRARY_DIR}/libQtGui.so" )
+ if( EXISTS "${QT_LIBRARY_DIR}/qt4/libQtGui.so" )
+ set( QT_LIBRARY_DIR "${QT_PREFIX_DIR}/lib${LIB_SUFFIX}/qt4" )
+ endif( )
+ endif( )
+ endif( )
+endif( )
+qt_message( " QT_LIBRARY_DIR: ${QT_LIBRARY_DIR}" )
+
+
+# qt library name
+if( NOT DEFINED QT_LIBRARIES )
+ if( QT_VERSION STREQUAL "3" )
+ set( QT_LIBRARIES qt-mt )
+ elseif( QT_VERSION STREQUAL "4" )
+ set( QT_LIBRARIES QtCore QtGui )
+ endif( )
+endif( )
+
+
+# qt tools
+if( NOT DEFINED QT_BINARY_DIR )
+ set( QT_BINARY_DIR "${QT_PREFIX_DIR}/bin" )
+endif( )
+qt_message( " QT_BINARY_DIR : ${QT_BINARY_DIR}" )
+
+
+# find moc
+if( DEFINED MOC_EXECUTABLE )
+ if( IS_DIRECTORY "${MOC_EXECUTABLE}" OR NOT EXISTS "${MOC_EXECUTABLE}" )
+ tde_message_fatal( "moc was NOT found.\n MOC_EXECUTABLE may not be set correctly." )
+ endif( )
+else( )
+ find_program( MOC_EXECUTABLE NAMES moc HINTS "${QT_BINARY_DIR}" )
+ if( NOT MOC_EXECUTABLE )
+ tde_message_fatal( "moc was NOT found.\n Please check if your Qt${QT_VERSION} is correctly installed." )
+ endif( )
+endif( )
+
+# attempt to run moc, to check which qt version is using
+execute_process( COMMAND ${MOC_EXECUTABLE} -v ERROR_VARIABLE __output
+ RESULT_VARIABLE __result ERROR_STRIP_TRAILING_WHITESPACE )
+
+if( __result EQUAL 1 )
+ string( REGEX MATCH "^.*Qt (.+)\\)$" __dummy "${__output}" )
+ set( __version "${CMAKE_MATCH_1}" )
+ if( NOT __version )
+ tde_message_fatal( "Invalid response from moc:\n ${__output}" )
+ endif( )
+else( )
+ tde_message_fatal( "Unable to run moc!\n Qt${VERSION} are correctly installed?\n LD_LIBRARY_PATH are correctly set?" )
+endif( )
+
+qt_message( " MOC_EXECUTABLE: ${MOC_EXECUTABLE} (using Qt ${CMAKE_MATCH_1})" )
+
+if( QT_VERSION STREQUAL "3" AND NOT "${CMAKE_MATCH_1}" VERSION_LESS "4" )
+ tde_message_fatal( "Strange, you want Qt3, but your moc using Qt4." )
+elseif( QT_VERSION STREQUAL "4" AND "${CMAKE_MATCH_1}" VERSION_LESS "4" )
+ tde_message_fatal( "Strange, you want Qt4, but your moc using Qt3." )
+endif( )
+
+
+# find uic (only for Qt3)
+if( QT_VERSION STREQUAL "3" )
+ if( DEFINED UIC_EXECUTABLE )
+ if( IS_DIRECTORY "${UIC_EXECUTABLE}" OR NOT EXISTS "${UIC_EXECUTABLE}" )
+ tde_message_fatal( "uic was NOT found.\n MOC_EXECUTABLE may not be set correctly" )
+ endif( )
+ else( )
+ find_program( UIC_EXECUTABLE NAMES uic HINTS "${QT_BINARY_DIR}" )
+ if( NOT UIC_EXECUTABLE )
+ tde_message_fatal( "uic was NOT found.\n Please check if your Qt${QT_VERSION} is correctly installed." )
+ endif( )
+ endif( )
+ qt_message( " UIC_EXECUTABLE: ${UIC_EXECUTABLE}" )
+endif( )
+
+
+# definitions
+if( QT_VERSION STREQUAL "3" )
+ set( QT_DEFINITIONS "-DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_THREAD_SUPPORT -D_REENTRANT" )
+elseif( QT_VERSION STREQUAL "4" )
+ set( QT_DEFINITIONS "-DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_THREAD_SUPPORT -D_REENTRANT" )
+endif( )
+
+
+tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+set( CMAKE_REQUIRED_INCLUDES ${QT_INCLUDE_DIR} )
+set( CMAKE_REQUIRED_LIBRARIES -L${QT_LIBRARY_DIR} ${QT_LIBRARIES} )
+
+# check if Qt3 is usable
+if( QT_VERSION STREQUAL "3" )
+ check_cxx_source_compiles("
+ #include <qapplication.h>
+ int main(int argc, char **argv) { QApplication app(argc, argv); return 0; } "
+ HAVE_USABLE_QT${QT_VERSION} )
+# check if Qt4 is usable
+elseif( QT_VERSION STREQUAL "4" )
+ check_cxx_source_compiles("
+ #include <QtGui/QApplication>
+ int main(int argc, char **argv) { QApplication app(argc, argv); return 0; } "
+ HAVE_USABLE_QT${QT_VERSION} )
+endif( )
+if( NOT HAVE_USABLE_QT${QT_VERSION} )
+ tde_message_fatal( "Unable to build a simple Qt${QT_VERSION} test." )
+endif( )
+
+# check if Qt3 is patched for compatibility with TQt
+if( QT_VERSION STREQUAL "3" )
+ check_cxx_source_compiles("
+ #include <qobjectlist.h>
+ #include <qobject.h>
+ int main(int, char**) { QObject::objectTreesListObject(); return 0; } "
+ HAVE_PATCHED_QT3 )
+ if( NOT HAVE_PATCHED_QT3 )
+ tde_message_fatal( "Your Qt3 is not patched for compatibility with tqtinterface." )
+ endif( )
+endif( )
+
+tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )