Major changes in the cmake code. Start using more advanced cmake functions and avoid using the ones from other projects. Still some cleaning to do

This commit is contained in:
jfmcarreira committed 2014-11-14 18:45:12 +00:00
1 parent 5854713a78
commit 89cda413cc
13 files changed
+290 -407

No files matched your search

+92 -27
View File
@@ -11,9 +11,15 @@ cmake_minimum_required( VERSION 2.8.9 )
SET( PROJECT_NAME "playuver" )
PROJECT( ${PROJECT_NAME} )
INCLUDE( cmake/PlaYUVerVersion.cmake )
INCLUDE( cmake/CMakeMacros.cmake )
######################################################################################
# CMake Definitions
######################################################################################
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake )
INCLUDE(FeatureSummary)
INCLUDE( cmake/PlaYUVerVersion.cmake )
# must go before the project command
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
@@ -22,27 +28,63 @@ IF(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
ENDIF()
SET( CMAKE_CXX_FLAGS "" )
######################################################################################
# Variables
######################################################################################
ADD_OPTION(PLAYUVER_LONGVERSIONNAME "Use long version name in deb" OFF )
ADD_OPTION(PLAYUVER_WERROR "Warnings as errors" OFF )
ADD_OPTION(PLAYUVER_THREADED_MODULES "Use threads for modules" OFF )
ADD_OPTION(USE_QT4 "Build with QT4" OFF )
ADD_OPTION(USE_FERVOR "Add Fervor support" OFF )
OPTION( USE_FERVOR "Add Fervor support" OFF )
OPTION( PLAYUVER_LONGVERSIONNAME "Use long version name in deb" OFF )
OPTION( PLAYUVER_WERROR "Warnings as errors" OFF )
OPTION( PLAYUVER_THREADED_MODULES "Use threads for modules" OFF )
OPTION( USE_QT4 "Build with QT4" OFF )
ADD_FEATURE_INFO(Fervor USE_FERVOR "Fervor lib includes check for updates feature.")
ADD_FEATURE_INFO(WErrors PLAYUVER_WERROR "Warnings as errors" )
######################################################################################
# Dependencies
######################################################################################
INCLUDE( cmake/LibFervor.cmake )
INCLUDE( cmake/LibQT.cmake )
INCLUDE( cmake/LibFFmpeg.cmake )
INCLUDE( cmake/LibOpenCV.cmake )
OPTION( USE_OPENCV "Add OpenCV support" OFF )
IF( USE_OPENCV )
FIND_PACKAGE( OpenCV )
SET(USE_OPENCV ${OpenCV_FOUND})
ENDIF()
SET_PACKAGE_PROPERTIES(OpenCV PROPERTIES URL "http://opencv.willowgarage.com" DESCRIPTION "OpenCV library support in PlaYUVerFrame" TYPE OPTIONAL)
OPTION( USE_FFMPEG "Add FFMPEG support" OFF )
IF( USE_FFMPEG )
FIND_PACKAGE( OpenCV )
SET(USE_FFMPEG ${FFMPEG_FOUND})
ENDIF()
SET_PACKAGE_PROPERTIES(FFmpeg PROPERTIES URL "http://ffmpeg.org/" DESCRIPTION "Libav library support in PlaYUVerStream" TYPE OPTIONAL)
#####################################################################################
# Qt library
######################################################################################
IF( USE_QT4 )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT4" )
FIND_PACKAGE( Qt4 REQUIRED QtCore QtGui QtNetwork QtWebKit )
IF( NOT QT4_FOUND )
SET(USE_QT4 FALSE)
ELSE()
INCLUDE( ${QT_USE_FILE} )
ADD_DEFINITIONS( ${QT_DEFINITIONS} )
SET( QT_LINKER_LIBS ${QT_LIBRARIES} )
ENDIF()
ENDIF()
IF( NOT USE_QT4 )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT5" )
FIND_PACKAGE( Qt5 REQUIRED Core Gui Widgets )
INCLUDE_DIRECTORIES( ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} )
# Add compiler flags for building executables (-fPIE)
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}" )
LIST(APPEND QT_LINKER_LIBS Qt5::Core Qt5::Gui Qt5::Widgets )
LIST(APPEND QT_MODULES Core Gui Widgets )
ENDIF()
######################################################################################
# Configuration
@@ -59,6 +101,7 @@ IF (NOT CMAKE_BUILD_TYPE)
ENDIF()
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
IF( PLAYUVER_WERROR )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
ENDIF()
@@ -71,11 +114,11 @@ ADD_SUBDIRECTORY( modules )
ADD_SUBDIRECTORY( app )
IF( WIN32 )
SET(MSVC_DLL_DIR "MSVC_DLL_DIR" CACHE PATH "Where to find MSVC dlls")
INSTALL(FILES ${MSVC_DLL_DIR}/msvcr120.dll DESTINATION bin )
INSTALL(FILES ${MSVC_DLL_DIR}/msvcp120.dll DESTINATION bin )
INCLUDE( cmake/Win32.cmake )
ENDIF()
######################################################################################
# Create deb package
######################################################################################
@@ -88,6 +131,29 @@ SET(CPACK_PACKAGE_VERSION_PATCH ${PLAYUVER_VERSION_PATH})
SET(CPACK_PACKAGE_VERSION ${PLAYUVER_VERSION})
SET(CPACK_PACKAGE_ARCHITECTURE "amd64")
IF( USE_QT4 )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT4" )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libqtcore4 (>= 4:4.8.5), libqtgui4 (>= 4:4.8.5)" )
SET( APPEND_VERSION "${APPEND_VERSION}_wQT4" )
ELSE()
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT5" )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5core5a, libqt5gui5, libqt5widgets5")
SET( APPEND_VERSION "${APPEND_VERSION}_wQT5" )
ENDIF()
IF( USE_OPENCV )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}OPENCV" )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ",")
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libopencv-dev (>= 2.4.8)")
ENDIF()
IF( USE_FFMPEG )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}FFMPEG" )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ",")
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libavformat54, libavcodec54, libavutil52")
SET( APPEND_VERSION "${APPEND_VERSION}_wFFmpeg" )
ENDIF()
IF( UNIX )
SET(CPACK_GENERATOR "DEB;ZIP")
SET(OS "Linux")
@@ -115,15 +181,14 @@ INCLUDE(CPack)
######################################################################################
# Final information dump
######################################################################################
status("Version:" "${PLAYUVER_VERSION}")
status("Configuration:")
status(" Build type:" "${CMAKE_BUILD_TYPE}")
status(" Build flags:" "${CMAKE_CXX_FLAGS}")
status(" Warnings as errors:" USE_WERROR THEN YES ELSE NO)
status(" Package Name:" "${PACKAGE_FILE_NAME}" )
status("Dependencies:")
status(" QT:" USE_QT4 THEN "QT4" ELSE "QT5")
status(" OpenCV:" USE_OPENCV THEN YES ELSE NO)
status(" FFMPEG:" USE_FFMPEG THEN YES ELSE NO)
status(" Fervor:" USE_FERVOR THEN YES ELSE NO)
status(" Pixfc-sse:" USE_PIXFC THEN YES ELSE NO)
MESSAGE("")
MESSAGE( STATUS "${PROJECT_NAME} INFORMATION" )
MESSAGE( STATUS "Version: " "${PLAYUVER_VERSION}" )
MESSAGE( STATUS "Configuration:" )
MESSAGE( STATUS " Build type:" "${CMAKE_BUILD_TYPE}" )
MESSAGE( STATUS " Build flags:" "${CMAKE_CXX_FLAGS}" )
MESSAGE( STATUS " Package Name:" "${PACKAGE_FILE_NAME}" )
FEATURE_SUMMARY(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
+42 -1
View File
@@ -36,6 +36,47 @@ set(plaYUver_App_RCC
resources/playuver.qrc
)
IF( USE_FERVOR )
IF(EXISTS ${FERVOR_DIR} )
SET( FERVOR_APP_NAME ${PROJECT_NAME} )
SET( FERVOR_APP_VERSION ${PLAYUVER_VERSION} )
ADD_SUBDIRECTORY( ${FERVOR_DIR} )
INCLUDE_DIRECTORIES( ${FERVOR_DIR} )
LIST(APPEND APP_LINKER_LIBS "Fervor" )
FIND_PACKAGE( Qt5 REQUIRED Network WebKit WebKitWidgets )
LIST(APPEND QT_LINKER_LIBS Qt5::Network Qt5::Webkit Qt5::WebKitWidgets )
LIST(APPEND QT_MODULES Network WebKit WebKitWidgets )
LIST(APPEND LINKER_LIBS ${FERVOR_DEPENDENCIES} )
INCLUDE_DIRECTORIES( ${FERVOR_INCLUDE_DIRS} )
SET(QT_USE_QTNETWORK true)
SET(QT_USE_QTWEBKIT true)
IF( WIN32 )
INSTALL(FILES ${QT_DIR}/bin/Qt5Network${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5WebKit${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5WebKitWidgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Quick${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Qml${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Multimedia${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Sql${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Positioning${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Sensors${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5MultimediaWidgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5OpenGL${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5PrintSupport${QT_DLL_POSTFIX}.dll DESTINATION bin )
ENDIF()
ELSE()
MESSAGE( "Fervor lib source code is not find in ${FERVOR_DIR}... Disabling it!" )
SET( USE_FERVOR False )
ENDIF()
ENDIF()
IF( USE_QT4 )
QT4_WRAP_UI( plaYUver_App_UI_Wrap ${plaYUver_App_UI} )
QT4_ADD_RESOURCES( plaYUver_App_RCC ${plaYUver_App_RCC} )
@@ -66,7 +107,7 @@ ENDIF()
ADD_EXECUTABLE( ${PROJECT_NAME} ${plaYUver_App_SRCS} ${HEADERS_MOC_FILES} ${plaYUver_App_UI_Wrap} ${plaYUver_App_RCC} ${WINDOWS_RES_FILE} )
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} PlaYUVerLib PlaYUVerModules ${LINKER_LIBS} )
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} PlaYUVerLib PlaYUVerModules ${QT_LINKER_LIBS} ${APP_LINKER_LIBS} )
IF( NOT USE_QT4 )
QT5_USE_MODULES( ${PROJECT_NAME} ${QT_MODULES} )
-110
View File
@@ -1,110 +0,0 @@
######################################################################################
# Macros definition
######################################################################################
macro(ADD_OPTION variable description value)
set(__value ${value})
set(__condition "")
set(__varname "__value")
foreach(arg ${ARGN})
if(arg STREQUAL "IF" OR arg STREQUAL "if")
set(__varname "__condition")
else()
list(APPEND ${__varname} ${arg})
endif()
endforeach()
unset(__varname)
if("${__condition}" STREQUAL "")
set(__condition 2 GREATER 1)
endif()
if(${__condition})
if("${__value}" MATCHES ";")
if(${__value})
option(${variable} "${description}" ON)
else()
option(${variable} "${description}" OFF)
endif()
elseif(DEFINED ${__value})
if(${__value})
option(${variable} "${description}" ON)
else()
option(${variable} "${description}" OFF)
endif()
else()
option(${variable} "${description}" ${__value})
endif()
else()
unset(${variable} CACHE)
endif()
unset(__condition)
unset(__value)
endmacro()
# Status report function.
# Automatically align right column and selects text based on condition.
# Usage:
# status(<text>)
# status(<heading> <value1> [<value2> ...])
# status(<heading> <condition> THEN <text for TRUE> ELSE <text for FALSE> )
function(status text)
set(status_cond)
set(status_then)
set(status_else)
set(status_current_name "cond")
foreach(arg ${ARGN})
if(arg STREQUAL "THEN")
set(status_current_name "then")
elseif(arg STREQUAL "ELSE")
set(status_current_name "else")
else()
list(APPEND status_${status_current_name} ${arg})
endif()
endforeach()
if(DEFINED status_cond)
set(status_placeholder_length 32)
string(RANDOM LENGTH ${status_placeholder_length} ALPHABET " " status_placeholder)
string(LENGTH "${text}" status_text_length)
if(status_text_length LESS status_placeholder_length)
string(SUBSTRING "${text}${status_placeholder}" 0 ${status_placeholder_length} status_text)
elseif(DEFINED status_then OR DEFINED status_else)
message(STATUS ${text})
set(status_text "${status_placeholder}")
else()
set(status_text "${text}")
endif()
if(DEFINED status_then OR DEFINED status_else)
if(${status_cond})
string(REPLACE ";" " " status_then "${status_then}")
string(REGEX REPLACE "^[ \t]+" "" status_then "${status_then}")
message(STATUS "${status_text} ${status_then}")
else()
string(REPLACE ";" " " status_else "${status_else}")
string(REGEX REPLACE "^[ \t]+" "" status_else "${status_else}")
message(STATUS "${status_text} ${status_else}")
endif()
else()
string(REPLACE ";" " " status_cond "${status_cond}")
string(REGEX REPLACE "^[ \t]+" "" status_cond "${status_cond}")
message(STATUS "${status_text} ${status_cond}")
endif()
else()
message(STATUS "${text}")
endif()
endfunction()
macro(ADD_MODULE name file )
set(__modulename "Module${name}")
ADD_OPTION(MODULE_${name} "Use module ${name}" ON )
if( MODULE_${name} )
list(APPEND plaYUver_Mod_SRCS ${file} )
LIST(APPEND MODULES_LIST ${name} )
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${file}.h\"\n")
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "\\\n REGISTER_MODULE( ${name} ); ")
endif()
unset(__modulename)
endmacro()
+103
View File
@@ -0,0 +1,103 @@
# - Try to find FFMPEG
# Once done this will define
#
# FFMPEG_FOUND - system has FFMPEG
# FFMPEG_INCLUDE_DIR - the include directories
# FFMPEG_LIBRARY_DIR - the directory containing the libraries
# FFMPEG_LIBRARIES - link these to use FFMPEG
# FFMPEG_SWSCALE_FOUND - FFMPEG also has SWSCALE
#
# SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h avdevice.h )
SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h )
SET( FFMPEG_PATH_SUFFIXES libavformat libavcodec libavutil libavdevice libffmpeg )
SET( FFMPEG_SWS_HEADERS swscale.h )
SET( FFMPEG_SWS_PATH_SUFFIXES libswscale )
SET( FFMPEG_LIBRARIES avformat avcodec avutil avdevice )
SET( FFMPEG_SWS_LIBRARIES swscale )
INCLUDE(FindPkgConfig)
if ( PKG_CONFIG_FOUND )
pkg_check_modules( AVFORMAT libavformat )
pkg_check_modules( AVCODEC libavcodec )
pkg_check_modules( AVUTIL libavutil )
pkg_check_modules( AVDEVICE libavdevice )
pkg_check_modules( SWSCALE libswscale )
endif ( PKG_CONFIG_FOUND )
SET( FFMPEG_LIBRARY_DIR ${AVFORMAT_LIBRARY_DIRS}
${AVCODEC_LIBRARY_DIRS}
${AVUTIL_LIBRARY_DIRS}
${AVDEVICE_LIBRARY_DIRS} )
SET( FFMPEG_INCLUDE_PATHS ${AVFORMAT_INCLUDE_DIRS}
${AVCODEC_INCLUDE_DIRS}
${AVUTIL_INCLUDE_DIRS}
${AVDEVICE_INCLUDE_DIRS} )
# add in swscale if found
IF ( SWSCALE_FOUND )
SET( FFMPEG_LIBRARY_DIR ${FFMPEG_LIBRARY_DIR}
${SWSCALE_LIBRARY_DIRS} )
SET( FFMPEG_INCLUDE_PATHS ${FFMPEG_INCLUDE_PATHS}
${SWSCALE_INCLUDE_DIRS} )
SET( FFMPEG_HEADERS ${FFMPEG_HEADERS}
${FFMPEG_SWS_HEADERS} )
SET( FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
${FFMPEG_SWS_PATH_SUFFIXES} )
SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}
${FFMPEG_SWS_LIBRARIES} )
ENDIF ( SWSCALE_FOUND )
# find includes
SET( INC_SUCCESS 0 )
SET( TMP_ TMP-NOTFOUND )
SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_PATHS} )
FOREACH( INC_ ${FFMPEG_HEADERS} )
message( "checking: " ${INC_} )
FIND_PATH( TMP_ ${INC_}
PATHS ${FFMPEG_INCLUDE_PATHS}
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} )
IF ( TMP_ )
message( "found: " ${TMP_} )
MATH( EXPR INC_SUCCESS ${INC_SUCCESS}+1 )
SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} ${TMP_} )
ENDIF ( TMP_ )
SET( TMP_ TMP-NOTFOUND )
ENDFOREACH( INC_ )
# clear out duplicates
if(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "")
LIST( REMOVE_DUPLICATES FFMPEG_INCLUDE_DIR )
endif(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "")
if(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "")
LIST( REMOVE_DUPLICATES FFMPEG_LIBRARY_DIR )
endif(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "")
# find the full paths of the libraries
SET( TMP_ TMP-NOTFOUND )
IF ( NOT WIN32 )
FOREACH( LIB_ ${FFMPEG_LIBRARIES} )
FIND_LIBRARY( TMP_ NAMES ${LIB_} PATHS ${FFMPEG_LIBRARY_DIR} )
IF ( TMP_ )
SET( FFMPEG_LIBRARIES_FULL ${FFMPEG_LIBRARIES_FULL} ${TMP_} )
ENDIF ( TMP_ )
SET( TMP_ TMP-NOTFOUND )
ENDFOREACH( LIB_ )
SET ( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES_FULL} )
ENDIF( NOT WIN32 )
unset(${TMP_})
LIST( LENGTH FFMPEG_HEADERS LIST_SIZE_ )
SET( FFMPEG_FOUND FALSE )
SET( FFMPEG_SWSCALE_FOUND FALSE )
IF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} )
SET( FFMPEG_FOUND TRUE )
SET( FFMPEG_SWSCALE_FOUND ${SWSCALE_FOUND} )
ENDIF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} )
-126
View File
@@ -1,126 +0,0 @@
# - Try to find FFMPEG
# Once done this will define
#
# FFMPEG_FOUND - system has FFMPEG
# FFMPEG_INCLUDE_DIR - the include directories
# FFMPEG_LIBRARY_DIR - the directory containing the libraries
# FFMPEG_LIBRARIES - link these to use FFMPEG
# FFMPEG_SWSCALE_FOUND - FFMPEG also has SWSCALE
#
IF( USE_FFMPEG )
# SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h avdevice.h )
SET( FFMPEG_HEADERS avformat.h avcodec.h avutil.h )
SET( FFMPEG_PATH_SUFFIXES libavformat libavcodec libavutil libavdevice libffmpeg )
SET( FFMPEG_SWS_HEADERS swscale.h )
SET( FFMPEG_SWS_PATH_SUFFIXES libswscale )
SET( FFMPEG_LIBRARIES avformat avcodec avutil avdevice )
SET( FFMPEG_SWS_LIBRARIES swscale )
INCLUDE(FindPkgConfig)
if ( PKG_CONFIG_FOUND )
pkg_check_modules( AVFORMAT libavformat )
pkg_check_modules( AVCODEC libavcodec )
pkg_check_modules( AVUTIL libavutil )
pkg_check_modules( AVDEVICE libavdevice )
pkg_check_modules( SWSCALE libswscale )
endif ( PKG_CONFIG_FOUND )
SET( FFMPEG_LIBRARY_DIR ${AVFORMAT_LIBRARY_DIRS}
${AVCODEC_LIBRARY_DIRS}
${AVUTIL_LIBRARY_DIRS}
${AVDEVICE_LIBRARY_DIRS} )
SET( FFMPEG_INCLUDE_PATHS ${AVFORMAT_INCLUDE_DIRS}
${AVCODEC_INCLUDE_DIRS}
${AVUTIL_INCLUDE_DIRS}
${AVDEVICE_INCLUDE_DIRS} )
# add in swscale if found
IF ( SWSCALE_FOUND )
SET( FFMPEG_LIBRARY_DIR ${FFMPEG_LIBRARY_DIR}
${SWSCALE_LIBRARY_DIRS} )
SET( FFMPEG_INCLUDE_PATHS ${FFMPEG_INCLUDE_PATHS}
${SWSCALE_INCLUDE_DIRS} )
SET( FFMPEG_HEADERS ${FFMPEG_HEADERS}
${FFMPEG_SWS_HEADERS} )
SET( FFMPEG_PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES}
${FFMPEG_SWS_PATH_SUFFIXES} )
SET( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES}
${FFMPEG_SWS_LIBRARIES} )
ENDIF ( SWSCALE_FOUND )
# find includes
SET( INC_SUCCESS 0 )
SET( TMP_ TMP-NOTFOUND )
SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_PATHS} )
FOREACH( INC_ ${FFMPEG_HEADERS} )
message( "checking: " ${INC_} )
FIND_PATH( TMP_ ${INC_}
PATHS ${FFMPEG_INCLUDE_PATHS}
PATH_SUFFIXES ${FFMPEG_PATH_SUFFIXES} )
IF ( TMP_ )
message( "found: " ${TMP_} )
MATH( EXPR INC_SUCCESS ${INC_SUCCESS}+1 )
SET( FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} ${TMP_} )
ENDIF ( TMP_ )
SET( TMP_ TMP-NOTFOUND )
ENDFOREACH( INC_ )
# clear out duplicates
if(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "")
LIST( REMOVE_DUPLICATES FFMPEG_INCLUDE_DIR )
endif(NOT "${FFMPEG_INCLUDE_DIR}" MATCHES "")
if(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "")
LIST( REMOVE_DUPLICATES FFMPEG_LIBRARY_DIR )
endif(NOT "${FFMPEG_LIBRARY_DIR}" MATCHES "")
# find the full paths of the libraries
SET( TMP_ TMP-NOTFOUND )
IF ( NOT WIN32 )
FOREACH( LIB_ ${FFMPEG_LIBRARIES} )
FIND_LIBRARY( TMP_ NAMES ${LIB_} PATHS ${FFMPEG_LIBRARY_DIR} )
IF ( TMP_ )
SET( FFMPEG_LIBRARIES_FULL ${FFMPEG_LIBRARIES_FULL} ${TMP_} )
ENDIF ( TMP_ )
SET( TMP_ TMP-NOTFOUND )
ENDFOREACH( LIB_ )
SET ( FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES_FULL} )
ENDIF( NOT WIN32 )
unset(TMP_)
LIST( LENGTH FFMPEG_HEADERS LIST_SIZE_ )
SET( FFMPEG_FOUND FALSE )
SET( FFMPEG_SWSCALE_FOUND FALSE )
IF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} )
SET( FFMPEG_FOUND TRUE )
SET( FFMPEG_SWSCALE_FOUND ${SWSCALE_FOUND} )
ENDIF ( ${INC_SUCCESS} EQUAL ${LIST_SIZE_} )
IF( NOT WIN32 )
IF( NOT FFMPEG_FOUND )
SET( USE_FFMPEG FALSE )
ELSE()
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}FFMPEG" )
INCLUDE_DIRECTORIES( ffmpeg )
#SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS )
INCLUDE_DIRECTORIES(${FFMPEG_INCLUDE_DIR} ${FFMPEG_INCLUDE_DIRS})
ADD_LIBRARY( FFmpeg lib/ffmpeg/LibAvContextHandle.cpp )
TARGET_LINK_LIBRARIES( FFmpeg ${FFMPEG_LIBRARIES} )
LIST(APPEND LINKER_LIBS FFmpeg )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ",")
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libavformat54, libavcodec54, libavutil52")
SET( APPEND_VERSION "${APPEND_VERSION}_wFFmpeg" )
ENDIF()
ELSE()
SET( USE_FFMPEG FALSE )
ENDIF()
ENDIF()
-48
View File
@@ -1,48 +0,0 @@
#####################################################################################
# Pixfc-sse library cmake file
######################################################################################
# https://github.com/pixlra/fervor
# git clone https://github.com/pixlra/fervor.git source/lib
SET( FERVOR_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source/lib/fervor )
IF( USE_FERVOR )
IF(EXISTS ${FERVOR_DIR} )
SET( FERVOR_APP_NAME ${PROJECT_NAME} )
SET( FERVOR_APP_VERSION ${PLAYUVER_VERSION} )
ADD_SUBDIRECTORY( ${FERVOR_DIR} )
INCLUDE_DIRECTORIES( ${FERVOR_DIR} )
LIST(APPEND LINKER_LIBS "Fervor" )
FIND_PACKAGE( Qt5Network REQUIRED )
FIND_PACKAGE( Qt5WebKit REQUIRED )
FIND_PACKAGE( Qt5WebKitWidgets REQUIRED )
LIST(APPEND LINKER_LIBS ${FERVOR_DEPENDENCIES} )
INCLUDE_DIRECTORIES( ${FERVOR_INCLUDE_DIRS} )
SET(QT_USE_QTNETWORK true)
SET(QT_USE_QTWEBKIT true)
IF( WIN32 )
INSTALL(FILES ${QT_DIR}/bin/Qt5Network${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5WebKit${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5WebKitWidgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Quick${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Qml${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Multimedia${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Sql${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Positioning${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Sensors${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5MultimediaWidgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5OpenGL${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5PrintSupport${QT_DLL_POSTFIX}.dll DESTINATION bin )
ENDIF()
LIST(APPEND QT_MODULES Network WebKit WebKitWidgets )
ELSE()
MESSAGE( "Fervor lib source code is not find in ${FERVOR_DIR}... Disabling it!" )
SET( USE_FERVOR False )
ENDIF()
ENDIF()
-55
View File
@@ -1,55 +0,0 @@
#####################################################################################
# Qt library cmake file
######################################################################################
IF( WIN32 )
SET(QT_DIR "QT-Dir" CACHE PATH "Where to find QT Lib on Windows")
SET(QT_DLL_POSTFIX "" CACHE STRING "Postfix to dll's name for debug" )
SET(CMAKE_PREFIX_PATH ${QT_DIR} )
ENDIF()
IF( USE_QT4 )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT4" )
FIND_PACKAGE( Qt4 REQUIRED QtCore QtGui QtNetwork QtWebKit )
IF( NOT QT4_FOUND )
SET(USE_QT4 FALSE)
ELSE()
INCLUDE( ${QT_USE_FILE} )
ADD_DEFINITIONS( ${QT_DEFINITIONS} )
LIST(APPEND LINKER_LIBS ${QT_LIBRARIES} )
ENDIF()
ENDIF()
IF( NOT USE_QT4 )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}QT5" )
FIND_PACKAGE( Qt5Core REQUIRED )
FIND_PACKAGE( Qt5Gui REQUIRED )
FIND_PACKAGE( Qt5Widgets REQUIRED )
INCLUDE_DIRECTORIES( ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} )
# Add compiler flags for building executables (-fPIE)
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}" )
LIST(APPEND LINKER_LIBS ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Widgets_LIBRARIES} )
LIST(APPEND QT_MODULES Core Gui Widgets )
IF( WIN32 )
INSTALL(FILES ${QT_DIR}/bin/Qt5Core${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Gui${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Widgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/libGLESv2${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/libEGL${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icudt52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icuin52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icuuc52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qminimal.dll DESTINATION bin/platforms )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qoffscreen.dll DESTINATION bin/platforms )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qwindows.dll DESTINATION bin/platforms )
ENDIF()
ENDIF()
IF( USE_QT4 )
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libqtcore4 (>= 4:4.8.5), libqtgui4 (>= 4:4.8.5)" )
SET( APPEND_VERSION "${APPEND_VERSION}_wQT4" )
ELSE()
LIST(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5core5a, libqt5gui5, libqt5widgets5")
SET( APPEND_VERSION "${APPEND_VERSION}_wQT5" )
ENDIF()
+22 -9
View File
@@ -1,20 +1,33 @@
#####################################################################################
# OpenCV library cmake file
# DLLs and Win32 specific code
######################################################################################
IF( USE_OPENCV )
FIND_PACKAGE( OpenCV )
IF( NOT OpenCV_FOUND)
SET(USE_OPENCV FALSE)
ELSE()
LIST(APPEND LINKER_LIBS ${OpenCV_LIBRARIES} )
ENDIF()
SET(MSVC_DLL_DIR "MSVC_DLL_DIR" CACHE PATH "Where to find MSVC dlls")
INSTALL(FILES ${MSVC_DLL_DIR}/msvcr120.dll DESTINATION bin )
INSTALL(FILES ${MSVC_DLL_DIR}/msvcp120.dll DESTINATION bin )
SET(QT_DIR "QT-Dir" CACHE PATH "Where to find QT Lib on Windows")
SET(QT_DLL_POSTFIX "" CACHE STRING "Postfix to dll's name for debug" )
SET(CMAKE_PREFIX_PATH ${QT_DIR} )
IF( NOT USE_QT4 )
INSTALL(FILES ${QT_DIR}/bin/Qt5Core${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Gui${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/Qt5Widgets${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/libGLESv2${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/libEGL${QT_DLL_POSTFIX}.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icudt52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icuin52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/bin/icuuc52.dll DESTINATION bin )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qminimal.dll DESTINATION bin/platforms )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qoffscreen.dll DESTINATION bin/platforms )
INSTALL(FILES ${QT_DIR}/plugins/platforms/qwindows.dll DESTINATION bin/platforms )
ENDIF()
IF( USE_OPENCV )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}OPENCV" )
SET( DEPENDENCIES_STRING "${DEPENDENCIES_STRING}OPENCV" )
IF( WIN32 )
SET(OpenCV_DLL_DIR "${OpenCV_DIR}/bin" CACHE PATH "Where to find OpenCV dlls")
INSTALL(FILES ${OpenCV_DLL_DIR}/opencv_core${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}.dll DESTINATION bin )
+15 -6
View File
@@ -4,10 +4,6 @@
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
ADD_OPTION(USE_OPENCV "Add OpenCV support" OFF )
ADD_OPTION(USE_FFMPEG "Add FFMPEG support" OFF )
ADD_OPTION(USE_PIXFC "Add PIXFC support" OFF )
set(plaYUver_Lib_SRCS
# Frame
PlaYUVerFrame.cpp
@@ -16,17 +12,30 @@ set(plaYUver_Lib_SRCS
PlaYUVerStream.cpp
)
IF( USE_FFMPEG )
LIST( APPEND plaYUver_Lib_SRCS LibAvContextHandle.cpp )
ENDIF()
set(plaYUver_Lib_HEADERS
PlaYUVerFrame.h
PlaYUVerStream.h
)
INCLUDE( LibPixfc.cmake )
# OPTION( USE_PIXFC "Add PIXFC support" OFF )
# IF( USE_PIXFC )
# IF(EXISTS "${EXTERNAL_SRC}/pixfc-sse/build/src/libpixfc-sse.a")
# INCLUDE_DIRECTORIES( ${EXTERNAL_SRC}/pixfc-sse/include )
# LIST(APPEND LINKER_LIBS ${EXTERNAL_SRC}/pixfc-sse/build/src/libpixfc-sse.a )
# LIST(APPEND LINKER_LIBS rt)
# ELSE()
# SET( USE_PIXFC OFF )
# ENDIF()
# ENDIF()
CONFIGURE_FILE( PlaYUVerConfig.cmake.in ${CMAKE_BINARY_DIR}/PlaYUVerConfig.cmake @ONLY)
ADD_LIBRARY( PlaYUVerLib ${plaYUver_Lib_SRCS} )
TARGET_LINK_LIBRARIES( PlaYUVerLib ${LINKER_LIBS} )
TARGET_LINK_LIBRARIES( PlaYUVerLib ${FFMPEG_LIBRARIES} ${OpenCV_LIBRARIES} )
INSTALL(FILES ${plaYUver_Lib_HEADERS} DESTINATION include )
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libPlaYUVerLib.a DESTINATION lib )
@@ -24,8 +24,8 @@
#include <cstdio>
#include "LibAvContextHandle.h"
#include "lib/PlaYUVerFrame.h"
#include "lib/PlaYUVerFramePixelFormats.h"
#include "PlaYUVerFrame.h"
#include "PlaYUVerFramePixelFormats.h"
#include "LibMemory.h"
namespace plaYUVer
@@ -44,7 +44,7 @@ extern "C"
#include <libavformat/avformat.h>
}
#include "lib/PlaYUVerDefs.h"
#include "PlaYUVerDefs.h"
namespace plaYUVer
{
-16
View File
@@ -1,16 +0,0 @@
#####################################################################################
# Pixfc-sse library cmake file
######################################################################################
# https://code.google.com/p/pixfc-sse/
# svn checkout http://pixfc-sse.googlecode.com/svn/trunk/ pixfc-sse
# Add to folder external
IF( USE_PIXFC )
IF(EXISTS "${EXTERNAL_SRC}/pixfc-sse/build/src/libpixfc-sse.a")
INCLUDE_DIRECTORIES( ${EXTERNAL_SRC}/pixfc-sse/include )
LIST(APPEND LINKER_LIBS ${EXTERNAL_SRC}/pixfc-sse/build/src/libpixfc-sse.a )
LIST(APPEND LINKER_LIBS rt)
ELSE()
SET( USE_PIXFC OFF )
ENDIF()
ENDIF()
+13 -6
View File
@@ -4,9 +4,19 @@
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR} )
# set(plaYUver_Mod_SRCS
# PlaYUVerModuleIf.cpp
# )
MACRO(ADD_MODULE name file )
set(__modulename "Module${name}")
OPTION(MODULE_${name} "Use module ${name}" ON )
ADD_FEATURE_INFO(${name} MODULE_${name} "Module ${name}" )
if( MODULE_${name} )
list(APPEND plaYUver_Mod_SRCS ${file} )
LIST(APPEND MODULES_LIST ${name} )
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${file}.h\"\n")
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "\\\n REGISTER_MODULE( ${name} ); ")
endif()
unset(__modulename)
ENDMACRO()
#
@@ -42,6 +52,3 @@ file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListMacro.h "\n#endif // __MO
file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#endif // __MODULESLISTHEADER_H__\n" )
ADD_LIBRARY( PlaYUVerModules ${plaYUver_Mod_SRCS} )
status("Modules List:" "${MODULES_LIST}" )