]> git.sesse.net Git - kdenlive/blobdiff - CMakeLists.txt
Fix label
[kdenlive] / CMakeLists.txt
index be801de7fb3adfaecc7557569d141fd30c47c6bd..d0e99d2f2cc7409f5335d0490416bb075584488a 100644 (file)
@@ -1,60 +1,95 @@
 project(kdenlive)
 
-SET(BASE_VERSION 0.7.4)
-
-OPTION(RELEASE_BUILD "Remove compilation date to version, use for stable releases (default off)" OFF)
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules )
-
-# search packages used by KDE
-find_package(KDE4 REQUIRED)
-include (KDE4Defaults)
-include (MacroLibrary)
-INCLUDE(FindGettext)
-include(MacroOptionalAddSubdirectory)
-set(catalogname kdenlive)
-
-add_definitions (${QT_DEFINITIONS})
-
-FIND_PACKAGE(LIBMLT REQUIRED)
-FIND_PACKAGE(LIBMLTPLUS REQUIRED)
-find_package(MSGFMT REQUIRED)
-
-find_program(EXTRACTRC_EXECUTABLE extractrc)
-find_program(MSGFMT_EXECUTABLE msgfmt)
-find_program(MSGMERGE_EXECUTABLE msgmerge)
-find_program(XGETTEXT_EXECUTABLE xgettext)
-
-# current version
-IF (RELEASE_BUILD)
-    SET(VERSION "\"${BASE_VERSION}\"")
-ELSE(RELEASE_BUILD)
-   IF (EXISTS ${PROJECT_SOURCE_DIR}/.svn) 
-      # Probably a SVN workspace, determine revision level 
-      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 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)
-
-add_subdirectory(src src/cmake_bindir)
-add_subdirectory(renderer renderer/cmake_bindir)
-add_subdirectory(thumbnailer thumbnailer/cmake_bindir)
-add_subdirectory(plugins)
+# 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.7)
+
+# Minimum versions of main dependencies.
+set(LIBMLT_MIN_VERSION 0.8.8)
+set(QT_MIN_VERSION 4.5.0)
+set(KDE_MIN_VERSION 4.3.0)
+
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+
+# To be switched on when releasing.
+option(RELEASE_BUILD "Remove Git revision from program version (use for stable releases)" OFF)
+
+# 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)
+
+include(CheckIncludeFiles)
+check_include_files(malloc.h HAVE_MALLOC_H)
+check_include_files(pthread.h HAVE_PTHREAD_H)
+
+# 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 Qt core modules (QtCore and QtGui).
+find_package(Qt4 ${QT_MIN_VERSION} REQUIRED)
+
+# 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(data)
+macro_optional_add_subdirectory(doc)
 add_subdirectory(effects)
-add_subdirectory(export) 
+add_subdirectory(export)
 add_subdirectory(icons)
-add_subdirectory(data)  
-add_subdirectory(lumas) 
-add_subdirectory(po)
+add_subdirectory(lumas)
 add_subdirectory(man)
+add_subdirectory(plugins)
+macro_optional_add_subdirectory(po)
+add_subdirectory(renderer)
+add_subdirectory(src)
+add_subdirectory(thumbnailer)
+add_subdirectory(titles)
+add_subdirectory(testingArea)
 
-CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/kdenlive-config.h.cmake kdenlive-config.h @ONLY)
+macro_display_feature_log()
 
+configure_file(config-kdenlive.h.cmake config-kdenlive.h @ONLY)