1dnl Process this file with autoconf to produce a configure script.
2AC_INIT
3AC_PREREQ(2.59)
4AC_CONFIG_HEADERS([config.h])
5AC_CONFIG_SRCDIR([src/chunk.c])
6
7AC_CANONICAL_HOST
8AC_CANONICAL_TARGET
9
10MHW_VERSION=1.4.24
11
12AM_INIT_AUTOMAKE(mhWaveEdit,$MHW_VERSION)
13# This is disabled in releases because timestamps can not be preserved through
14# the current Github-based release flow.
15AM_MAINTAINER_MODE([disable])
16
17dnl Check for libintl
18AM_GNU_GETTEXT([external])
19
20PKG_PROG_PKG_CONFIG
21
22dnl Various options
23
24AC_ARG_WITH(double-samples,
25[  --with-double-samples   Use double precision floating point numbers for sound
26                          processing (slows down program but may increase
27                          quality for 24/32-bit samplerates).],
28AC_DEFINE([USE_DOUBLE_SAMPLES],[],
29  [Use gdouble instead of gfloat as sample data type])
30MHW_DOUBLE="yes")
31
32AC_DEFUN([AC_WITHOUT_CHECK_CASTS],[
33	if test "x$withval" = "xno" ; then
34	AC_DEFINE(GTK_NO_CHECK_CASTS,[],[If defined, disables GTK+ type checking])
35	fi
36])
37
38AC_ARG_WITH(check-casts,
39[  --without-check-casts   Do not type-check GTK casts.],AC_WITHOUT_CHECK_CASTS)
40
41AC_DEFUN([AC_ENABLE_WERROR],[
42	if test "x$enableval" = "xyes" ; then
43	AM_CFLAGS="$AM_CFLAGS -Werror"
44	fi
45])
46
47AC_ARG_ENABLE(werror,
48[  --enable-werror         Treat warnings as errors during compilation],
49AC_ENABLE_WERROR)
50
51DEFAULT_DRIVER=auto
52AC_ARG_WITH(default-driver,
53[  --with-default-driver=driver
54                           Choose default sound driver (one of oss,alsa,pulse,
55                           jack,sun,pa,sdl,esound,arts,auto; default: auto)],
56  DEFAULT_DRIVER=$withval)
57AC_DEFINE_UNQUOTED(DEFAULT_DRIVER,"${DEFAULT_DRIVER}",[Default sound driver])
58
59DEFAULT_LADSPA_PATH="/usr/lib/ladspa:/usr/local/lib/ladspa"
60AC_ARG_WITH(default-ladspa-path,
61[  --with-default-ladspa-path=path
62                           Path to use if LADSPA_PATH variable is not set
63                           (default: "/usr/lib/ladspa:/usr/local/lib/ladspa")],
64DEFAULT_LADSPA_PATH=$withval)
65AC_DEFINE_UNQUOTED(DEFAULT_LADSPA_PATH,"${DEFAULT_LADSPA_PATH}",[Default path for LADSPA plugins])
66
67DEFAULT_MIXERAPP=xmixer
68AC_ARG_WITH(default-mixerapp,
69[  --with-default-mixerapp=appname
70                           Default command for "launch mixer" button
71                           (default: "xmixer")],
72DEFAULT_MIXERAPP=$withval)
73AC_DEFINE_UNQUOTED(DEFAULT_MIXERAPP,"${DEFAULT_MIXERAPP}",[Default mixer application])
74
75FIXED_DATE_STR="__DATE__ (actual compile date)"
76FIXED_TIME_STR="__TIME__ (actual compile time)"
77AC_ARG_WITH(build-date,
78[  --with-build-date=str   Fixed string to use instead of __DATE__],
79if test "x$withval" != "xno" ; then
80AC_DEFINE_UNQUOTED(FIXED_DATE,"${withval}",[Fixed build date])
81FIXED_DATE_STR=${withval}
82fi
83)
84
85AC_ARG_WITH(build-time,
86[  --with-build-time=str   Fixed string to use instead of __TIME__],
87if test "x$withval" != "xno" ; then
88AC_DEFINE_UNQUOTED(FIXED_TIME,"${withval}",[Fixed build date])
89FIXED_TIME_STR=${withval}
90fi
91)
92
93dnl Checks for programs.
94AC_PROG_CC
95AC_PROG_GCC_TRADITIONAL
96AC_PROG_LN_S
97AC_PROG_MAKE_SET
98
99dnl Checks for libraries.
100dnl Replace `main' with a function in -libs:
101AC_CHECK_LIB(ibs, main)
102AC_CHECK_LIB(m, round)
103
104dnl This is needed for PortAudio under GNU/Linux...
105AC_CHECK_LIB(pthread,pthread_create)
106
107dnl Check for libsndfile
108
109HAVE_SNDFILE=yes
110SKIP_SNDFILE_CHECK=no
111SNDFILE_LIBS=""
112SNDFILE_CFLAGS=""
113
114AC_DEFUN([AC_WITH_LIBSNDFILE],[
115	if test "x$withval" = "xno" ; then
116		HAVE_SNDFILE=no
117	else
118		SNDFILE_LIBS="-L$withval/lib -lsndfile -lm"
119		SNDFILE_CFLAGS="-I$withval/include"
120		SKIP_SNDFILE_CHECK=yes
121	fi
122])
123
124AC_ARG_WITH(libsndfile,[  --with-libsndfile=prefix Prefix where libsndfile is installed (optional)
125  --without-libsndfile    Don't use libsndfile library],AC_WITH_LIBSNDFILE)
126
127if test "x$HAVE_SNDFILE" = "xyes" -a "x$SKIP_SNDFILE_CHECK" = "xno"; then
128	PKG_CHECK_MODULES(SNDFILE, sndfile, , HAVE_SNDFILE=no)
129fi
130
131if test "x$HAVE_SNDFILE" = "xyes" ; then
132	AC_DEFINE(HAVE_LIBSNDFILE,[],[Use libsndfile library])
133fi
134
135AC_SUBST(SNDFILE_LIBS)
136AC_SUBST(SNDFILE_CFLAGS)
137
138dnl Check for libsamplerate
139
140HAVE_LIBSAMPLERATE=yes
141SKIP_LIBSAMPLERATE_CHECK=no
142LIBSAMPLERATE_LIBS=""
143LIBSAMPLERATE_CFLAGS=""
144
145AC_DEFUN([AC_WITH_LIBSAMPLERATE],[
146	if test "x$withval" = "xno" ; then
147		HAVE_LIBSAMPLERATE=no
148	else
149		LIBSAMPLERATE_LIBS="-L$withval/lib -lsamplerate"
150		LIBSAMPLERATE_CFLAGS="-I$withval/include"
151		SKIP_LIBSAMPLERATE_CHECK=yes
152	fi
153])
154
155AC_ARG_WITH(libsamplerate,[  --with-libsamplerate=prefix Prefix where libsamplerate is installed (optional)
156  --without-libsamplerate Don't use libsamplerate library],AC_WITH_LIBSAMPLERATE)
157
158if test "x$HAVE_LIBSAMPLERATE" = "xyes" -a "x$SKIP_LIBSAMPLERATE_CHECK" = "xno"; then
159	PKG_CHECK_MODULES(LIBSAMPLERATE, samplerate, , HAVE_LIBSAMPLERATE=no)
160fi
161
162if test "x$HAVE_LIBSAMPLERATE" = "xyes" ; then
163	AC_DEFINE(HAVE_LIBSAMPLERATE,[],[Use libsamplerate library])
164fi
165
166AC_SUBST(LIBSAMPLERATE_LIBS)
167AC_SUBST(LIBSAMPLERATE_CFLAGS)
168
169dnl Check for PortAudio
170
171PORTAUDIO_LIBS=""
172MHW_HAVE_PORTAUDIO=yes
173
174AC_ARG_WITH(portaudio,[  --without-portaudio     Don't use portaudio library],
175if test "x$withval" = "xno"; then
176MHW_HAVE_PORTAUDIO=no
177fi
178)
179
180AC_CHECK_HEADER(portaudio.h,mhw_found_header=yes,mhw_found_header=no)
181if test "x$mhw_found_header" = "xno"; then
182MHW_HAVE_PORTAUDIO=no
183fi
184
185if test "x$MHW_HAVE_PORTAUDIO" = "xyes"; then
186AC_CHECK_LIB(portaudio,Pa_Initialize,MHW_HAVE_PORTAUDIO=yes,MHW_HAVE_PORTAUDIO=no)
187fi
188
189if test "x$MHW_HAVE_PORTAUDIO" = "xyes"; then
190AC_CHECK_TYPE(PaTimestamp,,MHW_HAVE_PORTAUDIO=no,[[#include <portaudio.h>]])
191fi
192
193if test "x$MHW_HAVE_PORTAUDIO" = "xyes"; then
194	AC_DEFINE(HAVE_PORTAUDIO,[],[Enable PortAudio sound driver])
195	PORTAUDIO_LIBS="-lportaudio $PORTAUDIO_LIBS"
196fi
197
198AC_SUBST(PORTAUDIO_LIBS)
199
200dnl Check for SDL
201
202SKIP_SDL_TEST=no
203MHW_HAVE_SDL=no
204
205AC_DEFUN([AC_WITHOUT_SDL],[
206	if test "x$withval" = "xno" ; then
207		SKIP_SDL_TEST=yes
208	fi
209])
210
211AC_ARG_WITH(sdl,[  --without-sdl           Don't use SDL library],AC_WITHOUT_SDL)
212
213if test "x$SKIP_SDL_TEST" = "xno"; then
214	AM_PATH_SDL(1.2.3,
215	 AC_DEFINE(HAVE_SDL,[],[Enable SDL sound driver])
216	 MHW_HAVE_SDL=yes)
217fi
218
219dnl Check for AlsaLib
220
221ALSALIB_LIBS=""
222
223AC_CHECK_LIB(asound,snd_pcm_open,HAVE_ALSALIB=yes,HAVE_ALSALIB=no)
224
225AC_DEFUN([AC_WITHOUT_ALSALIB],[
226	if test "x$withval" = "xno" ; then
227		HAVE_ALSALIB=no
228	fi
229])
230
231AC_ARG_WITH(alsalib,[  --without-alsalib       Don't compile ALSA-lib driver],AC_WITHOUT_ALSALIB)
232
233AC_CHECK_HEADER(alsa/asoundlib.h,mhw_found_header=yes,mhw_found_header=no)
234if test "x$mhw_found_header" = "xno"; then
235   HAVE_ALSALIB="no"
236fi
237
238if test "x$HAVE_ALSALIB" = "xyes"; then
239	ALSALIB_LIBS="-lasound"
240	AC_DEFINE(HAVE_ALSALIB,[],[Enable ALSA sound driver])
241fi
242
243AC_SUBST(ALSALIB_LIBS)
244
245dnl Check for OSS
246
247HAVE_OSS=yes
248
249AC_DEFUN([AC_WITHOUT_OSS],[
250	if test "x$withval" = "xno" ; then
251		HAVE_OSS=no
252	fi
253])
254
255AC_ARG_WITH(oss,[  --without-oss           Don't compile OSS driver],AC_WITHOUT_OSS)
256
257dnl Check for libossaudio, needed for OSS on OpenBSD
258AC_CHECK_LIB(ossaudio,_oss_ioctl)
259
260mhw_found_one=no
261AC_CHECK_HEADERS(soundcard.h sys/soundcard.h,mhw_found_one=yes)
262if test "x$mhw_found_one" = "xno"; then
263	HAVE_OSS=no
264fi
265
266if test "x$HAVE_OSS" = "xyes"; then
267	AC_DEFINE(HAVE_OSS,[],[Enable OSS sound driver])
268fi
269
270dnl Check for JACK
271
272MHW_HAVE_JACK=no
273MHW_SKIP_JACKTEST=no
274
275AC_DEFUN([AC_WITHOUT_JACK],[
276	if test "x$withval" = "xno" ; then
277	   MHW_SKIP_JACKTEST='yes'
278	fi
279])
280
281AC_ARG_WITH(jack,[  --without-jack          Don't compile JACK driver],AC_WITHOUT_JACK)
282
283if test "x$MHW_SKIP_JACKTEST" = "xno"
284then
285	PKG_CHECK_MODULES(JACK,jack >= 0.98.0,MHW_HAVE_JACK=yes,MHW_HAVE_JACK=no)
286fi
287
288if test "x$MHW_HAVE_JACK" = "xyes" ; then
289	AC_DEFINE(HAVE_JACK,[],[Enable JACK sound driver])
290fi
291
292dnl Check for PulseAudio
293
294MHW_HAVE_PULSE=no
295MHW_SKIP_PULSETEST=no
296
297AC_DEFUN([AC_WITHOUT_PULSE],[
298	if test "x$withval" = "xno" ; then
299	   MHW_SKIP_PULSETEST='yes'
300	fi
301])
302
303AC_ARG_WITH(pulse,[  --without-pulse          Don't compile PulseAudio driver],AC_WITHOUT_PULSE)
304
305if test "x$MHW_SKIP_PULSETEST" = "xno"
306then
307	PKG_CHECK_MODULES(PULSE,libpulse >= 0.9.10,MHW_HAVE_PULSE=yes,MHW_HAVE_PULSE=no)
308fi
309
310if test "x$MHW_HAVE_PULSE" = "xyes" ; then
311	AC_DEFINE(HAVE_PULSEAUDIO,[],[Enable PulseAudio sound driver])
312fi
313
314dnl Check for Esound
315
316MHW_HAVE_ESOUND=yes
317AC_ARG_WITH(esound,[  --without-esound        Don't compile EsounD driver],
318	if test "x$withval" = "xno"; then
319	   MHW_HAVE_ESOUND=no
320	fi
321)
322if test "x$MHW_HAVE_ESOUND" = "xyes"
323then
324	PKG_CHECK_MODULES(ESOUND,esound >= 0.2.0,MHW_HAVE_ESOUND=yes,MHW_HAVE_ESOUND=no)
325fi
326
327if test "x$MHW_HAVE_ESOUND" = "xyes"; then
328	AC_DEFINE(HAVE_ESOUND,[],[Enable EsounD sound driver])
329fi
330
331dnl Check for Sun audio
332
333MHW_HAVE_SUNAUDIO=yes
334
335AC_DEFUN([AC_WITHOUT_SUNAUDIO],[
336	if test "x$withval" = "xno" ; then
337		MHW_HAVE_SUNAUDIO=no
338	fi
339])
340
341AC_ARG_WITH(sun,[  --without-sun           Don't compile Sun audio driver],AC_WITHOUT_SUNAUDIO)
342
343AC_CHECK_HEADER(sys/audio.h,mhw_found_one=yes,mhw_found_one=no)
344if test "x$mhw_found_one" = "xno"; then
345	MHW_HAVE_SUNAUDIO=no
346fi
347
348if test "x$MHW_HAVE_SUNAUDIO" = "xyes"; then
349	AC_DEFINE(HAVE_SUN,[],[Enable Sun audio sound driver])
350fi
351
352dnl Check for aRts C interface
353
354MHW_HAVE_ARTSC=yes
355ARTSC_LIBS=""
356ARTSC_CFLAGS=""
357
358AC_DEFUN([AC_WITHOUT_ARTSC],[
359	if test "x$withval" = "xno"; then
360	        MHW_HAVE_ARTSC=no
361	fi
362])
363
364AC_ARG_WITH(arts, [  --without-arts          Don't compile aRts driver],AC_WITHOUT_ARTSC)
365
366ARTSC_CONFIG=no
367if test "x$MHW_HAVE_ARTSC" = "xyes"; then
368        AC_PATH_PROG(ARTSC_CONFIG, artsc-config, no)
369fi
370
371if test "x$ARTSC_CONFIG" = "xno"; then
372    MHW_HAVE_ARTSC=no
373else
374	ARTSC_CFLAGS=`$ARTSC_CONFIG --cflags`
375	ARTSC_LIBS=`$ARTSC_CONFIG --libs`
376	AC_DEFINE(HAVE_ARTSC,[],[Enable aRts driver])
377fi
378
379AC_SUBST(ARTSC_CFLAGS)
380AC_SUBST(ARTSC_LIBS)
381
382dnl Check for GTK+
383
384AC_DEFUN([AC_DISABLE_GTK2],[
385	if test "x$enableval" = "xno" ; then
386	DISABLE_GTK2='yes'
387	fi
388])
389
390AC_ARG_ENABLE(gtk2, [  --disable-gtk2          Don't use GTK+ 2, use 1.2 instead],
391	      AC_DISABLE_GTK2, DISABLE_GTK2='no')
392
393
394dnl Check for GTK+ without gthread
395
396FOUND_GTK="no"
397USES_GTK2="no"
398
399if test "x$FOUND_GTK" = "xno"; then
400	if test "x$DISABLE_GTK2" != "xyes"; then
401	AM_PATH_GTK_2_0(2.0.0,USES_GTK2="yes" FOUND_GTK="yes")
402	fi
403fi
404
405if test "x$FOUND_GTK" = "xno"; then
406AM_PATH_GTK(1.2.5,FOUND_GTK="yes",AC_MSG_ERROR(mhWaveEdit requires GTK+ version 1.2.5 or higher...))
407fi
408
409dnl Check for gthread if we're using GTK+ 2
410dnl Not needed by the app itself, but needed for some aRts versions.
411GTHREAD_CFLAGS=""
412GTHREAD_LIBS=""
413HAVE_GTHREAD="no"
414
415if test "x$USES_GTK2" = "xyes"; then
416   HAVE_GTHREAD="yes"
417   PKG_CHECK_MODULES(GTHREAD, gthread-2.0, , HAVE_GTHREAD="no")
418fi
419if test "x$HAVE_GTHREAD" = "xyes"; then
420   AC_DEFINE(HAVE_GTHREAD,[],[Defined if Glib thread support is available])
421fi
422
423AC_SUBST(GTHREAD_CFLAGS)
424AC_SUBST(GTHREAD_LIBS)
425
426
427dnl Check for large file support
428AC_SYS_LARGEFILE
429AC_DEFINE(_LARGEFILE_SOURCE,[],[Defined to get fseeko/ftello prototypes])
430AC_CHECK_SIZEOF(off_t)
431
432dnl Checks for header files.
433AC_HEADER_STDC
434AC_CHECK_HEADERS([sys/time.h time.h sys/ioctl.h sys/types.h unistd.h fcntl.h sched.h libintl.h locale.h])
435
436dnl Ladspa
437HAVE_LADSPA=yes
438HAVE_LADSPA_GLOBAL=yes
439AC_CHECK_HEADER(ladspa.h,,HAVE_LADSPA_GLOBAL=no)
440AC_ARG_ENABLE(ladspa,
441  [  --disable-ladspa        Don't include any Ladspa support],
442  [if test "x$enableval" = "xno"; then HAVE_LADSPA=no; fi])
443if test "x$HAVE_LADSPA" = "xyes"; then
444	AC_CHECK_HEADER(dlfcn.h,,HAVE_LADSPA=no)
445fi
446if test "x$HAVE_LADSPA" = "xyes"; then
447	AC_CHECK_LIB(dl,dlopen,LIBS="-ldl $LIBS",HAVE_LADSPA=no)
448fi
449if test "x$HAVE_LADSPA" = "xyes"; then
450	AC_DEFINE(HAVE_LADSPA,[],[Enable LADSPA support])
451fi
452if test "x$HAVE_LADSPA_GLOBAL" = "xyes"; then
453        AC_DEFINE(HAVE_SYS_LADSPA_H,[],[Use system LADSPA header])
454fi
455
456dnl Checks for typedefs, structures, and compiler characteristics.
457AC_TYPE_SIZE_T
458AC_TYPE_OFF_T
459AC_TYPE_PID_T
460AC_TYPE_SIGNAL
461AC_HEADER_TIME
462AC_HEADER_DIRENT
463AC_HEADER_SYS_WAIT
464AC_C_CONST
465AC_C_VOLATILE
466
467dnl Check return type of unsetenv
468AC_MSG_CHECKING([whether unsetenv returns a value])
469HAVE_INT_UNSETENV=no
470AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
471#include <stdlib.h>
472],[int i; i = unsetenv("dummy"); return 0;])],HAVE_INT_UNSETENV=yes)
473if test "x$HAVE_INT_UNSETENV" = "xyes";
474then
475    AC_DEFINE(UNSETENV_RETVAL,[],[Defined if unsetenv returns an integer])
476fi
477AC_MSG_RESULT([$HAVE_INT_UNSETENV])
478
479dnl Checks for library functions.
480AC_FUNC_MEMCMP
481AC_CHECK_FUNCS([gettimeofday mkdir strerror strtod strtol sched_yield ceill setlocale fseeko ftello lrint lrintf dup2 memchr memmove memset pow putenv select sqrt strchr strrchr strstr strtoul])
482AC_FUNC_CLOSEDIR_VOID
483AC_FUNC_FORK
484AC_FUNC_SELECT_ARGTYPES
485AC_FUNC_STAT
486AC_FUNC_STRTOD
487
488dnl Write output
489AC_CONFIG_FILES([Makefile src/Makefile po/Makefile.in m4/Makefile share/Makefile ])
490AC_OUTPUT
491
492dnl Display configuration
493
494echo
495echo
496echo "------------------------"
497echo "mhWaveEdit configuration"
498echo "------------------------"
499echo
500echo "Version: $MHW_VERSION"
501echo
502echo "Libraries: "
503echo -n "  GTK+ version:           "
504if test "x$USES_GTK2" = "xyes"; then
505	echo "2.x"
506else
507	echo "1.2"
508fi
509echo    "  Libsndfile:             $HAVE_SNDFILE"
510echo    "  Libsamplerate:          $HAVE_LIBSAMPLERATE"
511echo
512echo    "Sound drivers:"
513INCLUDED_DRIVERS=""
514EXCLUDED_DRIVERS=""
515AC_DEFUN([CHECKDRV], [ if test "x$1" = "xyes"; then INCLUDED_DRIVERS="$INCLUDED_DRIVERS $2"; else EXCLUDED_DRIVERS="$EXCLUDED_DRIVERS $2"; fi; ])
516CHECKDRV([$HAVE_OSS],[OSS])
517CHECKDRV([$HAVE_ALSALIB],[ALSA])
518CHECKDRV([$MHW_HAVE_JACK],[JACK])
519CHECKDRV([$MHW_HAVE_SUNAUDIO],[Sun])
520CHECKDRV([$MHW_HAVE_PORTAUDIO],[PortAudio])
521CHECKDRV([$MHW_HAVE_SDL],[SDL])
522CHECKDRV([$MHW_HAVE_ESOUND],[EsounD])
523CHECKDRV([$MHW_HAVE_ARTSC],[aRts])
524CHECKDRV([$MHW_HAVE_PULSE],[PulseAudio])
525echo    "  Included drivers:      $INCLUDED_DRIVERS"
526echo    "  Drivers not included:  $EXCLUDED_DRIVERS"
527echo -n "  Default sound driver:   $DEFAULT_DRIVER "
528if test "x$DEFAULT_DRIVER" = "xauto"; then
529echo -n "(detect at startup)"
530fi
531echo
532echo
533echo    "Other settings:"
534
535
536echo    "  LADSPA Support:         $HAVE_LADSPA"
537if test "x$HAVE_LADSPA" = "xyes"; then
538echo -n "    ladspa.h header file: "
539if test "x$HAVE_LADSPA_GLOBAL" = "xyes"; then
540echo "system"
541else
542echo "local"
543fi
544echo    "    Default plugin path:  $DEFAULT_LADSPA_PATH"
545fi
546
547echo -n "  Floating-point samples: "
548if test "x$MHW_DOUBLE" = "xyes"; then
549	echo "double precision"
550else
551	echo "normal precision"
552fi
553
554echo    "  Default mixer app:      $DEFAULT_MIXERAPP"
555echo
556echo "Build settings:"
557echo -n "  Compiler options:       "
558echo    $CFLAGS
559echo    "  Build date string:      ${FIXED_DATE_STR}"
560echo    "  Build time string:      ${FIXED_TIME_STR}"
561echo
562if test "x$USES_GTK2$MHW_HAVE_ARTSC" = "xnoyes"; then
563        echo "---------------------------------------------------------------"
564        echo "WARNING: There are known issues when building with GTK+ 1.2 "
565	echo "and newer versions of aRts. If you are experiencing problems,"
566	echo "try running configure with the --without-arts option to disable "
567	echo "aRts support"
568	echo "---------------------------------------------------------------"
569        echo
570fi
571echo    "Type make (or gmake) to compile mhWaveEdit!"
572