#============================================================================= # MusE # Linux Music Editor # $Id:$ # # Copyright (C) 2002-2006 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) # 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_CXX_FLAGS "-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") 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 1) SET(MusE_VERSION_MINOR 0) SET(MusE_VERSION_PATCH "pre1") SET(MusE_VERSION "1.0") SET(MusE_VERSION_FULL "1.0pre1") SET(MusE_INSTALL_NAME "muse-1.0pre1") 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 detected.") else (APPLE) if (UNIX) message("Unix (probably linux) detected") endif(UNIX) endif (APPLE) ## ## look for Qt4 ## set(QT_MIN_VERSION "4.2.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.2.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 texexec (ConTeXt) ## find_path( TEXEXEC_PATH texutil ) if (NOT TEXEXEC_PATH) message("texexec from ConTeXt package not found. Documentation will not be build") endif (NOT TEXEXEC_PATH) ## ## 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 detected.") endif (NOT ALSA_INCDIR) endif (APPLE) ## ## find packages for zyaddsubfx ## ## fftw3 ## mxml ## fltk + fluid if (ENABLE_ZYNADDSUBFX) find_path( FLTK_FLUID_EXECUTABLE fluid ) find_path( FLTK_CONFIG_PATH fltk-config ) # set (FLTK_LIBRARIES $FLTK_CONFIG_PATH) # FLTK_INCLUDE_DIR # FLTK_FOUND # # if (NOT FLTK_FOUND) # message(FATAL_ERROR "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 detected.") endif (NOT MXML_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 detected.") 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 detected") endif (NOT SAMPLERATE_INCDIR) ## ## find jack >= 0.102.1 ## PKGCONFIG (jack 0.102.1 JACK_INCDIR JACK_LIBDIR JACK_LIB JACK_CPP ) if (NOT JACK_INCDIR) message(FATAL_ERROR "Fatal error: JACK >= 0.102.1 required") else (NOT JACK_INCDIR) message("Jack detected") endif (NOT JACK_INCDIR) ## ## check for dssi ## 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) message("DSSI detected.") 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 detected.") set (DSSI_SUPPORT TRUE) endif (NOT LIBLO_INCDIR) endif (NOT DSSI_INCDIR) endif ( ENABLE_DSSI ) ## ## TODO ## ## Optimizations ## SET (USE_SSE true) ## ## vst ## ## TODO ## ## ## 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 detected") 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_target(all.h ALL cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_target(all-pic.h ALL 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_target(all-pic-debug.h ALL cp ${PROJECT_SOURCE_DIR}/all.h ${PROJECT_BINARY_DIR}/all-pic-debug.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_target(all.h.pch ALL ${CMAKE_CXX_COMPILER} -g -Wextra -fno-exceptions -Wall -I${QT_INCLUDE_DIR} -I${QT_QTCORE_INCLUDE_DIR} -I${QT_QTGUI_INCLUDE_DIR} -o ${PROJECT_BINARY_DIR}/all.h.pch ${PROJECT_SOURCE_DIR}/all.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_target(all-pic.h.pch ALL ${CMAKE_CXX_COMPILER} -fPIC -Dawlplugin_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_PLUGIN -DQT_SHARED -DQT_NO_DEBUG -g -Wextra -fno-exceptions -Wall -I${QT_INCLUDE_DIR} -I${QT_QTCORE_INCLUDE_DIR} -I${QT_QTGUI_INCLUDE_DIR} -o ${PROJECT_BINARY_DIR}/all-pic.h.pch ${PROJECT_SOURCE_DIR}/all.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) add_custom_target(all-pic-debug.h.pch ALL ${CMAKE_CXX_COMPILER} -fPIC -Dawlplugin_debug_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_PLUGIN -DQT_SHARED -DQT_DEBUG -g -Wextra -fno-exceptions -Wall -I${QT_INCLUDE_DIR} -I${QT_QTCORE_INCLUDE_DIR} -I${QT_QTGUI_INCLUDE_DIR} -o ${PROJECT_BINARY_DIR}/all-pic-debug.h.pch ${PROJECT_SOURCE_DIR}/all.h DEPENDS ${PROJECT_SOURCE_DIR}/all.h WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) subdirs(al awl grepmidi plugins midiplugins synti muse share doc) 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} ) # # 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")