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

Contents of /linuxsampler/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 781 - (show annotations) (download)
Mon Sep 26 10:17:00 2005 UTC (18 years, 5 months ago) by schoenebeck
Original Path: linuxsampler/trunk/configure.in
File size: 34983 byte(s)
* fixed event handling bug which was introduced by the recent synthesis
  optimizations (events were only processed for the first active voice)
* added global volume attenuation of -9 dB (0.35f) to prevent clipping
  which can be overridden with --enable-global-attenuation

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=3
8 LINUXSAMPLER_RELEASE_BUILD=3
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 AM_PROG_LIBTOOL
33
34 AC_SUBST(SHLIB_VERSION_ARG)
35 AC_SUBST(SHARED_VERSION_INFO)
36
37 AC_C_BIGENDIAN
38 AC_CANONICAL_SYSTEM
39
40 AC_SUBST(target)
41 AC_SUBST(target_alias)
42 AC_SUBST(target_cpu)
43 AC_SUBST(target_os)
44 AC_SUBST(target_vendor)
45
46
47 ###########################################################################
48 # General Checks
49
50 AC_MSG_CHECKING([whether x86 architecture])
51 def_arch_x86=0
52 case $target_cpu in
53 "i386" | "i486" | "i586" | "i686" | "i786")
54 echo "yes"
55 def_arch_x86=1;;
56 *)
57 echo "no";;
58 esac
59 AC_DEFINE_UNQUOTED(ARCH_X86,$def_arch_x86,[Define to 1 if you build for x86 architecture.])
60
61 # determine the right gcc switch for CPU specific optimizations
62 CXX_CPU_SWITCH=
63 if test "$def_arch_x86" = 1; then
64 CXX_CPU_SWITCH="-march=$target_cpu"
65 elif test "$target_cpu" = "powerpc"; then
66 CXX_CPU_SWITCH="-arch=$target_cpu"
67 fi
68 AC_SUBST([CXX_CPU_SWITCH])
69
70 AC_MSG_CHECKING([whether UNIX98 compatible])
71 AC_LANG_SAVE
72 AC_LANG_C
73 AC_TRY_RUN([
74 #ifndef _GNU_SOURCE
75 #define _GNU_SOURCE 1
76 #endif
77 #include <features.h>
78 void main(void) {
79 #if _XOPEN_SOURCE >= 500
80 exit(0); /* UNIX98 compatible */
81 #else
82 exit(-1); /* not UNIX98 compatible */
83 #endif
84 }
85 ],
86 have_unix98="yes",
87 have_unix98="no",
88 have_unix98="no"
89 )
90 AC_LANG_RESTORE
91 AC_MSG_RESULT([$have_unix98])
92 if test "$have_unix98" = "no"; then
93 if test "x$HAVE_UNIX98" = "x"; then
94 echo "LinuxSampler only runs on UNIX98 compatible systems, which is mandatory for"
95 echo "pthread_mutexattr_settype() call in Mutex.cpp. You may want to run
96 echo "./configure with environment variable HAVE_UNIX98=1 in case you think you
97 echo "have a UNIX98 compatible system."
98 exit -1;
99 fi
100 fi
101
102 # Checks for available audio and MIDI systems / drivers
103 # (we throw an error if there's not at least one system for audio output and MIDI input available)
104 have_midi_input_driver="false"
105 have_audio_output_driver="false"
106
107 AC_CHECK_HEADER(alsa/asoundlib.h,
108 AC_CHECK_LIB(asound, main,
109 have_alsa=1
110 ,
111 have_alsa=0
112 )
113 ,
114 have_alsa=0
115 )
116 if test "$have_alsa" = "1"; then
117 have_midi_input_driver="true"
118 have_audio_output_driver="true";
119 fi
120 AM_CONDITIONAL(HAVE_ALSA, test $have_alsa = "1")
121 AC_DEFINE_UNQUOTED(HAVE_ALSA,$have_alsa,[Define to 1 if you have ALSA installed.])
122
123 echo -n "checking Alsa version... "
124 AC_LANG_SAVE
125 AC_LANG_C
126 AC_TRY_RUN([
127 #include <alsa/asoundlib.h>
128 void main(void) {
129 /* ensure backward compatibility */
130 #if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
131 #define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
132 #endif
133 exit(SND_LIB_MAJOR);
134 }
135 ],
136 alsa_major=0,
137 alsa_major=$?,
138 alsa_major=0
139 )
140 AC_TRY_RUN([
141 #include <alsa/asoundlib.h>
142 void main(void) {
143 /* ensure backward compatibility */
144 #if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
145 #define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
146 #endif
147 exit(SND_LIB_MINOR);
148 }
149 ],
150 alsa_minor=0,
151 alsa_minor=$?,
152 alsa_minor=0
153 )
154 AC_TRY_RUN([
155 #include <alsa/asoundlib.h>
156 void main(void) {
157 /* ensure backward compatibility */
158 #if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
159 #define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
160 #endif
161 exit(SND_LIB_SUBMINOR);
162 }
163 ],
164 alsa_subminor=0,
165 alsa_subminor=$?,
166 alsa_subminor=0
167 )
168 AC_LANG_RESTORE
169 echo "$alsa_major.$alsa_minor.$alsa_subminor";
170 AC_DEFINE_UNQUOTED(ALSA_MAJOR,$alsa_major,[Define to the major version number of your Alsa installation.])
171 AC_DEFINE_UNQUOTED(ALSA_MINOR,$alsa_minor,[Define to the minor version number of your Alsa installation.])
172 AC_DEFINE_UNQUOTED(ALSA_SUBMINOR,$alsa_subminor,[Define to the subminor version number of your Alsa installation.])
173
174 # JACK
175 PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=true, HAVE_JACK=false)
176 AC_SUBST(JACK_LIBS)
177 AC_SUBST(JACK_CFLAGS)
178 if test $HAVE_JACK = false; then
179 HAVE_JACK=0;
180 else
181 HAVE_JACK=1
182 have_audio_output_driver="true";
183 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)
184 fi
185 AM_CONDITIONAL(HAVE_JACK, test $HAVE_JACK = 1)
186 AC_DEFINE_UNQUOTED(HAVE_JACK,$HAVE_JACK,[Define to 1 if you have JACK installed.])
187
188 # MidiShare (Linux, OS X, Windows)
189 AC_CHECK_HEADER(MidiShare.h,
190 AC_CHECK_LIB(MidiShare, MidiCountEvs,
191 have_midishare=1,
192 have_midishare=0
193 )
194 ,
195 have_midishare=0
196 )
197 if test "$have_midishare" = "1"; then
198 have_midi_input_driver="true"
199 fi
200 AM_CONDITIONAL(HAVE_MIDISHARE, test $have_midishare = "1")
201 AC_DEFINE_UNQUOTED(HAVE_MIDISHARE,$have_midishare,[Define to 1 if you have MidiShare installed.])
202
203 # CoreMIDI (OS X)
204 AC_CHECK_HEADER(CoreMIDI/CoreMIDI.h,
205 have_coremidi=1,
206 have_coremidi=0
207 )
208 if test "$have_coremidi" = "1"; then
209 have_midi_input_driver="true"
210 fi
211 AM_CONDITIONAL(HAVE_COREMIDI, test $have_coremidi = "1")
212 AC_DEFINE_UNQUOTED(HAVE_COREMIDI,$have_coremidi,[Define to 1 if you have CoreMIDI installed.])
213
214 # Check presence of libgig
215 libgig_version="2.0.2"
216 PKG_CHECK_MODULES(GIG, gig >= $libgig_version, HAVE_GIG=true, HAVE_GIG=false)
217 if test "$HAVE_GIG" = "false"; then
218 echo "Required libgig version not found!"
219 echo "You need to have libgig version ${libgig_version} installed!"
220 exit -1;
221 else
222 echo "yes, found libgig $libgig_version"
223 fi
224 AC_SUBST(GIG_CFLAGS)
225 AC_SUBST(GIG_LIBS)
226
227 # SQLITE3
228 PKG_CHECK_MODULES(SQLITE3, sqlite3, HAVE_SQLITE3=true, HAVE_SQLITE3=false)
229 AC_SUBST(SQLITE3_LIBS)
230 AC_SUBST(SQLITE3_CFLAGS)
231 if test $HAVE_SQLITE3 = false; then
232 HAVE_SQLITE3=0;
233 echo "no, support for instrument DB will be disabled!"
234 else
235 HAVE_SQLITE3=1
236 echo "yes"
237 fi
238 AM_CONDITIONAL(HAVE_SQLITE3, test $HAVE_SQLITE3 = 1)
239 AC_DEFINE_UNQUOTED(HAVE_SQLITE3,$HAVE_SQLITE3,[Define to 1 if you have SQLITE3 installed.])
240
241 if test "$have_midi_input_driver" = "false"; then
242 echo "No supported MIDI input system found!"
243 echo "Sorry, LinuxSampler only supports the following MIDI drivers at the moment:"
244 echo "ALSA, MIDIShare, CoreMIDI."
245 echo "If you think you have one of those available on your system, make sure you"
246 echo "also have the respective development (header) files installed."
247 exit -1;
248 fi
249 if test "$have_audio_output_driver" = "false"; then
250 echo "No supported audio output system found!"
251 echo "Sorry, LinuxSampler only supports ALSA and JACK as audio output driver at the moment!"
252 exit -1;
253 fi
254
255
256 ###########################################################################
257 # Handle Configuration Options
258
259 # TODO: should we use AC_ARG_VAR(variable, description) instead?
260
261 AC_ARG_ENABLE(asm,
262 [ --enable-asm
263 Enable hand-crafted assembly optimizations
264 (default=off). LinuxSampler provides CPU specific
265 assembly optimizations for the most important
266 synthesis algorithms. This is currently disabled
267 by default since current asm code is broken.],
268 [config_asm="yes"],
269 [config_asm="no"]
270 )
271 if test "$config_asm" = "yes"; then
272 AC_DEFINE_UNQUOTED(CONFIG_ASM, 1, [Define to 1 if you want to enable hand-crafted asm optimizations.])
273 fi
274
275 AC_ARG_ENABLE(dev-mode,
276 [ --disable-dev-mode
277 Disable development mode (default=on). In that mode
278 we do some extra sanity checks here and there.
279 This helps to spot possible problems, but reduces
280 efficiency a bit],
281 [config_dev_mode="no"],
282 [config_dev_mode="yes"]
283 )
284 if test "$config_dev_mode" = "yes"; then
285 AC_DEFINE_UNQUOTED(CONFIG_DEVMODE, 1, [Define to 1 if you want to enable development mode.])
286 fi
287
288 AC_ARG_ENABLE(debug-level,
289 [ --enable-debug-level
290 Specify verbosity of console messages (default=1).
291 The higher the value, the higher will be verbosity.
292 A value of 0 means no console output at all.
293 There's not really an upper limit but the usual
294 level of all messages is currently somewhere less
295 than 10.],
296 [config_debug_level="${enableval}"],
297 [config_debug_level="1"]
298 )
299 AC_DEFINE_UNQUOTED(CONFIG_DEBUG_LEVEL, $config_debug_level, [Define console verbosity.])
300
301 AC_ARG_ENABLE(rt-exceptions,
302 [ --enable-rt-exceptions
303 Enable exceptions in the realtime thread
304 (default=no). If this is enabled, exceptions will
305 be thrown on critical errors in the realtime
306 context as well. Otherwise if disabled
307 segmentation faults will be forced by the
308 application on critical errors.],
309 [config_rt_exceptions="yes"],
310 [config_rt_exceptions="no"]
311 )
312 if test "$config_rt_exceptions" = "yes"; then
313 AC_DEFINE_UNQUOTED(CONFIG_RT_EXCEPTIONS, 1, [Define to 1 to allow exceptions in the realtime context.])
314 fi
315
316 AC_ARG_ENABLE(preload-samples,
317 [ --enable-preload-samples
318 Due to seeking and latency issues with hard drives
319 we have to cache a small part of samples' head in
320 RAM (default=32768). The higher this value the
321 more memory will be occupied for each sample, but
322 the safer this will be in regards of possible
323 droputs. A 'good' value depends on the running
324 system and usage dependant factors.],
325 [config_preload_samples="${enableval}"],
326 [config_preload_samples="32768"]
327 )
328 AC_DEFINE_UNQUOTED(CONFIG_PRELOAD_SAMPLES, $config_preload_samples, [Define amount of sample points to be cached in RAM.])
329
330 AC_ARG_ENABLE(max-pitch,
331 [ --enable-max-pitch
332 Specify the maximum allowed pitch value in octaves
333 (default=4). To lower memory usage you might want
334 set a smaller value.],
335 [config_max_pitch="${enableval}"],
336 [config_max_pitch="4"]
337 )
338 AC_DEFINE_UNQUOTED(CONFIG_MAX_PITCH, $config_max_pitch, [Define max. allowed pitch.])
339
340 AC_ARG_ENABLE(max-events,
341 [ --enable-max-events
342 Specify the maximum allowed amount of events to be
343 processed per fragment (default=1024).],
344 [config_max_events="${enableval}"],
345 [config_max_events="1024"]
346 )
347 AC_DEFINE_UNQUOTED(CONFIG_MAX_EVENTS_PER_FRAGMENT, $config_max_events, [Define max. allowed events per fragment.])
348
349 AC_ARG_ENABLE(eg-bottom,
350 [ --enable-eg-bottom
351 Bottom limit of envelope generators
352 (default=0.001). Certain kinds of curve types like
353 exponential curves converge against 0 but never
354 reach 0. So we have to define a certain low value
355 after which we should consider all smaller values
356 to be 'almost zero'. The smaller this value, the
357 longer will voices survive in EG's release stage
358 and thus waste voices. If this value is too high
359 will cause click sounds though.],
360 [config_eg_bottom="${enableval}"],
361 [config_eg_bottom="0.001"]
362 )
363 AC_DEFINE_UNQUOTED(CONFIG_EG_BOTTOM, $config_eg_bottom, [Define bottom limit of envelopes.])
364
365 AC_ARG_ENABLE(eg-min-release-time,
366 [ --enable-eg-min-release-time
367 Specify the lowest allowed release time in seconds
368 (default=0.0025). This value will also be used to
369 ramp down voices on voice stealing. This value
370 should always be less than the period time of the
371 used audio driver, as in case of voice stealing
372 the killed voice needs to be completely ramped
373 down in the same fragment.],
374 [config_eg_min_release_time="${enableval}"],
375 [config_eg_min_release_time="0.0025"]
376 )
377 AC_DEFINE_UNQUOTED(CONFIG_EG_MIN_RELEASE_TIME, $config_eg_min_release_time, [Define min. release time.])
378
379 AC_ARG_ENABLE(refill-streams,
380 [ --enable-refill-streams
381 Number of streams that should be refilled in each
382 disk thread cycle (default=4).],
383 [config_refill_streams="${enableval}"],
384 [config_refill_streams="4"]
385 )
386 AC_DEFINE_UNQUOTED(CONFIG_REFILL_STREAMS_PER_RUN, $config_refill_streams, [Define amount of streams to be refilled per cycle.])
387
388 AC_ARG_ENABLE(stream-min-refill,
389 [ --enable-stream-min-refill
390 Minimum refill size for disk streams (default=1024).
391 The disk thread will go to sleep for a while if no
392 stream had to be refilled more than this value in
393 a disk thread cycle.],
394 [config_stream_min_refill="${enableval}"],
395 [config_stream_min_refill="1024"]
396 )
397 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MIN_REFILL_SIZE, $config_stream_min_refill, [Define min. stream refill size.])
398
399 AC_ARG_ENABLE(stream-max-refill,
400 [ --enable-stream-max-refill
401 Maximum refill size for disk streams
402 (default=65536). The disk thread will refill
403 each stream only by a size of this value per
404 disk thread cycle.],
405 [config_stream_max_refill="${enableval}"],
406 [config_stream_max_refill="65536"]
407 )
408 AC_DEFINE_UNQUOTED(CONFIG_STREAM_MAX_REFILL_SIZE, $config_stream_max_refill, [Define max. stream refill size.])
409
410 AC_ARG_ENABLE(stream-size,
411 [ --enable-stream-size
412 Size of each stream's ring buffer in sample points
413 (default=262144).],
414 [config_stream_size="${enableval}"],
415 [config_stream_size="262144"]
416 )
417 AC_DEFINE_UNQUOTED(CONFIG_STREAM_BUFFER_SIZE, $config_stream_size, [Define each stream's ring buffer size.])
418
419 AC_ARG_ENABLE(max-streams,
420 [ --enable-max-streams
421 Maximum amount of disk streams (default=90). This
422 value should always be higher than the maximum
423 amount of voices.],
424 [config_max_streams="${enableval}"],
425 [config_max_streams="90"]
426 )
427 AC_DEFINE_UNQUOTED(CONFIG_MAX_STREAMS, $config_max_streams, [Define max. streams.])
428
429 AC_ARG_ENABLE(max-voices,
430 [ --enable-max-voices
431 Maximum amount of voices (default=64). This value
432 should always be lower than the maximum amount of
433 disk streams.],
434 [config_max_voices="${enableval}"],
435 [config_max_voices="64"]
436 )
437 AC_DEFINE_UNQUOTED(CONFIG_MAX_VOICES, $config_max_voices, [Define max. voices.])
438
439 AC_ARG_ENABLE(subfragment-size,
440 [ --enable-subfragment-size
441 Every audio fragment will be splitted into
442 subfragments. Where each subfragment renders
443 audio with constant synthesis parameters. This is
444 done for efficiency reasons. This parameter
445 defines the default size of a subfragment in
446 sample points. A large value means less CPU time
447 whereas a low value means better audio quality
448 (default=32).],
449 [config_subfragment_size="${enableval}"],
450 [config_subfragment_size="32"]
451 )
452 AC_DEFINE_UNQUOTED(CONFIG_DEFAULT_SUBFRAGMENT_SIZE, $config_subfragment_size, [Define default subfragment size (in sample points).])
453
454 AC_ARG_ENABLE(global-attenuation,
455 [ --enable-global-attenuation
456 To prevent clipping all samples will be lowered
457 in amplitude by this given factor.
458 (default=0.35)],
459 [config_global_attenuation="${enableval}"],
460 [config_global_attenuation="0.35"]
461 )
462 AC_DEFINE_UNQUOTED(CONFIG_GLOBAL_ATTENUATION, $config_global_attenuation, [Define global volume attenuation (as floating point factor).])
463
464 AC_ARG_ENABLE(voice-steal-algo,
465 [ --enable-voice-steal-algo
466 Voice stealing algorithm to be used. Currently
467 available options:
468 none:
469 Disable voice stealing completely.
470 oldestvoiceonkey (default):
471 Try to kill a voice on the same key first,
472 if no success, proceed with the oldest key.
473 oldestkey:
474 Try to kill a voice from the oldest active
475 key.],
476 [ if test ! "(" "${enableval}" = "none" \
477 -o "${enableval}" = "oldestvoiceonkey" \
478 -o "${enableval}" = "oldestkey" ")" ; then
479 AC_MSG_ERROR([Unknown voice stealing algorithm for parameter --enable-voice-steal-algo])
480 else
481 config_voice_steal_algo="${enableval}"
482 fi
483 ],
484 [config_voice_steal_algo="oldestvoiceonkey"]
485 )
486 AC_DEFINE_UNQUOTED(CONFIG_VOICE_STEAL_ALGO, voice_steal_algo_${config_voice_steal_algo}, [Define voice stealing algorithm to be used.])
487
488 AC_ARG_ENABLE(sysex-buffer-size,
489 [ --enable-sysex-buffer-size
490 System Exclusive Message buffer size in kB
491 (default=2048).],
492 [config_sysex_buffer_size="${enableval}"],
493 [config_sysex_buffer_size="2048"]
494 )
495 AC_DEFINE_UNQUOTED(CONFIG_SYSEX_BUFFER_SIZE, $config_sysex_buffer_size, [Define SysEx buffer size.])
496
497 AC_ARG_ENABLE(force-filter,
498 [ --enable-force-filter
499 If enabled will force filter to be used even if
500 no usage was define in instrument patch files.
501 (default=no).],
502 [config_force_filter="yes"],
503 [config_force_filter="no"]
504 )
505 if test "$config_force_filter" = "yes"; then
506 AC_DEFINE_UNQUOTED(CONFIG_FORCE_FILTER, 1, [Define to 1 to force filter usage.])
507 fi
508
509 AC_ARG_ENABLE(filter-cutoff-min,
510 [ --enable-filter-cutoff-min
511 Minimum filter cutoff frequency in Hz
512 (default=100.0).],
513 [config_filter_cutoff_min="${enableval}"],
514 [config_filter_cutoff_min="100.0"]
515 )
516 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MIN, ${config_filter_cutoff_min}f, [Define min. filter cutoff frequency.])
517
518 AC_ARG_ENABLE(filter-cutoff-max,
519 [ --enable-filter-cutoff-max
520 Maximum filter cutoff frequency in Hz
521 (default=10000.0).],
522 [config_filter_cutoff_max="${enableval}"],
523 [config_filter_cutoff_max="10000.0"]
524 )
525 AC_DEFINE_UNQUOTED(CONFIG_FILTER_CUTOFF_MAX, ${config_filter_cutoff_max}f, [Define max. filter cutoff frequency.])
526
527 AC_ARG_ENABLE(override-cutoff-ctrl,
528 [ --enable-override-cutoff-ctrl
529 Override filter cutoff MIDI controller (default=no).
530 Note: you have to define the MIDI controller number
531 here, it's not a boolean parameter type! If this
532 option is used, controller number given by
533 instrument patch will be ignored and instead this
534 supplied value will be used.],
535 [config_override_cutoff_ctrl="${enableval}"],
536 [config_override_cutoff_ctrl="no"]
537 )
538 if test ! "$config_override_cutoff_ctrl" = "no"; then
539 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_CUTOFF_CTRL, $config_override_cutoff_ctrl, [Define to a MIDI controller number to override cutoff control.])
540 fi
541
542 AC_ARG_ENABLE(override-resonance-ctrl,
543 [ --enable-override-resonance-ctrl
544 Override filter resonance MIDI controller
545 (default=no). Note: you have to define the MIDI
546 controller number here, it's not a boolean
547 parameter type! If this option is used, controller
548 number given by instrument patch will be ignored
549 and instead this supplied value will be used.],
550 [config_override_resonance_ctrl="${enableval}"],
551 [config_override_resonance_ctrl="no"]
552 )
553 if test ! "$config_override_resonance_ctrl" = "no"; then
554 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_RESONANCE_CTRL, $config_override_resonance_ctrl, [Define to a MIDI controller number to override resonance control.])
555 fi
556
557 AC_ARG_ENABLE(override-filter-type,
558 [ --enable-override-filter-type
559 Override filter type (default=no). Options:
560 hp: for highpass
561 bp: for bandpass
562 br: for bandreject
563 lp: for lowpass
564 lpt: for lowpass turbo],
565 [ if test "${enableval}" = "hp" ; then
566 config_override_filter_type="::gig::vcf_type_highpass"
567 elif test "${enableval}" = "bp" ; then
568 config_override_filter_type="::gig::vcf_type_bandpass"
569 elif test "${enableval}" = "br" ; then
570 config_override_filter_type="::gig::vcf_type_bandreject"
571 elif test "${enableval}" = "lp" ; then
572 config_override_filter_type="::gig::vcf_type_lowpass"
573 elif test "${enableval}" = "lpt" ; then
574 config_override_filter_type="::gig::vcf_type_lowpassturbo"
575 elif test ! "${enableval}" = "no"; then
576 AC_MSG_ERROR([Unknown filter type for parameter --enable-override-filter-type])
577 fi
578 ],
579 [config_override_filter_type="no"]
580 )
581 if test ! "$config_override_filter_type" = "no"; then
582 AC_DEFINE_UNQUOTED(CONFIG_OVERRIDE_FILTER_TYPE, $config_override_filter_type, [Define to a filter type to always force that filter type.])
583 fi
584
585 AC_ARG_ENABLE(gs-checksum,
586 [ --enable-gs-checksum
587 Enable Roland General Synth SysEx checksum check
588 (default=no). If this is enabled, all GS SysEx
589 messages which do not provide a correct checksum
590 will be ignored. This is disabled by default as
591 not all devices honor GS checksums.],
592 [config_assert_gs_sysex_checksum="yes"],
593 [config_assert_gs_sysex_checksum="no"]
594 )
595 if test "config_assert_gs_sysex_checksum" = "yes"; then
596 AC_DEFINE_UNQUOTED(CONFIG_ASSERT_GS_SYSEX_CHECKSUM, 1, [Define to 1 if you want to enable GS SysEx check.])
597 fi
598
599 AC_ARG_ENABLE(signed-triang-algo,
600 [ --enable-signed-triang-algo
601 Signed triangular wave algorithm to be used (e.g. for LFOs).
602 Currently available options:
603 intmath:
604 Uses integer math without any branch will then be
605 converted to floating point value for each sample point.
606 This int->float conversion might hurt on some systems.
607 intmathabs:
608 Similar to intmath but uses abs() function.
609 Depending on compiler and platrofm this could
610 perform better than integer math as it avoids
611 an extra integer multiply instruction.
612
613 diharmonic:
614 The triangular wave will be approximated by adding two
615 sinusoidials. This solution might especially hurt on
616 systems with weak floating point unit.
617 benchmark (default):
618 This is not an algorithm. Use this option if the
619 appropriate algorithm should be automatically
620 chosen by the configure script by performing a
621 benchmark between the algorithms mentioned above.
622 This will NOT work for cross compilation!],
623 [ if test ! "(" "${enableval}" = "intmath" \
624 -o "${enableval}" = "intmathabs" \
625 -o "${enableval}" = "diharmonic" ")" ; then
626 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-signed-triang-algo])
627 else
628 config_signed_triang_algo="${enableval}"
629 fi
630 ],
631 [config_signed_triang_algo="benchmark"]
632 )
633
634 AC_ARG_ENABLE(unsigned-triang-algo,
635 [ --enable-unsigned-triang-algo
636 Unsigned triangular wave algorithm to be used (e.g. for LFOs).
637 Currently available options:
638 intmath:
639 Uses integer math without any branch will then be
640 converted to floating point value for each sample point.
641 This int->float conversion might hurt on some systems.
642 intmathabs:
643 Similar to intmath but uses abs() function.
644 Depending on compiler and platrofm this could
645 perform better than integer math as it avoids
646 an extra integer multiply instruction.
647
648 diharmonic:
649 The triangular wave will be approximated by adding two
650 sinusoidials. This solution might especially hurt on
651 systems with weak floating point unit.
652 benchmark (default):
653 This is not an algorithm. Use this option if the
654 appropriate algorithm should be automatically
655 chosen by the configure script by performing a
656 benchmark between the algorithms mentioned above.
657 This will NOT work for cross compilation!],
658 [ if test ! "(" "${enableval}" = "intmath" \
659 -o "${enableval}" = "intmathabs" \
660 -o "${enableval}" = "diharmonic" ")" ; then
661 AC_MSG_ERROR([Unknown triangular wave algorithm for parameter --enable-unsigned-triang-algo])
662 else
663 config_unsigned_triang_algo="${enableval}"
664 fi
665 ],
666 [config_unsigned_triang_algo="benchmark"]
667 )
668
669 AC_ARG_ENABLE(process-muted-channels,
670 [ --enable-process-muted-channels
671 Enable processing of muted channels (default=no).
672 In that mode all MIDI events in the muted channels
673 will be processed. This will provide information
674 about the active voices in the muted channels and
675 will not discard notes, triggered in mute mode,
676 when the channel is unmuted. But also will reduce
677 the efficiency.],
678 [config_process_muted_channels="yes"],
679 [config_process_muted_channels="no"]
680 )
681 if test "$config_process_muted_channels" = "yes"; then
682 AC_DEFINE_UNQUOTED(CONFIG_PROCESS_MUTED_CHANNELS, 1, [Define to 1 if you want to enable processing of muted channels.])
683 fi
684
685
686 ###########################################################################
687 # Automatic Benchmarks (to detect the best algorithms for the system)
688
689 AC_LANG_SAVE
690
691 if test "$config_signed_triang_algo" = "benchmark"; then
692 echo -n "benchmarking for the best (signed) triangular oscillator algorithm... "
693 AC_LANG_CPLUSPLUS
694 AC_TRY_RUN([
695 #define SIGNED 1
696 #define SILENT 1
697 #include "${srcdir}/benchmarks/triang.cpp"
698 ],
699 triang_signed=0,
700 triang_signed=$?,
701 triang_signed=0
702 )
703 if test "$triang_signed" = "2"; then
704 config_signed_triang_algo="intmath"
705 echo "integer math"
706 elif test "$triang_signed" = "3"; then
707 config_signed_triang_algo="diharmonic"
708 echo "di harmonics"
709 elif test "$triang_signed" = "5"; then
710 config_signed_triang_algo="intmathabs"
711 echo "integer math using abs()"
712 else
713 echo "Benchmark of signed triangular wave algorithms failed!"
714 echo "Maybe you are doing cross compilation? In that case you have to select"
715 echo "an algorithm manually with './configure --enable-signed-triang-algo=...'"
716 echo "Call './configure --help' for further information or read configure.in."
717 exit -1;
718 fi
719 fi
720 AC_DEFINE_UNQUOTED(CONFIG_SIGNED_TRIANG_ALGO, ${triang_signed}, [Define signed triangular wave algorithm to be used.])
721
722 if test "$config_unsigned_triang_algo" = "benchmark"; then
723 echo -n "benchmarking for the best (unsigned) triangular oscillator algorithm... "
724 AC_LANG_CPLUSPLUS
725 AC_TRY_RUN([
726 #define SIGNED 0
727 #define SILENT 1
728 #include "${srcdir}/benchmarks/triang.cpp"
729 ],
730 triang_unsigned=0,
731 triang_unsigned=$?,
732 triang_unsigned=0
733 )
734 if test "$triang_unsigned" = "2"; then
735 config_unsigned_triang_algo="intmath"
736 echo "integer math"
737 elif test "$triang_unsigned" = "3"; then
738 config_unsigned_triang_algo="diharmonic"
739 echo "di harmonics"
740 elif test "$triang_unsigned" = "5"; then
741 config_unsigned_triang_algo="intmathabs"
742 echo "integer math using abs()"
743 else
744 echo "Benchmark of unsigned triangular wave algorithms failed!"
745 echo "Maybe you are doing cross compilation? In that case you have to select"
746 echo "an algorithm manually with './configure --enable-unsigned-triang-algo=...'"
747 echo "Call './configure --help' for further information or read configure.in."
748 exit -1;
749 fi
750 fi
751 AC_DEFINE_UNQUOTED(CONFIG_UNSIGNED_TRIANG_ALGO, ${triang_unsigned}, [Define unsigned triangular wave algorithm to be used.])
752
753 AC_LANG_RESTORE
754
755
756 ###########################################################################
757 # Create Build Files
758
759 AM_CONFIG_HEADER(config.h)
760 AM_INIT_AUTOMAKE(linuxsampler, "$LINUXSAMPLER_RELEASE_MAJOR.$LINUXSAMPLER_RELEASE_MINOR.$LINUXSAMPLER_RELEASE_BUILD")
761
762 AC_LANG_CPLUSPLUS
763 AC_PROG_CXX
764
765 # some gcc 4.0 versions need -msse for SSE register allocations
766 if test "$config_asm" = "yes"; then
767 if test "$def_arch_x86" = 1; then
768 CXXFLAGS="$CXXFLAGS -msse"
769 fi
770 fi
771
772 # autoconf 2.59/libtool 1.5.12 bug? work-around. Without a check like
773 # this, the dlfcn.h check in am_prog_libtool may fail.
774 AC_CHECK_HEADER(stdlib.h)
775
776 AC_OUTPUT( \
777 Makefile \
778 man/Makefile \
779 man/linuxsampler.1 \
780 src/Makefile \
781 src/network/Makefile \
782 src/engines/Makefile \
783 src/engines/gig/Makefile \
784 src/engines/common/Makefile \
785 src/common/Makefile src/lib/Makefile \
786 src/lib/fileloader/Makefile \
787 src/lib/fileloader/libgig/Makefile \
788 src/testcases/Makefile \
789 src/drivers/Makefile \
790 src/drivers/audio/Makefile \
791 src/drivers/midi/Makefile \
792 linuxsampler.spec \
793 debian/Makefile \
794 Artwork/Makefile \
795 scripts/Makefile \
796 osx/Makefile \
797 osx/LinuxSampler.xcode/Makefile \
798 Documentation/Makefile \
799 Documentation/Engines/Makefile \
800 Documentation/Engines/gig/Makefile \
801 linuxsampler.pc \
802 Doxyfile \
803 )
804
805
806 ###########################################################################
807 # Output All Configuration Options
808
809 echo ""
810 echo "#####################################################################"
811 echo "# LinuxSampler Configuration #"
812 echo "#-------------------------------------------------------------------#"
813 echo "# Assembly Optimizations: ${config_asm}"
814 echo "# Development Mode: ${config_dev_mode}"
815 echo "# Debug Level: ${config_debug_level}"
816 echo "# Use Exceptions in RT Context: ${config_rt_exceptions}"
817 echo "# Preload Samples: ${config_preload_samples}"
818 echo "# Maximum Pitch: ${config_max_pitch} (octaves)"
819 echo "# Maximum Events: ${config_max_events}"
820 echo "# Envelope Bottom Level: ${config_eg_bottom} (linear)"
821 echo "# Envelope Minimum Release Time: ${config_eg_min_release_time} s"
822 echo "# Streams to be refilled per Disk Thread Cycle: ${config_refill_streams}"
823 echo "# Minimum Stream Refill Size: ${config_stream_min_refill}"
824 echo "# Maximum Stream Refill Size: ${config_stream_max_refill}"
825 echo "# Stream Size: ${config_stream_size}"
826 echo "# Maximum Disk Streams: ${config_max_streams}"
827 echo "# Maximum Voices: ${config_max_voices}"
828 echo "# Default Subfragment Size: ${config_subfragment_size}"
829 echo "# Global Volume Attenuation: ${config_global_attenuation}"
830 echo "# Voice Stealing Algorithm: ${config_voice_steal_algo}"
831 echo "# Signed Triangular Oscillator Algorithm: ${config_signed_triang_algo}"
832 echo "# Unsigned Triangular Oscillator Algorithm: ${config_unsigned_triang_algo}"
833 echo "# SysEx Buffer Size: ${config_sysex_buffer_size} Byte"
834 echo "# Force Filter Usage: ${config_force_filter}"
835 echo "# Filter Cutoff Minimum: ${config_filter_cutoff_min} Hz"
836 echo "# Filter Cutoff Maximum: ${config_filter_cutoff_max} Hz"
837 echo "# Override Filter Cutoff Controller: ${config_override_cutoff_ctrl}"
838 echo "# Override Filter Resonance Controller: ${config_override_resonance_ctrl}"
839 echo "# Override Filter Type: ${config_override_filter_type}"
840 echo "# Assert GS SysEx Checksum: ${config_assert_gs_sysex_checksum}"
841 echo "# Process Muted Channels: ${config_process_muted_channels}"
842 echo "#-------------------------------------------------------------------#"
843 echo "# Read './configure --help' or file 'configure.in' for details. #"
844 echo "#####################################################################"
845 echo ""
846 echo "Good. Now type 'make' to compile, followed by 'make install' as root."
847 echo ""

  ViewVC Help
Powered by ViewVC