summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2013-06-05 11:12:37 +0300
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2013-06-05 11:58:43 +0300
commit5bad049fd2192b6b00abde485f6e8171d68ca933 (patch)
treed149d8cee00e8f68e252d88fe87afc27b08539c9
parent6624f10817da99a63253799f1f99162304cbd894 (diff)
qt5: Add conditional support for Qt5 in the build system
Based on patches by: Andoni Morales Alastruey <ylatuya@gmail.com> Luciana Fujii Pontello <luciana@fujii.eti.br>
-rw-r--r--CMakeLists.txt18
-rw-r--r--cmake/modules/QtHelpers.cmake79
-rw-r--r--examples/qmlplayer/CMakeLists.txt2
-rw-r--r--examples/recorder/CMakeLists.txt2
-rw-r--r--examples/voip/CMakeLists.txt2
-rw-r--r--src/QGlib/QtGLib-2.0.pc.in2
-rw-r--r--src/QGst/QtGStreamerUi-0.10.pc.in4
-rw-r--r--tests/auto/CMakeLists.txt5
-rw-r--r--tests/manual/CMakeLists.txt9
9 files changed, 104 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e89987..1a1d8d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,20 +15,22 @@ option(QTGSTREAMER_EXAMPLES "Build QtGStreamer's examples" ON)
option(QTGSTREAMER_CODEGEN "Build and use QtGStreamer's codegen" OFF)
option(USE_GST_PLUGIN_DIR "Install gstreamer plugins at the system location" ON)
option(USE_QT_PLUGIN_DIR "Install qt plugins at the system location" ON)
+set(QT_VERSION "4" CACHE STRING "Qt version used for the build")
include(MacroLogFeature)
-find_package(Qt4 COMPONENTS QtCore QtGui)
-macro_log_feature(QT4_FOUND "Qt 4" "Required for building everything" "http://qt.nokia.com/" TRUE "4.7")
+include(QtHelpers)
+
+macro_log_feature(QT_FOUND "Qt" "Required for building everything" "http://qt.nokia.com/" TRUE "${QT_MIN_VERSION}")
macro_log_feature(QT_QTOPENGL_FOUND "QtOpenGL"
"Required for OpenGL acceleration in qtvideosink and QtGStreamerUi"
- "http://qt.nokia.com/" FALSE "4.7")
+ "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}")
macro_log_feature(QT_QTDECLARATIVE_FOUND "QtDeclarative" "Required for building QML support"
- "http://qt.nokia.com/" FALSE "4.7")
+ "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}")
if (QTGSTREAMER_TESTS)
macro_log_feature(QT_QTTEST_FOUND "QtTest" "Required for building unit tests"
- "http://qt.nokia.com/" FALSE "4.7")
+ "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}")
if (NOT QT_QTTEST_FOUND)
set(QTGSTREAMER_TESTS OFF)
endif()
@@ -115,7 +117,11 @@ endif()
if (USE_QT_PLUGIN_DIR)
set(IMPORTS_INSTALL_DIR ${QT_IMPORTS_DIR})
else()
- set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/imports)
+ if (USE_QT5)
+ set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt5/imports)
+ else()
+ set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/imports)
+ endif()
endif()
if (QTGSTREAMER_CODEGEN AND FLEX_FOUND AND BISON_FOUND)
diff --git a/cmake/modules/QtHelpers.cmake b/cmake/modules/QtHelpers.cmake
new file mode 100644
index 0000000..66ac2b0
--- /dev/null
+++ b/cmake/modules/QtHelpers.cmake
@@ -0,0 +1,79 @@
+# - Try to find an installed version of Qt based on QT_VERSION
+# Once done this will define
+#
+# USE_QT4 - Building with Qt4
+# USE_QT5 - Building with Qt5
+# QT_MIN_VERSION - qt minimum
+#
+# Copyright (c) 2013, Fluendo S.L. <support@fluendo.com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+if (${QT_VERSION} STREQUAL "5")
+ set(USE_QT5 TRUE)
+ set(QT_MIN_VERSION 5.0.1)
+ message(STATUS "Using Qt5 (min: ${QT_MIN_VERSION})")
+elseif (${QT_VERSION} STREQUAL "4")
+ set(USE_QT4 TRUE)
+ set(QT_MIN_VERSION 4.7)
+ message(STATUS "Using Qt4 (min:${QT_MIN_VERSION})")
+endif()
+
+if (USE_QT5)
+ find_package(Qt5Core)
+ find_package(Qt5Gui)
+ find_package(Qt5Widgets)
+ if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND)
+ set(QT_FOUND true)
+ set(QT_QTCORE_FOUND true)
+ set(QT_QTGUI_FOUND true)
+ set(QT_QTCORE_LIBRARY ${Qt5Core_LIBRARIES})
+ set(QT_QTGUI_LIBRARY ${Qt5Widgets_LIBRARIES})
+ set(QT_INCLUDE_DIR ${Qt5Widgets_INCLUDE_DIRS})
+ endif()
+ find_package(Qt5Declarative)
+ if (Qt5Declarative_FOUND)
+ set(QT_QTDECLARATIVE_FOUND true)
+ set(QT_QTDECLARATIVE_LIBRARY ${Qt5Declarative_LIBRARIES})
+ set(QT_QTDECLARATIVE_INCLUDE_DIR ${Qt5Declarative_INCLUDE_DIRS})
+ endif()
+ find_package(Qt5Test)
+ if (Qt5Test_FOUND)
+ set(QT_QTTEST_FOUND true)
+ set(QT_QTTEST_LIBRARY ${Qt5Test_LIBRARIES})
+ set(QT_QTTEST_INCLUDE_DIR ${Qt5Test_INCLUDE_DIRS})
+ endif ()
+ find_package(Qt5OpenGL)
+ if (Qt5OpenGL_FOUND)
+ set(QT_QTOPENGL_FOUND true)
+ set(QT_QTOPENGL_LIBRARY ${Qt5OpenGL_LIBRARIES})
+ set(QT_QTOPENGL_INCLUDE_DIR ${Qt5OpenGL_INCLUDE_DIRS})
+ endif()
+ set(PKG_CONFIG_QTCORE_DEP Qt5Core)
+ set(PKG_CONFIG_QTGUI_DEP Qt5Widgets)
+elseif (USE_QT4)
+ find_package(Qt4 COMPONENTS QtCore QtGui)
+ set(PKG_CONFIG_QTCORE_DEP QtCore)
+ set(PKG_CONFIG_QTGUI_DEP QtGui)
+else()
+ message(FATAL_ERROR "Qt supported versions are: 4 and 5")
+endif()
+
+# qt_helper_wrap_ui(outfiles inputfile ... )
+macro(QT_HELPER_WRAP_UI)
+ if (USE_QT5)
+ qt5_wrap_ui(${ARGV})
+ elseif (USE_QT4)
+ qt4_wrap_ui(${ARGV})
+ endif()
+endmacro()
+
+# qt_helper_add_resources(outfiles inputfile ... )
+macro(QT_HELPER_ADD_RESOURCES)
+ if (USE_QT5)
+ qt5_add_resources(${ARGV})
+ elseif (USE_QT4)
+ qt4_add_resources(${ARGV})
+ endif()
+endmacro()
diff --git a/examples/qmlplayer/CMakeLists.txt b/examples/qmlplayer/CMakeLists.txt
index cabb111..1add76b 100644
--- a/examples/qmlplayer/CMakeLists.txt
+++ b/examples/qmlplayer/CMakeLists.txt
@@ -35,7 +35,7 @@ else()
endif()
set(qmlplayer_SOURCES main.cpp player.cpp)
-qt4_add_resources(qmlplayer_rcc_SOURCES qmlplayer.qrc)
+qt_helper_add_resources(qmlplayer_rcc_SOURCES qmlplayer.qrc)
add_executable(qmlplayer
${qmlplayer_SOURCES}
diff --git a/examples/recorder/CMakeLists.txt b/examples/recorder/CMakeLists.txt
index fa30e9e..25a2ac4 100644
--- a/examples/recorder/CMakeLists.txt
+++ b/examples/recorder/CMakeLists.txt
@@ -10,6 +10,6 @@ include_directories(${QTGSTREAMER_INCLUDES})
add_definitions(${QTGSTREAMER_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}")
-qt4_wrap_ui(recorder_UI_SRCS recorder.ui)
+qt_helper_wrap_ui(recorder_UI_SRCS recorder.ui)
add_executable(recorder main.cpp ${recorder_UI_SRCS})
target_link_libraries(recorder ${QTGSTREAMER_LIBRARIES} ${QT_QTGUI_LIBRARY})
diff --git a/examples/voip/CMakeLists.txt b/examples/voip/CMakeLists.txt
index d16dfae..5735dbd 100644
--- a/examples/voip/CMakeLists.txt
+++ b/examples/voip/CMakeLists.txt
@@ -10,6 +10,6 @@ include_directories(${QTGSTREAMER_INCLUDES})
add_definitions(${QTGSTREAMER_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}")
-qt4_wrap_ui(voip_UI_SRCS voip.ui)
+qt_helper_wrap_ui(voip_UI_SRCS voip.ui)
add_executable(voip main.cpp ${voip_UI_SRCS})
target_link_libraries(voip ${QTGSTREAMER_UI_LIBRARIES})
diff --git a/src/QGlib/QtGLib-2.0.pc.in b/src/QGlib/QtGLib-2.0.pc.in
index cedb05e..5e0c295 100644
--- a/src/QGlib/QtGLib-2.0.pc.in
+++ b/src/QGlib/QtGLib-2.0.pc.in
@@ -5,7 +5,7 @@ includedir=@INCLUDES_INSTALL_DIR@
Name: QtGLib-2.0
Description: Qt-style C++ bindings library for GLib & GObject
-Requires: QtCore
+Requires: @PKG_CONFIG_QTCORE_DEP@
Requires.private: gobject-2.0
Version: @QTGSTREAMER_VERSION@
Cflags: -I${includedir}
diff --git a/src/QGst/QtGStreamerUi-0.10.pc.in b/src/QGst/QtGStreamerUi-0.10.pc.in
index 04d3fd5..5b483c3 100644
--- a/src/QGst/QtGStreamerUi-0.10.pc.in
+++ b/src/QGst/QtGStreamerUi-0.10.pc.in
@@ -4,8 +4,8 @@ libdir=@LIB_INSTALL_DIR@
includedir=@INCLUDES_INSTALL_DIR@
Name: QtGStreamerUi-0.10
-Description: QtGui GStreamer integration library
-Requires: QtGui QtGStreamer-0.10
+Description: QtGui/QtWidgets GStreamer integration library
+Requires: @PKG_CONFIG_QTGUI_DEP@ QtGStreamer-0.10
Version: @QTGSTREAMER_VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -lQtGStreamerUi-0.10
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
index a9fcca0..2ab36ad 100644
--- a/tests/auto/CMakeLists.txt
+++ b/tests/auto/CMakeLists.txt
@@ -1,5 +1,5 @@
include_directories(${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR}
- ${QTGSTREAMER_INCLUDES})
+ ${QTGSTREAMER_INCLUDES} ${QT_QTTEST_INCLUDE_DIR})
add_definitions(${QTGSTREAMER_DEFINITIONS} -DGST_DISABLE_XML -DGST_DISABLE_LOADSAVE)
add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}")
@@ -7,7 +7,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}")
macro(qgst_test target)
add_executable(${target} "${target}.cpp")
target_link_libraries(${target} ${QT_QTTEST_LIBRARY} ${GSTREAMER_LIBRARY}
- ${GOBJECT_LIBRARIES} ${QTGSTREAMER_LIBRARIES})
+ ${GOBJECT_LIBRARIES} ${QTGSTREAMER_LIBRARIES}
+ ${GSTREAMER_PBUTILS_LIBRARY})
add_test(NAME ${target} COMMAND ${target})
endmacro(qgst_test)
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index 64d5e86..fc78d46 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -2,19 +2,18 @@ include_directories(${QTGSTREAMER_INCLUDES})
add_definitions(${QTGSTREAMER_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}")
-qt4_wrap_ui(QWIDGETVIDEOSINKTEST_UI qwidgetvideosinktest.ui)
+qt_helper_wrap_ui(QWIDGETVIDEOSINKTEST_UI qwidgetvideosinktest.ui)
add_executable(qwidgetvideosinktest qwidgetvideosinktest.cpp ${QWIDGETVIDEOSINKTEST_UI})
target_link_libraries(qwidgetvideosinktest ${QT_QTGUI_LIBRARIES} ${QTGSTREAMER_LIBRARIES})
-
-qt4_wrap_ui(VIDEOWIDGETTEST_UI videowidgettest.ui)
+qt_helper_wrap_ui(VIDEOWIDGETTEST_UI videowidgettest.ui)
add_executable(videowidgettest videowidgettest.cpp ${VIDEOWIDGETTEST_UI})
target_link_libraries(videowidgettest ${QTGSTREAMER_UI_LIBRARIES})
-qt4_wrap_ui(VIDEOWIDGETPIPELINETEST_UI videowidgetpipelinetest.ui)
+qt_helper_wrap_ui(VIDEOWIDGETPIPELINETEST_UI videowidgetpipelinetest.ui)
add_executable(videowidgetpipelinetest videowidgetpipelinetest.cpp ${VIDEOWIDGETPIPELINETEST_UI})
target_link_libraries(videowidgetpipelinetest ${QTGSTREAMER_UI_LIBRARIES})
-qt4_wrap_ui(VIDEOORIENTATIONTEST_UI videoorientationtest.ui)
+qt_helper_wrap_ui(VIDEOORIENTATIONTEST_UI videoorientationtest.ui)
add_executable(videoorientationtest videoorientationtest.cpp ${VIDEOORIENTATIONTEST_UI})
target_link_libraries(videoorientationtest ${QTGSTREAMER_UI_LIBRARIES})