From 0710d08800aa69ca9579416a3d4bb6220593f229 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 26 Nov 2011 13:19:22 -0600 Subject: [PATCH] Initial attempt at migration to standard TDE CMake build system --- CMakeLists.txt | 432 ++++-------------- CMakeLists.txt.orig | 399 ++++++++++++++++ ConfigureChecks.cmake | 217 +++++++++ config.h.cmake | 5 + data/CMakeLists.txt | 16 +- doc/CMakeLists.txt | 12 + {docs => doc}/de/.gitignore | 0 doc/en/CMakeLists.txt | 12 + .../en/headers-and-unicode-lyrics.png | Bin {docs => doc}/en/index.docbook | 0 {docs => doc}/en/rg-audiofilemanager.png | Bin {docs => doc}/en/rg-audiomixer.png | Bin {docs => doc}/en/rg-bankeditor.png | Bin {docs => doc}/en/rg-button-bar-time.png | Bin {docs => doc}/en/rg-button-from-end.png | Bin {docs => doc}/en/rg-clefdialog.png | Bin {docs => doc}/en/rg-coda.png | Bin {docs => doc}/en/rg-colours.png | Bin {docs => doc}/en/rg-cursors.png | Bin {docs => doc}/en/rg-devicemanager.png | Bin {docs => doc}/en/rg-eraser.png | Bin {docs => doc}/en/rg-eventfilter.png | Bin {docs => doc}/en/rg-eventlisteditor.png | Bin {docs => doc}/en/rg-gridquantizer.png | Bin {docs => doc}/en/rg-guitarchorddialog.png | Bin .../en/rg-guitarchordeditordialog.png | Bin {docs => doc}/en/rg-ipb-audio.png | Bin {docs => doc}/en/rg-ipb-midi.png | Bin {docs => doc}/en/rg-ipb-synth.png | Bin {docs => doc}/en/rg-keysigdialog.png | Bin {docs => doc}/en/rg-loadpreset.png | Bin {docs => doc}/en/rg-mainwindow.png | Bin {docs => doc}/en/rg-markerloop.png | Bin {docs => doc}/en/rg-matrixview.png | Bin {docs => doc}/en/rg-metronome.png | Bin {docs => doc}/en/rg-midifilter.png | Bin {docs => doc}/en/rg-midimixer.png | Bin {docs => doc}/en/rg-move.png | Bin {docs => doc}/en/rg-notation-toolbars.png | Bin {docs => doc}/en/rg-notationquantizer.png | Bin {docs => doc}/en/rg-notationtools.png | Bin .../en/rg-notationview-multipage.png | Bin {docs => doc}/en/rg-notationview.png | Bin {docs => doc}/en/rg-pastedialog.png | Bin {docs => doc}/en/rg-pencil.png | Bin {docs => doc}/en/rg-percussionmatrix.png | Bin {docs => doc}/en/rg-plugin-dialog.png | Bin {docs => doc}/en/rg-pluginbuttons.png | Bin {docs => doc}/en/rg-plugineditorbutton.png | Bin {docs => doc}/en/rg-quickmarker.png | Bin {docs => doc}/en/rg-rawnoteruler.png | Bin {docs => doc}/en/rg-resize.png | Bin {docs => doc}/en/rg-segmentparameterbox.png | Bin {docs => doc}/en/rg-segno.png | Bin {docs => doc}/en/rg-select.png | Bin {docs => doc}/en/rg-split.png | Bin {docs => doc}/en/rg-synthpluginbuttons.png | Bin {docs => doc}/en/rg-tempodialog.png | Bin {docs => doc}/en/rg-temporuler.png | Bin {docs => doc}/en/rg-text-cursor.png | Bin {docs => doc}/en/rg-textdialog.png | Bin {docs => doc}/en/rg-timesigdialog.png | Bin .../en/rg-trackbutton-instrumentmenu.png | Bin .../en/rg-trackbutton-instruments.png | Bin {docs => doc}/en/rg-trackbutton-labels.png | Bin {docs => doc}/en/rg-trackbuttons.png | Bin {docs => doc}/en/rg-trackeditor.png | Bin {docs => doc}/en/rg-trackparameterbox.png | Bin {docs => doc}/en/rg-transport.png | Bin {docs => doc}/en/rg-triggersegment.png | Bin {docs => doc}/en/rg-tupletdialog.png | Bin {docs => doc}/en/rg-useornament.png | Bin {docs => doc}/en/tips | 0 {docs => doc}/en/transpose-by-interval.png | Bin doc/es/CMakeLists.txt | 12 + {docs => doc}/es/index.docbook | 0 doc/ja/CMakeLists.txt | 12 + {docs => doc}/ja/index.docbook | 0 doc/sv/CMakeLists.txt | 12 + {docs => doc}/sv/index.docbook | 0 {docs => doc}/sv/rg-audiofilemanager.png | Bin {docs => doc}/sv/rg-audiomixer.png | Bin {docs => doc}/sv/rg-bankeditor.png | Bin {docs => doc}/sv/rg-clefdialog.png | Bin {docs => doc}/sv/rg-colours.png | Bin {docs => doc}/sv/rg-devicemanager.png | Bin {docs => doc}/sv/rg-eventlisteditor.png | Bin {docs => doc}/sv/rg-gridquantizer.png | Bin {docs => doc}/sv/rg-ipb-audio.png | Bin {docs => doc}/sv/rg-ipb-midi.png | Bin {docs => doc}/sv/rg-ipb-synth.png | Bin {docs => doc}/sv/rg-keysigdialog.png | Bin {docs => doc}/sv/rg-mainwindow.png | Bin {docs => doc}/sv/rg-matrixview.png | Bin {docs => doc}/sv/rg-metronome.png | Bin {docs => doc}/sv/rg-midifilter.png | Bin {docs => doc}/sv/rg-midimixer.png | Bin {docs => doc}/sv/rg-notationquantizer.png | Bin .../sv/rg-notationview-multipage.png | Bin {docs => doc}/sv/rg-notationview.png | Bin {docs => doc}/sv/rg-pastedialog.png | Bin {docs => doc}/sv/rg-plugin-dialog.png | Bin {docs => doc}/sv/rg-pluginbuttons.png | Bin {docs => doc}/sv/rg-plugineditorbutton.png | Bin {docs => doc}/sv/rg-segmentparameterbox.png | Bin {docs => doc}/sv/rg-synthpluginbuttons.png | Bin {docs => doc}/sv/rg-tempodialog.png | Bin {docs => doc}/sv/rg-timesigdialog.png | Bin .../sv/rg-trackbutton-instruments.png | Bin {docs => doc}/sv/rg-trackbutton-labels.png | Bin {docs => doc}/sv/rg-trackeditor.png | Bin {docs => doc}/sv/rg-transport.png | Bin {docs => doc}/sv/rg-tupletdialog.png | Bin {docs => doc}/sv/rosegarden.po | 0 docs/CMakeLists.txt | 4 - po/CMakeLists.txt | 38 +- po/{ca.po => ca/rosegarden.po} | 0 po/{cs.po => cs/rosegarden.po} | 0 po/{cy.po => cy/rosegarden.po} | 0 po/{de.po => de/rosegarden.po} | 0 po/{en.po => en/rosegarden.po} | 0 po/{en_GB.po => en_GB/rosegarden.po} | 0 po/{es.po => es/rosegarden.po} | 0 po/{et.po => et/rosegarden.po} | 0 po/{eu.po => eu/rosegarden.po} | 0 po/{fi.po => fi/rosegarden.po} | 0 po/{fr.po => fr/rosegarden.po} | 0 po/{it.po => it/rosegarden.po} | 0 po/{ja.po => ja/rosegarden.po} | 0 po/messages.sh | 101 ---- po/{nl.po => nl/rosegarden.po} | 0 po/{pl.po => pl/rosegarden.po} | 0 po/{ru.po => ru/rosegarden.po} | 0 po/{sv.po => sv/rosegarden.po} | 0 po/xgettext | Bin 203776 -> 0 bytes po/{zh_CN.po => zh_CN/rosegarden.po} | 0 src/CMakeLists.txt | 299 +++++------- 137 files changed, 897 insertions(+), 674 deletions(-) create mode 100644 CMakeLists.txt.orig create mode 100644 ConfigureChecks.cmake create mode 100644 config.h.cmake create mode 100644 doc/CMakeLists.txt rename {docs => doc}/de/.gitignore (100%) create mode 100644 doc/en/CMakeLists.txt rename {docs => doc}/en/headers-and-unicode-lyrics.png (100%) rename {docs => doc}/en/index.docbook (100%) rename {docs => doc}/en/rg-audiofilemanager.png (100%) rename {docs => doc}/en/rg-audiomixer.png (100%) rename {docs => doc}/en/rg-bankeditor.png (100%) rename {docs => doc}/en/rg-button-bar-time.png (100%) rename {docs => doc}/en/rg-button-from-end.png (100%) rename {docs => doc}/en/rg-clefdialog.png (100%) rename {docs => doc}/en/rg-coda.png (100%) rename {docs => doc}/en/rg-colours.png (100%) rename {docs => doc}/en/rg-cursors.png (100%) rename {docs => doc}/en/rg-devicemanager.png (100%) rename {docs => doc}/en/rg-eraser.png (100%) rename {docs => doc}/en/rg-eventfilter.png (100%) rename {docs => doc}/en/rg-eventlisteditor.png (100%) rename {docs => doc}/en/rg-gridquantizer.png (100%) rename {docs => doc}/en/rg-guitarchorddialog.png (100%) rename {docs => doc}/en/rg-guitarchordeditordialog.png (100%) rename {docs => doc}/en/rg-ipb-audio.png (100%) rename {docs => doc}/en/rg-ipb-midi.png (100%) rename {docs => doc}/en/rg-ipb-synth.png (100%) rename {docs => doc}/en/rg-keysigdialog.png (100%) rename {docs => doc}/en/rg-loadpreset.png (100%) rename {docs => doc}/en/rg-mainwindow.png (100%) rename {docs => doc}/en/rg-markerloop.png (100%) rename {docs => doc}/en/rg-matrixview.png (100%) rename {docs => doc}/en/rg-metronome.png (100%) rename {docs => doc}/en/rg-midifilter.png (100%) rename {docs => doc}/en/rg-midimixer.png (100%) rename {docs => doc}/en/rg-move.png (100%) rename {docs => doc}/en/rg-notation-toolbars.png (100%) rename {docs => doc}/en/rg-notationquantizer.png (100%) rename {docs => doc}/en/rg-notationtools.png (100%) rename {docs => doc}/en/rg-notationview-multipage.png (100%) rename {docs => doc}/en/rg-notationview.png (100%) rename {docs => doc}/en/rg-pastedialog.png (100%) rename {docs => doc}/en/rg-pencil.png (100%) rename {docs => doc}/en/rg-percussionmatrix.png (100%) rename {docs => doc}/en/rg-plugin-dialog.png (100%) rename {docs => doc}/en/rg-pluginbuttons.png (100%) rename {docs => doc}/en/rg-plugineditorbutton.png (100%) rename {docs => doc}/en/rg-quickmarker.png (100%) rename {docs => doc}/en/rg-rawnoteruler.png (100%) rename {docs => doc}/en/rg-resize.png (100%) rename {docs => doc}/en/rg-segmentparameterbox.png (100%) rename {docs => doc}/en/rg-segno.png (100%) rename {docs => doc}/en/rg-select.png (100%) rename {docs => doc}/en/rg-split.png (100%) rename {docs => doc}/en/rg-synthpluginbuttons.png (100%) rename {docs => doc}/en/rg-tempodialog.png (100%) rename {docs => doc}/en/rg-temporuler.png (100%) rename {docs => doc}/en/rg-text-cursor.png (100%) rename {docs => doc}/en/rg-textdialog.png (100%) rename {docs => doc}/en/rg-timesigdialog.png (100%) rename {docs => doc}/en/rg-trackbutton-instrumentmenu.png (100%) rename {docs => doc}/en/rg-trackbutton-instruments.png (100%) rename {docs => doc}/en/rg-trackbutton-labels.png (100%) rename {docs => doc}/en/rg-trackbuttons.png (100%) rename {docs => doc}/en/rg-trackeditor.png (100%) rename {docs => doc}/en/rg-trackparameterbox.png (100%) rename {docs => doc}/en/rg-transport.png (100%) rename {docs => doc}/en/rg-triggersegment.png (100%) rename {docs => doc}/en/rg-tupletdialog.png (100%) rename {docs => doc}/en/rg-useornament.png (100%) rename {docs => doc}/en/tips (100%) rename {docs => doc}/en/transpose-by-interval.png (100%) create mode 100644 doc/es/CMakeLists.txt rename {docs => doc}/es/index.docbook (100%) create mode 100644 doc/ja/CMakeLists.txt rename {docs => doc}/ja/index.docbook (100%) create mode 100644 doc/sv/CMakeLists.txt rename {docs => doc}/sv/index.docbook (100%) rename {docs => doc}/sv/rg-audiofilemanager.png (100%) rename {docs => doc}/sv/rg-audiomixer.png (100%) rename {docs => doc}/sv/rg-bankeditor.png (100%) rename {docs => doc}/sv/rg-clefdialog.png (100%) rename {docs => doc}/sv/rg-colours.png (100%) rename {docs => doc}/sv/rg-devicemanager.png (100%) rename {docs => doc}/sv/rg-eventlisteditor.png (100%) rename {docs => doc}/sv/rg-gridquantizer.png (100%) rename {docs => doc}/sv/rg-ipb-audio.png (100%) rename {docs => doc}/sv/rg-ipb-midi.png (100%) rename {docs => doc}/sv/rg-ipb-synth.png (100%) rename {docs => doc}/sv/rg-keysigdialog.png (100%) rename {docs => doc}/sv/rg-mainwindow.png (100%) rename {docs => doc}/sv/rg-matrixview.png (100%) rename {docs => doc}/sv/rg-metronome.png (100%) rename {docs => doc}/sv/rg-midifilter.png (100%) rename {docs => doc}/sv/rg-midimixer.png (100%) rename {docs => doc}/sv/rg-notationquantizer.png (100%) rename {docs => doc}/sv/rg-notationview-multipage.png (100%) rename {docs => doc}/sv/rg-notationview.png (100%) rename {docs => doc}/sv/rg-pastedialog.png (100%) rename {docs => doc}/sv/rg-plugin-dialog.png (100%) rename {docs => doc}/sv/rg-pluginbuttons.png (100%) rename {docs => doc}/sv/rg-plugineditorbutton.png (100%) rename {docs => doc}/sv/rg-segmentparameterbox.png (100%) rename {docs => doc}/sv/rg-synthpluginbuttons.png (100%) rename {docs => doc}/sv/rg-tempodialog.png (100%) rename {docs => doc}/sv/rg-timesigdialog.png (100%) rename {docs => doc}/sv/rg-trackbutton-instruments.png (100%) rename {docs => doc}/sv/rg-trackbutton-labels.png (100%) rename {docs => doc}/sv/rg-trackeditor.png (100%) rename {docs => doc}/sv/rg-transport.png (100%) rename {docs => doc}/sv/rg-tupletdialog.png (100%) rename {docs => doc}/sv/rosegarden.po (100%) delete mode 100644 docs/CMakeLists.txt rename po/{ca.po => ca/rosegarden.po} (100%) rename po/{cs.po => cs/rosegarden.po} (100%) rename po/{cy.po => cy/rosegarden.po} (100%) rename po/{de.po => de/rosegarden.po} (100%) rename po/{en.po => en/rosegarden.po} (100%) rename po/{en_GB.po => en_GB/rosegarden.po} (100%) rename po/{es.po => es/rosegarden.po} (100%) rename po/{et.po => et/rosegarden.po} (100%) rename po/{eu.po => eu/rosegarden.po} (100%) rename po/{fi.po => fi/rosegarden.po} (100%) rename po/{fr.po => fr/rosegarden.po} (100%) rename po/{it.po => it/rosegarden.po} (100%) rename po/{ja.po => ja/rosegarden.po} (100%) delete mode 100755 po/messages.sh rename po/{nl.po => nl/rosegarden.po} (100%) rename po/{pl.po => pl/rosegarden.po} (100%) rename po/{ru.po => ru/rosegarden.po} (100%) rename po/{sv.po => sv/rosegarden.po} (100%) delete mode 100755 po/xgettext rename po/{zh_CN.po => zh_CN/rosegarden.po} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 719ca20..c81549b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,56 +1,40 @@ -# Rosegarden -# A MIDI and audio sequencer and musical notation editor. +################################################# # -# This program is Copyright 2000-2008 -# Guillaume Laurent , -# Chris Cannam , -# Richard Bown +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net # -# The moral rights of Guillaume Laurent, Chris Cannam, and Richard -# Bown to claim authorship of this work have been asserted. +# Improvements and feedback are welcome # -# This file is Copyright 2006-2008 -# Pedro Lopez-Cabanillas +# This file is released under GPL >= 2 # -# Other copyrights also apply to some parts of this work. Please -# see the AUTHORS file and individual file headers for details. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. See the file -# COPYING included with this distribution for more information. +################################################# + +cmake_minimum_required( VERSION 2.8 ) + + +##### general package setup ##################### # The name of our project is "ROSEGARDEN". CMakeLists files in this project can -# refer to the root source directory of the project as ${ROSEGARDEN_SOURCE_DIR} +# refer to the root source directory of the project as ${ROSEGARDEN_SOURCE_DIR} # and to the root binary directory of the project as ${ROSEGARDEN_BINARY_DIR} PROJECT(ROSEGARDEN) -# CMake supports KDE checks since this version number -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2) -# Show full commands and messages. It generates a lot of console output. -# It is necessary for Eclipse warning/error parser, -# but it can be enabled anyway with "make VERBOSE=1" -SET(CMAKE_VERBOSE_MAKEFILE OFF) +##### include essential cmake modules ########### -# Seems that relative paths break some scripts. Don't set it ON -SET(CMAKE_USE_RELATIVE_PATHS OFF) +include( CheckCXXSourceCompiles ) +include( CheckFunctionExists ) +include( CheckIncludeFileCXX ) +include( CheckLibraryExists ) +include( CheckStructHasMember ) +include( CheckSymbolExists ) +include( CheckTypeSize ) +include( FindPkgConfig ) -# Rebuild the object files if the rules have changed, but not the actual source -# files or headers (e.g. if you changed the some compiler switches) -SET(CMAKE_SKIP_RULE_DEPENDENCY OFF) - -# Misc settings -SET(CMAKE_COLOR_MAKEFILE ON) -SET(CMAKE_INCLUDE_CURRENT_DIR ON) -SET(CMAKE_BUILD_WITH_INSTALL_RPATH ON) - -# Additional CMake modules for 3rd party library checks reside here -SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_admin") +##### set up versioning ######################### # Mark as advanced -MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH +MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH CMAKE_BACKWARDS_COMPATIBILITY) @@ -66,15 +50,32 @@ IF(VERSION_SUFFIX) ENDIF(VERSION_SUFFIX) ADD_DEFINITIONS(-D'VERSION="${VERSION}"') -# User options -OPTION(WANT_DEBUG "Include debug support" OFF) -OPTION(WANT_FULLDBG "Full debug support (BIG executables!)" OFF) -OPTION(WANT_SOUND "Include Sound support" ON) -OPTION(WANT_JACK "Include Jack (Jack Audio Connection Kit) support" ON) -OPTION(WANT_DSSI "Include DSSI support" ON) -OPTION(WANT_LIRC "Include LIRC (Linux Infrared Remote Control) support" OFF) -OPTION(WANT_PCH "Use precompiled headers" OFF) -OPTION(WANT_TEST "Perform unit tests" OFF) + +##### include our cmake modules ################# + +set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ) +include( TDEMacros ) + + +##### setup install paths ####################### + +include( TDESetupPaths ) +tde_setup_paths( ) + + +##### user requested modules #################### + +option( BUILD_ALL "Build all" OFF ) +option( BUILD_DOC "Build doc" ${BUILD_ALL} ) +option( BUILD_TRANSLATIONS "Build translations" ${BUILD_ALL} ) +option( WANT_DEBUG "Include debug support" OFF ) +option( WANT_FULLDBG "Full debug support (BIG executables!)" OFF ) +option( WANT_SOUND "Include Sound support" ${BUILD_ALL} ) +option( WANT_JACK "Include Jack (Jack Audio Connection Kit) support" ${BUILD_ALL} ) +option( WANT_DSSI "Include DSSI support" ${BUILD_ALL} ) +option( WANT_LIRC "Include LIRC (Linux Infrared Remote Control) support" OFF ) +option( WANT_PCH "Use precompiled headers" OFF ) +option( WANT_TEST "Perform unit tests" OFF ) IF(WANT_TEST) ENABLE_TESTING() @@ -86,314 +87,37 @@ IF(NOT WANT_SOUND) ADD_DEFINITIONS(-DNO_SOUND) ENDIF(NOT WANT_SOUND) -# Check for KDE3 -FIND_PACKAGE(KDE3 REQUIRED QUIET) -IF(QT_FOUND) - ADD_DEFINITIONS(${QT_DEFINITIONS}) - MESSAGE(STATUS "Found Qt3 (version ${qt_version_str})") - #MESSAGE("QT_LIBRARIES: ${QT_LIBRARIES}") -ELSE(QT_FOUND) - MESSAGE(STATUS_ERROR "Qt3 package not found--assuming TQt4") - SET(QT_INCLUDE_DIR "/usr/include/qt4") -ENDIF(QT_FOUND) -SET(QT_UIC_EXECUTABLE "/usr/bin/uic-tqt") -SET(QT_MOC_EXECUTABLE "/usr/bin/tmoc") -IF(KDE3_FOUND) - ADD_DEFINITIONS(${KDE3_DEFINITIONS}) - #MESSAGE("KDE3PREFIX: ${KDE3PREFIX}") - KDE3_PRINT_RESULTS() - #MESSAGE("QT_AND_TDECORE_LIBS: ${QT_AND_TDECORE_LIBS}") -ELSE(KDE3_FOUND) - MESSAGE(FATAL_ERROR "KDE3 Not found") -ENDIF(KDE3_FOUND) - -# Clear the flags set by FindKDE3 -SET(CMAKE_CXX_FLAGS "-I/usr/include/tqt -include tqt.h -DTQT_THREAD_SUPPORT") -MARK_AS_ADVANCED(KDE3_BUILD_TESTS - KDE3_ENABLE_FINAL - KDE3_DCOPIDL_EXECUTABLE - KDE3_DCOPIDL2CPP_EXECUTABLE - KDE3_INCLUDE_DIR - KDE3_KCFGC_EXECUTABLE - KDE3_TDECORE_LIBRARY - KDECONFIG_EXECUTABLE ) - -# Provide the KDE3 prefix as a default prefix (if the user has CMake 2.4.4) -IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX ${KDE3PREFIX} CACHE PATH - "Install path prefix, prepended onto install directories." FORCE) -ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - -# Check for PKG-CONFIG -FIND_PACKAGE(PkgConfig REQUIRED) -IF(PKG_CONFIG_FOUND) - MESSAGE(STATUS "Program pkg-config found (${PKG_CONFIG_EXECUTABLE})") -ELSE(PKG_CONFIG_FOUND) - MESSAGE(FATAL_ERROR "Program pkg-config not found") -ENDIF(PKG_CONFIG_FOUND) - -# Initialize some variables -SET(HAVE_XFT FALSE) -SET(HAVE_ALSA FALSE) -SET(HAVE_JACK FALSE) -SET(HAVE_DSSI FALSE) -SET(HAVE_LIBLO FALSE) -SET(HAVE_LIBLRDF FALSE) -SET(HAVE_LADSPA FALSE) -SET(HAVE_LIRC FALSE) -SET(HAVE_FFTW3F FALSE) - -# Check for Xft -PKG_CHECK_MODULES(XFT xft>=2.1.0) -IF(XFT_FOUND) - ADD_DEFINITIONS(-DHAVE_XFT) - SET(HAVE_XFT TRUE) - SET(XFT_LIBS ${XFT_LIBRARIES}) - #MESSAGE("XFT_LIBS: ${XFT_LIBS}") - LIST(APPEND XFT_LIB_DIR ${XFT_LIBRARY_DIRS} ${XFT_LIBDIR}) - #MESSAGE("XFT_LIB_DIR: ${XFT_LIB_DIR}") - LIST(APPEND XFT_INC_DIR ${XFT_INCLUDE_DIRS} ${XFT_INCLUDEDIR}) - #MESSAGE("XFT_INC_DIR: ${XFT_INC_DIR}") -ENDIF(XFT_FOUND) - -IF(WANT_SOUND) - - # Check for ALSA 1.0 - PKG_CHECK_MODULES(ALSA REQUIRED alsa>=1.0) - IF(ALSA_FOUND) - SET(HAVE_ALSA TRUE) - ADD_DEFINITIONS(-DHAVE_ALSA) - SET(ALSA_LIBS ${ALSA_LIBRARIES}) - #MESSAGE("ALSA_LIBS: ${ALSA_LIBS}") - LIST(APPEND ALSA_LIB_DIR ${ALSA_LIBRARY_DIRS} ${ALSA_LIBDIR} ) - #MESSAGE("ALSA_LIB_DIR: ${ALSA_LIB_DIR}") - LIST(APPEND ALSA_INC_DIR ${ALSA_INCLUDE_DIRS} ${ALSA_INCLUDEDIR}) - #MESSAGE("ALSA_INC_DIR: ${ALSA_INC_DIR}") - ELSE(ALSA_FOUND) - MESSAGE(FATAL_ERROR "Please install the required package. Aborting") - ENDIF(ALSA_FOUND) - - IF(WANT_JACK) - PKG_CHECK_MODULES(JACK jack>=0.77) - IF(JACK_FOUND) - ADD_DEFINITIONS(-DHAVE_LIBJACK) - SET(HAVE_JACK TRUE) - SET(JACK_LIBS ${JACK_LIBRARIES}) - #MESSAGE("JACK_LIBS: ${JACK_LIBS}") - LIST(APPEND JACK_LIB_DIR ${JACK_LIBDIR} ${JACK_LIBRARY_DIRS}) - #MESSAGE("JACK_LIB_DIR: ${JACK_LIB_DIR}") - LIST(APPEND JACK_INC_DIR ${JACK_INCLUDEDIR} ${JACK_INCLUDE_DIRS}) - #MESSAGE("JACK_INC_DIR: ${JACK_INC_DIR}") - ENDIF(JACK_FOUND) - ENDIF(WANT_JACK) - - IF(WANT_DSSI) - PKG_CHECK_MODULES(DSSI dssi>=0.4) - IF(DSSI_FOUND) - ADD_DEFINITIONS(-DHAVE_DSSI) - SET(HAVE_DSSI TRUE) - LIST(APPEND DSSI_INC_DIR ${DSSI_INCLUDE_DIRS} ${DSSI_INCLUDEDIR}) - #MESSAGE("DSSI_INC_DIR: ${DSSI_INC_DIR}") - ENDIF(DSSI_FOUND) - ENDIF(WANT_DSSI) - - PKG_CHECK_MODULES(LIBLO liblo>=0.7) - IF(LIBLO_FOUND) - ADD_DEFINITIONS(-DHAVE_LIBLO) - SET(HAVE_LIBLO TRUE) - SET(LIBLO_LIBS ${LIBLO_LIBRARIES}) - #MESSAGE("LIBLO_LIBS: ${LIBLO_LIBS}") - LIST(APPEND LIBLO_LIB_DIR ${LIBLO_LIBDIR} ${LIBLO_LIBRARY_DIRS}) - #MESSAGE("LIBLO_LIB_DIR: ${LIBLO_LIB_DIR}") - LIST(APPEND LIBLO_INC_DIR ${LIBLO_INCLUDEDIR} ${LIBLO_INCLUDE_DIRS}) - #MESSAGE("LIBLO_INC_DIR: ${LIBLO_INC_DIR}") - ENDIF(LIBLO_FOUND) - - PKG_CHECK_MODULES(LRDF lrdf>=0.3) - IF(LRDF_FOUND) - SET(HAVE_LIBLRDF TRUE) - ADD_DEFINITIONS(-DHAVE_LIBLRDF) - SET(LRDF_LIBS ${LRDF_LIBRARIES}) - #MESSAGE("LRDF_LIBS: ${LRDF_LIBS}") - LIST(APPEND LRDF_LIB_DIR ${LRDF_LIBDIR} ${LRDF_LIBRARY_DIRS}) - #MESSAGE("LRDF_LIB_DIR: ${LRDF_LIB_DIR}") - LIST(APPEND LRDF_INC_DIR ${LRDF_INCLUDEDIR} ${LRDF_INCLUDE_DIRS}) - #MESSAGE("LRDF_INC_DIR: ${LRDF_INC_DIR}") - ENDIF(LRDF_FOUND) - - FIND_PACKAGE(LADSPA QUIET) - IF(LADSPA_FOUND) - SET(HAVE_LADSPA TRUE) - ADD_DEFINITIONS(-DHAVE_LADSPA) - SET(LADSPA_INC_DIR ${LADSPA_INCLUDE_DIR}) - MESSAGE(STATUS "Found LADSPA (${LADSPA_INC_DIR})") - ENDIF(LADSPA_FOUND) - -ENDIF(WANT_SOUND) - -PKG_CHECK_MODULES(FFTW3F REQUIRED fftw3f>=3.0.0) -IF(FFTW3F_FOUND) - ADD_DEFINITIONS(-DHAVE_FFTW3F) - SET(HAVE_FFTW3F TRUE) - SET(FFTW3F_LIBS ${FFTW3F_LIBRARIES}) - #MESSAGE("FFTW3F_LIBS: ${FFTW3F_LIBS}") - LIST(APPEND FFTW3F_LIB_DIR ${FFTW3F_LIBDIR} ${FFTW3F_LIBRARY_DIRS}) - #MESSAGE("FFTW3F_LIB_DIR: ${FFTW3F_LIB_DIR}") - LIST(APPEND FFTW3F_INC_DIR ${FFTW3F_INCLUDEDIR} ${FFTW3F_INCLUDE_DIRS}) - #MESSAGE("FFTW3F_INC_DIR: ${FFTW3F_INC_DIR}") -ELSE(FFTW3F_FOUND) - MESSAGE(FATAL_ERROR "Please install the required package. Aborting") -ENDIF(FFTW3F_FOUND) - -IF(WANT_LIRC) - FIND_PACKAGE(LIRC QUIET) - IF(LIRC_FOUND) - SET(HAVE_LIRC TRUE) - ADD_DEFINITIONS(-DHAVE_LIRC) - MESSAGE(STATUS "Found LIRC (${LIRC_LIBRARY})") - SET(LIRC_LIBS ${LIRC_LIBRARY}) - SET(LIRC_INC_DIR ${LIRC_INCLUDE_DIR}) - SET(LIRC_LIB_DIR ${LIRC_LIBRARY_DIR}) - #MESSAGE("LIRC_LIBS: ${LIRC_LIBS}") - #MESSAGE("LIRC_LIB_DIR: ${LIRC_LIB_DIR}") - #MESSAGE("LIRC_INC_DIR: ${LIRC_INC_DIR}") - ENDIF(LIRC_FOUND) -ENDIF(WANT_LIRC) - -FIND_PACKAGE(MSGFMT REQUIRED) -IF(MSGFMT_FOUND) - MESSAGE(STATUS "Program msgfmt found (${MSGFMT_EXECUTABLE})") -ENDIF(MSGFMT_FOUND) - -FIND_PACKAGE(KDECONFIG) -IF(KDECONFIG_EXECUTABLE) - MESSAGE(STATUS "Program kde-config found (${KDECONFIG_EXECUTABLE})") - #MESSAGE("KDE3PREFIX: ${KDE3PREFIX}") -ENDIF(KDECONFIG_EXECUTABLE) - -FIND_PACKAGE(MEINPROC REQUIRED) -IF(MEINPROC_FOUND) - MESSAGE(STATUS "Program meinproc found (${MEINPROC_EXECUTABLE})") -ENDIF(MEINPROC_FOUND) - -# Check GCC for PCH support -SET(USE_PCH FALSE) -IF(WANT_PCH) - FIND_PACKAGE(PCHSupport) - IF(PCHSupport_FOUND) - SET(USE_PCH TRUE) - ADD_DEFINITIONS(-DUSE_PCH) - MESSAGE(STATUS "Enabling precompiled headers for GCC ${gcc_compiler_version}") - ENDIF(PCHSupport_FOUND) -ENDIF(WANT_PCH) - -# Check PTHREAD_MUTEX_RECURSIVE -INCLUDE(CheckCSourceCompiles) -CHECK_C_SOURCE_COMPILES( - "#include - int main(int argc, char **argv) { - pthread_mutexattr_t attr; - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - return 0; - }" PTHREAD_HAS_MUTEX_RECURSIVE) -IF(PTHREAD_HAS_MUTEX_RECURSIVE) - ADD_DEFINITIONS(-DHAVE_PTHREAD_MUTEX_RECURSIVE) -ENDIF(PTHREAD_HAS_MUTEX_RECURSIVE) -# End of PTHREAD_MUTEX_RECURSIVE Test - -SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -w -fexceptions -DNDEBUG -include tqt.h") -SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -Wall -fexceptions -DDEBUG -include tqt.h") -SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -Wall -fexceptions -DDEBUG -include tqt.h") - -MESSAGE(STATUS "Rosegarden ${VERSION} will be built for install into ${CMAKE_INSTALL_PREFIX}") - -IF(WANT_DEBUG) - IF(WANT_FULLDBG) - MESSAGE(STATUS "Configured to compile including full debug information in the executables") - SET(CMAKE_BUILD_TYPE Debug CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) - ELSE(WANT_FULLDBG) - MESSAGE(STATUS "Configured to compile including debug information in the executables") - SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) - ENDIF(WANT_FULLDBG) -ELSE(WANT_DEBUG) - MESSAGE(STATUS "Configured to compile for release without debug information") - SET(CMAKE_BUILD_TYPE Release CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) -ENDIF(WANT_DEBUG) -MARK_AS_ADVANCED(CMAKE_BUILD_TYPE) - -# Warn the user if important libraries are missing -INCLUDE(UserWarnings) - -# Recurse into the "src" subdirectory. This does not actually -# cause another cmake executable to run. The same process will walk through -# the project's entire directory structure. -# Output directory will be "RGbuild/" -ADD_SUBDIRECTORY(src RGbuild) - -# Build and install the translations directory -ADD_SUBDIRECTORY(po RGbuild/po) - -# Build and install the documentation directory -ADD_SUBDIRECTORY(docs RGbuild/docs) - -# Install data files -ADD_SUBDIRECTORY(data RGbuild/data) - -# install some documents... -# INSTALL( FILES AUTHORS COPYING README TRANSLATORS INSTALL rosegarden.lsm -# DESTINATION share/doc/rosegarden-${VERSION} ) +##### configure checks ########################## + +include( ConfigureChecks.cmake ) + + +###### global compiler settings ################# + +add_definitions( + -DHAVE_CONFIG_H +) + +set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) +set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" ) +set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" ) + + +##### source directories ######################## + +add_subdirectory( src ) +add_subdirectory( data ) +tde_conditional_add_subdirectory( BUILD_DOC doc ) +tde_conditional_add_subdirectory( BUILD_TRANSLATIONS po ) + + +##### write configure files ##################### + +configure_file( config.h.cmake config.h @ONLY ) # create and install the version file FILE(WRITE version.txt "${VERSION}\n") -INSTALL( FILES version.txt - DESTINATION ${KDE3DATADIR}/rosegarden ) - -# uninstall custom target -CONFIGURE_FILE( - "${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - -ADD_CUSTOM_TARGET(uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") - -# Custom target trying to clean the CMake generated files -ADD_CUSTOM_TARGET ( distclean - COMMAND rm -f {,src/,po/,docs/,data/}CMakeCache.txt - COMMAND rm -f {,src/,po/,docs/,data/}cmake_install.cmake - COMMAND rm -f {,src/,po/,docs/,data/}cmake_uninstall.cmake - COMMAND rm -f {,src/,po/,docs/,data/}CPackConfig.cmake - COMMAND rm -f {,src/,po/,docs/,data/}CPackSourceConfig.cmake - COMMAND rm -f {,src/,po/,docs/,data/}install_manifest.txt - COMMAND rm -f {,src/,po/,docs/,data/}progress.make - COMMAND rm -f {,src/,po/,docs/,data/}rosegarden.spec - COMMAND rm -f {,src/,po/,docs/,data/}Makefile - COMMAND rm -rf {,src/,po/,docs/,data/}CMakeFiles - COMMAND rm -rf {,src/,po/,docs/,data/}_CPack_Packages - COMMAND rm -rf RGbuild/* - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) -ADD_DEPENDENCIES(distclean clean) +INSTALL( FILES version.txt DESTINATION ${DATA_INSTALL_DIR}/rosegarden ) # configure the RPM spec -CONFIGURE_FILE( - "${CMAKE_SOURCE_DIR}/rosegarden.spec.in" - "${CMAKE_SOURCE_DIR}/rosegarden.spec" - IMMEDIATE @ONLY) - -# tarball target -ADD_CUSTOM_TARGET ( tarball - COMMAND mkdir -p rosegarden-${VERSION} - COMMAND cp -r cmake_admin rosegarden-${VERSION} - COMMAND cp -r data rosegarden-${VERSION} - COMMAND cp -r docs rosegarden-${VERSION} - COMMAND cp -r po rosegarden-${VERSION} - COMMAND cp -r src rosegarden-${VERSION} - COMMAND cp CMakeLists.txt AUTHORS COPYING Doxyfile INSTALL README rosegarden.* TRANSLATORS rosegarden-${VERSION} - COMMAND tar -cj --exclude .svn --exclude gettext-0.10.35-kde -f rosegarden-${VERSION}.tar.bz2 rosegarden-${VERSION} - COMMAND rm -rf rosegarden-${VERSION} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) +CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/rosegarden.spec.in" "${CMAKE_SOURCE_DIR}/rosegarden.spec" IMMEDIATE @ONLY) \ No newline at end of file diff --git a/CMakeLists.txt.orig b/CMakeLists.txt.orig new file mode 100644 index 0000000..719ca20 --- /dev/null +++ b/CMakeLists.txt.orig @@ -0,0 +1,399 @@ +# Rosegarden +# A MIDI and audio sequencer and musical notation editor. +# +# This program is Copyright 2000-2008 +# Guillaume Laurent , +# Chris Cannam , +# Richard Bown +# +# The moral rights of Guillaume Laurent, Chris Cannam, and Richard +# Bown to claim authorship of this work have been asserted. +# +# This file is Copyright 2006-2008 +# Pedro Lopez-Cabanillas +# +# Other copyrights also apply to some parts of this work. Please +# see the AUTHORS file and individual file headers for details. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. See the file +# COPYING included with this distribution for more information. + +# The name of our project is "ROSEGARDEN". CMakeLists files in this project can +# refer to the root source directory of the project as ${ROSEGARDEN_SOURCE_DIR} +# and to the root binary directory of the project as ${ROSEGARDEN_BINARY_DIR} +PROJECT(ROSEGARDEN) + +# CMake supports KDE checks since this version number +CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2) + +# Show full commands and messages. It generates a lot of console output. +# It is necessary for Eclipse warning/error parser, +# but it can be enabled anyway with "make VERBOSE=1" +SET(CMAKE_VERBOSE_MAKEFILE OFF) + +# Seems that relative paths break some scripts. Don't set it ON +SET(CMAKE_USE_RELATIVE_PATHS OFF) + +# Rebuild the object files if the rules have changed, but not the actual source +# files or headers (e.g. if you changed the some compiler switches) +SET(CMAKE_SKIP_RULE_DEPENDENCY OFF) + +# Misc settings +SET(CMAKE_COLOR_MAKEFILE ON) +SET(CMAKE_INCLUDE_CURRENT_DIR ON) +SET(CMAKE_BUILD_WITH_INSTALL_RPATH ON) + +# Additional CMake modules for 3rd party library checks reside here +SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_admin") + +# Mark as advanced +MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH + LIBRARY_OUTPUT_PATH + CMAKE_BACKWARDS_COMPATIBILITY) + +# Rosegarden version string +SET (VERSION_MAJOR "1") +SET (VERSION_MINOR "7") +SET (VERSION_PATCH "0") +# comment out the next line for a public release +#SET (VERSION_SUFFIX "svn") +SET (VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) +IF(VERSION_SUFFIX) + SET (VERSION "${VERSION}-${VERSION_SUFFIX}") +ENDIF(VERSION_SUFFIX) +ADD_DEFINITIONS(-D'VERSION="${VERSION}"') + +# User options +OPTION(WANT_DEBUG "Include debug support" OFF) +OPTION(WANT_FULLDBG "Full debug support (BIG executables!)" OFF) +OPTION(WANT_SOUND "Include Sound support" ON) +OPTION(WANT_JACK "Include Jack (Jack Audio Connection Kit) support" ON) +OPTION(WANT_DSSI "Include DSSI support" ON) +OPTION(WANT_LIRC "Include LIRC (Linux Infrared Remote Control) support" OFF) +OPTION(WANT_PCH "Use precompiled headers" OFF) +OPTION(WANT_TEST "Perform unit tests" OFF) + +IF(WANT_TEST) + ENABLE_TESTING() +ENDIF(WANT_TEST) + +IF(NOT WANT_SOUND) + SET(WANT_JACK OFF) + SET(WANT_DSSI OFF) + ADD_DEFINITIONS(-DNO_SOUND) +ENDIF(NOT WANT_SOUND) + +# Check for KDE3 +FIND_PACKAGE(KDE3 REQUIRED QUIET) +IF(QT_FOUND) + ADD_DEFINITIONS(${QT_DEFINITIONS}) + MESSAGE(STATUS "Found Qt3 (version ${qt_version_str})") + #MESSAGE("QT_LIBRARIES: ${QT_LIBRARIES}") +ELSE(QT_FOUND) + MESSAGE(STATUS_ERROR "Qt3 package not found--assuming TQt4") + SET(QT_INCLUDE_DIR "/usr/include/qt4") +ENDIF(QT_FOUND) +SET(QT_UIC_EXECUTABLE "/usr/bin/uic-tqt") +SET(QT_MOC_EXECUTABLE "/usr/bin/tmoc") +IF(KDE3_FOUND) + ADD_DEFINITIONS(${KDE3_DEFINITIONS}) + #MESSAGE("KDE3PREFIX: ${KDE3PREFIX}") + KDE3_PRINT_RESULTS() + #MESSAGE("QT_AND_TDECORE_LIBS: ${QT_AND_TDECORE_LIBS}") +ELSE(KDE3_FOUND) + MESSAGE(FATAL_ERROR "KDE3 Not found") +ENDIF(KDE3_FOUND) + +# Clear the flags set by FindKDE3 +SET(CMAKE_CXX_FLAGS "-I/usr/include/tqt -include tqt.h -DTQT_THREAD_SUPPORT") +MARK_AS_ADVANCED(KDE3_BUILD_TESTS + KDE3_ENABLE_FINAL + KDE3_DCOPIDL_EXECUTABLE + KDE3_DCOPIDL2CPP_EXECUTABLE + KDE3_INCLUDE_DIR + KDE3_KCFGC_EXECUTABLE + KDE3_TDECORE_LIBRARY + KDECONFIG_EXECUTABLE ) + +# Provide the KDE3 prefix as a default prefix (if the user has CMake 2.4.4) +IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + SET(CMAKE_INSTALL_PREFIX ${KDE3PREFIX} CACHE PATH + "Install path prefix, prepended onto install directories." FORCE) +ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + +# Check for PKG-CONFIG +FIND_PACKAGE(PkgConfig REQUIRED) +IF(PKG_CONFIG_FOUND) + MESSAGE(STATUS "Program pkg-config found (${PKG_CONFIG_EXECUTABLE})") +ELSE(PKG_CONFIG_FOUND) + MESSAGE(FATAL_ERROR "Program pkg-config not found") +ENDIF(PKG_CONFIG_FOUND) + +# Initialize some variables +SET(HAVE_XFT FALSE) +SET(HAVE_ALSA FALSE) +SET(HAVE_JACK FALSE) +SET(HAVE_DSSI FALSE) +SET(HAVE_LIBLO FALSE) +SET(HAVE_LIBLRDF FALSE) +SET(HAVE_LADSPA FALSE) +SET(HAVE_LIRC FALSE) +SET(HAVE_FFTW3F FALSE) + +# Check for Xft +PKG_CHECK_MODULES(XFT xft>=2.1.0) +IF(XFT_FOUND) + ADD_DEFINITIONS(-DHAVE_XFT) + SET(HAVE_XFT TRUE) + SET(XFT_LIBS ${XFT_LIBRARIES}) + #MESSAGE("XFT_LIBS: ${XFT_LIBS}") + LIST(APPEND XFT_LIB_DIR ${XFT_LIBRARY_DIRS} ${XFT_LIBDIR}) + #MESSAGE("XFT_LIB_DIR: ${XFT_LIB_DIR}") + LIST(APPEND XFT_INC_DIR ${XFT_INCLUDE_DIRS} ${XFT_INCLUDEDIR}) + #MESSAGE("XFT_INC_DIR: ${XFT_INC_DIR}") +ENDIF(XFT_FOUND) + +IF(WANT_SOUND) + + # Check for ALSA 1.0 + PKG_CHECK_MODULES(ALSA REQUIRED alsa>=1.0) + IF(ALSA_FOUND) + SET(HAVE_ALSA TRUE) + ADD_DEFINITIONS(-DHAVE_ALSA) + SET(ALSA_LIBS ${ALSA_LIBRARIES}) + #MESSAGE("ALSA_LIBS: ${ALSA_LIBS}") + LIST(APPEND ALSA_LIB_DIR ${ALSA_LIBRARY_DIRS} ${ALSA_LIBDIR} ) + #MESSAGE("ALSA_LIB_DIR: ${ALSA_LIB_DIR}") + LIST(APPEND ALSA_INC_DIR ${ALSA_INCLUDE_DIRS} ${ALSA_INCLUDEDIR}) + #MESSAGE("ALSA_INC_DIR: ${ALSA_INC_DIR}") + ELSE(ALSA_FOUND) + MESSAGE(FATAL_ERROR "Please install the required package. Aborting") + ENDIF(ALSA_FOUND) + + IF(WANT_JACK) + PKG_CHECK_MODULES(JACK jack>=0.77) + IF(JACK_FOUND) + ADD_DEFINITIONS(-DHAVE_LIBJACK) + SET(HAVE_JACK TRUE) + SET(JACK_LIBS ${JACK_LIBRARIES}) + #MESSAGE("JACK_LIBS: ${JACK_LIBS}") + LIST(APPEND JACK_LIB_DIR ${JACK_LIBDIR} ${JACK_LIBRARY_DIRS}) + #MESSAGE("JACK_LIB_DIR: ${JACK_LIB_DIR}") + LIST(APPEND JACK_INC_DIR ${JACK_INCLUDEDIR} ${JACK_INCLUDE_DIRS}) + #MESSAGE("JACK_INC_DIR: ${JACK_INC_DIR}") + ENDIF(JACK_FOUND) + ENDIF(WANT_JACK) + + IF(WANT_DSSI) + PKG_CHECK_MODULES(DSSI dssi>=0.4) + IF(DSSI_FOUND) + ADD_DEFINITIONS(-DHAVE_DSSI) + SET(HAVE_DSSI TRUE) + LIST(APPEND DSSI_INC_DIR ${DSSI_INCLUDE_DIRS} ${DSSI_INCLUDEDIR}) + #MESSAGE("DSSI_INC_DIR: ${DSSI_INC_DIR}") + ENDIF(DSSI_FOUND) + ENDIF(WANT_DSSI) + + PKG_CHECK_MODULES(LIBLO liblo>=0.7) + IF(LIBLO_FOUND) + ADD_DEFINITIONS(-DHAVE_LIBLO) + SET(HAVE_LIBLO TRUE) + SET(LIBLO_LIBS ${LIBLO_LIBRARIES}) + #MESSAGE("LIBLO_LIBS: ${LIBLO_LIBS}") + LIST(APPEND LIBLO_LIB_DIR ${LIBLO_LIBDIR} ${LIBLO_LIBRARY_DIRS}) + #MESSAGE("LIBLO_LIB_DIR: ${LIBLO_LIB_DIR}") + LIST(APPEND LIBLO_INC_DIR ${LIBLO_INCLUDEDIR} ${LIBLO_INCLUDE_DIRS}) + #MESSAGE("LIBLO_INC_DIR: ${LIBLO_INC_DIR}") + ENDIF(LIBLO_FOUND) + + PKG_CHECK_MODULES(LRDF lrdf>=0.3) + IF(LRDF_FOUND) + SET(HAVE_LIBLRDF TRUE) + ADD_DEFINITIONS(-DHAVE_LIBLRDF) + SET(LRDF_LIBS ${LRDF_LIBRARIES}) + #MESSAGE("LRDF_LIBS: ${LRDF_LIBS}") + LIST(APPEND LRDF_LIB_DIR ${LRDF_LIBDIR} ${LRDF_LIBRARY_DIRS}) + #MESSAGE("LRDF_LIB_DIR: ${LRDF_LIB_DIR}") + LIST(APPEND LRDF_INC_DIR ${LRDF_INCLUDEDIR} ${LRDF_INCLUDE_DIRS}) + #MESSAGE("LRDF_INC_DIR: ${LRDF_INC_DIR}") + ENDIF(LRDF_FOUND) + + FIND_PACKAGE(LADSPA QUIET) + IF(LADSPA_FOUND) + SET(HAVE_LADSPA TRUE) + ADD_DEFINITIONS(-DHAVE_LADSPA) + SET(LADSPA_INC_DIR ${LADSPA_INCLUDE_DIR}) + MESSAGE(STATUS "Found LADSPA (${LADSPA_INC_DIR})") + ENDIF(LADSPA_FOUND) + +ENDIF(WANT_SOUND) + +PKG_CHECK_MODULES(FFTW3F REQUIRED fftw3f>=3.0.0) +IF(FFTW3F_FOUND) + ADD_DEFINITIONS(-DHAVE_FFTW3F) + SET(HAVE_FFTW3F TRUE) + SET(FFTW3F_LIBS ${FFTW3F_LIBRARIES}) + #MESSAGE("FFTW3F_LIBS: ${FFTW3F_LIBS}") + LIST(APPEND FFTW3F_LIB_DIR ${FFTW3F_LIBDIR} ${FFTW3F_LIBRARY_DIRS}) + #MESSAGE("FFTW3F_LIB_DIR: ${FFTW3F_LIB_DIR}") + LIST(APPEND FFTW3F_INC_DIR ${FFTW3F_INCLUDEDIR} ${FFTW3F_INCLUDE_DIRS}) + #MESSAGE("FFTW3F_INC_DIR: ${FFTW3F_INC_DIR}") +ELSE(FFTW3F_FOUND) + MESSAGE(FATAL_ERROR "Please install the required package. Aborting") +ENDIF(FFTW3F_FOUND) + +IF(WANT_LIRC) + FIND_PACKAGE(LIRC QUIET) + IF(LIRC_FOUND) + SET(HAVE_LIRC TRUE) + ADD_DEFINITIONS(-DHAVE_LIRC) + MESSAGE(STATUS "Found LIRC (${LIRC_LIBRARY})") + SET(LIRC_LIBS ${LIRC_LIBRARY}) + SET(LIRC_INC_DIR ${LIRC_INCLUDE_DIR}) + SET(LIRC_LIB_DIR ${LIRC_LIBRARY_DIR}) + #MESSAGE("LIRC_LIBS: ${LIRC_LIBS}") + #MESSAGE("LIRC_LIB_DIR: ${LIRC_LIB_DIR}") + #MESSAGE("LIRC_INC_DIR: ${LIRC_INC_DIR}") + ENDIF(LIRC_FOUND) +ENDIF(WANT_LIRC) + +FIND_PACKAGE(MSGFMT REQUIRED) +IF(MSGFMT_FOUND) + MESSAGE(STATUS "Program msgfmt found (${MSGFMT_EXECUTABLE})") +ENDIF(MSGFMT_FOUND) + +FIND_PACKAGE(KDECONFIG) +IF(KDECONFIG_EXECUTABLE) + MESSAGE(STATUS "Program kde-config found (${KDECONFIG_EXECUTABLE})") + #MESSAGE("KDE3PREFIX: ${KDE3PREFIX}") +ENDIF(KDECONFIG_EXECUTABLE) + +FIND_PACKAGE(MEINPROC REQUIRED) +IF(MEINPROC_FOUND) + MESSAGE(STATUS "Program meinproc found (${MEINPROC_EXECUTABLE})") +ENDIF(MEINPROC_FOUND) + +# Check GCC for PCH support +SET(USE_PCH FALSE) +IF(WANT_PCH) + FIND_PACKAGE(PCHSupport) + IF(PCHSupport_FOUND) + SET(USE_PCH TRUE) + ADD_DEFINITIONS(-DUSE_PCH) + MESSAGE(STATUS "Enabling precompiled headers for GCC ${gcc_compiler_version}") + ENDIF(PCHSupport_FOUND) +ENDIF(WANT_PCH) + +# Check PTHREAD_MUTEX_RECURSIVE +INCLUDE(CheckCSourceCompiles) +CHECK_C_SOURCE_COMPILES( + "#include + int main(int argc, char **argv) { + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + return 0; + }" PTHREAD_HAS_MUTEX_RECURSIVE) +IF(PTHREAD_HAS_MUTEX_RECURSIVE) + ADD_DEFINITIONS(-DHAVE_PTHREAD_MUTEX_RECURSIVE) +ENDIF(PTHREAD_HAS_MUTEX_RECURSIVE) +# End of PTHREAD_MUTEX_RECURSIVE Test + +SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -w -fexceptions -DNDEBUG -include tqt.h") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -Wall -fexceptions -DDEBUG -include tqt.h") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -Wall -fexceptions -DDEBUG -include tqt.h") + +MESSAGE(STATUS "Rosegarden ${VERSION} will be built for install into ${CMAKE_INSTALL_PREFIX}") + +IF(WANT_DEBUG) + IF(WANT_FULLDBG) + MESSAGE(STATUS "Configured to compile including full debug information in the executables") + SET(CMAKE_BUILD_TYPE Debug CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) + ELSE(WANT_FULLDBG) + MESSAGE(STATUS "Configured to compile including debug information in the executables") + SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) + ENDIF(WANT_FULLDBG) +ELSE(WANT_DEBUG) + MESSAGE(STATUS "Configured to compile for release without debug information") + SET(CMAKE_BUILD_TYPE Release CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) +ENDIF(WANT_DEBUG) +MARK_AS_ADVANCED(CMAKE_BUILD_TYPE) + +# Warn the user if important libraries are missing +INCLUDE(UserWarnings) + +# Recurse into the "src" subdirectory. This does not actually +# cause another cmake executable to run. The same process will walk through +# the project's entire directory structure. +# Output directory will be "RGbuild/" +ADD_SUBDIRECTORY(src RGbuild) + +# Build and install the translations directory +ADD_SUBDIRECTORY(po RGbuild/po) + +# Build and install the documentation directory +ADD_SUBDIRECTORY(docs RGbuild/docs) + +# Install data files +ADD_SUBDIRECTORY(data RGbuild/data) + +# install some documents... +# INSTALL( FILES AUTHORS COPYING README TRANSLATORS INSTALL rosegarden.lsm +# DESTINATION share/doc/rosegarden-${VERSION} ) + +# create and install the version file +FILE(WRITE version.txt "${VERSION}\n") +INSTALL( FILES version.txt + DESTINATION ${KDE3DATADIR}/rosegarden ) + +# uninstall custom target +CONFIGURE_FILE( + "${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + +ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + +# Custom target trying to clean the CMake generated files +ADD_CUSTOM_TARGET ( distclean + COMMAND rm -f {,src/,po/,docs/,data/}CMakeCache.txt + COMMAND rm -f {,src/,po/,docs/,data/}cmake_install.cmake + COMMAND rm -f {,src/,po/,docs/,data/}cmake_uninstall.cmake + COMMAND rm -f {,src/,po/,docs/,data/}CPackConfig.cmake + COMMAND rm -f {,src/,po/,docs/,data/}CPackSourceConfig.cmake + COMMAND rm -f {,src/,po/,docs/,data/}install_manifest.txt + COMMAND rm -f {,src/,po/,docs/,data/}progress.make + COMMAND rm -f {,src/,po/,docs/,data/}rosegarden.spec + COMMAND rm -f {,src/,po/,docs/,data/}Makefile + COMMAND rm -rf {,src/,po/,docs/,data/}CMakeFiles + COMMAND rm -rf {,src/,po/,docs/,data/}_CPack_Packages + COMMAND rm -rf RGbuild/* + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) +ADD_DEPENDENCIES(distclean clean) + +# configure the RPM spec +CONFIGURE_FILE( + "${CMAKE_SOURCE_DIR}/rosegarden.spec.in" + "${CMAKE_SOURCE_DIR}/rosegarden.spec" + IMMEDIATE @ONLY) + +# tarball target +ADD_CUSTOM_TARGET ( tarball + COMMAND mkdir -p rosegarden-${VERSION} + COMMAND cp -r cmake_admin rosegarden-${VERSION} + COMMAND cp -r data rosegarden-${VERSION} + COMMAND cp -r docs rosegarden-${VERSION} + COMMAND cp -r po rosegarden-${VERSION} + COMMAND cp -r src rosegarden-${VERSION} + COMMAND cp CMakeLists.txt AUTHORS COPYING Doxyfile INSTALL README rosegarden.* TRANSLATORS rosegarden-${VERSION} + COMMAND tar -cj --exclude .svn --exclude gettext-0.10.35-kde -f rosegarden-${VERSION}.tar.bz2 rosegarden-${VERSION} + COMMAND rm -rf rosegarden-${VERSION} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} +) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake new file mode 100644 index 0000000..efe717d --- /dev/null +++ b/ConfigureChecks.cmake @@ -0,0 +1,217 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +if( BUILD_TRANSLATIONS AND NOT DEFINED MSGFMT_EXECUTABLE ) + find_program( MSGFMT_EXECUTABLE msgfmt ) + if( NOT MSGFMT_EXECUTABLE ) + tde_message_fatal( "msgfmt program is required, but was not found on your system" ) + endif( ) +endif( ) + +# Initialize some variables +SET(HAVE_XFT FALSE) +SET(HAVE_ALSA FALSE) +SET(HAVE_JACK FALSE) +SET(HAVE_DSSI FALSE) +SET(HAVE_LIBLO FALSE) +SET(HAVE_LIBLRDF FALSE) +SET(HAVE_LADSPA FALSE) +SET(HAVE_LIRC FALSE) +SET(HAVE_FFTW3F FALSE) + +# Check for Xft +PKG_CHECK_MODULES(XFT xft>=2.1.0) +IF(XFT_FOUND) + ADD_DEFINITIONS(-DHAVE_XFT) + SET(HAVE_XFT TRUE) + SET(XFT_LIBS ${XFT_LIBRARIES}) + #MESSAGE("XFT_LIBS: ${XFT_LIBS}") + LIST(APPEND XFT_LIB_DIR ${XFT_LIBRARY_DIRS} ${XFT_LIBDIR}) + #MESSAGE("XFT_LIB_DIR: ${XFT_LIB_DIR}") + LIST(APPEND XFT_INC_DIR ${XFT_INCLUDE_DIRS} ${XFT_INCLUDEDIR}) + #MESSAGE("XFT_INC_DIR: ${XFT_INC_DIR}") +ENDIF(XFT_FOUND) + +IF(WANT_SOUND) + + # Check for ALSA 1.0 + PKG_CHECK_MODULES(ALSA REQUIRED alsa>=1.0) + IF(ALSA_FOUND) + SET(HAVE_ALSA TRUE) + ADD_DEFINITIONS(-DHAVE_ALSA) + SET(ALSA_LIBS ${ALSA_LIBRARIES}) + #MESSAGE("ALSA_LIBS: ${ALSA_LIBS}") + LIST(APPEND ALSA_LIB_DIR ${ALSA_LIBRARY_DIRS} ${ALSA_LIBDIR} ) + #MESSAGE("ALSA_LIB_DIR: ${ALSA_LIB_DIR}") + LIST(APPEND ALSA_INC_DIR ${ALSA_INCLUDE_DIRS} ${ALSA_INCLUDEDIR}) + #MESSAGE("ALSA_INC_DIR: ${ALSA_INC_DIR}") + ELSE(ALSA_FOUND) + MESSAGE(FATAL_ERROR "Please install the required package. Aborting") + ENDIF(ALSA_FOUND) + + IF(WANT_JACK) + PKG_CHECK_MODULES(JACK jack>=0.77) + IF(JACK_FOUND) + ADD_DEFINITIONS(-DHAVE_LIBJACK) + SET(HAVE_JACK TRUE) + SET(JACK_LIBS ${JACK_LIBRARIES}) + #MESSAGE("JACK_LIBS: ${JACK_LIBS}") + LIST(APPEND JACK_LIB_DIR ${JACK_LIBDIR} ${JACK_LIBRARY_DIRS}) + #MESSAGE("JACK_LIB_DIR: ${JACK_LIB_DIR}") + LIST(APPEND JACK_INC_DIR ${JACK_INCLUDEDIR} ${JACK_INCLUDE_DIRS}) + #MESSAGE("JACK_INC_DIR: ${JACK_INC_DIR}") + ENDIF(JACK_FOUND) + ENDIF(WANT_JACK) + + IF(WANT_DSSI) + PKG_CHECK_MODULES(DSSI dssi>=0.4) + IF(DSSI_FOUND) + ADD_DEFINITIONS(-DHAVE_DSSI) + SET(HAVE_DSSI TRUE) + LIST(APPEND DSSI_INC_DIR ${DSSI_INCLUDE_DIRS} ${DSSI_INCLUDEDIR}) + #MESSAGE("DSSI_INC_DIR: ${DSSI_INC_DIR}") + ENDIF(DSSI_FOUND) + ENDIF(WANT_DSSI) + + PKG_CHECK_MODULES(LIBLO liblo>=0.7) + IF(LIBLO_FOUND) + ADD_DEFINITIONS(-DHAVE_LIBLO) + SET(HAVE_LIBLO TRUE) + SET(LIBLO_LIBS ${LIBLO_LIBRARIES}) + #MESSAGE("LIBLO_LIBS: ${LIBLO_LIBS}") + LIST(APPEND LIBLO_LIB_DIR ${LIBLO_LIBDIR} ${LIBLO_LIBRARY_DIRS}) + #MESSAGE("LIBLO_LIB_DIR: ${LIBLO_LIB_DIR}") + LIST(APPEND LIBLO_INC_DIR ${LIBLO_INCLUDEDIR} ${LIBLO_INCLUDE_DIRS}) + #MESSAGE("LIBLO_INC_DIR: ${LIBLO_INC_DIR}") + ENDIF(LIBLO_FOUND) + + PKG_CHECK_MODULES(LRDF lrdf>=0.3) + IF(LRDF_FOUND) + SET(HAVE_LIBLRDF TRUE) + ADD_DEFINITIONS(-DHAVE_LIBLRDF) + SET(LRDF_LIBS ${LRDF_LIBRARIES}) + #MESSAGE("LRDF_LIBS: ${LRDF_LIBS}") + LIST(APPEND LRDF_LIB_DIR ${LRDF_LIBDIR} ${LRDF_LIBRARY_DIRS}) + #MESSAGE("LRDF_LIB_DIR: ${LRDF_LIB_DIR}") + LIST(APPEND LRDF_INC_DIR ${LRDF_INCLUDEDIR} ${LRDF_INCLUDE_DIRS}) + #MESSAGE("LRDF_INC_DIR: ${LRDF_INC_DIR}") + ENDIF(LRDF_FOUND) + + FIND_PACKAGE(LADSPA QUIET) + IF(LADSPA_FOUND) + SET(HAVE_LADSPA TRUE) + ADD_DEFINITIONS(-DHAVE_LADSPA) + SET(LADSPA_INC_DIR ${LADSPA_INCLUDE_DIR}) + MESSAGE(STATUS "Found LADSPA (${LADSPA_INC_DIR})") + ENDIF(LADSPA_FOUND) + +ENDIF(WANT_SOUND) + +PKG_CHECK_MODULES(FFTW3F REQUIRED fftw3f>=3.0.0) +IF(FFTW3F_FOUND) + ADD_DEFINITIONS(-DHAVE_FFTW3F) + SET(HAVE_FFTW3F TRUE) + SET(FFTW3F_LIBS ${FFTW3F_LIBRARIES}) + #MESSAGE("FFTW3F_LIBS: ${FFTW3F_LIBS}") + LIST(APPEND FFTW3F_LIB_DIR ${FFTW3F_LIBDIR} ${FFTW3F_LIBRARY_DIRS}) + #MESSAGE("FFTW3F_LIB_DIR: ${FFTW3F_LIB_DIR}") + LIST(APPEND FFTW3F_INC_DIR ${FFTW3F_INCLUDEDIR} ${FFTW3F_INCLUDE_DIRS}) + #MESSAGE("FFTW3F_INC_DIR: ${FFTW3F_INC_DIR}") +ELSE(FFTW3F_FOUND) + MESSAGE(FATAL_ERROR "Please install the required package. Aborting") +ENDIF(FFTW3F_FOUND) + +IF(WANT_LIRC) + FIND_PACKAGE(LIRC QUIET) + IF(LIRC_FOUND) + SET(HAVE_LIRC TRUE) + ADD_DEFINITIONS(-DHAVE_LIRC) + MESSAGE(STATUS "Found LIRC (${LIRC_LIBRARY})") + SET(LIRC_LIBS ${LIRC_LIBRARY}) + SET(LIRC_INC_DIR ${LIRC_INCLUDE_DIR}) + SET(LIRC_LIB_DIR ${LIRC_LIBRARY_DIR}) + #MESSAGE("LIRC_LIBS: ${LIRC_LIBS}") + #MESSAGE("LIRC_LIB_DIR: ${LIRC_LIB_DIR}") + #MESSAGE("LIRC_INC_DIR: ${LIRC_INC_DIR}") + ENDIF(LIRC_FOUND) +ENDIF(WANT_LIRC) + +FIND_PACKAGE(KDECONFIG) +IF(KDECONFIG_EXECUTABLE) + MESSAGE(STATUS "Program kde-config found (${KDECONFIG_EXECUTABLE})") + #MESSAGE("KDE3PREFIX: ${KDE3PREFIX}") +ENDIF(KDECONFIG_EXECUTABLE) + +FIND_PACKAGE(MEINPROC REQUIRED) +IF(MEINPROC_FOUND) + MESSAGE(STATUS "Program meinproc found (${MEINPROC_EXECUTABLE})") +ENDIF(MEINPROC_FOUND) + +# Check GCC for PCH support +SET(USE_PCH FALSE) +IF(WANT_PCH) + FIND_PACKAGE(PCHSupport) + IF(PCHSupport_FOUND) + SET(USE_PCH TRUE) + ADD_DEFINITIONS(-DUSE_PCH) + MESSAGE(STATUS "Enabling precompiled headers for GCC ${gcc_compiler_version}") + ENDIF(PCHSupport_FOUND) +ENDIF(WANT_PCH) + +# Check PTHREAD_MUTEX_RECURSIVE +INCLUDE(CheckCSourceCompiles) +CHECK_C_SOURCE_COMPILES( + "#include + int main(int argc, char **argv) { + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + return 0; + }" PTHREAD_HAS_MUTEX_RECURSIVE) +IF(PTHREAD_HAS_MUTEX_RECURSIVE) + ADD_DEFINITIONS(-DHAVE_PTHREAD_MUTEX_RECURSIVE) +ENDIF(PTHREAD_HAS_MUTEX_RECURSIVE) +# End of PTHREAD_MUTEX_RECURSIVE Test + +SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -w -fexceptions -DNDEBUG -include tqt.h") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -Wall -fexceptions -DDEBUG -include tqt.h") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -Wall -fexceptions -DDEBUG -include tqt.h") + +MESSAGE(STATUS "Rosegarden ${VERSION} will be built for install into ${CMAKE_INSTALL_PREFIX}") + +IF(WANT_DEBUG) + IF(WANT_FULLDBG) + MESSAGE(STATUS "Configured to compile including full debug information in the executables") + SET(CMAKE_BUILD_TYPE Debug CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) + ELSE(WANT_FULLDBG) + MESSAGE(STATUS "Configured to compile including debug information in the executables") + SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) + ENDIF(WANT_FULLDBG) +ELSE(WANT_DEBUG) + MESSAGE(STATUS "Configured to compile for release without debug information") + SET(CMAKE_BUILD_TYPE Release CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) +ENDIF(WANT_DEBUG) +MARK_AS_ADVANCED(CMAKE_BUILD_TYPE) + +check_type_size( "int" SIZEOF_INT BUILTIN_TYPES_ONLY ) +check_type_size( "long" SIZEOF_LONG BUILTIN_TYPES_ONLY ) + +check_include_file( stdint.h HAVE_STDINT_H ) +check_include_file( systems.h HAVE_SYSTEMS_H ) +check_include_file( linux/inotify.h HAVE_INOTIFY ) + +check_function_exists( statvfs HAVE_STATVFS ) + +# common required stuff +find_package( TQt ) +find_package( TDE ) diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..d81a482 --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,5 @@ +#cmakedefine SIZEOF_INT @SIZEOF_INT@ +#cmakedefine SIZEOF_LONG @SIZEOF_LONG@ +#cmakedefine HAVE_STDINT_H 1 +#cmakedefine HAVE_SYSTEMS_H 1 +#cmakedefine HAVE_STATVFS 1 \ No newline at end of file diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 1dfc834..bec89cf 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,9 +1,9 @@ # Data directory -SET(DATADIR ${KDE3DATADIR}/rosegarden) -SET(ICONDIR ${KDE3ICONDIR}) -SET(MIMEDIR ${KDE3MIMEDIR}/audio) -SET(MENUDIR ${KDE3MENUDIR}) +SET(DATADIR ${DATA_INSTALL_DIR}/rosegarden) +SET(ICONDIR ${ICON_INSTALL_DIR}) +SET(MIMEDIR ${MIME_INSTALL_DIR}/audio) +SET(MENUDIR ${XDG_MENU_INSTALL_DIR}) # Guitar chord files FILE(GLOB CHORD_FILES chords/*.xml) @@ -80,7 +80,7 @@ INSTALL(FILES ${PIXMAP_FILES} DESTINATION ${DATADIR}/pixmaps/toolbar) FILE(GLOB PIXMAP_FILES pixmaps/transport/*.xpm pixmaps/transport/*.png) INSTALL(FILES ${PIXMAP_FILES} DESTINATION ${DATADIR}/pixmaps/transport) -# Splash +# Splash INSTALL(FILES pixmaps/splash.png DESTINATION ${DATADIR}/pixmaps) # Examples @@ -114,12 +114,12 @@ SET(EXAMPLE_FILES examples/vivaldi-cs3mv2.rg examples/vivaldi_op44_11_1.rg ) -INSTALL(FILES ${EXAMPLE_FILES} DESTINATION ${DATADIR}/examples) +INSTALL(FILES ${EXAMPLE_FILES} DESTINATION ${DATADIR}/examples) INSTALL(FILES examples/autoload.rg DESTINATION ${DATADIR}) -# Library +# Library FILE(GLOB RGD_FILES library/*.rgd) INSTALL(FILES ${RGD_FILES} DESTINATION ${DATADIR}/library) # KDE LIRC Profile -INSTALL(FILES profile/rosegarden.profile.xml DESTINATION ${KDE3DATADIR}/profiles) +INSTALL(FILES profile/rosegarden.profile.xml DESTINATION ${DATA_INSTALL_DIR}/profiles) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..a8b8de4 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2010-2011 Serghei Amelian +# serghei (DOT) amelian (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_auto_add_subdirectories() diff --git a/docs/de/.gitignore b/doc/de/.gitignore similarity index 100% rename from docs/de/.gitignore rename to doc/de/.gitignore diff --git a/doc/en/CMakeLists.txt b/doc/en/CMakeLists.txt new file mode 100644 index 0000000..eb6d853 --- /dev/null +++ b/doc/en/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_create_handbook( DESTINATION rosegarden ) diff --git a/docs/en/headers-and-unicode-lyrics.png b/doc/en/headers-and-unicode-lyrics.png similarity index 100% rename from docs/en/headers-and-unicode-lyrics.png rename to doc/en/headers-and-unicode-lyrics.png diff --git a/docs/en/index.docbook b/doc/en/index.docbook similarity index 100% rename from docs/en/index.docbook rename to doc/en/index.docbook diff --git a/docs/en/rg-audiofilemanager.png b/doc/en/rg-audiofilemanager.png similarity index 100% rename from docs/en/rg-audiofilemanager.png rename to doc/en/rg-audiofilemanager.png diff --git a/docs/en/rg-audiomixer.png b/doc/en/rg-audiomixer.png similarity index 100% rename from docs/en/rg-audiomixer.png rename to doc/en/rg-audiomixer.png diff --git a/docs/en/rg-bankeditor.png b/doc/en/rg-bankeditor.png similarity index 100% rename from docs/en/rg-bankeditor.png rename to doc/en/rg-bankeditor.png diff --git a/docs/en/rg-button-bar-time.png b/doc/en/rg-button-bar-time.png similarity index 100% rename from docs/en/rg-button-bar-time.png rename to doc/en/rg-button-bar-time.png diff --git a/docs/en/rg-button-from-end.png b/doc/en/rg-button-from-end.png similarity index 100% rename from docs/en/rg-button-from-end.png rename to doc/en/rg-button-from-end.png diff --git a/docs/en/rg-clefdialog.png b/doc/en/rg-clefdialog.png similarity index 100% rename from docs/en/rg-clefdialog.png rename to doc/en/rg-clefdialog.png diff --git a/docs/en/rg-coda.png b/doc/en/rg-coda.png similarity index 100% rename from docs/en/rg-coda.png rename to doc/en/rg-coda.png diff --git a/docs/en/rg-colours.png b/doc/en/rg-colours.png similarity index 100% rename from docs/en/rg-colours.png rename to doc/en/rg-colours.png diff --git a/docs/en/rg-cursors.png b/doc/en/rg-cursors.png similarity index 100% rename from docs/en/rg-cursors.png rename to doc/en/rg-cursors.png diff --git a/docs/en/rg-devicemanager.png b/doc/en/rg-devicemanager.png similarity index 100% rename from docs/en/rg-devicemanager.png rename to doc/en/rg-devicemanager.png diff --git a/docs/en/rg-eraser.png b/doc/en/rg-eraser.png similarity index 100% rename from docs/en/rg-eraser.png rename to doc/en/rg-eraser.png diff --git a/docs/en/rg-eventfilter.png b/doc/en/rg-eventfilter.png similarity index 100% rename from docs/en/rg-eventfilter.png rename to doc/en/rg-eventfilter.png diff --git a/docs/en/rg-eventlisteditor.png b/doc/en/rg-eventlisteditor.png similarity index 100% rename from docs/en/rg-eventlisteditor.png rename to doc/en/rg-eventlisteditor.png diff --git a/docs/en/rg-gridquantizer.png b/doc/en/rg-gridquantizer.png similarity index 100% rename from docs/en/rg-gridquantizer.png rename to doc/en/rg-gridquantizer.png diff --git a/docs/en/rg-guitarchorddialog.png b/doc/en/rg-guitarchorddialog.png similarity index 100% rename from docs/en/rg-guitarchorddialog.png rename to doc/en/rg-guitarchorddialog.png diff --git a/docs/en/rg-guitarchordeditordialog.png b/doc/en/rg-guitarchordeditordialog.png similarity index 100% rename from docs/en/rg-guitarchordeditordialog.png rename to doc/en/rg-guitarchordeditordialog.png diff --git a/docs/en/rg-ipb-audio.png b/doc/en/rg-ipb-audio.png similarity index 100% rename from docs/en/rg-ipb-audio.png rename to doc/en/rg-ipb-audio.png diff --git a/docs/en/rg-ipb-midi.png b/doc/en/rg-ipb-midi.png similarity index 100% rename from docs/en/rg-ipb-midi.png rename to doc/en/rg-ipb-midi.png diff --git a/docs/en/rg-ipb-synth.png b/doc/en/rg-ipb-synth.png similarity index 100% rename from docs/en/rg-ipb-synth.png rename to doc/en/rg-ipb-synth.png diff --git a/docs/en/rg-keysigdialog.png b/doc/en/rg-keysigdialog.png similarity index 100% rename from docs/en/rg-keysigdialog.png rename to doc/en/rg-keysigdialog.png diff --git a/docs/en/rg-loadpreset.png b/doc/en/rg-loadpreset.png similarity index 100% rename from docs/en/rg-loadpreset.png rename to doc/en/rg-loadpreset.png diff --git a/docs/en/rg-mainwindow.png b/doc/en/rg-mainwindow.png similarity index 100% rename from docs/en/rg-mainwindow.png rename to doc/en/rg-mainwindow.png diff --git a/docs/en/rg-markerloop.png b/doc/en/rg-markerloop.png similarity index 100% rename from docs/en/rg-markerloop.png rename to doc/en/rg-markerloop.png diff --git a/docs/en/rg-matrixview.png b/doc/en/rg-matrixview.png similarity index 100% rename from docs/en/rg-matrixview.png rename to doc/en/rg-matrixview.png diff --git a/docs/en/rg-metronome.png b/doc/en/rg-metronome.png similarity index 100% rename from docs/en/rg-metronome.png rename to doc/en/rg-metronome.png diff --git a/docs/en/rg-midifilter.png b/doc/en/rg-midifilter.png similarity index 100% rename from docs/en/rg-midifilter.png rename to doc/en/rg-midifilter.png diff --git a/docs/en/rg-midimixer.png b/doc/en/rg-midimixer.png similarity index 100% rename from docs/en/rg-midimixer.png rename to doc/en/rg-midimixer.png diff --git a/docs/en/rg-move.png b/doc/en/rg-move.png similarity index 100% rename from docs/en/rg-move.png rename to doc/en/rg-move.png diff --git a/docs/en/rg-notation-toolbars.png b/doc/en/rg-notation-toolbars.png similarity index 100% rename from docs/en/rg-notation-toolbars.png rename to doc/en/rg-notation-toolbars.png diff --git a/docs/en/rg-notationquantizer.png b/doc/en/rg-notationquantizer.png similarity index 100% rename from docs/en/rg-notationquantizer.png rename to doc/en/rg-notationquantizer.png diff --git a/docs/en/rg-notationtools.png b/doc/en/rg-notationtools.png similarity index 100% rename from docs/en/rg-notationtools.png rename to doc/en/rg-notationtools.png diff --git a/docs/en/rg-notationview-multipage.png b/doc/en/rg-notationview-multipage.png similarity index 100% rename from docs/en/rg-notationview-multipage.png rename to doc/en/rg-notationview-multipage.png diff --git a/docs/en/rg-notationview.png b/doc/en/rg-notationview.png similarity index 100% rename from docs/en/rg-notationview.png rename to doc/en/rg-notationview.png diff --git a/docs/en/rg-pastedialog.png b/doc/en/rg-pastedialog.png similarity index 100% rename from docs/en/rg-pastedialog.png rename to doc/en/rg-pastedialog.png diff --git a/docs/en/rg-pencil.png b/doc/en/rg-pencil.png similarity index 100% rename from docs/en/rg-pencil.png rename to doc/en/rg-pencil.png diff --git a/docs/en/rg-percussionmatrix.png b/doc/en/rg-percussionmatrix.png similarity index 100% rename from docs/en/rg-percussionmatrix.png rename to doc/en/rg-percussionmatrix.png diff --git a/docs/en/rg-plugin-dialog.png b/doc/en/rg-plugin-dialog.png similarity index 100% rename from docs/en/rg-plugin-dialog.png rename to doc/en/rg-plugin-dialog.png diff --git a/docs/en/rg-pluginbuttons.png b/doc/en/rg-pluginbuttons.png similarity index 100% rename from docs/en/rg-pluginbuttons.png rename to doc/en/rg-pluginbuttons.png diff --git a/docs/en/rg-plugineditorbutton.png b/doc/en/rg-plugineditorbutton.png similarity index 100% rename from docs/en/rg-plugineditorbutton.png rename to doc/en/rg-plugineditorbutton.png diff --git a/docs/en/rg-quickmarker.png b/doc/en/rg-quickmarker.png similarity index 100% rename from docs/en/rg-quickmarker.png rename to doc/en/rg-quickmarker.png diff --git a/docs/en/rg-rawnoteruler.png b/doc/en/rg-rawnoteruler.png similarity index 100% rename from docs/en/rg-rawnoteruler.png rename to doc/en/rg-rawnoteruler.png diff --git a/docs/en/rg-resize.png b/doc/en/rg-resize.png similarity index 100% rename from docs/en/rg-resize.png rename to doc/en/rg-resize.png diff --git a/docs/en/rg-segmentparameterbox.png b/doc/en/rg-segmentparameterbox.png similarity index 100% rename from docs/en/rg-segmentparameterbox.png rename to doc/en/rg-segmentparameterbox.png diff --git a/docs/en/rg-segno.png b/doc/en/rg-segno.png similarity index 100% rename from docs/en/rg-segno.png rename to doc/en/rg-segno.png diff --git a/docs/en/rg-select.png b/doc/en/rg-select.png similarity index 100% rename from docs/en/rg-select.png rename to doc/en/rg-select.png diff --git a/docs/en/rg-split.png b/doc/en/rg-split.png similarity index 100% rename from docs/en/rg-split.png rename to doc/en/rg-split.png diff --git a/docs/en/rg-synthpluginbuttons.png b/doc/en/rg-synthpluginbuttons.png similarity index 100% rename from docs/en/rg-synthpluginbuttons.png rename to doc/en/rg-synthpluginbuttons.png diff --git a/docs/en/rg-tempodialog.png b/doc/en/rg-tempodialog.png similarity index 100% rename from docs/en/rg-tempodialog.png rename to doc/en/rg-tempodialog.png diff --git a/docs/en/rg-temporuler.png b/doc/en/rg-temporuler.png similarity index 100% rename from docs/en/rg-temporuler.png rename to doc/en/rg-temporuler.png diff --git a/docs/en/rg-text-cursor.png b/doc/en/rg-text-cursor.png similarity index 100% rename from docs/en/rg-text-cursor.png rename to doc/en/rg-text-cursor.png diff --git a/docs/en/rg-textdialog.png b/doc/en/rg-textdialog.png similarity index 100% rename from docs/en/rg-textdialog.png rename to doc/en/rg-textdialog.png diff --git a/docs/en/rg-timesigdialog.png b/doc/en/rg-timesigdialog.png similarity index 100% rename from docs/en/rg-timesigdialog.png rename to doc/en/rg-timesigdialog.png diff --git a/docs/en/rg-trackbutton-instrumentmenu.png b/doc/en/rg-trackbutton-instrumentmenu.png similarity index 100% rename from docs/en/rg-trackbutton-instrumentmenu.png rename to doc/en/rg-trackbutton-instrumentmenu.png diff --git a/docs/en/rg-trackbutton-instruments.png b/doc/en/rg-trackbutton-instruments.png similarity index 100% rename from docs/en/rg-trackbutton-instruments.png rename to doc/en/rg-trackbutton-instruments.png diff --git a/docs/en/rg-trackbutton-labels.png b/doc/en/rg-trackbutton-labels.png similarity index 100% rename from docs/en/rg-trackbutton-labels.png rename to doc/en/rg-trackbutton-labels.png diff --git a/docs/en/rg-trackbuttons.png b/doc/en/rg-trackbuttons.png similarity index 100% rename from docs/en/rg-trackbuttons.png rename to doc/en/rg-trackbuttons.png diff --git a/docs/en/rg-trackeditor.png b/doc/en/rg-trackeditor.png similarity index 100% rename from docs/en/rg-trackeditor.png rename to doc/en/rg-trackeditor.png diff --git a/docs/en/rg-trackparameterbox.png b/doc/en/rg-trackparameterbox.png similarity index 100% rename from docs/en/rg-trackparameterbox.png rename to doc/en/rg-trackparameterbox.png diff --git a/docs/en/rg-transport.png b/doc/en/rg-transport.png similarity index 100% rename from docs/en/rg-transport.png rename to doc/en/rg-transport.png diff --git a/docs/en/rg-triggersegment.png b/doc/en/rg-triggersegment.png similarity index 100% rename from docs/en/rg-triggersegment.png rename to doc/en/rg-triggersegment.png diff --git a/docs/en/rg-tupletdialog.png b/doc/en/rg-tupletdialog.png similarity index 100% rename from docs/en/rg-tupletdialog.png rename to doc/en/rg-tupletdialog.png diff --git a/docs/en/rg-useornament.png b/doc/en/rg-useornament.png similarity index 100% rename from docs/en/rg-useornament.png rename to doc/en/rg-useornament.png diff --git a/docs/en/tips b/doc/en/tips similarity index 100% rename from docs/en/tips rename to doc/en/tips diff --git a/docs/en/transpose-by-interval.png b/doc/en/transpose-by-interval.png similarity index 100% rename from docs/en/transpose-by-interval.png rename to doc/en/transpose-by-interval.png diff --git a/doc/es/CMakeLists.txt b/doc/es/CMakeLists.txt new file mode 100644 index 0000000..eb6d853 --- /dev/null +++ b/doc/es/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_create_handbook( DESTINATION rosegarden ) diff --git a/docs/es/index.docbook b/doc/es/index.docbook similarity index 100% rename from docs/es/index.docbook rename to doc/es/index.docbook diff --git a/doc/ja/CMakeLists.txt b/doc/ja/CMakeLists.txt new file mode 100644 index 0000000..eb6d853 --- /dev/null +++ b/doc/ja/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_create_handbook( DESTINATION rosegarden ) diff --git a/docs/ja/index.docbook b/doc/ja/index.docbook similarity index 100% rename from docs/ja/index.docbook rename to doc/ja/index.docbook diff --git a/doc/sv/CMakeLists.txt b/doc/sv/CMakeLists.txt new file mode 100644 index 0000000..eb6d853 --- /dev/null +++ b/doc/sv/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_create_handbook( DESTINATION rosegarden ) diff --git a/docs/sv/index.docbook b/doc/sv/index.docbook similarity index 100% rename from docs/sv/index.docbook rename to doc/sv/index.docbook diff --git a/docs/sv/rg-audiofilemanager.png b/doc/sv/rg-audiofilemanager.png similarity index 100% rename from docs/sv/rg-audiofilemanager.png rename to doc/sv/rg-audiofilemanager.png diff --git a/docs/sv/rg-audiomixer.png b/doc/sv/rg-audiomixer.png similarity index 100% rename from docs/sv/rg-audiomixer.png rename to doc/sv/rg-audiomixer.png diff --git a/docs/sv/rg-bankeditor.png b/doc/sv/rg-bankeditor.png similarity index 100% rename from docs/sv/rg-bankeditor.png rename to doc/sv/rg-bankeditor.png diff --git a/docs/sv/rg-clefdialog.png b/doc/sv/rg-clefdialog.png similarity index 100% rename from docs/sv/rg-clefdialog.png rename to doc/sv/rg-clefdialog.png diff --git a/docs/sv/rg-colours.png b/doc/sv/rg-colours.png similarity index 100% rename from docs/sv/rg-colours.png rename to doc/sv/rg-colours.png diff --git a/docs/sv/rg-devicemanager.png b/doc/sv/rg-devicemanager.png similarity index 100% rename from docs/sv/rg-devicemanager.png rename to doc/sv/rg-devicemanager.png diff --git a/docs/sv/rg-eventlisteditor.png b/doc/sv/rg-eventlisteditor.png similarity index 100% rename from docs/sv/rg-eventlisteditor.png rename to doc/sv/rg-eventlisteditor.png diff --git a/docs/sv/rg-gridquantizer.png b/doc/sv/rg-gridquantizer.png similarity index 100% rename from docs/sv/rg-gridquantizer.png rename to doc/sv/rg-gridquantizer.png diff --git a/docs/sv/rg-ipb-audio.png b/doc/sv/rg-ipb-audio.png similarity index 100% rename from docs/sv/rg-ipb-audio.png rename to doc/sv/rg-ipb-audio.png diff --git a/docs/sv/rg-ipb-midi.png b/doc/sv/rg-ipb-midi.png similarity index 100% rename from docs/sv/rg-ipb-midi.png rename to doc/sv/rg-ipb-midi.png diff --git a/docs/sv/rg-ipb-synth.png b/doc/sv/rg-ipb-synth.png similarity index 100% rename from docs/sv/rg-ipb-synth.png rename to doc/sv/rg-ipb-synth.png diff --git a/docs/sv/rg-keysigdialog.png b/doc/sv/rg-keysigdialog.png similarity index 100% rename from docs/sv/rg-keysigdialog.png rename to doc/sv/rg-keysigdialog.png diff --git a/docs/sv/rg-mainwindow.png b/doc/sv/rg-mainwindow.png similarity index 100% rename from docs/sv/rg-mainwindow.png rename to doc/sv/rg-mainwindow.png diff --git a/docs/sv/rg-matrixview.png b/doc/sv/rg-matrixview.png similarity index 100% rename from docs/sv/rg-matrixview.png rename to doc/sv/rg-matrixview.png diff --git a/docs/sv/rg-metronome.png b/doc/sv/rg-metronome.png similarity index 100% rename from docs/sv/rg-metronome.png rename to doc/sv/rg-metronome.png diff --git a/docs/sv/rg-midifilter.png b/doc/sv/rg-midifilter.png similarity index 100% rename from docs/sv/rg-midifilter.png rename to doc/sv/rg-midifilter.png diff --git a/docs/sv/rg-midimixer.png b/doc/sv/rg-midimixer.png similarity index 100% rename from docs/sv/rg-midimixer.png rename to doc/sv/rg-midimixer.png diff --git a/docs/sv/rg-notationquantizer.png b/doc/sv/rg-notationquantizer.png similarity index 100% rename from docs/sv/rg-notationquantizer.png rename to doc/sv/rg-notationquantizer.png diff --git a/docs/sv/rg-notationview-multipage.png b/doc/sv/rg-notationview-multipage.png similarity index 100% rename from docs/sv/rg-notationview-multipage.png rename to doc/sv/rg-notationview-multipage.png diff --git a/docs/sv/rg-notationview.png b/doc/sv/rg-notationview.png similarity index 100% rename from docs/sv/rg-notationview.png rename to doc/sv/rg-notationview.png diff --git a/docs/sv/rg-pastedialog.png b/doc/sv/rg-pastedialog.png similarity index 100% rename from docs/sv/rg-pastedialog.png rename to doc/sv/rg-pastedialog.png diff --git a/docs/sv/rg-plugin-dialog.png b/doc/sv/rg-plugin-dialog.png similarity index 100% rename from docs/sv/rg-plugin-dialog.png rename to doc/sv/rg-plugin-dialog.png diff --git a/docs/sv/rg-pluginbuttons.png b/doc/sv/rg-pluginbuttons.png similarity index 100% rename from docs/sv/rg-pluginbuttons.png rename to doc/sv/rg-pluginbuttons.png diff --git a/docs/sv/rg-plugineditorbutton.png b/doc/sv/rg-plugineditorbutton.png similarity index 100% rename from docs/sv/rg-plugineditorbutton.png rename to doc/sv/rg-plugineditorbutton.png diff --git a/docs/sv/rg-segmentparameterbox.png b/doc/sv/rg-segmentparameterbox.png similarity index 100% rename from docs/sv/rg-segmentparameterbox.png rename to doc/sv/rg-segmentparameterbox.png diff --git a/docs/sv/rg-synthpluginbuttons.png b/doc/sv/rg-synthpluginbuttons.png similarity index 100% rename from docs/sv/rg-synthpluginbuttons.png rename to doc/sv/rg-synthpluginbuttons.png diff --git a/docs/sv/rg-tempodialog.png b/doc/sv/rg-tempodialog.png similarity index 100% rename from docs/sv/rg-tempodialog.png rename to doc/sv/rg-tempodialog.png diff --git a/docs/sv/rg-timesigdialog.png b/doc/sv/rg-timesigdialog.png similarity index 100% rename from docs/sv/rg-timesigdialog.png rename to doc/sv/rg-timesigdialog.png diff --git a/docs/sv/rg-trackbutton-instruments.png b/doc/sv/rg-trackbutton-instruments.png similarity index 100% rename from docs/sv/rg-trackbutton-instruments.png rename to doc/sv/rg-trackbutton-instruments.png diff --git a/docs/sv/rg-trackbutton-labels.png b/doc/sv/rg-trackbutton-labels.png similarity index 100% rename from docs/sv/rg-trackbutton-labels.png rename to doc/sv/rg-trackbutton-labels.png diff --git a/docs/sv/rg-trackeditor.png b/doc/sv/rg-trackeditor.png similarity index 100% rename from docs/sv/rg-trackeditor.png rename to doc/sv/rg-trackeditor.png diff --git a/docs/sv/rg-transport.png b/doc/sv/rg-transport.png similarity index 100% rename from docs/sv/rg-transport.png rename to doc/sv/rg-transport.png diff --git a/docs/sv/rg-tupletdialog.png b/doc/sv/rg-tupletdialog.png similarity index 100% rename from docs/sv/rg-tupletdialog.png rename to doc/sv/rg-tupletdialog.png diff --git a/docs/sv/rosegarden.po b/doc/sv/rosegarden.po similarity index 100% rename from docs/sv/rosegarden.po rename to doc/sv/rosegarden.po diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt deleted file mode 100644 index 9d1ac8b..0000000 --- a/docs/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ - -ADD_DOCS(rosegarden en es ja sv) - -INSTALL(FILES en/tips DESTINATION ${KDE3DATADIR}/rosegarden) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index a653d59..c752e63 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,25 +1,17 @@ +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# -# Automatic discovery of sources -FILE(GLOB PO_FILES *.po) +file( GLOB_RECURSE po_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} rosegarden.po ) -# DISABLED: explicit set of source files -# SET(PO_FILES -# ca.po -# cs.po -# cy.po -# de.po -# en_GB.po -# en.po -# es.po -# et.po -# fi.po -# fr.po -# it.po -# ja.po -# nl.po -# ru.po -# sv.po -# zh_CN.po -# ) - -ADD_TRANSLATIONS(rosegarden ${PO_FILES}) +foreach( _po ${po_files} ) + get_filename_component( _lang ${_po} PATH ) + tde_create_translation( FILES ${_po} LANG ${_lang} ) +endforeach( ) diff --git a/po/ca.po b/po/ca/rosegarden.po similarity index 100% rename from po/ca.po rename to po/ca/rosegarden.po diff --git a/po/cs.po b/po/cs/rosegarden.po similarity index 100% rename from po/cs.po rename to po/cs/rosegarden.po diff --git a/po/cy.po b/po/cy/rosegarden.po similarity index 100% rename from po/cy.po rename to po/cy/rosegarden.po diff --git a/po/de.po b/po/de/rosegarden.po similarity index 100% rename from po/de.po rename to po/de/rosegarden.po diff --git a/po/en.po b/po/en/rosegarden.po similarity index 100% rename from po/en.po rename to po/en/rosegarden.po diff --git a/po/en_GB.po b/po/en_GB/rosegarden.po similarity index 100% rename from po/en_GB.po rename to po/en_GB/rosegarden.po diff --git a/po/es.po b/po/es/rosegarden.po similarity index 100% rename from po/es.po rename to po/es/rosegarden.po diff --git a/po/et.po b/po/et/rosegarden.po similarity index 100% rename from po/et.po rename to po/et/rosegarden.po diff --git a/po/eu.po b/po/eu/rosegarden.po similarity index 100% rename from po/eu.po rename to po/eu/rosegarden.po diff --git a/po/fi.po b/po/fi/rosegarden.po similarity index 100% rename from po/fi.po rename to po/fi/rosegarden.po diff --git a/po/fr.po b/po/fr/rosegarden.po similarity index 100% rename from po/fr.po rename to po/fr/rosegarden.po diff --git a/po/it.po b/po/it/rosegarden.po similarity index 100% rename from po/it.po rename to po/it/rosegarden.po diff --git a/po/ja.po b/po/ja/rosegarden.po similarity index 100% rename from po/ja.po rename to po/ja/rosegarden.po diff --git a/po/messages.sh b/po/messages.sh deleted file mode 100755 index 51bbd88..0000000 --- a/po/messages.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash - -# Based on KDE messages.sh by Thomas Nagy -# Inspired by Makefile.common from coolo -# This script is used to update the .po files. - -# To update the translations, you will need a specific gettext -# patched for kde and a lot of patience, tenacity, luck, time .. - -# I guess one should only update the .po files when all .cpp files -# are generated (after a make or scons) - -if [ -z "$KDE_GETTEXT_BIN" ]; then - if [ -f ./xgettext ] && ./xgettext --help 2>&1 | grep -q extract; then - KDE_GETTEXT_BIN=. - elif [ -d /opt/gettext-kde/bin ]; then - KDE_GETTEXT_BIN=/opt/gettext-kde/bin - fi -fi -if [ ! -d "$KDE_GETTEXT_BIN" ]; then - echo 1>&2 - echo "WARNING: Environment variable KDE_GETTEXT_BIN must be set" 1>&2 - echo "such that the KDE patched version of gettext is found in " 1>&2 - echo "KDE_GETTEXT_BIN/." 1>&2 - echo 1>&2 - echo "Falling back to default gettext, but plural translations " 1>&2 - echo "will probably be wrong." 1>&2 - echo 1>&2 - echo "See ftp://ftp.kde.org/devel/gettext-kde/ for the patched gettext." 1>&2 - echo 1>&2 -else - KDE_GETTEXT_PATH=${KDE_GETTEXT_BIN}/ -fi - -SRCDIR=../src # srcdir is the directory containing the source code -TIPSDIR=../docs/en # tipsdir is the directory containing the tips -DATADIR=../data # datadir is the directory containing fonts/mappings & styles - -KDEDIR=`kde-config --prefix` -EXTRACTRC=extractrc # from tdesdk-scripts (on Debian Sarge) -KDEPOT=$KDEDIR/include/kde.pot -if [ ! -f "$KDEPOT" ] && [ -f /usr/include/kde/kde.pot ]; then - KDEPOT=/usr/include/kde/kde.pot -fi -XGETTEXT="${KDE_GETTEXT_PATH}xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x $KDEPOT " - -## check that kde.pot is available -if ! test -e $KDEPOT; then - echo "$KDEPOT does not exist, there is something wrong with your installation!" - XGETTEXT="${KDE_GETTEXT_PATH}xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale " -fi - -> rc.cpp - -## extract the strings -echo "extracting the strings" - -# process the .ui and .rc files -$EXTRACTRC `find $SRCDIR -iname *.rc` >> rc.cpp -$EXTRACTRC `find $SRCDIR -iname *.ui` >> rc.cpp -echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > $SRCDIR/_translatorinfo.cpp - -# process the tips - $SRCDIR is supposed to be where the tips are living -pushd $TIPSDIR; preparetips >tips.cpp; popd - -# process the fonts mapping attributes -FONTSDIR=$DATADIR/fonts/mappings -pushd $FONTSDIR -cat *.xml | perl -e 'while () { if(/(encoding name|origin|copyright|mapped-by|type)\s*=\s*\"(.*)\"/) { print "i18n(\"$2\")\;\n";} }' > fonts.cpp -popd - -# process the note head style names -STYLEDIR=$DATADIR/styles -pushd $STYLEDIR -ls *.xml | perl -e 'while () { if(/(.*)\.xml/) { print "i18n(\"$1\")\;\n";} }' > styles.cpp -popd - -# extract the strings -$XGETTEXT `find $SRCDIR \( -name "*.cpp" -o -name "*.h" \)` rc.cpp $TIPSDIR/tips.cpp $FONTSDIR/fonts.cpp $STYLEDIR/styles.cpp -o tmp.pot - -# remove the intermediate files -rm -f $TIPSDIR/tips.cpp -rm -f $FONTSDIR/fonts.cpp -rm -f $STYLEDIR/styles.cpp -rm -f rc.cpp -rm -f $SRCDIR/_translatorinfo.cpp - -## now merge the .po files .. -echo "merging the .po files" - -for i in `ls *.po`; do - echo $i - msgmerge $i tmp.pot -o $i || exit 1 -done - -# replacing the old template by the new one -rm -f rosegarden.pot -mv tmp.pot rosegarden.pot - -## finished -echo "Done" diff --git a/po/nl.po b/po/nl/rosegarden.po similarity index 100% rename from po/nl.po rename to po/nl/rosegarden.po diff --git a/po/pl.po b/po/pl/rosegarden.po similarity index 100% rename from po/pl.po rename to po/pl/rosegarden.po diff --git a/po/ru.po b/po/ru/rosegarden.po similarity index 100% rename from po/ru.po rename to po/ru/rosegarden.po diff --git a/po/sv.po b/po/sv/rosegarden.po similarity index 100% rename from po/sv.po rename to po/sv/rosegarden.po diff --git a/po/xgettext b/po/xgettext deleted file mode 100755 index 1308a2e6897369f6955a29b904a9d52cd811fae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203776 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

