/[svn]/linuxsampler/trunk/configure.ac
ViewVC logotype

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1399 - (show annotations) (download)
Thu Oct 11 18:53:29 2007 UTC (16 years, 5 months ago) by schoenebeck
Original Path: linuxsampler/trunk/configure.in
File size: 44843 byte(s)
* the following LSCP command return escape sequences in at least one
  of their LSCP response fields: "GET ENGINE INFO", "GET CHANNEL INFO",
  "GET MIDI_INSTRUMENT INFO", "GET MIDI_INSTRUMENT_MAP INFO",
  "GET FX_SEND INFO", "GET SERVER INFO"
* listed all LSCP commands in the LSCP specs which may use escape
  sequences in at least on of their response fields
* hide instrument editor related debug messages in the gig::Engine when
  using the default debug level (which is 1)
* bumped version to 0.4.0.8cvs

1 AC_INIT(configure.in)
2
3 #------------------------------------------------------------------------------------
4 # LinuxSampler's / liblinuxsampler's "official" release version:
5
6 LINUXSAMPLER_RELEASE_MAJOR=0
7 LINUXSAMPLER_RELEASE_MINOR=4
8 LINUXSAMPLER_RELEASE_BUILD=0.8cvs
9
10 #------------------------------------------------------------------------------------
11 # The following is the libtool / shared library version. This doesn't have to
12 # do anything with the release version. It MUST conform to the following rules:
13 #
14 # 1. Start with version information of `0:0:0' for each libtool library.
15 # 2. Update the version information only immediately before a public release of
16 # your software. More frequent updates are unnecessary, and only guarantee
17 # that the current interface number gets larger faster.
18 # 3. If the library source code has changed at all since the last update, then
19 # increment revision (`c:r:a' becomes `c:r+1:a').
20 # 4. If any interfaces have been added, removed, or changed since the last update,
21 # increment current, and set revision to 0.
22 # 5. If any interfaces have been added since the last public release, then increment
23 # age.
24 # 6. If any interfaces have been removed since the last public release, then set age
25 # to 0.
26
27 LIBLINUXSAMPLER_LT_CURRENT=0
28 LIBLINUXSAMPLER_LT_REVISION=0
29 LIBLINUXSAMPLER_LT_AGE=0
30 SHARED_VERSION_INFO="$LIBLINUXSAMPLER_LT_CURRENT:$LIBLINUXSAMPLER_LT_REVISION:$LIBLINUXSAMPLER_LT_AGE"
31
32 #------------------------------------------------------------------------------------
33 # the LSCP specification version this LinuSampler release complies with:
34
35 LSCP_RELEASE_MAJOR=1
36 LSCP_RELEASE_MINOR=2
37
38 AC_DEFINE_UNQUOTED(LSCP_RELEASE_MAJOR, ${LSCP_RELEASE_MAJOR}, [LSCP spec major version this release complies with.])
39 AC_DEFINE_UNQUOTED(LSCP_RELEASE_MINOR, ${LSCP_RELEASE_MINOR}, [LSCP spec minor version this release complies with.])
40
41 AM_PROG_LIBTOOL
42
43 AC_SUBST(SHLIB_VERSION_ARG)
44 AC_SUBST(SHARED_VERSION_INFO)
45
46 AC_C_BIGENDIAN
47 AC_CANONICAL_SYSTEM
48
49 AC_SUBST(target)
50 AC_SUBST(target_alias)
51 AC_SUBST(target_cpu)
52 AC_SUBST(target_os)
53 AC_SUBST(target_vendor)
54
55
56 ###########################################################################
57 # General Checks
58
59 AC_MSG_CHECKING([whether x86 architecture])
60 def_arch_x86=0
61 case $target_cpu in
62 "i386" | "i486" | "i586" | "i686" | "i786")
63 echo "yes"
64 def_arch_x86=1;;
65 *)
66 echo "no";;
67 esac
68 AC_DEFINE_UNQUOTED(ARCH_X86,$def_arch_x86,[Define to 1 if you build for x86 architecture.])
69
70 # determine the right gcc switch for CPU specific optimizations
71 # (only if the user did not provide one)
72 CXX_CPU_SWITCH=
73 if ! echo "X $CXXFLAGS " | grep -q -- " \(-march=\|-mcpu=\|-mtune=\|-arch=\)" ; then
74 if test "$def_arch_x86" = 1; then
75 CXX_CPU_SWITCH="-march=$target_cpu"
76 elif test "$target_cpu" = "ppc"; then
77 CXX_CPU_SWITCH="-arch=$target_cpu"
78 fi
79 fi
80 AC_SUBST([CXX_CPU_SWITCH])
81
82 AC_MSG_CHECKING([whether UNIX98 compatible])
83 AC_LANG_SAVE
84 AC_LANG_C
85 AC_TRY_RUN([
86 #ifndef _GNU_SOURCE
87 #define _GNU_SOURCE 1
88 #endif
89 #include <features.h>
90 void main(void) {
91 #if _XOPEN_SOURCE >= 500
92 exit(0); /* UNIX98 compatible */
93 #else
94 exit(-1); /* not UNIX98 compatible */
95 #endif
96 }
97 ],
98 have_unix98="yes",
99 have_unix98="no",
100 have_unix98="no"
101 )
102 AC_LANG_RESTORE
103 AC_MSG_RESULT([$have_unix98])
104 if test "$have_unix98" = "no"; then
105 if test "x$HAVE_UNIX98" = "x"; then
106 echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
107 echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run
108 echo "./configure with environment variable HAVE_UNIX98=1 in case you think you
109 echo "have a UNIX98 compatible system."
110 exit -1;
111 fi
112 fi
113
114 # check for <features.h>
115 AC_CHECK_HEADERS(features.h)
116
117
118 ###########################################################################
119 # Checks for available audio and MIDI systems / drivers
120 # (we throw an error if there's not at least one system for audio output and MIDI input available)
121
122 have_midi_input_driver="false"
123 have_audio_output_driver="false"
124
125 # ALSA
126 AC_ARG_ENABLE(alsa-driver,
127 [ --disable-alsa-driver
128 Disable support for the Advanced Linux Sound
129 Architecture (ALSA).],
130 [config_alsa_driver="$enableval"],
131 [config_alsa_driver="yes"]
132 )
133 have_alsa=0
134 if test "$config_alsa_driver" = "yes"; then
135 AC_CHECK_HEADER(alsa/asoundlib.h,
136 AC_CHECK_LIB(asound, main,
137 have_alsa=1
138 ,
139 have_alsa=0
140 )
141 ,
142 have_alsa=0
143 )
144 if test "$have_alsa" = "1"; then
145 have_midi_input_driver="true"
146 have_audio_output_driver="true";
147 fi
148
149 echo -n "checking Alsa version... "
150 AC_LANG_SAVE
151 AC_LANG_C
152 AC_TRY_RUN([
153 #include <alsa/asoundlib.h>
154 void main(void) {
155 /* ensure backward compatibility */
156 #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
157 #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
158 #endif
159 exit(SND_LIB_MAJOR);
160 }
161 ],
162 alsa_major=0,
163 alsa_major=$?,
164 alsa_major=0
165 )
166 AC_TRY_RUN([
167 #include <alsa/asoundlib.h>
168 void main(void) {
169 /* ensure backward compatibility */
170 #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
171 #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
172 #endif
173 exit(SND_LIB_MINOR);
174 }
175 ],
176 alsa_minor=0,
177 alsa_minor=$?,
178 alsa_minor=0
179 )
180 AC_TRY_RUN([
181 #include <alsa/asoundlib.h>
182 void main(void) {
183 /* ensure backward compatibility */
184 #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
185 #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
186 #endif
187 exit(SND_LIB_SUBMINOR);
188 }
189 ],
190 alsa_subminor=0,
191 alsa_subminor=$?,
192 alsa_subminor=0
193 )
194 AC_LANG_RESTORE
195 echo "$alsa_major.$alsa_minor.$alsa_subminor";
196 AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
197 AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
198 AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])
199 else
200 echo "ALSA support disabled by configure script parameter"
201 fi
202 AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
203 AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
204
205 # JACK
206 AC_ARG_ENABLE(jack-driver,
207 [ --disable-jack-driver
208 Disable support for the Jack Audio Connection Kit
209 (JACK).],
210 [config_jack_driver="$enableval"],
211 [config_jack_driver="yes"]
212 )
213 have_jack=0
214 if test "$config_jack_driver" = "yes"; then
215 PKG_CHECK_MODULES(JACK, jack, have_jack=1, have_jack=0)
216 if test $have_jack = "1"; then
217 AC_SUBST(JACK_LIBS)
218 AC_SUBST(JACK_CFLAGS)
219 AC_CHECK_LIB(jack, jack_client_name_size, [AC_DEFINE(HAVE_JACK_CLIENT_NAME_SIZE, 1, [Define to 1 if you have the `jack_client_name_size' function.])], , $JACK_LIBS)
220 have_audio_output_driver="true";
221 fi
222 else
223 echo "JACK support disabled by configure script parameter"
224 fi
225 AM_CONDITIONAL(HAVE_JACK, test $have_jack = "1")
226 AC_DEFINE_UNQUOTED(HAVE_JACK,$have_jack,[Define to 1 if you have JACK installed.])
227
228 # ARTS
229 AC_ARG_ENABLE(arts-driver,
230 [ --disable-arts-driver
231 Disable support for the Analogue Realtime System
232 (aRts).],
233 [config_arts_driver="$enableval"],
234 [config_arts_driver="yes"]
235 )
236 have_arts=0
237 if test "$config_arts_driver" = "yes"; then
238 m4_ifdef([m4_include(m4/arts.m4)],,
239 [sinclude([m4/arts.m4])])
240 AM_PATH_ARTS(0.9.5, have_arts=1, have_arts=0)
241 if test "$have_arts" = "1"; then
242 have_audio_output_driver="true"
243 fi
244 else
245 echo "ARTS support disabled by configure script parameter"
246 fi
247 AM_CONDITIONAL(HAVE_ARTS, test "$have_arts" = "1")
248 AC_DEFINE_UNQUOTED(HAVE_ARTS,$have_arts,[Define to 1 if you have aRts installed.])
249
250 # MidiShare (Linux, OS X, Windows)
251 AC_ARG_ENABLE(midishare-driver,
252 [ --disable-midishare-driver
253 Disable support for the MidiShare system.],
254 [config_midishare_driver="$enableval"],
255 [config_midishare_driver="yes"]
256 )
257 have_midishare=0
258 if test "$config_midishare_driver" = "yes"; then
259 AC_CHECK_HEADER(MidiShare.h,
260 AC_CHECK_LIB(MidiShare, MidiCountEvs,
261 have_midishare=1,
262 have_midishare=0
263 )
264 ,
265 have_midishare=0
266 )
267 if test "$have_midishare" = "1"; then
268 have_midi_input_driver="true"
269 fi
270 else
271 echo "MidiShare support disabled by configure script parameter"
272 fi
273 AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1")
274 AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.])
275
276 # CoreMIDI (OS X)
277 AC_ARG_ENABLE(coremidi-driver,
278 [ --disable-coremidi-driver
279 Disable support for the Apple CoreMIDI system.],
280 [config_coremidi_driver="$enableval"],
281 [config_coremidi_driver="yes"]
282 )
283 have_coremidi=0
284 if test "$config_coremidi_driver" = "yes"; then
285 AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h,
286 have_coremidi=1,
287 have_coremidi=0
288 )
289 if test "$have_coremidi" = "1"; then
290 have_midi_input_driver="true"
291 fi
292 else
293 echo "CoreMIDI support disabled by configure script parameter"
294 fi
295 AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1")
296 AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.])
297
298 # have we found at least one MIDI input and one audio output driver ?
299 if test "$have_midi_input_driver" = "false"; then
300 echo "No supported MIDI input system found!"
301 echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:"
302 echo "ALSA, MIDIShare, CoreMIDI."
303 echo "If you think you have one of those available on your system, make sure you"
304 echo "also have the respective development (header) files installed."
305 exit -1;
306 fi
307 if test "$have_audio_output_driver" = "false"; then
308 echo "No supported audio output system found!"
309 echo "Sorry, LinuxSampler only supports ALSA, JACK and ARTS as audio output"
310 echo "driver at the moment!"
311 exit -1;
312 fi
313
314
315
316 ###########################################################################
317 # Checks for various DLL libraries
318
319 # Check presence of libgig
320 libgig_version="3.1.1"
321 PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
322 if test "$HAVE_GIG" = "false"; then
323 echo "Required libgig version not found!"
324 echo "You need to have libgig version ${libgig_version} installed!"
325 exit -1;
326 else
327 echo "yes, found libgig $libgig_version"
328 fi
329 AC_SUBST(GIG_CFLAGS)
330 AC_SUBST(GIG_LIBS)
331
332 # Instruments DB feature (requires SQLite 3.3)
333 AC_ARG_ENABLE(instruments-db,
334 [ --disable-instruments-db
335 Disable compilation of the sampler's instruments
336 database feature. You need to have SQLite 3.3
337 or younger installed for this feature.],
338 [config_instruments_db="$enableval"],
339 [config_instruments_db="yes"]
340 )
341 HAVE_SQLITE3=0;
342 if test "$config_instruments_db" = "yes"; then
343 # Check presence of sqlite3
344 sqlite_version="3.3"
345 PKG_CHECK_MODULES(SQLITE3, sqlite3 >= $sqlite_version, HAVE_SQLITE3=true, HAVE_SQLITE3=false)
346 AC_SUBST(SQLITE3_LIBS)
347 AC_SUBST(SQLITE3_CFLAGS)
348 if test $HAVE_SQLITE3 = false; then
349 HAVE_SQLITE3=0
350 config_instruments_db="no"
351 echo "*** Required sqlite version not found!"
352 echo "*** You need to have sqlite version ${sqlite_version} or higher"
353 echo "*** for instruments database support to be enabled."
354 echo "*** Support for instruments DB will be disabled!"
355 else
356 HAVE_SQLITE3=1
357 fi
358 else
359 echo "Instruments DB feature disabled by configure script parameter"
360 fi
361 AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1)
362 AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you want the instruments DB feature and have SQLITE3 installed.])
363
364
365
366 ###########################################################################
367 # Handle Configuration Options
368
369 # TODO: should we use AC_ARG_VAR(variable, description) instead?
370
371 AC_ARG_ENABLE(asm,
372 [ --disable-asm
373 Enable hand-crafted assembly optimizations
374 (default=on). LinuxSampler provides CPU specific
375 assembly optimizations. This is currently limited
376 to just enter a fast (denormal) FPU mode on x86
377 platforms. There are currently no synthesis core
378 assembly optimizations anymore since LS 0.4.0],
379 [config_asm="$enableval"],
380 [config_asm="yes"]
381 )
382 if test "$config_asm" = "yes"; then
383 AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable asm optimizations.])
384 fi
385
386 AC_ARG_ENABLE(dev-mode,
387 [ --disable-dev-mode
388 Disable development mode (default=on). In that mode
389 we do some extra sanity checks here and there.
390 This helps to spot possible problems, but reduces
391 efficiency a bit],
392 [config_dev_mode="$enableval"],
393 [config_dev_mode="yes"]
394 )
395 if test "$config_dev_mode" = "yes"; then
396 AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.])
397 fi
398
399 AC_ARG_ENABLE(debug-level,
400 [ --enable-debug-level
401 Specify verbosity of console messages (default=1).
402 The higher the value, the higher will be verbosity.
403 A value of 0 means no console output at all.
404 There's not really an upper limit but the usual
405 level of all messages is currently somewhere less
406 than 10.],
407 [config_debug_level="${enableval}"],
408 [config_debug_level="1"]
409 )
410 AC_DEFINE_UNQUOTED(CONFIG_DEBUG_LEVEL, $config_debug_level, [Define console verbosity.])
411
412 AC_ARG_ENABLE(rt-exceptions,
413 [ --enable-rt-exceptions
414 Enable exceptions in the realtime thread
415 (default=no). If this is enabled, exceptions will
416 be thrown on critical errors in the realtime
417 context as well. Otherwise if disabled
418 segmentation faults will be forced by the
419 application on critical errors.],
420 [config_rt_exceptions="$enableval"],
421 [config_rt_exceptions="no"]
422 )
423 if test "$config_rt_exceptions" = "yes"; then
424 AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.])
425 fi
426
427 AC_ARG_ENABLE(preload-samples,
428 [ --enable-preload-samples
429 Due to seeking and latency issues with hard drives
430 we have to cache a small part of samples' head in
431 RAM (default=32768). The higher this value the
432 more memory will be occupied for each sample, but
433 the safer this will be in regards of possible
434 droputs. A 'good' value depends on the running
435 system and usage dependant factors.],
436 [config_preload_samples="${enableval}"],
437 [config_preload_samples="32768"]
438 )
439 AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
440
441 AC_ARG_ENABLE(max-pitch,
442 [ --enable-max-pitch
443 Specify the maximum allowed pitch value in octaves
444 (default=4). To lower memory usage you might want
445 set a smaller value.],
446 [config_max_pitch="${enableval}"],
447 [config_max_pitch="4"]
448 )
449 AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
450
451 AC_ARG_ENABLE(max-events,
452 [ --enable-max-events
453 Specify the maximum allowed amount of events to be
454 processed per fragment (default=1024).],
455 [config_max_events="${enableval}"],
456 [config_max_events="1024"]
457 )
458 AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
459
460 AC_ARG_ENABLE(eg-bottom,
461 [ --enable-eg-bottom
462 Bottom limit of envelope generators
463 (default=0.001). Certain kinds of curve types like
464 exponential curves converge against 0 but never
465 reach 0. So we have to define a certain low value
466 after which we should consider all smaller values
467 to be 'almost zero'. The smaller this value, the
468 longer will voices survive in EG's release stage
469 and thus waste voices. If this value is too high
470 will cause click sounds though.],
471 [config_eg_bottom="${enableval}"],
472 [config_eg_bottom="0.001"]
473 )
474 AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
475
476 AC_ARG_ENABLE(eg-min-release-time,
477 [ --enable-eg-min-release-time
478 Specify the lowest allowed release time in seconds
479 (default=0.0025). This value will also be used to
480 ramp down voices on voice stealing. This value
481 should always be less than the period time of the
482 used audio driver, as in case of voice stealing
483 the killed voice needs to be completely ramped
484 down in the same fragment.],
485 [config_eg_min_release_time="${enableval}"],
486 [config_eg_min_release_time="0.0025"]
487 )
488 AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
489
490 AC_ARG_ENABLE(refill-streams,
491 [ --enable-refill-streams
492 Number of streams that should be refilled in each
493 disk thread cycle (default=4).],
494 [config_refill_streams="${enableval}"],
495 [config_refill_streams="4"]
496 )
497 AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
498
499 AC_ARG_ENABLE(stream-min-refill,
500 [ --enable-stream-min-refill
501 Minimum refill size for disk streams (default=1024).
502 The disk thread will go to sleep for a while if no
503 stream had to be refilled more than this value in
504 a disk thread cycle.],
505 [config_stream_min_refill="${enableval}"],
506 [config_stream_min_refill="1024"]
507 )
508 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
509
510 AC_ARG_ENABLE(stream-max-refill,
511 [ --enable-stream-max-refill
512 Maximum refill size for disk streams
513 (default=65536). The disk thread will refill
514 each stream only by a size of this value per
515 disk thread cycle.],
516 [config_stream_max_refill="${enableval}"],
517 [config_stream_max_refill="65536"]
518 )
519 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
520
521 AC_ARG_ENABLE(stream-size,
522 [ --enable-stream-size
523 Size of each stream's ring buffer in sample points
524 (default=262144).],
525 [config_stream_size="${enableval}"],
526 [config_stream_size="262144"]
527 )
528 AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
529
530 AC_ARG_ENABLE(max-streams,
531 [ --enable-max-streams
532 Maximum amount of disk streams (default=90). This
533 value should always be higher than the maximum
534 amount of voices.],
535 [config_max_streams="${enableval}"],
536 [config_max_streams="90"]
537 )
538 AC_DEFINE_UNQUOTED(CONFIG_MAX_STREAMS, $config_max_streams, [Define max. streams.])
539
540 AC_ARG_ENABLE(max-voices,
541 [ --enable-max-voices
542 Maximum amount of voices (default=64). This value
543 should always be lower than the maximum amount of
544 disk streams.],
545 [config_max_voices="${enableval}"],
546 [config_max_voices="64"]
547 )
548 AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.])
549
550 AC_ARG_ENABLE(subfragment-size,
551 [ --enable-subfragment-size
552 Every audio fragment will be splitted into
553 subfragments. Where each subfragment renders
554 audio with constant synthesis parameters. This is
555 done for efficiency reasons. This parameter
556 defines the default size of a subfragment in
557 sample points. A large value means less CPU time
558 whereas a low value means better audio quality
559 (default=32).],
560 [config_subfragment_size="${enableval}"],
561 [config_subfragment_size="32"]
562 )
563 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
564
565 AC_ARG_ENABLE(global-attenuation-default,
566 [ --enable-global-attenuation-default
567 To prevent clipping all samples will be lowered
568 in amplitude by this given default factor (can
569 be overridden at runtime).
570 (default=0.35)],
571 [config_global_attenuation_default="${enableval}"],
572 [config_global_attenuation_default="0.35"]
573 )
574 AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION_DEFAULT, $config_global_attenuation_default, [Define default global volume attenuation (as floating point factor).])
575
576 AC_ARG_ENABLE(voice-steal-algo,
577 [ --enable-voice-steal-algo
578 Voice stealing algorithm to be used. Currently
579 available options:
580 none:
581 Disable voice stealing completely.
582 oldestvoiceonkey (default):
583 Try to kill a voice on the same key first,
584 if no success, proceed with the oldest key.
585 oldestkey:
586 Try to kill a voice from the oldest active
587 key.],
588 [ if test ! "(" "${enableval}" = "none" \
589 -o "${enableval}" = "oldestvoiceonkey" \
590 -o "${enableval}" = "oldestkey" ")" ; then
591 AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
592 else
593 config_voice_steal_algo="${enableval}"
594 fi
595 ],
596 [config_voice_steal_algo="oldestvoiceonkey"]
597 )
598 AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
599
600 AC_ARG_ENABLE(sysex-buffer-size,
601 [ --enable-sysex-buffer-size
602 System Exclusive Message buffer size in kB
603 (default=2048).],
604 [config_sysex_buffer_size="${enableval}"],
605 [config_sysex_buffer_size="2048"]
606 )
607 AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
608
609 AC_ARG_ENABLE(force-filter,
610 [ --enable-force-filter
611 If enabled will force filter to be used even if
612 no usage was define in instrument patch files.
613 (default=no).],
614 [config_force_filter="$enableval"],
615 [config_force_filter="no"]
616 )
617 if test "$config_force_filter" = "yes"; then
618 AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
619 fi
620
621 AC_ARG_ENABLE(filter-cutoff-min,
622 [ --enable-filter-cutoff-min
623 Minimum filter cutoff frequency in Hz
624 (default=100.0).],
625 [config_filter_cutoff_min="${enableval}"],
626 [config_filter_cutoff_min="100.0"]
627 )
628 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
629
630 AC_ARG_ENABLE(filter-cutoff-max,
631 [ --enable-filter-cutoff-max
632 Maximum filter cutoff frequency in Hz
633 (default=10000.0).],
634 [config_filter_cutoff_max="${enableval}"],
635 [config_filter_cutoff_max="10000.0"]
636 )
637 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
638
639 AC_ARG_ENABLE(override-cutoff-ctrl,
640 [ --enable-override-cutoff-ctrl
641 Override filter cutoff MIDI controller (default=no).
642 Note: you have to define the MIDI controller number
643 here, it's not a boolean parameter type! If this
644 option is used, controller number given by
645 instrument patch will be ignored and instead this
646 supplied value will be used.],
647 [config_override_cutoff_ctrl="${enableval}"],
648 [config_override_cutoff_ctrl="no"]
649 )
650 if test ! "$config_override_cutoff_ctrl" = "no"; then
651 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
652 fi
653
654 AC_ARG_ENABLE(override-resonance-ctrl,
655 [ --enable-override-resonance-ctrl
656 Override filter resonance MIDI controller
657 (default=no). Note: you have to define the MIDI
658 controller number here, it's not a boolean
659 parameter type! If this option is used, controller
660 number given by instrument patch will be ignored
661 and instead this supplied value will be used.],
662 [config_override_resonance_ctrl="${enableval}"],
663 [config_override_resonance_ctrl="no"]
664 )
665 if test ! "$config_override_resonance_ctrl" = "no"; then
666 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
667 fi
668
669 AC_ARG_ENABLE(override-filter-type,
670 [ --enable-override-filter-type
671 Override filter type (default=no). Options:
672 hp: for highpass
673 bp: for bandpass
674 br: for bandreject
675 lp: for lowpass
676 lpt: for lowpass turbo],
677 [ if test "${enableval}" = "hp" ; then
678 config_override_filter_type="::gig::vcf_type_highpass"
679 elif test "${enableval}" = "bp" ; then
680 config_override_filter_type="::gig::vcf_type_bandpass"
681 elif test "${enableval}" = "br" ; then
682 config_override_filter_type="::gig::vcf_type_bandreject"
683 elif test "${enableval}" = "lp" ; then
684 config_override_filter_type="::gig::vcf_type_lowpass"
685 elif test "${enableval}" = "lpt" ; then
686 config_override_filter_type="::gig::vcf_type_lowpassturbo"
687 elif test ! "${enableval}" = "no"; then
688 AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
689 fi
690 ],
691 [config_override_filter_type="no"]
692 )
693 if test ! "$config_override_filter_type" = "no"; then
694 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
695 fi
696
697 AC_ARG_ENABLE(gs-checksum,
698 [ --enable-gs-checksum
699 Enable Roland General Synth SysEx checksum check
700 (default=no). If this is enabled, all GS SysEx
701 messages which do not provide a correct checksum
702 will be ignored. This is disabled by default as
703 not all devices honor GS checksums.],
704 [config_assert_gs_sysex_checksum="$enableval"],
705 [config_assert_gs_sysex_checksum="no"]
706 )
707 if test "config_assert_gs_sysex_checksum" = "yes"; then
708 AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
709 fi
710
711 AC_ARG_ENABLE(portamento-time-min,
712 [ --enable-portamento-time-min
713 Minimum Portamento time in seconds
714 (default=0.1).],
715 [config_portamento_time_min="${enableval}"],
716 [config_portamento_time_min="0.1"]
717 )
718 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MIN, $config_portamento_time_min, [Define min. portamento time.])
719
720 AC_ARG_ENABLE(portamento-time-max,
721 [ --enable-portamento-time-max
722 Maximum Portamento time in seconds
723 (default=32).],
724 [config_portamento_time_max="${enableval}"],
725 [config_portamento_time_max="32"]
726 )
727 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_MAX, $config_portamento_time_max, [Define max. portamento time.])
728
729 AC_ARG_ENABLE(portamento-time-default,
730 [ --enable-portamento-time-default
731 Default Portamento time in seconds
732 (default=1).],
733 [config_portamento_time_default="${enableval}"],
734 [config_portamento_time_default="1"]
735 )
736 AC_DEFINE_UNQUOTED(CONFIG_PORTAMENTO_TIME_DEFAULT, $config_portamento_time_default, [Define default portamento time.])
737
738 AC_ARG_ENABLE(signed-triang-algo,
739 [ --enable-signed-triang-algo
740 Signed triangular wave algorithm to be used (e.g. for LFOs).
741 Currently available options:
742 intmath:
743 Uses integer math without any branch will then be
744 converted to floating point value for each sample point.
745 This int->float conversion might hurt on some systems.
746 intmathabs:
747 Similar to intmath but uses abs() function.
748 Depending on compiler and platrofm this could
749 perform better than integer math as it avoids
750 an extra integer multiply instruction.
751 diharmonic:
752 The triangular wave will be approximated by adding two
753 sinusoidials. This solution might especially hurt on
754 systems with weak floating point unit.
755 benchmark (default):
756 This is not an algorithm. Use this option if the
757 appropriate algorithm should be automatically
758 chosen by the configure script by performing a
759 benchmark between the algorithms mentioned above.
760 This will NOT work for cross compilation!],
761 [ if test ! "(" "${enableval}" = "intmath" \
762 -o "${enableval}" = "intmathabs" \
763 -o "${enableval}" = "diharmonic" ")" ; then
764 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
765 else
766 config_signed_triang_algo="${enableval}"
767 fi
768 ],
769 [config_signed_triang_algo="benchmark"]
770 )
771
772 AC_ARG_ENABLE(unsigned-triang-algo,
773 [ --enable-unsigned-triang-algo
774 Unsigned triangular wave algorithm to be used (e.g. for LFOs).
775 Currently available options:
776 intmath:
777 Uses integer math without any branch will then be
778 converted to floating point value for each sample point.
779 This int->float conversion might hurt on some systems.
780 intmathabs:
781 Similar to intmath but uses abs() function.
782 Depending on compiler and platrofm this could
783 perform better than integer math as it avoids
784 an extra integer multiply instruction.
785 diharmonic:
786 The triangular wave will be approximated by adding two
787 sinusoidials. This solution might especially hurt on
788 systems with weak floating point unit.
789 benchmark (default):
790 This is not an algorithm. Use this option if the
791 appropriate algorithm should be automatically
792 chosen by the configure script by performing a
793 benchmark between the algorithms mentioned above.
794 This will NOT work for cross compilation!],
795 [ if test ! "(" "${enableval}" = "intmath" \
796 -o "${enableval}" = "intmathabs" \
797 -o "${enableval}" = "diharmonic" ")" ; then
798 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
799 else
800 config_unsigned_triang_algo="${enableval}"
801 fi
802 ],
803 [config_unsigned_triang_algo="benchmark"]
804 )
805
806 AC_ARG_ENABLE(process-muted-channels,
807 [ --enable-process-muted-channels
808 Enable processing of muted channels (default=no).
809 In that mode all MIDI events in the muted channels
810 will be processed. This will provide information
811 about the active voices in the muted channels and
812 will not discard notes, triggered in mute mode,
813 when the channel is unmuted. But also will reduce
814 the efficiency.],
815 [config_process_muted_channels="$enableval"],
816 [config_process_muted_channels="no"]
817 )
818 if test "$config_process_muted_channels" = "yes"; then
819 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
820 fi
821
822 AC_ARG_ENABLE(process-all-notes-off,
823 [ --disable-process-all-notes-off
824 Disable interpretation of All-Notes-Off MIDI
825 messages (default=on). By default LS will release
826 all voices whenever it receives an All-Notes-Off
827 MIDI message. You can disable this behavior, so
828 that LS simply ignores such messages.],
829 [config_process_all_notes_off="$enableval"],
830 [config_process_all_notes_off="yes"]
831 )
832 if test "$config_process_all_notes_off" = "yes"; then
833 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_ALL_NOTES_OFF, 1, [Define to 1 if you want to enable processing of All-Notes-Off MIDI messages.])
834 fi
835
836 AC_ARG_ENABLE(interpolate-volume,
837 [ --disable-interpolate-volume
838 Disable interpolation of volume modulation
839 (default=on). With this enabled, the volume changes
840 generated by for example the envelope generator
841 will be smoother, minimizing the risk for audio
842 clicks. Disable it to reduce CPU usage.],
843 [config_interpolate_volume="$enableval"],
844 [config_interpolate_volume="yes"]
845 )
846 if test "$config_interpolate_volume" = "yes"; then
847 AC_DEFINE_UNQUOTED(CONFIG_INTERPOLATE_VOLUME, 1, [Define to 1 if you want to enable interpolation of volume modulation.])
848 fi
849
850 AC_ARG_ENABLE(plugin-dir,
851 [ --enable-plugin-dir
852 Directory where the sampler shall look for potential plugins,
853 that is 3rd party shared libraries that should be loaded by
854 the sampler on startup. By default the sampler will search
855 for plugins in the subdirectory "plugins" below its own
856 library directory.
857 (i.e. /usr/local/lib/linuxsampler/plugins)],
858 [config_plugin_dir="${enableval}"],
859 [config_plugin_dir="${libdir}/linuxsampler/plugins"]
860 )
861 AC_SUBST(config_plugin_dir)
862
863 AC_ARG_ENABLE(default-instruments-db-location,
864 [ --enable-default-instruments-db-location
865 Only when instruments DB feature is enabled: file name
866 which shall be taken as default location of the
867 instruments DB file. This location can still be
868 overridden at runtime with a command line switch.
869 (default: /var/lib/linuxsampler/instruments.db)],
870 [config_default_instruments_db_file="${enableval}"],
871 [config_default_instruments_db_file="/var/lib/linuxsampler/instruments.db"]
872 )
873 AC_DEFINE_UNQUOTED(
874 CONFIG_DEFAULT_INSTRUMENTS_DB_LOCATION,
875 "$config_default_instruments_db_file",
876 [Only when instruments DB feature is enabled: default location of the DB file.]
877 )
878
879
880
881 ###########################################################################
882 # Automatic Benchmarks (to detect the best algorithms for the system)
883
884 AC_LANG_SAVE
885
886 if test "$config_signed_triang_algo" = "benchmark"; then
887 echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
888 AC_LANG_CPLUSPLUS
889 AC_TRY_RUN([
890 #define SIGNED 1
891 #define SILENT 1
892 #include "${srcdir}/benchmarks/triang.cpp"
893 ],
894 triang_signed=0,
895 triang_signed=$?,
896 triang_signed=0
897 )
898 if test "$triang_signed" = "2"; then
899 config_signed_triang_algo="intmath"
900 echo "integer math"
901 elif test "$triang_signed" = "3"; then
902 config_signed_triang_algo="diharmonic"
903 echo "di harmonics"
904 elif test "$triang_signed" = "5"; then
905 config_signed_triang_algo="intmathabs"
906 echo "integer math using abs()"
907 else
908 echo "Benchmark of signed triangular wave algorithms failed!"
909 echo "Maybe you are doing cross compilation? In that case you have to select"
910 echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
911 echo "Call './configure --help' for further information or read configure.in."
912 exit -1;
913 fi
914 else
915 case "$config_signed_triang_algo" in
916 intmath)
917 triang_signed=2 ;;
918 diharmonic)
919 triang_signed=3 ;;
920 intmathabs)
921 triang_signed=5 ;;
922 esac
923 fi
924 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
925
926 if test "$config_unsigned_triang_algo" = "benchmark"; then
927 echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
928 AC_LANG_CPLUSPLUS
929 AC_TRY_RUN([
930 #define SIGNED 0
931 #define SILENT 1
932 #include "${srcdir}/benchmarks/triang.cpp"
933 ],
934 triang_unsigned=0,
935 triang_unsigned=$?,
936 triang_unsigned=0
937 )
938 if test "$triang_unsigned" = "2"; then
939 config_unsigned_triang_algo="intmath"
940 echo "integer math"
941 elif test "$triang_unsigned" = "3"; then
942 config_unsigned_triang_algo="diharmonic"
943 echo "di harmonics"
944 elif test "$triang_unsigned" = "5"; then
945 config_unsigned_triang_algo="intmathabs"
946 echo "integer math using abs()"
947 else
948 echo "Benchmark of unsigned triangular wave algorithms failed!"
949 echo "Maybe you are doing cross compilation? In that case you have to select"
950 echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
951 echo "Call './configure --help' for further information or read configure.in."
952 exit -1;
953 fi
954 else
955 case "$config_unsigned_triang_algo" in
956 intmath)
957 triang_unsigned=2 ;;
958 diharmonic)
959 triang_unsigned=3 ;;
960 intmathabs)
961 triang_unsigned=5 ;;
962 esac
963 fi
964 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
965
966 AC_LANG_RESTORE
967
968
969 ###########################################################################
970 # Create Build Files
971
972 AM_CONFIG_HEADER(config.h)
973 AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")
974
975 AC_LANG_CPLUSPLUS
976 AC_PROG_CXX
977
978 # some gcc 4.0 versions need -msse for SSE register allocations
979 if test "$config_asm" = "yes"; then
980 if test "$def_arch_x86" = 1; then
981 CXXFLAGS="$CXXFLAGS -msse"
982 fi
983 fi
984
985 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
986 # this, the dlfcn.h check in am_prog_libtool may fail.
987 AC_CHECK_HEADER(stdlib.h)
988
989 AC_OUTPUT( \
990 Makefile \
991 man/Makefile \
992 man/linuxsampler.1 \
993 src/Makefile \
994 src/db/Makefile \
995 src/network/Makefile \
996 src/engines/Makefile \
997 src/engines/gig/Makefile \
998 src/engines/common/Makefile \
999 src/common/Makefile \
1000 src/testcases/Makefile \
1001 src/drivers/Makefile \
1002 src/drivers/audio/Makefile \
1003 src/drivers/midi/Makefile \
1004 src/plugins/Makefile \
1005 linuxsampler.spec \
1006 debian/Makefile \
1007 Artwork/Makefile \
1008 scripts/Makefile \
1009 osx/Makefile \
1010 osx/linuxsampler.xcodeproj/Makefile \
1011 Documentation/Makefile \
1012 Documentation/Engines/Makefile \
1013 Documentation/Engines/gig/Makefile \
1014 linuxsampler.pc \
1015 Doxyfile \
1016 )
1017
1018 # resolve all nested variables in '${config_plugin_dir}'
1019 # (merely for providing a human readable summary below)
1020 while test $config_plugin_dir != `eval echo ${config_plugin_dir}` ; do
1021 config_plugin_dir=`eval echo ${config_plugin_dir}`
1022 done
1023
1024
1025 ###########################################################################
1026 # Output All Configuration Options
1027
1028 echo ""
1029 echo "#####################################################################"
1030 echo "# LinuxSampler Configuration #"
1031 echo "#-------------------------------------------------------------------#"
1032 echo "# Assembly Optimizations: ${config_asm}"
1033 echo "# Development Mode: ${config_dev_mode}"
1034 echo "# Debug Level: ${config_debug_level}"
1035 echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
1036 echo "# Preload Samples: ${config_preload_samples}"
1037 echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
1038 echo "# Maximum Events: ${config_max_events}"
1039 echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
1040 echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
1041 echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
1042 echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
1043 echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
1044 echo "# Stream Size: ${config_stream_size}"
1045 echo "# Maximum Disk Streams: ${config_max_streams}"
1046 echo "# Maximum Voices: ${config_max_voices}"
1047 echo "# Default Subfragment Size: ${config_subfragment_size}"
1048 echo "# Default Global Volume Attenuation: ${config_global_attenuation_default}"
1049 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
1050 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
1051 echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
1052 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
1053 echo "# Min. Portamento Time: ${config_portamento_time_min} s"
1054 echo "# Max. Portamento Time: ${config_portamento_time_max} s"
1055 echo "# Default Portamento Time: ${config_portamento_time_default} s"
1056 echo "# Force Filter Usage: ${config_force_filter}"
1057 echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
1058 echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
1059 echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
1060 echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
1061 echo "# Override Filter Type: ${config_override_filter_type}"
1062 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
1063 echo "# Process Muted Channels: ${config_process_muted_channels}"
1064 echo "# Process All-Notes-Off MIDI message: ${config_process_all_notes_off}"
1065 echo "# Interpolate Volume: ${config_interpolate_volume}"
1066 echo "# Instruments database support: ${config_instruments_db}"
1067 if test "$config_instruments_db" = "yes"; then
1068 echo "# Instruments DB default location: ${config_default_instruments_db_file}"
1069 fi
1070 echo "# Plugin Path: ${config_plugin_dir}"
1071 echo "#-------------------------------------------------------------------#"
1072 echo "# Read './configure --help' or file 'configure.in' for details. #"
1073 echo "#####################################################################"
1074 echo ""
1075 echo "Good. Now type 'make' to compile, followed by 'make install' as root."
1076 echo ""

  ViewVC Help
Powered by ViewVC