241 lines
8.5 KiB
CMake
241 lines
8.5 KiB
CMake
###
|
|
### CMakeLists for calyp
|
|
###
|
|
|
|
cmake_minimum_required( VERSION 3.2.0 )
|
|
|
|
######################################################################################
|
|
# CMake functions
|
|
######################################################################################
|
|
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
|
|
INCLUDE( cmake/ModulesFct.cmake )
|
|
INCLUDE(FeatureSummary)
|
|
INCLUDE(GNUInstallDirs)
|
|
|
|
######################################################################################
|
|
# Project Definition
|
|
######################################################################################
|
|
|
|
SET( PROJECT_NAME "calyp" CACHE INTERNAL "" FORCE )
|
|
SET( PROJECT_LIBRARY "Calyp" CACHE INTERNAL "" FORCE )
|
|
|
|
|
|
PROJECT( ${PROJECT_NAME} )
|
|
SET( CALYP_VERSION_MAJOR "1" )
|
|
SET( CALYP_VERSION_MINOR "1" )
|
|
SET( CALYP_VERSION_PATCH "0" )
|
|
SET( CALYP_VERSION "${CALYP_VERSION_MAJOR}.${CALYP_VERSION_MINOR}.${CALYP_VERSION_PATCH}" CACHE INTERNAL "" FORCE )
|
|
|
|
######################################################################################
|
|
# Variables
|
|
######################################################################################
|
|
|
|
OPTION( BUILD_APP "Build GUI Application" ON )
|
|
OPTION( BUILD_TOOLS "Build Command Line Application" ON )
|
|
OPTION( BUILD_EXAMPLES "Build Examples" OFF )
|
|
OPTION( BUILD_DOC "Build Documentation" OFF )
|
|
OPTION( BUILD_TESTS "Build Google Tests" OFF )
|
|
|
|
OPTION( USE_FERVOR "Add Fervor support" OFF )
|
|
|
|
OPTION( USE_DYNLOAD "Use dynamic load of modules" ON )
|
|
OPTION( USE_SSE "Build with SSE support" OFF )
|
|
OPTION( USE_WERROR "Warnings as errors" OFF )
|
|
OPTION( USE_STATIC "Use static libs" OFF )
|
|
|
|
|
|
######################################################################################
|
|
# Release configuration
|
|
######################################################################################
|
|
|
|
# To be switched on when releasing.
|
|
OPTION(RELEASE_BUILD "Remove Git revision from program version (use for stable releases)" ON)
|
|
|
|
# Get current version.
|
|
set(CALYP_VERSION_STRING "${CALYP_VERSION}")
|
|
if(NOT RELEASE_BUILD AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
|
|
# Probably a Git workspace; determine the revision.
|
|
FIND_PACKAGE(Git QUIET)
|
|
if(GIT_FOUND)
|
|
exec_program(${GIT_EXECUTABLE}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
ARGS "describe --tags"
|
|
OUTPUT_VARIABLE CALYP_GIT_REVISION
|
|
RETURN_VALUE TAG_RESULT
|
|
)
|
|
# git describe --tags failed; maybe the repository was checked with depth=1.
|
|
if(NOT ${TAG_RESULT} EQUAL 0)
|
|
exec_program(${GIT_EXECUTABLE}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
ARGS "describe --always"
|
|
OUTPUT_VARIABLE CALYP_GIT_REVISION
|
|
)
|
|
endif()
|
|
message(STATUS "Calyp Git revision: ${CALYP_GIT_REVISION}")
|
|
set(CALYP_VERSION_STRING "${CALYP_VERSION} (rev. ${CALYP_GIT_REVISION})")
|
|
else()
|
|
message(STATUS "Calyp Git revision could not be determined")
|
|
endif()
|
|
endif()
|
|
|
|
SET(UPDATE_CHANNEL "stable" CACHE STRING "Update channel" )
|
|
# CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/CalypUpdate.xml.in ${CMAKE_CURRENT_BINARY_DIR}/CalypUpdate-${UPDATE_CHANNEL}.xml )
|
|
|
|
|
|
######################################################################################
|
|
# Dependencies
|
|
######################################################################################
|
|
|
|
IF( BUILD_DOC )
|
|
FIND_PACKAGE(Doxygen)
|
|
SET( BUILD_DOC ${Doxygen_FOUND} )
|
|
ENDIF()
|
|
SET_PACKAGE_PROPERTIES(Doxygen PROPERTIES URL "http://www.doxygen.org/" DESCRIPTION "Doxygen" TYPE OPTIONAL)
|
|
|
|
|
|
IF( BUILD_TESTS )
|
|
FIND_PACKAGE(GTest)
|
|
SET( BUILD_DOC ${GTEST_FOUND} )
|
|
IF( GTEST_FOUND )
|
|
ENABLE_TESTING()
|
|
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
OPTION( USE_OPENCV "Add OpenCV support" ON )
|
|
IF( USE_OPENCV )
|
|
|
|
FIND_PACKAGE( OpenCV COMPONENTS core highgui imgproc video )
|
|
IF( ${OpenCV_FOUND} )
|
|
SET(USE_OPENCV TRUE )
|
|
LIST(APPEND OPENCV_MODULES core highgui imgproc video )
|
|
FIND_PACKAGE( OpenCV COMPONENTS videoio photo )
|
|
IF( ${OPENCV_VIDEOIO_FOUND} )
|
|
LIST(APPEND OPENCV_MODULES videoio )
|
|
ENDIF()
|
|
IF( ${OPENCV_PHOTO_FOUND} )
|
|
LIST(APPEND OPENCV_MODULES photo )
|
|
ENDIF()
|
|
ELSE()
|
|
SET(USE_OPENCV FALSE )
|
|
ENDIF()
|
|
ENDIF()
|
|
SET_PACKAGE_PROPERTIES(OpenCV PROPERTIES URL "http://opencv.willowgarage.com" DESCRIPTION "OpenCV library support in CalypFrame" TYPE OPTIONAL)
|
|
|
|
OPTION( USE_FFMPEG "Add FFMPEG support" ON )
|
|
IF( USE_FFMPEG )
|
|
FIND_PACKAGE( FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE )
|
|
IF( "${AVCODEC_VERSION}" VERSION_LESS "56.0.0" )
|
|
SET(FFMPEG_FOUND FALSE )
|
|
SET(FFmpeg_FOUND FALSE )
|
|
ENDIF()
|
|
SET(USE_FFMPEG ${FFMPEG_FOUND})
|
|
ENDIF()
|
|
SET_PACKAGE_PROPERTIES(FFmpeg PROPERTIES URL "http://ffmpeg.org/" DESCRIPTION "Libav library support in CalypStream" TYPE OPTIONAL)
|
|
|
|
IF( WIN32 )
|
|
SET( USE_STATIC ON )
|
|
INCLUDE( cmake/Win32.cmake )
|
|
ENDIF()
|
|
|
|
|
|
######################################################################################
|
|
# CMake Defin1itions
|
|
######################################################################################
|
|
|
|
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
|
|
INCLUDE(FeatureSummary)
|
|
|
|
# must go before the project command
|
|
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
|
|
IF(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
|
|
SET_PROPERTY( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
|
|
ENDIF()
|
|
SET( CMAKE_CXX_FLAGS "" )
|
|
|
|
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
|
|
|
|
######################################################################################
|
|
# Compiler options
|
|
######################################################################################
|
|
|
|
SET(CMAKE_CXX_STANDARD 14)
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
ADD_DEFINITIONS(-std=gnu++0x)
|
|
endif()
|
|
|
|
IF (NOT CMAKE_BUILD_TYPE )
|
|
MESSAGE(STATUS "No build type selected, default to Release")
|
|
SET(CMAKE_BUILD_TYPE "Release")
|
|
ENDIF()
|
|
|
|
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
|
|
|
|
ADD_DEFINITIONS(-DQT_NO_CAST_TO_ASCII
|
|
#-DQT_NO_CAST_FROM_ASCII
|
|
-DQT_NO_URL_CAST_FROM_STRING
|
|
-DQT_NO_CAST_FROM_BYTEARRAY
|
|
#-DQT_NO_SIGNALS_SLOTS_KEYWORDS
|
|
#-DQT_USE_QSTRINGBUILDER
|
|
)
|
|
|
|
# if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
|
|
# endif()
|
|
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0.0")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wlogical-op" )
|
|
endif()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations" )
|
|
endif()
|
|
|
|
IF( USE_WERROR )
|
|
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
|
|
ENDIF()
|
|
|
|
SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0" )
|
|
SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2" )
|
|
|
|
|
|
######################################################################################
|
|
# Configure targets
|
|
######################################################################################
|
|
|
|
ADD_FEATURE_INFO(CalypApp BUILD_APP "Build Graphical interface")
|
|
ADD_FEATURE_INFO(CalypTools BUILD_TOOLS "Build Command line tool" )
|
|
ADD_FEATURE_INFO(DynLoad USE_DYNLOAD "Support for dynamic module load" )
|
|
ADD_FEATURE_INFO(SSE USE_SSE "SSE instructions support" )
|
|
ADD_FEATURE_INFO(WErrors USE_WERROR "Warnings as errors" )
|
|
|
|
ADD_SUBDIRECTORY( lib )
|
|
ADD_SUBDIRECTORY( modules )
|
|
|
|
IF( ${BUILD_TOOLS} )
|
|
ADD_SUBDIRECTORY( tools )
|
|
ENDIF()
|
|
|
|
IF( ${BUILD_APP} )
|
|
ADD_SUBDIRECTORY( app )
|
|
ENDIF()
|
|
|
|
IF( ${BUILD_EXAMPLES} )
|
|
ADD_SUBDIRECTORY( examples )
|
|
ENDIF()
|
|
|
|
|
|
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h )
|
|
|
|
######################################################################################
|
|
# Final information dump
|
|
######################################################################################
|
|
MESSAGE("")
|
|
MESSAGE( STATUS "${PROJECT_NAME} INFORMATION" )
|
|
MESSAGE( STATUS "Version: " "${CALYP_VERSION_STRING}" )
|
|
MESSAGE( STATUS "Configuration:" )
|
|
MESSAGE( STATUS " Static libs: " "${USE_STATIC}" )
|
|
MESSAGE( STATUS " Build type: " "${CMAKE_BUILD_TYPE}" )
|
|
MESSAGE( STATUS " Build flags: " "${CMAKE_CXX_FLAGS}" )
|
|
|
|
FEATURE_SUMMARY(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|