YA 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 diff --git a/po/zh_CN.po b/po/zh_CN/rosegarden.po similarity index 100% rename from po/zh_CN.po rename to po/zh_CN/rosegarden.po diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 63ae687..d3b652b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,221 +1,152 @@ -IF(NOT ROSEGARDEN_SOURCE_DIR) - MESSAGE(FATAL_ERROR "You need to run cmake or ccmake at the root directory") -ENDIF(NOT ROSEGARDEN_SOURCE_DIR) - -IF(USE_PCH) - ADD_PRECOMPILED_HEADER(precompiled_headers misc/stableheaders.h) -ENDIF(USE_PCH) - -LINK_DIRECTORIES( - ${KDE3_LIB_DIR} - ${ALSA_LIB_DIR} - ${JACK_LIB_DIR} - ${XFT_LIB_DIR} - ${LIBLO_LIB_DIR} - ${LRDF_LIB_DIR} - ${LIRC_LIB_DIR} - ${FFTW3F_LIB_DIR} +################################################# +# +# (C) 2011 Timothy Pearson +# kb9vqf (AT) pearsoncomputing.net +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +include_directories( + ${TQT_INCLUDE_DIRS} + ${TDE_INCLUDE_DIR} + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/src + ${CMAKE_SOURCE_DIR}/src + ${ALSA_INC_DIR} + ${JACK_INC_DIR} + ${XFT_INC_DIR} + ${DSSI_INC_DIR} + ${LIBLO_INC_DIR} + ${LADSPA_INC_DIR} + ${LRDF_INC_DIR} + ${LIRC_INC_DIR} + ${FFTW3F_INC_DIR} ) -INCLUDE_DIRECTORIES(AFTER - ${QT_INCLUDE_DIR} - ${KDE3_INCLUDE_DIR} - ${ALSA_INC_DIR} - ${JACK_INC_DIR} - ${XFT_INC_DIR} - ${DSSI_INC_DIR} - ${LIBLO_INC_DIR} - ${LADSPA_INC_DIR} - ${LRDF_INC_DIR} - ${LIRC_INC_DIR} - ${FFTW3F_INC_DIR} - base +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIBRARY_DIR} + ${ALSA_LIB_DIR} + ${JACK_LIB_DIR} + ${XFT_LIB_DIR} + ${LIBLO_LIB_DIR} + ${LRDF_LIB_DIR} + ${LIRC_LIB_DIR} + ${FFTW3F_LIB_DIR} ) -SET(CMAKE_INCLUDE_PATH ".") +##### include cmake file lists ################## + +set( CMAKE_INCLUDE_PATH "." ) # Common sources -INCLUDE(BaseFileList.txt) -INCLUDE(MiscFileList.txt) +include( BaseFileList.txt ) +include( MiscFileList.txt ) # Sound sources -INCLUDE(SoundFileList.txt) +include( SoundFileList.txt ) -KDE3_AUTOMOC(${common_sound_SRCS}) +# sequencer executable +include( SequencerFileList.txt ) -ADD_LIBRARY(RosegardenCommon STATIC - ${misc_SRCS} - ${base_SRCS} - ${common_sound_SRCS} -) +# gui executable +include( GUIFileList.txt ) -TARGET_LINK_LIBRARIES(RosegardenCommon - dl -) +##### other data ################################ -IF(USE_PCH) - ADD_DEPENDENCIES(RosegardenCommon precompiled_headers) -ENDIF(USE_PCH) +# Install helper scripts +install( PROGRAMS + helpers/rosegarden-lilypondview + helpers/rosegarden-project-package + helpers/rosegarden-audiofile-importer + DESTINATION ${BIN_INSTALL_DIR} ) -# sequencer executable -INCLUDE(SequencerFileList.txt) +# Install GUI resource files +file( GLOB RC_FILES gui/ui/*.rc ) +install( FILES ${RC_FILES} DESTINATION ${DATA_INSTALL_DIR}/rosegarden ) -IF(WANT_SOUND) - SET(snd_SRCS ${sound_SRCS}) -ELSE(WANT_SOUND) - SET(snd_SRCS ${nosnd_SRCS}) -ENDIF(WANT_SOUND) -KDE3_ADD_DCOP_SKELS(sequencer_SRCS ${seq_dcop_SRCS}) -KDE3_ADD_DCOP_STUBS(sequencer_SRCS ${seq_dcop_SRCS}) -KDE3_AUTOMOC(${sequencer_SRCS}) +##### RosegardenCommon ############################## -KDE3_ADD_EXECUTABLE(rosegardensequencer - ${snd_SRCS} - ${sequencer_SRCS} +tde_add_library( RosegardenCommon STATIC AUTOMOC + SOURCES ${${misc_SRCS} ${base_SRCS} ${common_sound_SRCS}} + LINK dl + DESTINATION ${LIB_INSTALL_DIR} ) -IF(USE_PCH) - ADD_DEPENDENCIES(rosegardensequencer precompiled_headers) -ENDIF(USE_PCH) - -TARGET_LINK_LIBRARIES(rosegardensequencer - dl - ${QT_AND_TDECORE_LIBS} - ${ALSA_LIBS} - ${JACK_LIBS} - ${LIBLO_LIBS} - ${LRDF_LIBS} - ${FFTW3F_LIBS} - tdeui - RosegardenCommon -) -# gui executable -INCLUDE(GUIFileList.txt) - -KDE3_ADD_DCOP_SKELS(gui_SRCS ${gui_dcop_SRCS}) -KDE3_ADD_DCOP_STUBS(gui_SRCS ${gui_dcop_SRCS}) -KDE3_ADD_UI_FILES(gui_SRCS ${ui_SRCS}) -KDE3_AUTOMOC(${gui_SRCS}) -KDE3_AUTOMOC(${segmentcanvas_SRCS}) -KDE3_AUTOMOC(${commands_SRCS}) -KDE3_AUTOMOC(${document_SRCS}) - -ADD_LIBRARY(RosegardenExtended STATIC - ${document_SRCS} - ${gui_SRCS} -) +##### rosegardensequencer ########################### -TARGET_LINK_LIBRARIES(RosegardenExtended - dl - lo -) +if( WANT_SOUND ) + set( snd_SRCS ${sound_SRCS} ) +else( WANT_SOUND ) + set( snd_SRCS ${nosnd_SRCS} ) +endif( WANT_SOUND ) -ADD_LIBRARY(RosegardenCommands STATIC - ${commands_SRCS} +tde_add_executable( rosegardensequencer AUTOMOC + SOURCES ${${seq_dcop_SRCS} ${snd_SRCS} ${sequencer_SRCS}} + LINK dl tdecore-shared ${ALSA_LIBS} ${JACK_LIBS} ${LIBLO_LIBS} ${LRDF_LIBS} ${FFTW3F_LIBS} tdeui-shared RosegardenCommon + DESTINATION ${BIN_INSTALL_DIR} ) -IF(USE_PCH) - ADD_DEPENDENCIES(RosegardenExtended precompiled_headers) -ENDIF(USE_PCH) -IF(USE_PCH) - ADD_DEPENDENCIES(RosegardenCommands precompiled_headers) -ENDIF(USE_PCH) +##### RosegardenExtended ############################ -ADD_LIBRARY(RosegardenSegmentCanvas STATIC - ${segmentcanvas_SRCS} +tde_add_library( RosegardenExtended STATIC AUTOMOC + SOURCES ${${document_SRCS} ${gui_SRCS} ${gui_dcop_SRCS} ${ui_SRCS}} + LINK dl lo + DESTINATION ${LIB_INSTALL_DIR} ) -IF(USE_PCH) - ADD_DEPENDENCIES(RosegardenSegmentCanvas precompiled_headers) -ENDIF(USE_PCH) +##### RosegardenCommands ############################ + +tde_add_library( RosegardenCommands STATIC AUTOMOC + SOURCES ${${commands_SRCS}} +# LINK dl + DESTINATION ${LIB_INSTALL_DIR} +) -KDE3_ADD_EXECUTABLE(rosegarden - #${commands_SRCS} - #${document_SRCS} - #${gui_SRCS} - #${segmentcanvas_SRCS} - gui/application/main.cpp +##### RosegardenSegmentCanvas ####################### + +tde_add_library( RosegardenSegmentCanvas STATIC AUTOMOC + SOURCES ${${segmentcanvas_SRCS}} +# LINK dl + DESTINATION ${LIB_INSTALL_DIR} ) -IF(USE_PCH) - ADD_DEPENDENCIES(rosegarden precompiled_headers) -ENDIF(USE_PCH) - -TARGET_LINK_LIBRARIES(rosegarden - dl - lo - ${QT_AND_TDECORE_LIBS} - ${LIBLO_LIBS} - ${LRDF_LIBS} - ${FFTW3F_LIBS} - ${XFT_LIBS} - ${LIRC_LIBS} - ${JACK_LIBS} - kio - tdeui - tdeprint - RosegardenExtended - RosegardenSegmentCanvas - RosegardenCommands - RosegardenCommon + +##### rosegarden #################################### + +tde_add_executable( rosegarden AUTOMOC + SOURCES ${gui/application/main.cpp} + LINK dl lo tdecore-shared ${LIBLO_LIBS} ${LRDF_LIBS} ${FFTW3F_LIBS} ${XFT_LIBS} ${LIRC_LIBS} ${JACK_LIBS} kio-shared tdeui-shared tdeprint-shared RosegardenExtended RosegardenSegmentCanvas RosegardenCommands RosegardenCommon + DESTINATION ${BIN_INSTALL_DIR} ) -# Install targets -INSTALL(TARGETS rosegarden rosegardensequencer - RUNTIME DESTINATION ${KDE3EXECDIR} ) +if( WANT_TEST ) + include( TestFileList.txt ) -# Install helper scripts -INSTALL(PROGRAMS - helpers/rosegarden-lilypondview - helpers/rosegarden-project-package - helpers/rosegarden-audiofile-importer - DESTINATION ${KDE3EXECDIR} ) + CREATE_TEST_SOURCELIST(RosegardenTest + RosegardenTestDriver.cpp + ${tests_SRCS} +# base/test/transpose.cpp +# base/test/segmenttransposecommand.cpp + ) -# Install GUI resource files -FILE(GLOB RC_FILES gui/ui/*.rc) -INSTALL(FILES ${RC_FILES} - DESTINATION ${KDE3DATADIR}/rosegarden ) - -IF(WANT_TEST) - INCLUDE(TestFileList.txt) - - CREATE_TEST_SOURCELIST(RosegardenTest - RosegardenTestDriver.cpp - ${tests_SRCS} -# base/test/transpose.cpp -# base/test/segmenttransposecommand.cpp - ) - - KDE3_ADD_EXECUTABLE(RosegardenTestDriver - RosegardenTestDriver.cpp - ${tests_SRCS} - ) - - TARGET_LINK_LIBRARIES(RosegardenTestDriver - dl - ${QT_AND_TDECORE_LIBS} - ${LIBLO_LIBS} - ${LRDF_LIBS} - ${FFTW3F_LIBS} - ${XFT_LIBS} - ${LIRC_LIBS} - ${JACK_LIBS} - kio - tdeui - tdeprint - RosegardenExtended - RosegardenSegmentCanvas - RosegardenCommands - RosegardenCommon - ) - FOREACH(currenttest ${tests_SRCS}) - GET_FILENAME_COMPONENT(TestName ${currenttest} NAME_WE) - ADD_TEST(test/${TestName} RosegardenTestDriver test/${TestName}) - ENDFOREACH(currenttest ${tests_SRCS}) -ENDIF(WANT_TEST) + tde_add_executable( RosegardenTestDriver AUTOMOC + SOURCES ${RosegardenTestDriver.cpp ${tests_SRCS}} + LINK dl lo tdecore-shared ${LIBLO_LIBS} ${LRDF_LIBS} ${FFTW3F_LIBS} ${XFT_LIBS} ${LIRC_LIBS} ${JACK_LIBS} kio-shared tdeui-shared tdeprint-shared RosegardenExtended RosegardenSegmentCanvas RosegardenCommands RosegardenCommon + DESTINATION ${BIN_INSTALL_DIR} +) + + FOREACH(currenttest ${tests_SRCS}) + GET_FILENAME_COMPONENT(TestName ${currenttest} NAME_WE) + ADD_TEST(test/${TestName} RosegardenTestDriver test/${TestName}) + ENDFOREACH(currenttest ${tests_SRCS}) +endif( WANT_TEST )