#============================================================================= # MusE # Linux Music Editor # $Id:$ # # Copyright (C) 2002-2008 by Werner Schweer and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #============================================================================= project(muse) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.1) if (COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy) # set libdir if not use -DCMAKE_INSTALL_LIBDIR if (NOT CMAKE_INSTALL_LIBDIR) SET(CMAKE_INSTALL_LIBDIR "lib") endif (NOT CMAKE_INSTALL_LIBDIR) #set(CMAKE_BUILD_TYPE debug) #set(CMAKE_BUILD_TYPE release) # for debugging the make system uncomment next line: # set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_INCLUDE_CURRENT_DIR TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) set(CMAKE_SKIP_RULE_DEPENDENCY TRUE) # The MusE version number. SET(MusE_VERSION_MAJOR 2) SET(MusE_VERSION_MINOR 0) SET(MusE_VERSION_PATCH 1) SET(MusE_VERSION "2.0.1") SET(MusE_VERSION_FULL "2.0.1") SET(MusE_INSTALL_NAME "muse-2.0") include ( ${PROJECT_SOURCE_DIR}/cmake/UsePkgConfig1.cmake ) include ( ${PROJECT_SOURCE_DIR}/cmake/TargetDoc.cmake) option ( ENABLE_DSSI "enable Disposable Soft Synth Interface" ON) option ( ENABLE_VST "enable VST/win support" OFF) option ( ENABLE_FLUID "enable fluidsynth softsynth plugins" ON) option ( ENABLE_ZYNADDSUBFX "enable zyaddsubfx softsynth plugin" ON) ## ## Just print a notice if this is OS X ## if (APPLE) message("OS X found.") else (APPLE) if (UNIX) message("Unix (probably linux) found") endif(UNIX) endif (APPLE) ## ## look for Qt4 ## set(QT_MIN_VERSION "4.3.0") set(QT_USE_QTXML TRUE) set(QT_USE_QTDESIGNER TRUE) set(QT_USE_QTNSPLUGIN TRUE) set(QT_USE_QTSVG TRUE) find_package(Qt4) if (NOT QT4_FOUND) message(FATAL_ERROR "Fatal error: QT (version >= 4.3.0) required.\n" "Cmake tries to detect QT4 by searching for 'qmake' in your PATH\n" "If you have QT4 installed, make sure qmake is found in your PATH." ) endif (NOT QT4_FOUND) include(${QT_USE_FILE}) ## ## find doxygen ## TODO ## ## alsa >= 0.9.0 ## if (APPLE) message("Disabling ALSA support due to OS X build.") else (APPLE) PKGCONFIG (alsa 0.9.0 ALSA_INCDIR ALSA_LIBDIR ALSA_LIB ALSA_CPP ) if (NOT ALSA_INCDIR) message(FATAL_ERROR "Fatal error: ALSA >= 1.0.0 required") else (NOT ALSA_INCDIR) message("Alsa found.") endif (NOT ALSA_INCDIR) endif (APPLE) ## ## find packages for zyaddsubfx ## ## fftw3 ## mxml ## fltk + fluid ## ## problems with FLTK/CMake: ## - fltk is not found on kubuntu/ubuntu ## - cmake version > 2.4 crashes ## - there is an annoying (and wrong) usage message from cmake concerning FLTK ## if (ENABLE_ZYNADDSUBFX) # HACK: set (FLTK_INCLUDE_DIR "/usr/include") set(FLTK_FLUID_EXECUTABLE "/usr/bin/fluid") include (FindFLTK) if (NOT FLTK_FOUND) message("fltk toolkit not found, zynaddsubfx not build") set(ENABLE_ZYNADDSUBFX OFF) else (NOT FLTK_FOUND) message("fltk toolkit found") endif (NOT FLTK_FOUND) PKGCONFIG (mxml 2.0 MXML_INCDIR MXML_LIBDIR MXML_LIB MXML_CPP ) if (NOT MXML_INCDIR) message("mxml >= 2.0 not found, zynaddsubfx not build") set(ENABLE_ZYNADDSUBFX OFF) else (NOT MXML_INCDIR) message("mxml found.") endif (NOT MXML_INCDIR) # # check for fftw3 library # PKGCONFIG (fftw3 3.1.2 FFTW_INCDIR FFTW_LIBDIR FFTW_LIB FFTW_CPP ) if (NOT FFTW_INCDIR) message("fftw3 >= 3.1.2 not found, zynaddsubfx not build") set(ENABLE_ZYNADDSUBFX OFF) else (NOT FFTW_INCDIR) message("fftw3 found.") endif (NOT FFTW_INCDIR) endif (ENABLE_ZYNADDSUBFX) ## ## find sndfile >= 1.0.0 ## PKGCONFIG (sndfile 1.0.0 SNDFILE_INCDIR SNDFILE_LIBDIR SNDFILE_LIB SNDFILE_CPP ) if (NOT SNDFILE_INCDIR) message(FATAL_ERROR "Fatal error: libsndfile >= 1.0.0 required") else (NOT SNDFILE_INCDIR) message("sndfile found.") endif (NOT SNDFILE_INCDIR) ## ## find libsamplerate >= 0.1.0 ## PKGCONFIG (samplerate 0.1.0 SAMPLERATE_INCDIR SAMPLERATE_LIBDIR SAMPLERATE_LIB SAMPLERATE_CPP ) if (NOT SAMPLERATE_INCDIR) message(FATAL_ERROR "Fatal error: libsamplerate >= 0.1.0 required") else (NOT SAMPLERATE_INCDIR) message("samplerate found") endif (NOT SAMPLERATE_INCDIR) ## ## find jack >= 0.103.0 ## PKGCONFIG (jack 0.107.0 JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP ) if (NOT JACK_INCDIR) PKGCONFIG (jack 0.103.0 JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP ) if (NOT JACK_INCDIR) message(FATAL_ERROR "Fatal error: JACK >= 0.103 required") else (NOT JACK_INCDIR) message("JACK 0.103 found") set(JACK103 ON) endif (NOT JACK_INCDIR) else (NOT JACK_INCDIR) message("JACK 0.107 found") set(JACK107 ON) endif (NOT JACK_INCDIR) ## ## check for dssi ## dssi >= 0.9.0 ## liblo >= 0.23 ## if (ENABLE_DSSI) PKGCONFIG (dssi 0.9.0 DSSI_INCDIR DSSI_LIBDIR DSSI_LIB DSSI_CPP ) if (NOT DSSI_INCDIR) message("Error: dssi >= 0.9.0 not found, disabling feature") set ( ENABLE_DSSI OFF ) else (NOT DSSI_INCDIR) PKGCONFIG (liblo 0.23 LIBLO_INCDIR LIBLO_LIBDIR LIBLO_LIB LIBLO_CPP ) if (NOT LIBLO_INCDIR) message("Error: liblo >= 0.23 not found, disabling DSSI") set ( ENABLE_DSSI OFF ) else (NOT LIBLO_INCDIR) message("liblo >= 0.23 found.") set (DSSI_SUPPORT TRUE) message("DSSI enabled") endif (NOT LIBLO_INCDIR) endif (NOT DSSI_INCDIR) else (ENABLE_DSSI) message("DSSI disabled") endif (ENABLE_DSSI) if (ENABLE_VST) message("VST support enabled") set (VST_SUPPORT TRUE) else (ENABLE_VST) message("VST support disabled") set (VST_SUPPORT FALSE) endif (ENABLE_VST) ## ## TODO ## ## Optimizations ## SET (USE_SSE false) ## ## check for fluidsynth ## if ( ENABLE_FLUID ) PKGCONFIG (fluidsynth 1.0.0 FLUID_INCDIR FLUID_LIBDIR FLUID_LIB FLUID_CPP ) if (NOT FLUID_INCDIR) message("Error: fluidsynth >= 0.9.0 not found, disabling feature") set ( ENABLE_FLUID OFF ) else (NOT FLUID_INCDIR) message("Fluidsynth found") endif (NOT FLUID_INCDIR) endif ( ENABLE_FLUID ) # # produce config.h file # configure_file ( ${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h ) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/all.h COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/all-pic.h COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_command( OUTPUT ${PROJECT_BINARY_DIR}/all-pic-debug.h COMMAND cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic-debug.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) include_directories( . ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/muse ${PROJECT_SOURCE_DIR}/muse/widgets ${PROJECT_BINARY_DIR} ${PROJECT_BINARY_DIR}/muse ${PROJECT_BINARY_DIR}/muse/widgets ${PROJECT_BINARY_DIR}/muse/instruments ${PROJECT_BINARY_DIR}/muse/ctrl ${ALSA_INCDIR} ${JACK_INCDIR} ${SNDFILE_INCDIR} ${SAMPLERATE_INCDIR} ${LIBLO_INCDIR} ${DSSI_INCDIR} ) # include (pch.txt) # # If the cmake version includes cpack, use it # IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") IF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake") SET(CMAKE_INSTALL_MFC_LIBRARIES 1) INCLUDE(InstallRequiredSystemLibraries) ENDIF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MusE is a virtual audio studio environment") SET(CPACK_PACKAGE_VENDOR "Werner Schweer and others") SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") SET(CPACK_PACKAGE_VERSION_MAJOR "${MusE_VERSION_MAJOR}") SET(CPACK_PACKAGE_VERSION_MINOR "${MusE_VERSION_MINOR}") SET(CPACK_PACKAGE_VERSION_PATCH "${MusE_VERSION_PATCH}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${MusE_INSTALL_NAME}") SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) SET(CPACK_PACKAGE_FILE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}-${CPACK_SYSTEM_NAME}") SET(CPACK_STRIP_FILES "bin/muse;bin/grepmidi") SET(CPACK_PACKAGE_EXECUTABLES "muse" "MusE" "grepmidi" "grepmidi") INCLUDE(CPack) ENDIF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") set(CMAKE_CXX_FLAGS "-Wl,-rpath,${QT_LIBRARY_DIR} -Wall -Wextra -Winvalid-pch -fno-exceptions") set(CMAKE_CXX_FLAGS_RELEASE "-O2 -fomit-frame-pointer -ffast-math -fstrength-reduce") set(CMAKE_CXX_FLAGS_DEBUG "-g -DQT_DEBUG") subdirs(al awl grepmidi plugins midiplugins muse share synti)