1
# MIDI Sequencer C++ Library
2
# Copyright (C) 2005-2010 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net>
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
# GNU General Public License for more details.
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
# The name of our project is "DRUMSTICK". CMakeLists files in this project can
20
# refer to the root source directory of the project as ${DRUMSTICK_SOURCE_DIR}
21
# and to the root binary directory of the project as ${DRUMSTICK_BINARY_DIR}
24
# CMake minimum version
25
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
26
IF(COMMAND CMAKE_POLICY)
27
CMAKE_POLICY(SET CMP0003 NEW)
28
ENDIF(COMMAND CMAKE_POLICY)
30
# Debian, unlike the FHS, does not use a '64' suffix like 'lib64'
31
SET(_INIT_LIB_SUFFIX "")
32
SET(LIB_SUFFIX ${_INIT_LIB_SUFFIX} CACHE STRING "optional library install directory suffix: 32, 64, none")
34
#Comment out if relative paths break the link scripts
35
#SET(CMAKE_USE_RELATIVE_PATHS OFF)
38
SET(CMAKE_COLOR_MAKEFILE ON)
39
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
40
#SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
41
SET(CMAKE_SKIP_RULE_DEPENDENCY FALSE)
42
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
43
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
45
# Additional CMake modules for 3rd party library checks reside here
46
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_admin")
48
# DRUMSTICK version string
49
SET (VERSION_MAJOR "0")
50
SET (VERSION_MINOR "5")
51
SET (VERSION_PATCH "0")
52
SET (VERSION_SUFFIX "")
53
SET (VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_SUFFIX})
55
MESSAGE(STATUS "drumstick ${VERSION} prefix: ${CMAKE_INSTALL_PREFIX}")
58
OPTION(STATIC_DRUMSTICK "Build static libraries instead of dynamic" OFF)
59
OPTION(USE_DBUS "Include DBus support (required for RealtimeKit)" ON)
61
MESSAGE(STATUS "Build configuration: ${CMAKE_BUILD_TYPE}")
65
SET(BUILD_SHARED_LIBS OFF)
66
add_definitions (-DDRUMSTICK_STATIC)
67
MESSAGE(STATUS "Building static libraries")
68
ELSE(STATIC_DRUMSTICK)
69
SET(BUILD_SHARED_LIBS ON)
70
MESSAGE(STATUS "Building dynamic libraries")
71
ENDIF(STATIC_DRUMSTICK)
74
SET(QT_MIN_VERSION "4.4.0")
75
FIND_PACKAGE(Qt4 REQUIRED)
77
MESSAGE (STATUS "Found Qt4 ${QT_EDITION} version = ${QTVERSION}")
78
SET (QT_USE_QTSVG TRUE)
80
SET(QT_USE_QTDBUS TRUE)
81
ADD_DEFINITIONS(-DRTKIT_SUPPORT)
83
INCLUDE (${QT_USE_FILE})
84
INCLUDE_DIRECTORIES (${QT_INCLUDES})
85
LINK_DIRECTORIES (${QT_LIBRARY_DIR})
86
LINK_LIBRARIES (${QT_LIBRARIES})
87
ADD_DEFINITIONS (-DQT_STRICT_ITERATORS)
89
MESSAGE(FATAL_ERROR "Qt4 not found")
92
# Check for PKG-CONFIG
93
FIND_PACKAGE(PkgConfig REQUIRED)
95
MESSAGE(STATUS "Program pkg-config found (${PKG_CONFIG_EXECUTABLE})")
96
ELSE(PKG_CONFIG_FOUND)
97
MESSAGE(FATAL_ERROR "Program pkg-config not found")
98
ENDIF(PKG_CONFIG_FOUND)
100
# Initialize some variables
103
# Check for ALSA 1.0.0
104
PKG_CHECK_MODULES(ALSA alsa>=1.0.0)
107
ADD_DEFINITIONS(-DHAVE_ALSA)
108
SET(ALSA_LIBS ${ALSA_LIBRARIES})
109
LIST(APPEND ALSA_LIB_DIR ${ALSA_LIBRARY_DIRS} ${ALSA_LIBDIR})
110
LIST(APPEND ALSA_INC_DIR ${ALSA_INCLUDE_DIRS} ${ALSA_INCLUDEDIR})
112
MESSAGE(STATUS "Warning: ALSA library not found.")
116
${DRUMSTICK_BINARY_DIR}/lib
120
INCLUDE_DIRECTORIES ( BEFORE
121
${DRUMSTICK_SOURCE_DIR}/library
122
${DRUMSTICK_SOURCE_DIR}/library/include
126
if (CMAKE_COMPILER_IS_GNUCXX)
127
# exceptions are needed by this library, please don't try to disable them!
128
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -UQT_NO_EXCEPTIONS")
130
include (CheckCXXCompilerFlag)
131
check_cxx_compiler_flag (-fvisibility=hidden _HAVE_GCC_VISIBILITY)
132
if (_HAVE_GCC_VISIBILITY)
134
"${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
135
endif (_HAVE_GCC_VISIBILITY)
136
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
138
endif (CMAKE_COMPILER_IS_GNUCXX)
140
ADD_SUBDIRECTORY(library)
141
ADD_SUBDIRECTORY(utils)
142
ADD_SUBDIRECTORY(icons)
143
IF(${CMAKE_SYSTEM} MATCHES "Linux")
144
FIND_PACKAGE(Doxygen)
147
"${CMAKE_SOURCE_DIR}/Doxyfile.in"
148
"${CMAKE_CURRENT_BINARY_DIR}/Doxyfile"
150
ADD_CUSTOM_TARGET ( doxygen
152
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
155
ADD_SUBDIRECTORY(doc)
156
ENDIF(${CMAKE_SYSTEM} MATCHES "Linux")
158
CONFIGURE_FILE(drumstick-alsa.pc.in drumstick-alsa.pc IMMEDIATE @ONLY)
159
CONFIGURE_FILE(drumstick-file.pc.in drumstick-file.pc IMMEDIATE @ONLY)
160
CONFIGURE_FILE(drumstick.spec.in drumstick.spec IMMEDIATE @ONLY)
162
${CMAKE_CURRENT_BINARY_DIR}/drumstick-file.pc
163
${CMAKE_CURRENT_BINARY_DIR}/drumstick-alsa.pc
164
DESTINATION lib${LIB_SUFFIX}/pkgconfig )
167
set( SHARED_MIME_INFO_MINIMUM_VERSION "0.30" )
168
set( XDG_MIME_INSTALL_DIR "share/mime/packages" )
169
find_package( SharedMimeInfo )
170
if( SHARED_MIME_INFO_FOUND )
171
install( FILES drumstick.xml DESTINATION ${XDG_MIME_INSTALL_DIR} )
172
update_xdg_mimetypes( ${XDG_MIME_INSTALL_DIR} )
173
endif( SHARED_MIME_INFO_FOUND )
175
# uninstall custom target
177
"${CMAKE_SOURCE_DIR}/cmake_admin/cmake_uninstall.cmake.in"
178
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
181
ADD_CUSTOM_TARGET ( uninstall
182
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
184
IF(${CMAKE_SYSTEM} MATCHES "Linux")
186
ADD_CUSTOM_TARGET ( tarball
187
COMMAND mkdir -p drumstick-${VERSION}
188
COMMAND cp -r cmake_admin drumstick-${VERSION}
189
COMMAND cp -r library drumstick-${VERSION}
190
COMMAND cp -r utils drumstick-${VERSION}
191
COMMAND cp -r doc drumstick-${VERSION}
192
COMMAND cp -r icons drumstick-${VERSION}
193
COMMAND cp CMakeLists.txt AUTHORS COPYING ChangeLog INSTALL NEWS README TODO drumstick*.in drumstick.pro drumstick.xml configure* Doxyfile.in link-drumstick chkcoverage drumstick-${VERSION}
194
COMMAND tar -cj --exclude=.[a-z]* -f drumstick-${VERSION}.tar.bz2 drumstick-${VERSION}
195
COMMAND tar -cz --exclude=.[a-z]* -f drumstick-${VERSION}.tar.gz drumstick-${VERSION}
196
COMMAND rm -rf drumstick-${VERSION}
197
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
199
ENDIF(${CMAKE_SYSTEM} MATCHES "Linux")