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

Annotation of /qsampler/trunk/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4109 - (hide annotations) (download)
Sun Apr 7 15:42:43 2024 UTC (2 weeks, 3 days ago) by capela
File MIME type: text/plain
File size: 9164 byte(s)
- Prepping the unthinkable (aka. v1.0.0-rc1)
1 capela 3910 cmake_minimum_required (VERSION 3.13)
2 capela 3851
3 capela 4070 project (Qsampler
4 capela 4109 VERSION 0.9.90
5 capela 3852 DESCRIPTION "A LinuxSampler Qt GUI Interface"
6 capela 4070 HOMEPAGE_URL "https://qsampler.sourceforge.io"
7 capela 3852 LANGUAGES C CXX)
8 capela 3567
9 capela 4070 set (PROJECT_TITLE "${PROJECT_NAME}")
10     string (TOLOWER "${PROJECT_TITLE}" PROJECT_NAME)
11    
12 capela 4074 set (PROJECT_COPYRIGHT "Copyright (C) 2004-2024, rncbc aka Rui Nuno Capela. All rights reserved.")
13     set (PROJECT_COPYRIGHT2 "Copyright (C) 2007-2019, Christian Schoenebeck")
14     set (PROJECT_DOMAIN "linuxsampler.org")
15    
16 capela 3567 execute_process (
17     COMMAND git describe --tags --dirty --abbrev=6
18 capela 3871 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
19 capela 3567 OUTPUT_VARIABLE GIT_DESCRIBE_OUTPUT
20     RESULT_VARIABLE GIT_DESCRIBE_RESULT
21     OUTPUT_STRIP_TRAILING_WHITESPACE)
22     if (GIT_DESCRIBE_RESULT EQUAL 0)
23 capela 4070 set (GIT_VERSION "${GIT_DESCRIBE_OUTPUT}")
24     string (REGEX REPLACE "^[^0-9]+" "" GIT_VERSION "${GIT_VERSION}")
25     string (REGEX REPLACE "^1_" "" GIT_VERSION "${GIT_VERSION}")
26     string (REGEX REPLACE "^[_vV]+" "" GIT_VERSION "${GIT_VERSION}")
27     string (REGEX REPLACE "-g" "git." GIT_VERSION "${GIT_VERSION}")
28     string (REGEX REPLACE "[_|-]" "." GIT_VERSION "${GIT_VERSION}")
29 capela 3567 execute_process (
30     COMMAND git rev-parse --abbrev-ref HEAD
31 capela 3871 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
32 capela 3567 OUTPUT_VARIABLE GIT_REVPARSE_OUTPUT
33     RESULT_VARIABLE GIT_REVPARSE_RESULT
34     OUTPUT_STRIP_TRAILING_WHITESPACE)
35 capela 4070 if (GIT_REVPARSE_RESULT EQUAL 0 AND NOT GIT_REVPARSE_OUTPUT STREQUAL "main")
36     set (GIT_VERSION "${GIT_VERSION} [${GIT_REVPARSE_OUTPUT}]")
37 capela 3571 endif ()
38 capela 4070 set (PROJECT_VERSION "${GIT_VERSION}")
39 capela 3567 endif ()
40    
41    
42 capela 3907 if (CMAKE_BUILD_TYPE MATCHES "Debug")
43     set (CONFIG_DEBUG 1)
44     set (CONFIG_BUILD_TYPE "debug")
45 capela 3567 else ()
46 capela 4056 set (CONFIG_DEBUG 0)
47 capela 3567 set (CONFIG_BUILD_TYPE "release")
48 capela 4056 set (CMAKE_BUILD_TYPE "Release")
49 capela 3567 endif ()
50    
51     set (CONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}")
52    
53 capela 3570 include (GNUInstallDirs)
54     set (CONFIG_BINDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_BINDIR}")
55     set (CONFIG_LIBDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
56     set (CONFIG_DATADIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_DATADIR}")
57     set (CONFIG_MANDIR "${CONFIG_PREFIX}/${CMAKE_INSTALL_MANDIR}")
58 capela 3567
59 capela 3570
60 capela 3567 # Enable libgig availability.
61     option (CONFIG_LIBGIG "Enable libgig interface (default=yes)" 1)
62    
63     # Enable unique/single instance.
64     option (CONFIG_XUNIQUE "Enable unique/single instance (default=yes)" 1)
65    
66     # Enable debugger stack-trace option (assumes --enable-debug).
67     option (CONFIG_STACKTRACE "Enable debugger stack-trace (default=no)" 0)
68    
69 capela 4029 # Enable Wayland support option.
70     option (CONFIG_WAYLAND "Enable Wayland support (EXPERIMENTAL) (default=no)" 0)
71 capela 3571
72 capela 3869 # Enable Qt6 build preference.
73 capela 3907 option (CONFIG_QT6 "Enable Qt6 build (default=yes)" 1)
74 capela 3869
75    
76 capela 3567 # Fix for new CMAKE_REQUIRED_LIBRARIES policy.
77     if (POLICY CMP0075)
78     cmake_policy (SET CMP0075 NEW)
79     endif ()
80    
81 capela 3868 # Check for Qt...
82 capela 3869 if (CONFIG_QT6)
83     find_package (Qt6 QUIET)
84     if (NOT Qt6_FOUND)
85     set (CONFIG_QT6 0)
86     endif ()
87     endif ()
88    
89     if (CONFIG_QT6)
90 capela 3868 find_package (QT QUIET NAMES Qt6)
91     else ()
92     find_package (QT QUIET NAMES Qt5)
93     endif ()
94    
95 capela 4038 find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Svg)
96 capela 3569
97     if (CONFIG_XUNIQUE)
98 capela 3841 find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Network)
99 capela 3569 endif ()
100    
101 capela 3841 find_package (Qt${QT_VERSION_MAJOR}LinguistTools)
102 capela 3567
103     include (CheckIncludeFile)
104     include (CheckIncludeFiles)
105     include (CheckIncludeFileCXX)
106     include (CheckFunctionExists)
107     include (CheckLibraryExists)
108    
109     # Checks for libraries.
110     if (WIN32)
111     check_function_exists (lroundf CONFIG_ROUND)
112     else ()
113     find_library (MATH_LIBRARY m)
114     # Check for round math function.
115     if (MATH_LIBRARY)
116     set (CMAKE_REQUIRED_LIBRARIES "${MATH_LIBRARY};${CMAKE_REQUIRED_LIBRARIES}")
117     check_function_exists (lroundf CONFIG_ROUND)
118     else ()
119     message (FATAL_ERROR "*** math library not found.")
120     endif ()
121     endif ()
122    
123     # Checks for header files.
124     if (UNIX AND NOT APPLE)
125     check_include_files ("fcntl.h;unistd.h;signal.h" HAVE_SIGNAL_H)
126     endif ()
127    
128    
129     # Find package modules
130 capela 3968 include (FindPkgConfig)
131 capela 3567
132     # Check for LSCP libraries.
133 capela 3851 pkg_check_modules (LSCP REQUIRED IMPORTED_TARGET lscp)
134 capela 3641 if (LSCP_FOUND)
135 capela 3907 find_library(LSCP_LIBRARY NAMES ${LSCP_LIBRARIES} HINTS ${LSCP_LIBDIR})
136     endif ()
137     if (LSCP_LIBRARY)
138 capela 3641 set (CONFIG_LIBLSCP 1)
139 capela 3907 set (CMAKE_REQUIRED_LIBRARIES "${LSCP_LIBRARY};${CMAKE_REQUIRED_LIBRARIES}")
140 capela 3567 # Check for for instrument_name in lscp_channel_info_t.
141 capela 3640 check_include_file (lscp/client.h HAVE_LSCP_CLIENT_H)
142     if (NOT HAVE_LSCP_CLIENT_H)
143     set (CONFIG_INSTRUMENT_NAME 0)
144     else ()
145     set (CONFIG_INSTRUMENT_NAME 1)
146     endif ()
147 capela 3567 # Check for mute/solo in lscp_channel_info_t.
148 capela 3640 if (NOT HAVE_LSCP_CLIENT_H)
149     set (CONFIG_MUTE_SOLO 0)
150     else ()
151     set (CONFIG_MUTE_SOLO 1)
152     endif ()
153 capela 3567 if (CONFIG_MUTE_SOLO)
154     check_function_exists (lscp_set_channel_mute CONFIG_MUTE_SOLO)
155     endif ()
156     if (CONFIG_MUTE_SOLO)
157     check_function_exists (lscp_set_channel_solo CONFIG_MUTE_SOLO)
158     endif ()
159     # Check if MIDI instrument mapping is available.
160     check_function_exists (lscp_map_midi_instrument CONFIG_MIDI_INSTRUMENT)
161     # Check if FX sends is available.
162     check_function_exists (lscp_create_fxsend CONFIG_FXSEND)
163     # Check for FX send level in lscp_fxsend_info_t
164     if (CONFIG_FXSEND)
165 capela 3640 if (NOT HAVE_LSCP_CLIENT_H)
166     set (CONFIG_FXSEND_LEVEL 0)
167     else ()
168     set (CONFIG_FXSEND_LEVEL 1)
169     endif ()
170 capela 3567 endif ()
171     # Check if FX send rename is available.
172     if (CONFIG_FXSEND)
173     check_function_exists (lscp_set_fxsend_name CONFIG_FXSEND_RENAME)
174     endif ()
175     # Check for audio_routing array type
176 capela 3640 if (NOT HAVE_LSCP_CLIENT_H)
177     set (CONFIG_AUDIO_ROUTING 0)
178     else ()
179     set (CONFIG_AUDIO_ROUTING 1)
180     endif ()
181 capela 3567 # Check if global volume is available.
182     check_function_exists (lscp_set_volume CONFIG_VOLUME)
183     # Check if instrument editing is available.
184     check_function_exists (lscp_edit_channel_instrument CONFIG_EDIT_INSTRUMENT)
185     # Check for CHANNEL_MIDI LSCP event support in liblscp],
186 capela 3640 check_include_file (lscp/event.h HAVE_LSCP_EVENT_H)
187     if (NOT HAVE_LSCP_EVENT_H)
188     set (CONFIG_EVENT_CHANNEL_MIDI 0)
189     else ()
190     set (CONFIG_EVENT_CHANNEL_MIDI 1)
191     endif ()
192 capela 3567 # Check for DEVICE_MIDI LSCP event support in liblscp],
193 capela 3640 if (NOT HAVE_LSCP_EVENT_H)
194     set (CONFIG_EVENT_DEVICE_MIDI 0)
195     else ()
196     set (CONFIG_EVENT_DEVICE_MIDI 1)
197     endif ()
198 capela 3567 # Check if max. voices / streams is available.
199     check_function_exists (lscp_get_voices CONFIG_MAX_VOICES)
200     else ()
201     message (FATAL_ERROR "*** LSCP library not found.")
202 capela 3641 set (CONFIG_LIBLSCP 0)
203 capela 3567 endif ()
204    
205     # Check for GIG libraries.
206     if (CONFIG_LIBGIG)
207 capela 3851 pkg_check_modules (GIG IMPORTED_TARGET gig>=3.3.0)
208 capela 3641 if (GIG_FOUND)
209 capela 3907 find_library(GIG_LIBRARY NAMES ${GIG_LIBRARIES} HINTS ${GIG_LIBDIR})
210     endif ()
211     if (GIG_LIBRARY)
212     set (CONFIG_LIBGIG 1)
213     #set (CMAKE_REQUIRED_LIBRARIES "${GIG_LIBRARY};${CMAKE_REQUIRED_LIBRARIES}")
214 capela 3567 # liggig supports fast information retrieval.
215     set (CONFIG_LIBGIG_SETAUTOLOAD 1)
216     # Check if libgig/SF.h is available.
217 capela 3640 check_include_file_cxx (libgig/SF.h HAVE_LIBGIG_SF_H)
218     if (NOT HAVE_LIBGIG_SF_H)
219     set (CONFIG_LIBGIG_SF2 0)
220     else ()
221     set (CONFIG_LIBGIG_SF2 1)
222     endif ()
223 capela 3567 else ()
224     message (WARNING "*** GIG library not found.")
225 capela 3641 set (CONFIG_LIBGIG 0)
226 capela 3567 endif ()
227     endif ()
228    
229    
230     add_subdirectory (src)
231    
232    
233     # Configuration status
234     macro (SHOW_OPTION text value)
235     if (${value})
236 capela 3571 message ("${text}: yes")
237 capela 3567 else ()
238 capela 3571 message ("${text}: no")
239 capela 3567 endif ()
240     endmacro ()
241    
242 capela 4070 message ("\n ${PROJECT_TITLE} ${PROJECT_VERSION} (Qt ${QT_VERSION})")
243 capela 3569 message ("\n Build target . . . . . . . . . . . . . . . . . . .: ${CONFIG_BUILD_TYPE}\n")
244 capela 3567 show_option (" LSCP instrument name support . . . . . . . . . . ." CONFIG_INSTRUMENT_NAME)
245     show_option (" LSCP mute/solo support . . . . . . . . . . . . . ." CONFIG_MUTE_SOLO)
246     show_option (" LSCP MIDI instrument support . . . . . . . . . . ." CONFIG_MIDI_INSTRUMENT)
247     show_option (" LSCP FX send support . . . . . . . . . . . . . . ." CONFIG_FXSEND)
248     show_option (" LSCP FX send level support . . . . . . . . . . . ." CONFIG_FXSEND_LEVEL)
249     show_option (" LSCP FX send rename support . . . . . . . . . . ." CONFIG_FXSEND_RENAME)
250     show_option (" LSCP audio routing support . . . . . . . . . . . ." CONFIG_AUDIO_ROUTING)
251     show_option (" LSCP volume support . . . . . . . . . . . . . . ." CONFIG_VOLUME)
252     show_option (" LSCP edit instrument support . . . . . . . . . . ." CONFIG_EDIT_INSTRUMENT)
253     show_option (" GigaSampler instrument file support (libgig) . . ." CONFIG_LIBGIG)
254     if (CONFIG_LIBGIG)
255     show_option (" libgig supports fast information retrieval . . . ." CONFIG_LIBGIG_SETAUTOLOAD)
256     show_option (" libgig supports SoundFont2 instruments files . . ." CONFIG_LIBGIG_SF2)
257     endif ()
258     show_option (" LSCP channel MIDI event support . . . . . . . . ." CONFIG_EVENT_CHANNEL_MIDI)
259     show_option (" LSCP device MIDI event support . . . . . . . . . ." CONFIG_EVENT_DEVICE_MIDI)
260     show_option (" LSCP runtime max. voices / disk streams support ." CONFIG_MAX_VOICES)
261 capela 3569 message ("")
262 capela 3567 show_option (" Unique/Single instance support . . . . . . . . . ." CONFIG_XUNIQUE)
263     show_option (" Debugger stack-trace (gdb) . . . . . . . . . . . ." CONFIG_STACKTRACE)
264 capela 4005 message ("\n Install prefix . . . . . . . . . . . . . . . . . .: ${CONFIG_PREFIX}\n")

  ViewVC Help
Powered by ViewVC