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

Annotation of /linuxsampler/trunk/configure.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 838 - (hide annotations) (download)
Fri Feb 10 14:57:40 2006 UTC (13 years, 6 months ago) by schoenebeck
File size: 37526 byte(s)
* added aRts audio output driver (by no means RT safe)

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

  ViewVC Help
Powered by ViewVC