1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
project(QtGStreamer)
cmake_minimum_required(VERSION 2.8)
enable_testing()
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
set(QTGSTREAMER_VERSION 0.10.2)
option(QTGSTREAMER_STATIC "Build QtGStreamer as a static library" OFF)
option(QTGSTREAMER_TESTS "Build QtGStreamer's tests" OFF)
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)
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")
macro_log_feature(QT_QTOPENGL_FOUND "QtOpenGL"
"Required for OpenGL acceleration in qtvideosink and QtGStreamerUi"
"http://qt.nokia.com/" FALSE "4.7")
macro_log_feature(QT_QTDECLARATIVE_FOUND "QtDeclarative" "Required for building QML support"
"http://qt.nokia.com/" FALSE "4.7")
if (QTGSTREAMER_TESTS)
macro_log_feature(QT_QTTEST_FOUND "QtTest" "Required for building unit tests"
"http://qt.nokia.com/" FALSE "4.7")
if (NOT QT_QTTEST_FOUND)
set(QTGSTREAMER_TESTS OFF)
endif()
endif()
find_package(Boost 1.39)
macro_log_feature(Boost_FOUND "Boost" "Required for building QtGLib" "http://www.boost.org/" TRUE "1.39")
# this just sets the QTGSTREAMER_* cmake variables
set(BUILDING_QTGSTREAMER TRUE)
find_package(QtGStreamer REQUIRED)
if (${CMAKE_VERSION} VERSION_LESS "2.8.6")
find_package(Automoc4)
macro_log_feature(Automoc4_FOUND "Automoc 4" "Required for the build system to generate moc files properly"
"https://projects.kde.org/projects/kdesupport/automoc" TRUE "0.9.88")
else()
set(Automoc4_FOUND TRUE)
set(CMAKE_AUTOMOC TRUE)
macro(automoc4_add_executable)
add_executable(${ARGV})
endmacro()
macro(automoc4_add_library)
add_library(${ARGV})
endmacro()
endif()
find_package(GStreamer 0.10.33 COMPONENTS base)
macro_log_feature(GSTREAMER_FOUND "GStreamer" "Required to build QtGStreamer"
"http://gstreamer.freedesktop.org/" TRUE "0.10.33")
macro_log_feature(GSTREAMER_BASE_LIBRARY_FOUND "GStreamer base library"
"Used for building the qwidgetvideosink element"
"http://gstreamer.freedesktop.org/" FALSE "0.10.33")
find_package(GStreamerPluginsBase 0.10.33 COMPONENTS app interfaces video)
macro_log_feature(GSTREAMER_APP_LIBRARY_FOUND "GStreamer app library"
"Required to build QtGStreamerUtils"
"http://gstreamer.freedesktop.org/" TRUE "0.10.33")
macro_log_feature(GSTREAMER_INTERFACES_LIBRARY_FOUND "GStreamer interfaces library"
"Required to build QtGStreamer"
"http://gstreamer.freedesktop.org/" TRUE "0.10.33")
macro_log_feature(GSTREAMER_VIDEO_LIBRARY_FOUND "GStreamer video library"
"Used for building the qwidgetvideosink element"
"http://gstreamer.freedesktop.org/" FALSE "0.10.33")
find_package(GLIB2)
macro_log_feature(GLIB2_FOUND "GLib" "Required to build QtGLib" "http://www.gtk.org/" TRUE)
find_package(GObject)
macro_log_feature(GOBJECT_FOUND "GObject" "Required to build QtGLib" "http://www.gtk.org/" TRUE)
find_package(OpenGL)
macro_log_feature(OPENGL_FOUND "OpenGL"
"Required for OpenGL rendering support in qtvideosink (desktop only)"
"http://www.opengl.org" FALSE)
find_package(OpenGLES2)
macro_log_feature(OPENGLES2_FOUND "OpenGLES"
"Required for OpenGLES rendering support in qtvideosink (embedded only)"
"http://www.opengl.org" FALSE "2.0")
if (QTGSTREAMER_CODEGEN AND CMAKE_CROSSCOMPILING)
message(WARNING "Codegen use requested, but we are crosscompiling. Disabling...")
set(QTGSTREAMER_CODEGEN OFF)
endif()
if (QTGSTREAMER_CODEGEN)
find_package(FLEX)
macro_log_feature(FLEX_FOUND "Flex" "Required to build codegen, a helper code generator"
"http://flex.sourceforge.net/" TRUE)
find_package(BISON)
macro_log_feature(BISON_FOUND "Bison" "Required to build codegen, a helper code generator"
"http://www.gnu.org/software/bison/" TRUE)
endif()
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wformat-security -Wundef -Wpointer-arith -fno-common")
endif ()
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE STRING "Destination directory for libraries")
set(INCLUDES_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/QtGStreamer)
if (USE_GST_PLUGIN_DIR)
set(PLUGINS_INSTALL_DIR ${GSTREAMER_PLUGIN_DIR})
else()
set(PLUGINS_INSTALL_DIR ${LIB_INSTALL_DIR}/gstreamer-0.10)
endif()
if (USE_QT_PLUGIN_DIR)
set(IMPORTS_INSTALL_DIR ${QT_IMPORTS_DIR})
else()
set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/imports)
endif()
if (QTGSTREAMER_CODEGEN AND FLEX_FOUND AND BISON_FOUND)
add_subdirectory(codegen)
endif()
if (Automoc4_FOUND) # avoid errors about missing automoc4_add_* macros
add_subdirectory(src)
add_subdirectory(elements)
if (QTGSTREAMER_TESTS)
add_subdirectory(tests)
endif()
if (QTGSTREAMER_EXAMPLES)
add_subdirectory(examples)
endif()
endif()
# Add uninstall target. Taken from the KDE4 scripts
configure_file("${CMAKE_SOURCE_DIR}/cmake/modules/cmake_uninstall.cmake.in" "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" @ONLY)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
# Add doc target
include(UseDoxygen)
macro_log_feature(DOXYGEN_FOUND "Doxygen" "Used to generate the API documentation"
"http://www.doxygen.org/" FALSE)
macro_display_feature_log()
|