# # VLMC build system # Authors: Rohit Yadav # Ludovic Fauvet # #Project Info SET(CPACK_PACKAGE_VERSION_MAJOR "0") SET(CPACK_PACKAGE_VERSION_MINOR "1") SET(CPACK_PACKAGE_VERSION_PATCH "1") SET(COMPLETE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) # Codename of the Project :-) SET(RELEASE_NAME "alpha") # version: 0.0.1 SET(PROJECT_VERSION ${COMPLETE_VERSION}) #Name of the project SET(PROJECT_NAME_SHORT "VLMC") SET(PROJECT_NAME_LONG "VideoLAN Movie Creator") STRING(TOLOWER ${PROJECT_NAME_SHORT} PROJECT_NAME_SHORT_LOWER) PROJECT(${PROJECT_NAME_SHORT_LOWER}-${PROJECT_VERSION}) SITE_NAME(HOSTNAME) #CMake Settings CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0) SET(CMAKE_COLOR_MAKEFILE ON) SET(CMAKE_VERBOSE_MAKEFILE OFF) # set path to additional CMake modules SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) # Configuring build type IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) MESSAGE("Setting build type to '${CMAKE_BUILD_TYPE}'") ELSE(NOT CMAKE_BUILD_TYPE) MESSAGE("Build type set to '${CMAKE_BUILD_TYPE}'") ENDIF(NOT CMAKE_BUILD_TYPE) IF(WIN32) # Building in release for WIN32 SET(CMAKE_BUILD_TYPE "Release") SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG) # Use mingw's sprintf instead of windows's ADD_DEFINITIONS( -D__USE_MINGW_ANSI_STDIO=1 ) ENDIF(WIN32) # Optionally allow embedding libvlc into the binary as # VLMC requires libVLC #SET (WITH_LIBVLC FALSE CACHE BOOL "Compile LibVLC in VLMC") IF (UNIX) SET(WITH_PROFILING FALSE CACHE BOOL "Build with profiling support" ) SET(CMAKE_INSTALL_PREFIX /usr) ENDIF(UNIX) SET(WITH_GUI TRUE CACHE BOOL "Enable the VLMC's GUI") SET(WITH_CRASHBUTTON FALSE CACHE BOOL "Enable the crash button") IF(NOT APPLE) SET(WITH_CRASHHANDLER_GUI TRUE CACHE BOOL "Enable the crash handler GUI (with backtrace and restart capabilities)") SET(WITH_CRASHHANDLER TRUE CACHE BOOL "Enable the crash handler") ELSE(NOT APPLE) #FIXME: Mac OS port does n't start if crash handler is enabled. SET(WITH_CRASHHANDLER_GUI FALSE CACHE BOOL "Disable crash handler gui...") SET(WITH_CRASHHANDLER False CACHE BOOL "Disable the crash handler") SET(CMAKE_BUILD_TYPE "Release") SET(CMAKE_OSX_ARCHITECTURES i386 ppc ) # Make a universal binary # SET(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}") ENDIF(NOT APPLE) FIND_PACKAGE(LIBVLC) IF (NOT LIBVLC_FOUND) MESSAGE (SEND_ERROR "LibVLC dependency was not found (please get libvlc)!") ENDIF (NOT LIBVLC_FOUND) INCLUDE_DIRECTORIES(${LIBVLC_INCLUDE_DIR}) # search for Qt4 IF (WITH_GUI) FIND_PACKAGE(Qt4 4.5.1 COMPONENTS QtCore QtXml QtGui QtSvg REQUIRED ) ELSE(WITH_GUI) # Search for QtGui as the effets engine requires QImage. FIND_PACKAGE(Qt4 4.5.1 COMPONENTS QtCore QtXml QtGui REQUIRED ) ENDIF(WITH_GUI) INCLUDE(${QT_USE_FILE}) ADD_DEFINITIONS(${QT_DEFINITIONS}) # layout of VLMC installation # (default values are platform-specific) SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/effects) # Copy the sh launcher IF (NOT WIN32) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/vlmc.sh" "${CMAKE_CURRENT_BINARY_DIR}/vlmc" COPYONLY) ENDIF(NOT WIN32) # common for MAC and UNIX SET (DEFAULT_BIN_SUBDIR bin) SET (DEFAULT_LIB_SUBDIR lib) SET (DEFAULT_DATA_SUBDIR share) SET (DEFAULT_SRC_SUBDIR src) SET (DEFAULT_INCLUDE_SUBDIR include) SET (VLMC_BIN_SUBDIR "${DEFAULT_BIN_SUBDIR}" CACHE STRING "Subdirectory where executables will be installed") SET (VLMC_LIB_SUBDIR "${DEFAULT_LIB_SUBDIR}" CACHE STRING "Subdirectory where libraries will be installed") SET (VLMC_DATA_SUBDIR "${DEFAULT_DATA_SUBDIR}" CACHE STRING "Subdirectory where VLMC data will be installed") SET (VLMC_SRC_SUBDIR "${DEFAULT_SRC_SUBDIR}" CACHE STRING "Subdirectory where VLMC source is") SET (VLMC_INCLUDE_SUBDIR "${DEFAULT_INCLUDE_SUBDIR}" CACHE STRING "Subdirectory where header files will be installed") # full paths for the installation SET (VLMC_BIN_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_BIN_SUBDIR}) SET (VLMC_LIB_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_LIB_SUBDIR}) SET (VLMC_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_INCLUDE_SUBDIR}) SET (VLMC_DATA_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_DATA_SUBDIR}/vlmc/) SET (VLMC_DOC_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_DATA_SUBDIR}/doc/vlmc/) SET (VLMC_EFFECTS_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_LIB_SUBDIR}/vlmc/effects/) SET (VLMC_DESKTOP_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_DATA_SUBDIR}/applications/) SET (VLMC_PIXMAPS_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_DATA_SUBDIR}/pixmaps/) # manual page - makes sense only on unix systems IF (UNIX) SET (DEFAULT_MANUAL_SUBDIR man) SET (VLMC_MANUAL_SUBDIR ${DEFAULT_MANUAL_SUBDIR} CACHE STRING "Subdirectory where manual files will be installed") MARK_AS_ADVANCED (VLMC_MANUAL_SUBDIR) SET (VLMC_MANUAL_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_MANUAL_SUBDIR}) ENDIF (UNIX) SUBDIRS(ts) SUBDIRS(src) SUBDIRS(nsis) # Copy stuff to doc subdirectory INSTALL (FILES AUTHORS COPYING INSTALL NEWS README TRANSLATORS DESTINATION ${VLMC_DOC_DIR}) # Copy .desktop file INSTALL (FILES share/vlmc.desktop DESTINATION ${VLMC_DESKTOP_DIR}) # Copy the VLMC pixmap INSTALL (FILES share/vlmc.png DESTINATION ${VLMC_PIXMAPS_DIR}) # Copy the share directory INSTALL (DIRECTORY share/ DESTINATION ${VLMC_DATA_DIR} PATTERN "*.desktop" EXCLUDE PATTERN "*.ico" EXCLUDE PATTERN "*.icns" EXCLUDE PATTERN "vlmc.png" EXCLUDE) ############################################################# # Enable packaging INCLUDE(InstallRequiredSystemLibraries) SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) SET(CPACK_PACKAGE_NAME ${PROJECT_NAME_SHORT}) SET(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) # Force package name SET(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}) SET(CPACK_PACKAGE_DESCRIPTION "VideoLan Movie Creator") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "VLMC \n VideoLAN Movie Creator is a cross-platform, non-linear video editing software based on the VLC Media Player.") SET(CPACK_PACKAGE_VENDOR "VLMC Team") SET(CPACK_PACKAGE_CONTACT "vlmc-devel@videolan.org") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") IF(WIN32 AND NOT UNIX) # There is a bug in NSI that does not handle full unix paths properly. Make # sure there is at least one set of four (4) backslashes. SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share\\\\vlmc.png") SET(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\vlmc.exe") SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} VLMC") SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\vlmc.org") SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\vlmc.org") SET(CPACK_NSIS_CONTACT "vlmc-devel@vlmc.org") SET(CPACK_NSIS_MODIFY_PATH ON) #SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " !include \\\"${CMAKE_SOURCE_DIR}\\\\win_build\\\\extra.nsh\\\"") ELSE(WIN32 AND NOT UNIX) #SET(CPACK_STRIP_FILES "VLMC") #SET(CPACK_SOURCE_STRIP_FILES "") ENDIF(WIN32 AND NOT UNIX) # RPM packages INCLUDE ( ${CMAKE_MODULE_PATH}/RpmBuild.cmake ) IF ( RPMBUILD_FOUND ) SET(CPACK_GENERATOR "RPM") SET(CPACK_SET_DESTDIR TRUE) ENDIF ( RPMBUILD_FOUND ) # Debian packages INCLUDE ( ${CMAKE_MODULE_PATH}/DpkgBuild.cmake ) IF ( DPKG_FOUND ) SET(CPACK_GENERATOR "DEB") SET(CPACK_SET_DESTDIR TRUE) # FIXME: Check stuff: libvlc2 etc. in future as VLC 1.1+ releases SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt4-gui ( >= 4.6 ), libqt4-network ( >= 4.6 ), libqt4-svg ( >= 4.6 ), libqt4-xml ( >= 4.6 )") ENDIF ( DPKG_FOUND ) #Mac IF( APPLE ) SET(CPACK_GENERATOR "DragNDrop") #Libraries are bundled directly SET(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) # Bundle Properties SET(MACOSX_BUNDLE_BUNDLE_NAME vlmc) SET(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}) SET(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}) SET(MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${PROJECT_VERSION}") #SET(CPACK_STRIP_FILES TRUE) ENDIF( APPLE ) SET(CPACK_PACKAGE_EXECUTABLES "vlmc" "VLMC") INCLUDE(CPack)