/[svn]/qsampler/trunk/CMakeLists.txt
ViewVC logotype

Contents of /qsampler/trunk/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3867 - (show annotations) (download)
Sat Mar 27 12:27:37 2021 UTC (3 years ago) by capela
File MIME type: text/plain
File size: 8886 byte(s)
* Switching to CMake build system as for packaging default.
1 cmake_minimum_required(VERSION 3.10)
2
3 project(qsampler
4 VERSION 0.9.3
5 DESCRIPTION "A LinuxSampler Qt GUI Interface"
6 LANGUAGES C CXX)
7
8 set (CONFIG_VERSION ${PROJECT_VERSION})
9 execute_process (
10 COMMAND git describe --tags --dirty --abbrev=6
11 OUTPUT_VARIABLE GIT_DESCRIBE_OUTPUT
12 RESULT_VARIABLE GIT_DESCRIBE_RESULT
13 OUTPUT_STRIP_TRAILING_WHITESPACE)
14 if (GIT_DESCRIBE_RESULT EQUAL 0)
15 set (VERSION "${GIT_DESCRIBE_OUTPUT}")
16 string (REGEX REPLACE "^[^0-9]+" "" VERSION "${VERSION}")
17 string (REGEX REPLACE "-g" "git." VERSION "${VERSION}")
18 string (REGEX REPLACE "[_|-]+" "." VERSION "${VERSION}")
19 execute_process (
20 COMMAND git rev-parse --abbrev-ref HEAD
21 OUTPUT_VARIABLE GIT_REVPARSE_OUTPUT
22 RESULT_VARIABLE GIT_REVPARSE_RESULT
23 OUTPUT_STRIP_TRAILING_WHITESPACE)
24 if (GIT_REVPARSE_RESULT EQUAL 0 AND NOT GIT_REVPARSE_OUTPUT STREQUAL "master")
25 set (VERSION "${VERSION} [${GIT_REVPARSE_OUTPUT}]")
26 endif ()
27 else ()
28 set (VERSION "${PROJECT_VERSION}")
29 endif ()
30
31 set (PACKAGE_NAME "Qsampler")
32 set (PACKAGE_VERSION "${VERSION}")
33 set (PACKAGE_BUGREPORT "rncbc@rncbc.org")
34 set (PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
35 set (PACKAGE_TARNAME "qsampler")
36
37 set (ac_version "${PROJECT_VERSION}")
38 set (ac_prefix "${CMAKE_INSTALL_PREFIX}")
39
40 set (CONFIG_BUILD_VERSION "${PACKAGE_VERSION}")
41
42 if (CMAKE_BUILD_TYPE)
43 set (CONFIG_BUILD_TYPE ${CMAKE_BUILD_TYPE})
44 else ()
45 set (CONFIG_BUILD_TYPE "release")
46 endif ()
47
48 set (CONFIG_DEBUG 0)
49 if (CONFIG_BUILD_TYPE MATCHES "debug")
50 set (CONFIG_DEBUG 1)
51 endif ()
52
53 set (CONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}")
54
55 include (GNUInstallDirs)
56 set (CONFIG_BINDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_BINDIR}")
57 set (CONFIG_LIBDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
58 set (CONFIG_DATADIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_DATADIR}")
59 set (CONFIG_MANDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_MANDIR}")
60
61
62 # Enable libgig availability.
63 option (CONFIG_LIBGIG "Enable libgig interface (default=yes)" 1)
64
65 # Enable unique/single instance.
66 option (CONFIG_XUNIQUE "Enable unique/single instance (default=yes)" 1)
67
68 # Enable debugger stack-trace option (assumes --enable-debug).
69 option (CONFIG_STACKTRACE "Enable debugger stack-trace (default=no)" 0)
70
71
72 # Fix for new CMAKE_REQUIRED_LIBRARIES policy.
73 if (POLICY CMP0075)
74 cmake_policy (SET CMP0075 NEW)
75 endif ()
76
77 # Check for Qt
78 find_package (QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
79 find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets)
80
81 if (CONFIG_XUNIQUE)
82 find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Network)
83 endif ()
84
85 find_package (Qt${QT_VERSION_MAJOR}LinguistTools)
86
87 include (CheckIncludeFile)
88 include (CheckIncludeFiles)
89 include (CheckIncludeFileCXX)
90 include (CheckFunctionExists)
91 include (CheckLibraryExists)
92
93 # Checks for libraries.
94 if (WIN32)
95 check_function_exists (lroundf CONFIG_ROUND)
96 else ()
97 find_library (MATH_LIBRARY m)
98 # Check for round math function.
99 if (MATH_LIBRARY)
100 set (CMAKE_REQUIRED_LIBRARIES "${MATH_LIBRARY};${CMAKE_REQUIRED_LIBRARIES}")
101 check_function_exists (lroundf CONFIG_ROUND)
102 else ()
103 message (FATAL_ERROR "*** math library not found.")
104 endif ()
105 endif ()
106
107 # Checks for header files.
108 if (UNIX AND NOT APPLE)
109 check_include_files ("fcntl.h;unistd.h;signal.h" HAVE_SIGNAL_H)
110 endif ()
111
112
113 # Find package modules
114 find_package (PkgConfig REQUIRED)
115
116 # Check for LSCP libraries.
117 pkg_check_modules (LSCP REQUIRED IMPORTED_TARGET lscp)
118 if (LSCP_FOUND)
119 set (CONFIG_LIBLSCP 1)
120 include_directories (${LSCP_INCLUDE_DIRS})
121 link_directories (${LSCP_LIBRARY_DIRS})
122 # link_libraries (${LSCP_LIBRARIES})
123 set (CMAKE_REQUIRED_LIBRARIES "${LSCP_LIBRARIES};${CMAKE_REQUIRED_LIBRARIES}")
124 # Check for for instrument_name in lscp_channel_info_t.
125 check_include_file (lscp/client.h HAVE_LSCP_CLIENT_H)
126 if (NOT HAVE_LSCP_CLIENT_H)
127 set (CONFIG_INSTRUMENT_NAME 0)
128 else ()
129 set (CONFIG_INSTRUMENT_NAME 1)
130 endif ()
131 # Check for mute/solo in lscp_channel_info_t.
132 if (NOT HAVE_LSCP_CLIENT_H)
133 set (CONFIG_MUTE_SOLO 0)
134 else ()
135 set (CONFIG_MUTE_SOLO 1)
136 endif ()
137 if (CONFIG_MUTE_SOLO)
138 check_function_exists (lscp_set_channel_mute CONFIG_MUTE_SOLO)
139 endif ()
140 if (CONFIG_MUTE_SOLO)
141 check_function_exists (lscp_set_channel_solo CONFIG_MUTE_SOLO)
142 endif ()
143 # Check if MIDI instrument mapping is available.
144 check_function_exists (lscp_map_midi_instrument CONFIG_MIDI_INSTRUMENT)
145 # Check if FX sends is available.
146 check_function_exists (lscp_create_fxsend CONFIG_FXSEND)
147 # Check for FX send level in lscp_fxsend_info_t
148 if (CONFIG_FXSEND)
149 if (NOT HAVE_LSCP_CLIENT_H)
150 set (CONFIG_FXSEND_LEVEL 0)
151 else ()
152 set (CONFIG_FXSEND_LEVEL 1)
153 endif ()
154 endif ()
155 # Check if FX send rename is available.
156 if (CONFIG_FXSEND)
157 check_function_exists (lscp_set_fxsend_name CONFIG_FXSEND_RENAME)
158 endif ()
159 # Check for audio_routing array type
160 if (NOT HAVE_LSCP_CLIENT_H)
161 set (CONFIG_AUDIO_ROUTING 0)
162 else ()
163 set (CONFIG_AUDIO_ROUTING 1)
164 endif ()
165 # Check if global volume is available.
166 check_function_exists (lscp_set_volume CONFIG_VOLUME)
167 # Check if instrument editing is available.
168 check_function_exists (lscp_edit_channel_instrument CONFIG_EDIT_INSTRUMENT)
169 # Check for CHANNEL_MIDI LSCP event support in liblscp],
170 check_include_file (lscp/event.h HAVE_LSCP_EVENT_H)
171 if (NOT HAVE_LSCP_EVENT_H)
172 set (CONFIG_EVENT_CHANNEL_MIDI 0)
173 else ()
174 set (CONFIG_EVENT_CHANNEL_MIDI 1)
175 endif ()
176 # Check for DEVICE_MIDI LSCP event support in liblscp],
177 if (NOT HAVE_LSCP_EVENT_H)
178 set (CONFIG_EVENT_DEVICE_MIDI 0)
179 else ()
180 set (CONFIG_EVENT_DEVICE_MIDI 1)
181 endif ()
182 # Check if max. voices / streams is available.
183 check_function_exists (lscp_get_voices CONFIG_MAX_VOICES)
184 else ()
185 message (FATAL_ERROR "*** LSCP library not found.")
186 set (CONFIG_LIBLSCP 0)
187 endif ()
188
189 # Check for GIG libraries.
190 if (CONFIG_LIBGIG)
191 pkg_check_modules (GIG IMPORTED_TARGET gig>=3.3.0)
192 if (GIG_FOUND)
193 include_directories (${GIG_INCLUDE_DIRS})
194 link_directories (${GIG_LIBRARY_DIRS})
195 link_libraries (${GIG_LIBRARIES})
196 # set (CMAKE_REQUIRED_LIBRARIES "${GIG_LIBRARIES};${CMAKE_REQUIRED_LIBRARIES}")
197 # liggig supports fast information retrieval.
198 set (CONFIG_LIBGIG_SETAUTOLOAD 1)
199 # Check if libgig/SF.h is available.
200 check_include_file_cxx (libgig/SF.h HAVE_LIBGIG_SF_H)
201 if (NOT HAVE_LIBGIG_SF_H)
202 set (CONFIG_LIBGIG_SF2 0)
203 else ()
204 set (CONFIG_LIBGIG_SF2 1)
205 endif ()
206 else ()
207 message (WARNING "*** GIG library not found.")
208 set (CONFIG_LIBGIG 0)
209 endif ()
210 endif ()
211
212
213 add_subdirectory (src)
214
215 configure_file (qsampler.spec.in qsampler.spec IMMEDIATE @ONLY)
216
217 install (FILES qsampler.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
218 install (FILES qsampler.fr.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/fr/man1 RENAME qsampler.1)
219
220 # Configuration status
221 macro (SHOW_OPTION text value)
222 if (${value})
223 message ("${text}: yes")
224 else ()
225 message ("${text}: no")
226 endif ()
227 endmacro ()
228
229
230 message ("\n ${PACKAGE_NAME} ${PACKAGE_VERSION}")
231 message ("\n Build target . . . . . . . . . . . . . . . . . . .: ${CONFIG_BUILD_TYPE}\n")
232 show_option (" LSCP instrument name support . . . . . . . . . . ." CONFIG_INSTRUMENT_NAME)
233 show_option (" LSCP mute/solo support . . . . . . . . . . . . . ." CONFIG_MUTE_SOLO)
234 show_option (" LSCP MIDI instrument support . . . . . . . . . . ." CONFIG_MIDI_INSTRUMENT)
235 show_option (" LSCP FX send support . . . . . . . . . . . . . . ." CONFIG_FXSEND)
236 show_option (" LSCP FX send level support . . . . . . . . . . . ." CONFIG_FXSEND_LEVEL)
237 show_option (" LSCP FX send rename support . . . . . . . . . . ." CONFIG_FXSEND_RENAME)
238 show_option (" LSCP audio routing support . . . . . . . . . . . ." CONFIG_AUDIO_ROUTING)
239 show_option (" LSCP volume support . . . . . . . . . . . . . . ." CONFIG_VOLUME)
240 show_option (" LSCP edit instrument support . . . . . . . . . . ." CONFIG_EDIT_INSTRUMENT)
241 show_option (" GigaSampler instrument file support (libgig) . . ." CONFIG_LIBGIG)
242 if (CONFIG_LIBGIG)
243 show_option (" libgig supports fast information retrieval . . . ." CONFIG_LIBGIG_SETAUTOLOAD)
244 show_option (" libgig supports SoundFont2 instruments files . . ." CONFIG_LIBGIG_SF2)
245 endif ()
246 show_option (" LSCP channel MIDI event support . . . . . . . . ." CONFIG_EVENT_CHANNEL_MIDI)
247 show_option (" LSCP device MIDI event support . . . . . . . . . ." CONFIG_EVENT_DEVICE_MIDI)
248 show_option (" LSCP runtime max. voices / disk streams support ." CONFIG_MAX_VOICES)
249 message ("")
250 show_option (" Unique/Single instance support . . . . . . . . . ." CONFIG_XUNIQUE)
251 show_option (" Debugger stack-trace (gdb) . . . . . . . . . . . ." CONFIG_STACKTRACE)
252 message ("\n Install prefix . . . . . . . . . . . . . . . . . .: ${CMAKE_INSTALL_PREFIX}")
253 message ("\nNow type 'make', followed by 'make install' as root.\n")

  ViewVC Help
Powered by ViewVC