project(kdenlive)
-set(BASE_VERSION 0.8.2)
-set(LIBMLT_REQUIRED_VERSION 0.7.6)
+# An odd patch version number means development version, while an even one means
+# stable release. An additional number can be used for bugfix-only releases.
+set(KDENLIVE_VERSION 0.9.5)
+
+# Minimum versions of main dependencies.
+set(LIBMLT_MIN_VERSION 0.8.6)
+set(QT_MIN_VERSION 4.5.0)
+set(KDE_MIN_VERSION 4.3.0)
-option(RELEASE_BUILD "Remove compilation date from program version (use for stable releases)" ON)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
-# Search packages used by KDE.
-find_package(KDE4 REQUIRED)
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99") # To compile kiss_fft
-include(KDE4Defaults)
-include(MacroLibrary)
-include(FindGettext)
-include(MacroOptionalAddSubdirectory)
-set(catalogname kdenlive)
+# To be switched on when releasing.
+option(RELEASE_BUILD "Remove Git revision from program version (use for stable releases)" OFF)
-find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL QtScript REQUIRED)
-if ( NOT QT_QTOPENGL_FOUND )
- message(FATAL_ERROR "QtOpenGL (most likely called libqt4-opengl-dev) not found.")
-else ( NOT QT_QTOPENGL_FOUND )
- message(-- " Found QtOpenGL.")
-endif ( NOT QT_QTOPENGL_FOUND )
-find_library(Qt COMPONENTS QtOpenGL QtScript REQUIRED)
+# Get current version.
+set(VERSION "\"${KDENLIVE_VERSION}\"")
+if(NOT RELEASE_BUILD)
+ if(EXISTS ${PROJECT_SOURCE_DIR}/.git)
+ # Probably a Git workspace: determine the revision.
+ find_package(Git)
+ if(GIT_FOUND)
+ exec_program(${GIT_EXECUTABLE}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ARGS "describe --tags"
+ OUTPUT_VARIABLE KDENLIVE_GIT_REVISION
+ RETURN_VALUE TAG_RESULT
+ )
+ # git describe --tags failed, for example it fails if repo was checked with depth=1
+ if(NOT ${TAG_RESULT} EQUAL 0)
+ exec_program(${GIT_EXECUTABLE}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ARGS "describe --always"
+ OUTPUT_VARIABLE KDENLIVE_GIT_REVISION
+ )
+ endif(NOT ${TAG_RESULT} EQUAL 0)
+ message("Current Kdenlive Git revision is ${KDENLIVE_GIT_REVISION}")
+ set(VERSION "\"${KDENLIVE_VERSION} (rev. ${KDENLIVE_GIT_REVISION})\"")
+ else(GIT_FOUND)
+ message("Could not determine the Git revision")
+ endif(GIT_FOUND)
+ endif(EXISTS ${PROJECT_SOURCE_DIR}/.git)
+endif(NOT RELEASE_BUILD)
-add_definitions(${QT_DEFINITIONS})
+include(CheckIncludeFiles)
+check_include_files(malloc.h HAVE_MALLOC_H)
+check_include_files(pthread.h HAVE_PTHREAD_H)
-# Search MLT package.
-find_package(LIBMLT REQUIRED)
-if(LIBMLT_VERSION VERSION_LESS ${LIBMLT_REQUIRED_VERSION})
- message(FATAL_ERROR "MLT must be at least version ${LIBMLT_REQUIRED_VERSION}, you have ${LIBMLT_VERSION}\nPlease install recent MLT http://www.mltframework.org")
-endif(LIBMLT_VERSION VERSION_LESS ${LIBMLT_REQUIRED_VERSION})
+# Search KDE and dependent packages.
+find_package(KDE4 ${KDE_MIN_VERSION} REQUIRED)
+include(KDE4Defaults)
+include(MacroLibrary)
+macro_log_feature(KDE4_FOUND
+ "KDELibs"
+ "KDE core libraries"
+ "http://www.kde.org"
+ TRUE
+ ${KDE_MIN_VERSION}
+)
-find_package(MSGFMT REQUIRED)
-find_program(EXTRACTRC_EXECUTABLE extractrc)
-find_program(MSGFMT_EXECUTABLE msgfmt)
-find_program(MSGMERGE_EXECUTABLE msgmerge)
-find_program(XGETTEXT_EXECUTABLE xgettext)
+# Find Qt core modules (QtCore and QtGui).
+find_package(Qt4 ${QT_MIN_VERSION} REQUIRED)
-# Get current version.
-if(RELEASE_BUILD)
- set(VERSION "\"${BASE_VERSION}\"")
-else(RELEASE_BUILD)
- if(EXISTS ${PROJECT_SOURCE_DIR}/.svn)
- # Probably a SVN workspace: determine the revision.
- find_package(Subversion)
- if(Subversion_FOUND)
- Subversion_WC_INFO(${PROJECT_SOURCE_DIR} KDENLIVE)
- message("Current revision is ${KDENLIVE_WC_REVISION}")
- set(VERSION "\"${BASE_VERSION} (rev. ${KDENLIVE_WC_REVISION})\"")
- else(Subversion_FOUND)
- message("Could not determine the SVN revision")
- set(VERSION "\"${BASE_VERSION}\"")
- endif(Subversion_FOUND)
- else(EXISTS ${PROJECT_SOURCE_DIR}/.svn)
- set(VERSION "\"${BASE_VERSION}\"")
- endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn)
-endif(RELEASE_BUILD)
+# Search MLT package.
+find_package(LIBMLT ${LIBMLT_MIN_VERSION} REQUIRED)
+if(LIBMLT_VERSION VERSION_LESS ${LIBMLT_MIN_VERSION})
+ set(LIBMLT_FOUND FALSE)
+endif(LIBMLT_VERSION VERSION_LESS ${LIBMLT_MIN_VERSION})
+macro_log_feature(LIBMLT_FOUND
+ "MLT"
+ "Multimedia framework and video playout server for TV broadcasting"
+ "http://mltframework.org"
+ TRUE
+ ${LIBMLT_MIN_VERSION}
+)
-add_subdirectory(src src/cmake_bindir)
-add_subdirectory(renderer renderer/cmake_bindir)
-add_subdirectory(thumbnailer thumbnailer/cmake_bindir)
-add_subdirectory(plugins)
+add_subdirectory(data)
+macro_optional_add_subdirectory(doc)
add_subdirectory(effects)
add_subdirectory(export)
add_subdirectory(icons)
-add_subdirectory(data)
add_subdirectory(lumas)
-add_subdirectory(titles)
-add_subdirectory(po)
add_subdirectory(man)
-add_subdirectory(doc)
-
-configure_file(${CMAKE_SOURCE_DIR}/kdenlive-config.h.cmake kdenlive-config.h @ONLY)
+add_subdirectory(plugins)
+macro_optional_add_subdirectory(po)
+add_subdirectory(renderer)
+add_subdirectory(src)
+add_subdirectory(thumbnailer)
+add_subdirectory(titles)
+add_subdirectory(testingArea)
+macro_display_feature_log()
-message("-- C flags are now: " ${CMAKE_C_FLAGS})
+configure_file(config-kdenlive.h.cmake config-kdenlive.h @ONLY)