Final set of changes for a working ffmpeg.
[sxemacs] / m4 / sxe-mm.m4
1 dnl sxe-mm.m4 -- Multimedia goodness
2
3 dnl MM tests
4 dnl ========
5
6 AC_DEFUN([SXE_MM_CHECK_XPM], [
7         ## arg #1: action on success
8         ## arg #2: action on failure
9         pushdef([MM_SUCC], [$1])
10         pushdef([MM_FAIL], [$2])
11
12         AC_MSG_CHECKING([for xpm support])
13         AC_MSG_RESULT([])
14
15         MM_SUCC
16         if test "$window_system" = "none"; then
17                 MM_FAIL
18         fi
19
20         SXE_DUMP_LIBS
21         SXE_LANG_WERROR([off])
22         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
23         LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS $libs_x"
24         LIBS="$LIBS -lXpm -lX11"
25
26         SXE_CHECK_HEADERS([X11/xpm.h], [:], [MM_FAIL])
27
28         AC_MSG_CHECKING([for Xpm (more recent than 3.4f)])
29         AC_RUN_IFELSE([AC_LANG_SOURCE([[
30 #define XPM_NUMBERS
31 #include <X11/xpm.h>
32 int main(int c, char **v)
33 {
34         return c == 1 ? 0 :
35                 XpmIncludeVersion != XpmLibraryVersion() ? 1 :
36                 XpmIncludeVersion < 30406 ? 2 : 0 ;
37 }]])], [./conftest dummy_arg; xpm_status=$?;
38                 if test "$xpm_status" = "0"; then
39                         AC_MSG_RESULT([yes])
40                 else
41                         AC_MSG_RESULT([no])
42                         MM_FAIL
43                         if test "$xpm_status" = "1"; then
44                                 AC_MSG_WARN([dnl
45 Xpm library version and header file version don't match!
46 I have disabled xpm on your behalf.])
47                         elif test "$xpm_status" = "2"; then
48                                 AC_MSG_WARN([dnl
49 Xpm library version is too old!
50 I have disabled xpm on your behalf.])
51                         else
52                                 AC_MSG_WARN([dnl
53 Internal xpm detection logic error!])
54                         fi
55                 fi], [dnl
56                 AC_MSG_RESULT([no])
57                 MM_FAIL], [dnl
58                 AC_MSG_RESULT([no])
59                 MM_FAIL])
60         xe_check_libs=
61         SXE_RESTORE_LIBS
62 ])dnl SXE_MM_CHECK_XPM
63
64 AC_DEFUN([SXE_MM_CHECK_XFACE], [
65         ## arg #1: action on success
66         ## arg #2: action on failure
67         pushdef([MM_SUCC], [$1])
68         pushdef([MM_FAIL], [$2])
69
70         AC_MSG_CHECKING([for xface support])
71         AC_MSG_RESULT([])
72
73         SXE_DUMP_LIBS
74         SXE_LANG_WERROR([off])
75         dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
76         dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
77         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
78         LDFLAGS="$LDFLAGS $X_LIBS"
79
80         MM_SUCC
81         if test "$window_system" = "none"; then
82                 MM_FAIL
83         fi
84
85         SXE_CHECK_HEADERS([compface.h], [:], [MM_FAIL])
86         AC_CHECK_LIB([compface], [UnGenFace], [:], [MM_FAIL])
87
88         SXE_RESTORE_LIBS
89 ])dnl SXE_MM_CHECK_XFACE
90
91 AC_DEFUN([SXE_MM_CHECK_GIF], [
92         ## arg #1: action on success
93         ## arg #2: action on failure
94         pushdef([MM_SUCC], [$1])
95         pushdef([MM_FAIL], [$2])
96
97         AC_MSG_CHECKING([for gif support])
98         AC_MSG_RESULT([])
99
100         SXE_DUMP_LIBS
101
102         MM_SUCC
103         if test "$window_system" = "none"; then
104                 MM_FAIL
105         fi
106
107         SXE_RESTORE_LIBS
108 ])dnl SXE_MM_CHECK_GIF
109
110 AC_DEFUN([SXE_MM_CHECK_JPEG], [
111         ## arg #1: action on success
112         ## arg #2: action on failure
113         pushdef([MM_SUCC], [$1])
114         pushdef([MM_FAIL], [$2])
115
116         AC_MSG_CHECKING([for jpeg support])
117         AC_MSG_RESULT([])
118
119         SXE_DUMP_LIBS
120         SXE_LANG_WERROR([off])
121         dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
122         dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
123         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
124         LDFLAGS="$LDFLAGS $X_LIBS"
125
126         MM_SUCC
127         if test "$window_system" = "none"; then
128                 MM_FAIL
129         fi
130
131         SXE_CHECK_HEADERS([jpeglib.h], [:], [MM_FAIL])
132         AC_CHECK_LIB([jpeg], [jpeg_destroy_decompress], [:], [MM_FAIL], [$INFLATE_LIB])
133
134         SXE_RESTORE_LIBS
135 ])dnl SXE_MM_CHECK_JPEG
136
137
138 AC_DEFUN([_SXE_MM_CHECK_PNG_HEADERS], [dnl
139         ## defines sxe_cv_feat_png_headers
140         ## also defines and substs PNG_CPPFLAGS
141
142         SXE_DUMP_LIBS
143         SXE_LANG_WERROR([off])
144         PNG_CPPFLAGS="$CPPFLAGS $X_CFLAGS"
145         CPPFLAGS="$PNG_CPPFLAGS"
146         SXE_CHECK_HEADERS([png.h])
147         SXE_RESTORE_LIBS
148
149         if test "${ac_cv_header_png_h}" = "yes"; then
150                 sxe_cv_feat_png_headers="yes"
151         else
152                 sxe_cv_feat_png_headers="no"
153         fi
154
155         AC_SUBST([PNG_CPPFLAGS])
156 ])dnl _SXE_MM_CHECK_PNG_HEADERS
157
158 AC_DEFUN([_SXE_MM_CHECK_PNG_LIBS], [dnl
159         ## defines sxe_cv_feat_png_libs
160         ## also defines and substs PNG_LIBS and PNG_LDFLAGS
161
162         SXE_DUMP_LIBS
163         SXE_LANG_WERROR([off])
164         PNG_LDFLAGS="$LDFLAGS $X_LIBS"
165         LDFLAGS="$PNG_LDFLAGS"
166         AC_CHECK_LIB([png], [png_read_image], [], [], [$INFLATE_LIB])
167         SXE_RESTORE_LIBS
168
169         if test "${ac_cv_lib_png_png_read_image}" = "yes"; then
170                 sxe_cv_feat_png_libs="yes"
171                 PNG_LIBS="$INFLATE_LIB -lpng"
172         else
173                 sxe_cv_feat_png_libs="no"
174                 PNG_LIBS=
175         fi
176
177         AC_SUBST([PNG_LIBS])
178         AC_SUBST([PNG_LDFLAGS])
179 ])dnl _SXE_MM_CHECK_PNG_LIBS
180
181 AC_DEFUN([_SXE_MM_CHECK_PNG_VERSION], [dnl
182         ## defines sxe_cv_tmp_png_status to yes if version info seems okay
183         AC_REQUIRE([_SXE_MM_CHECK_PNG_HEADERS])
184         AC_REQUIRE([_SXE_MM_CHECK_PNG_LIBS])
185
186         SXE_MSG_CHECKING([for workable png version information])
187
188         SXE_DUMP_LIBS
189         CPPFLAGS="$PNG_CPPFLAGS"
190         LDFLAGS="$PNG_LDFLAGS"
191         LIBS="$PNG_LIBS"
192         AC_RUN_IFELSE([AC_LANG_SOURCE([[
193 #if defined HAVE_PNG_H
194 # include <png.h>
195 #endif /* HAVE_PNG_H */
196
197 int main(int c, char **v)
198 {
199         if (c == 1) {
200                 return 0;
201         }
202         if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) {
203                 return 1;
204         }
205         return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;
206 }]])], [./conftest dummy_arg; png_status=$?;
207                 if test "$png_status" = "0"; then
208                         sxe_cv_tmp_png_status="yes"
209
210                 elif test "$png_status" = "1"; then
211                         sxe_cv_tmp_png_status="yes"
212                         AC_MSG_WARN([dnl
213 PNG library version and header file don't match!
214 This is odd but I think I give it a whirl.
215 If things work out badly I suggest to turn off your computer forever.])
216
217                 elif test "$png_status" = "2"; then
218                         sxe_cv_tmp_png_status="no"
219                         AC_MSG_WARN([dnl
220 PNG library version too old (pre 1.0.2)!
221 I have disabled PNG support on your behalf.])
222
223                 else
224                         sxe_cv_tmp_png_status="no"
225                         AC_MSG_ERROR([dnl
226 Whatever happened just now, I'm completely fucked.])
227                 fi], [sxe_cv_tmp_png_status="no"], [sxe_cv_tmp_png_status="no"])
228         SXE_MSG_RESULT([${sxe_cv_tmp_png_status}])
229         SXE_RESTORE_LIBS
230 ])dnl _SXE_MM_CHECK_PNG_VERSION
231
232 AC_DEFUN([SXE_MM_CHECK_PNG], [
233         ## SXE_MM_CHECK_PNG(<action-if-found>, <action-if-not-found>)
234         ## defines HAVE_PNG in case png is usable
235         pushdef([MM_SUCC], [$1])
236         pushdef([MM_FAIL], [$2])
237
238         SXE_MSG_CHECKING([for PNG support])
239         SXE_MSG_RESULT([])
240
241         _SXE_MM_CHECK_PNG_HEADERS
242         _SXE_MM_CHECK_PNG_LIBS
243         _SXE_MM_CHECK_PNG_VERSION
244
245         ## final judgement
246         ## we want to see a header and png_read_image really
247         if test "${sxe_cv_feat_png_headers}" = "yes" -a \
248                 "${sxe_cv_feat_png_libs}" = "yes" -a \
249                 "${sxe_cv_tmp_png_status}" = "yes"; then
250                 sxe_cv_feat_png="yes"
251                 AC_DEFINE([HAVE_PNG], [1], [Define to 1 if png is usable.])
252                 MM_SUCC
253         else
254                 sxe_cv_feat_png="no"
255                 MM_FAIL
256         fi
257 ])dnl SXE_MM_CHECK_PNG
258
259 AC_DEFUN([SXE_MM_CHECK_TIFF], [
260         ## arg #1: action on success
261         ## arg #2: action on failure
262         pushdef([MM_SUCC], [$1])
263         pushdef([MM_FAIL], [$2])
264
265         AC_MSG_CHECKING([for TIFF support])
266         AC_MSG_RESULT([])
267
268         SXE_DUMP_LIBS
269         SXE_LANG_WERROR([off])
270         dnl SXE_PREPEND_UNDUP([-I$x_includes], [c_switch_site])
271         dnl SXE_PREPEND_UNDUP([-L$x_libraries], [ld_switch_site])
272         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
273         LDFLAGS="$LDFLAGS $X_LIBS"
274
275         MM_SUCC
276         if test "$window_system" = "none"; then
277                 MM_FAIL
278         fi
279
280         SXE_CHECK_HEADERS([tiffio.h], [:], [MM_FAIL])
281         AC_CHECK_LIB([tiff], [TIFFClientOpen], [:], [MM_FAIL], [$INFLATE_LIB])
282
283         SXE_RESTORE_LIBS
284 ])dnl SXE_MM_CHECK_TIFF
285
286 AC_DEFUN([SXE_MM_SEARCH_INFLATE], [
287         dnl Too many stupid linkers can't detect cascaded lib dependencies
288         dnl  until runtime. So we always search for libz compression support.
289         AC_SEARCH_LIBS([inflate], [c z gz], [
290                 if test "$ac_cv_lib_c_inflate" = "yes"; then
291                         INFLATE_LIB="c"
292                 elif test "$ac_cv_lib_z_inflate" = "yes"; then
293                         INFLATE_LIB="z"
294                 elif test "$ac_cv_lib_gz_inflate" = "yes"; then
295                         INFLATE_LIB="gz"
296                 fi], [INFLATE_LIB=])
297         if test -n "$INFLATE_LIB"; then
298                 SXE_PREPEND([$INFLATE_LIB], [MM_LIBS])
299         fi
300 ])dnl SXE_MM_SEARCH_INFLATE
301
302 AC_DEFUN([SXE_MM_CHECK_SNDFILE], [
303         ## assumes $PKG_CONFIG is defined
304         ## arg #1: action on success
305         ## arg #2: action on failure
306
307         _SXE_MM_CHECK_pkgconfig_based([sndfile], [sndfile], [1.0.12], [dnl
308                 sf_open sf_close sf_readf_short sf_readf_int dnl
309                 sf_readf_float sf_seek sf_open_virtual],
310                 [sndfile.h], [$1], [$2])
311 ])dnl SXE_MM_CHECK_SNDFILE
312
313 AC_DEFUN([SXE_MM_CHECK_FFMPEG], [
314         ## assumes $PKG_CONFIG is defined
315         ## arg #1: action on success
316         ## arg #2: action on failure
317         pushdef([ACTION_IF_FOUND], [$1])
318         pushdef([ACTION_IF_NOT_FOUND], [$2])
319
320         sxe_cv_feat_ffmpeg=
321
322         ## Minimum versions required matches FFmpeg stable v2.0.1
323         ## released 2013-08-13
324         SXE_PC_CHECK_VERSION_ATLEAST([libavformat], [55.12.100])
325         SXE_PC_CHECK_VERSION_ATLEAST([libavcodec], [55.18.102])
326         SXE_PC_CHECK_VERSION_ATLEAST([libavutil], [52.38.100])
327
328         SXE_CHECK_FFMPEG_HEADERS
329         SXE_CHECK_FFMPEG_LIBS
330
331         ## make sure we have at least one of the headers
332         if test "$ac_cv_header_avformat_h" = "yes" -o \
333                 "$ac_cv_header_ffmpeg_avformat_h" = "yes" -o \
334                 "$ac_cv_header_libavformat_avformat_h" = "yes"; then
335                 sxe_cv_feat_ffmpeg_headers="yes"
336         else
337                 sxe_cv_feat_ffmpeg_headers="no"
338         fi
339
340         if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
341                 if test "$ac_cv_header_avcodec_h" = "yes" -o \
342                         "$ac_cv_header_ffmpeg_avcodec_h" = "yes" -o \
343                         "$ac_cv_header_libavcodec_avcodec_h" = "yes"; then
344                         sxe_cv_feat_ffmpeg_headers="yes"
345                 else
346                         sxe_cv_feat_ffmpeg_headers="no"
347                 fi
348         fi
349
350         if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
351                 if test "$ac_cv_header_ffmpeg_dict_h" = "yes" -o \
352                         "$ac_cv_header_libavutil_dict_h" = "yes"; then
353                         sxe_cv_feat_ffmpeg_headers="yes"
354                 else
355                         sxe_cv_feat_ffmpeg_headers="no"
356                 fi
357         fi
358
359         if test "$sxe_cv_feat_ffmpeg_headers" = "yes"; then
360                 if test "$ac_cv_header_ffmpeg_time_h" = "yes" -o \
361                         "$ac_cv_header_libavutil_time_h" = "yes"; then
362                         sxe_cv_feat_ffmpeg_headers="yes"
363                 else
364                         sxe_cv_feat_ffmpeg_headers="no"
365                 fi
366         fi
367
368         ## make sure either decode_audio is there
369         if test "$ac_cv_lib_avcodec_avcodec_decode_audio" = "yes" -o \
370                 "$ac_cv_lib_avcodec_avcodec_decode_audio2" = "yes" -o \
371                 "$ac_cv_lib_avcodec_avcodec_decode_audio3" = "yes"; then
372                 sxe_cv_feat_ffmpeg_decoders="yes"
373         fi
374
375         if test "$sxe_cv_feat_ffmpeg_headers" = "yes" -a \
376                 "$sxe_cv_feat_ffmpeg_decoders" = "yes" -a \
377                 "$ac_cv_lib_avformat_avformat_alloc_context" = "yes" -a \
378                 "$ac_cv_lib_avformat_avformat_free_context" = "yes" -a \
379                 "$ac_cv_lib_avformat_avio_alloc_context" = "yes" -a \
380                 "$ac_cv_lib_avformat_avio_size" = "yes" -a \
381                 "$ac_cv_lib_avformat_avio_feof" = "yes" -a \
382                 "$ac_cv_lib_avformat_avformat_open_input" = "yes" -a \
383                 "$ac_cv_lib_avformat_avformat_close_input" = "yes" -a \
384                 "$ac_cv_lib_avformat_avformat_find_stream_info" = "yes" -a \
385                 "$ac_cv_lib_avformat_av_probe_input_format" = "yes" -a \
386                 "$ac_cv_lib_avformat_av_iformat_next" = "yes" -a \
387                 "$ac_cv_lib_avformat_av_read_frame" = "yes" -a \
388                 "$ac_cv_lib_avformat_av_seek_frame" = "yes" -a \
389                 "$ac_cv_lib_avformat_av_register_all" = "yes" -a \
390                 "$ac_cv_lib_avformat_av_dump_format" = "yes" -a \
391                 "$ac_cv_lib_avcodec_avcodec_find_decoder" = "yes" -a \
392                 "$ac_cv_lib_avcodec_avcodec_open2" = "yes" -a \
393                 "$ac_cv_lib_avutil_av_dict_get" = "yes"; then
394                 sxe_cv_feat_ffmpeg="yes"
395         else
396                 sxe_cv_feat_ffmpeg="no"
397         fi
398
399         if test "$sxe_cv_feat_ffmpeg" = "yes"; then
400                 :
401                 ACTION_IF_FOUND
402         else
403                 :
404                 ACTION_IF_NOT_FOUND
405         fi
406
407         popdef([ACTION_IF_FOUND])
408         popdef([ACTION_IF_NOT_FOUND])
409 ])dnl SXE_MM_CHECK_FFMPEG
410
411 AC_DEFUN([SXE_CHECK_FFMPEG_HEADERS], [dnl
412         FFMPEG_CPPFLAGS="$(${PKG_CONFIG} --cflags libavformat libavcodec libavutil)"
413
414         ## backup current configuration
415         SXE_DUMP_LIBS
416         CPPFLAGS="${CPPFLAGS} ${FFMPEG_CPPFLAGS}"
417         AC_CHECK_HEADERS([avformat.h avcodec.h])
418         AC_CHECK_HEADERS([ffmpeg/avformat.h ffmpeg/avcodec.h])
419         AC_CHECK_HEADERS([ffmpeg/dict.h ffmpeg/time.h])
420         AC_CHECK_HEADERS([libavformat/avformat.h libavcodec/avcodec.h])
421         AC_CHECK_HEADERS([libavutil/dict.h libavutil/time.h])
422
423         ## restore configuration
424         SXE_RESTORE_LIBS
425 ])dnl SXE_CHECK_FFMPEG_HEADERS
426
427 AC_DEFUN([SXE_CHECK_FFMPEG_LIBS], [dnl
428         FFMPEG_LDFLAGS="$(${PKG_CONFIG} --libs-only-other libavformat libavcodec libavutil) \
429                 $(${PKG_CONFIG} --libs-only-L libavformat libavcodec libavutil)"
430         FFMPEG_LIBS="$(${PKG_CONFIG} --libs-only-l libavformat libavcodec libavutil)"
431
432         ## backup current configuration
433         SXE_DUMP_LIBS
434         LDFLAGS="${LDFLAGS} ${FFMPEG_LDFLAGS}"
435
436         AC_CHECK_LIB([avcodec], [avcodec_find_decoder], [:], [:], [${FFMPEG_LIBS}])
437         AC_CHECK_LIB([avcodec], [avcodec_open2], [:], [:], [${FFMPEG_LIBS}])
438         AC_CHECK_LIB([avcodec], [avcodec_decode_audio], [:], [:], [${FFMPEG_LIBS}])
439         AC_CHECK_LIB([avcodec], [avcodec_decode_audio2], [:], [:], [${FFMPEG_LIBS}])
440         AC_CHECK_LIB([avcodec], [avcodec_decode_audio3], [:], [:], [${FFMPEG_LIBS}])
441         AC_CHECK_LIB([avcodec], [avcodec_decode_audio4], [:], [:], [${FFMPEG_LIBS}])
442
443         AC_CHECK_LIB([avformat], [avformat_open_input], [:], [:], [${FFMPEG_LIBS}])
444         AC_CHECK_LIB([avformat], [avformat_close_input], [:], [:], [${FFMPEG_LIBS}])
445         AC_CHECK_LIB([avformat], [avformat_find_stream_info], [:], [:], [${FFMPEG_LIBS}])
446         AC_CHECK_LIB([avformat], [av_iformat_next], [:], [:], [${FFMPEG_LIBS}])
447         AC_CHECK_LIB([avformat], [av_probe_input_format], [:], [:], [${FFMPEG_LIBS}])
448         AC_CHECK_LIB([avformat], [av_read_frame], [:], [:], [${FFMPEG_LIBS}])
449         AC_CHECK_LIB([avformat], [av_seek_frame], [:], [:], [${FFMPEG_LIBS}])
450         AC_CHECK_LIB([avformat], [av_register_all], [:], [:], [${FFMPEG_LIBS}])
451         AC_CHECK_LIB([avformat], [av_dump_format], [:], [:], [${FFMPEG_LIBS}])
452         AC_CHECK_LIB([avformat], [avformat_alloc_context], [:], [:], [${FFMPEG_LIBS}])
453         AC_CHECK_LIB([avformat], [avformat_free_context], [:], [:], [${FFMPEG_LIBS}])
454         AC_CHECK_LIB([avformat], [avio_alloc_context], [:], [:], [${FFMPEG_LIBS}])
455         AC_CHECK_LIB([avformat], [avio_size], [:], [:], [${FFMPEG_LIBS}])
456         AC_CHECK_LIB([avformat], [avio_feof], [:], [:], [${FFMPEG_LIBS}])
457
458         AC_CHECK_LIB([avutil], [av_dict_get], [:], [:], [${FFMPEG_LIBS}])
459
460         if test "$ac_cv_lib_avcodec_avcodec_decode_audio" = "yes"; then
461                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO], [1],
462                           [Define to 1 if avcodec_decode_audio is usable.])
463         fi
464         if test "$ac_cv_lib_avcodec_avcodec_decode_audio2" = "yes"; then
465                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO2], [1],
466                           [Define to 1 if avcodec_decode_audio2 is usable.])
467         fi
468         if test "$ac_cv_lib_avcodec_avcodec_decode_audio3" = "yes"; then
469                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO3], [1],
470                           [Define to 1 if avcodec_decode_audio is usable.])
471         fi
472         if test "$ac_cv_lib_avcodec_avcodec_decode_audio4" = "yes"; then
473                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO4], [1],
474                           [Define to 1 if avcodec_decode_audio is usable.])
475         fi
476
477         ## restore configuration
478         SXE_RESTORE_LIBS
479 ])dnl SXE_CHECK_FFMPEG_LIBS
480
481
482 dnl
483 dnl SoX
484 dnl ===
485 AC_DEFUN([SXE_MM_CHECK_SOX], [dnl
486         ## call like this SXE_MM_CHECK_SOX([<if-found>], [<if-not-found>])
487         ## arg #1: action on success
488         ## arg #2: action on failure
489         pushdef([ACTION_IF_FOUND], [$1])
490         pushdef([ACTION_IF_NOT_FOUND], [$2])
491
492         AC_CACHE_CHECK([for SoX support], [sxe_cv_feat_sox], [_SXE_CHECK_SOX])
493
494         if test "$sxe_cv_feat_sox" = "yes"; then
495                 ACTION_IF_FOUND
496                 :
497         else
498                 ACTION_IF_NOT_FOUND
499                 :
500         fi
501
502         popdef([ACTION_IF_FOUND])
503         popdef([ACTION_IF_NOT_FOUND])
504 ])dnl SXE_MM_CHECK_SOX
505
506 AC_DEFUN([_SXE_CHECK_SOX], [dnl
507         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
508
509         if test "$have_smelly_sox" = "yes"; then
510                 sxe_cv_feat_sox="no"
511         else
512                 SXE_CHECK_SOX_HEADERS
513                 SXE_CHECK_SOX_LIBS
514                 SXE_CHECK_SOX_STRUCTS
515
516                 if test "$ac_cv_lib_sox_sox_open_read" = "yes" -a \
517                         "$ac_cv_lib_sox_sox_close" = "yes" -a \
518                         "$ac_cv_lib_sox_sox_seek" = "yes" -a \
519                         "$ac_cv_header_sox_h" = "yes" -a \
520                         "$ac_cv_type_sox_format_t" = "yes" -a \
521                         "$ac_cv_type_struct_sox_format_t" = "yes" -a \
522                         "$sxe_cv_mm_sox_open_read_fooked" != "yes"; then
523                         sxe_cv_feat_sox="yes"
524                 else
525                         sxe_cv_feat_sox="no"
526                 fi
527                 :
528         fi
529 ])dnl _SXE_CHECK_SOX
530
531 AC_DEFUN([SXE_CHECK_SOX_LOCATIONS], [dnl
532         PKG_CHECK_MODULES([SOX], [sox >= 14.1.0], [dnl
533                 have_smelly_sox="no"
534                 sox_cppflags="$SOX_CFLAGS"
535                 sox_ldflags=
536                 sox_libs="$SOX_LIBS"], [dnl
537                 have_smelly_sox="yes"
538                 AC_MSG_WARN([Your SoX is too old or non-existant. You need >= 14.1.0])])
539 ])dnl SXE_CHECK_SOX_PLACES
540
541 AC_DEFUN([SXE_PUMP_SOX_LOCATIONS], [dnl
542         SXE_DUMP_LIBS
543         CPPFLAGS="$CPPFLAGS $sox_cppflags"
544         LDFLAGS="$LDFLAGS $sox_ldflags"
545         LIBS="$LIBS $sox_libs"
546 ])dnl SXE_PUMP_SOX_LOCATIONS
547
548 AC_DEFUN([SXE_DUMP_SOX_LOCATIONS], [dnl
549         SXE_RESTORE_LIBS
550 ])dnl SXE_DUMP_SOX_LOCATIONS
551
552 AC_DEFUN([SXE_CHECK_SOX_HEADERS], [dnl
553         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
554         SXE_PUMP_SOX_LOCATIONS
555         AC_CHECK_HEADERS([sox.h])
556         SXE_DUMP_SOX_LOCATIONS
557 ])dnl SXE_CHECK_SOX_HEADERS
558
559 AC_DEFUN([SXE_CHECK_SOX_LIBS], [dnl
560         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
561
562         echo "void cleanup(void) {}" > cleanup.c
563         $CC -c -o cleanup.o cleanup.c
564
565         SXE_PUMP_SOX_LOCATIONS
566         ## checks for the spankin' new sox
567         AC_CHECK_LIB([sox], [sox_open_read], [:], [:],
568                 [cleanup.o $sox_ldflags $sox_libs])
569         AC_CHECK_LIB([sox], [sox_close], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
570         AC_CHECK_LIB([sox], [sox_read], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
571         AC_CHECK_LIB([sox], [sox_seek], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
572
573         SXE_DUMP_SOX_LOCATIONS
574
575         SXE_DUMP_LIBS
576         CPPFLAGS="$CPPFLAGS ${SOX_CPPFLAGS}"
577         SXE_LANG_WERROR([on])
578         SXE_MSG_CHECKING([whether sox_open_read() takes 4 arguments])
579         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
580 #if defined HAVE_ERRNO_H
581 # include <errno.h>
582 #endif
583 #if defined HAVE_SOX_H
584 # include <sox.h>
585 #endif
586                 ]], [
587                 sox_open_read("tmp", NULL, NULL, NULL);
588                 ])],
589                 [sxe_cv_mm_sox_open_read_4args="yes"],
590                 [sxe_cv_mm_sox_open_read_4args="no"])
591         SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_4args])
592
593         SXE_MSG_CHECKING([whether sox_open_read() takes 3 arguments])
594         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
595 #if defined HAVE_ERRNO_H
596 # include <errno.h>
597 #endif
598 #if defined HAVE_SOX_H
599 # include <sox.h>
600 #endif
601                 ]], [
602                 sox_open_read("tmp", NULL, NULL);
603                 ])],
604                 [sxe_cv_mm_sox_open_read_3args="yes"],
605                 [sxe_cv_mm_sox_open_read_3args="no"])
606         SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_3args])
607         SXE_RESTORE_LIBS
608
609         if test "$sxe_cv_mm_sox_open_read_3args" = "yes"; then
610                 AC_DEFINE([HAVE_SOX_OPEN_READ_3ARGS], [1],
611                         [Whether sox_open_read() takes 3 arguments.])
612                 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [3],
613                         [How many arguments sox_open_read() takes.])
614         elif test "$sxe_cv_mm_sox_open_read_4args" = "yes"; then
615                 AC_DEFINE([HAVE_SOX_OPEN_READ_4ARGS], [1],
616                         [Whether sox_open_read() takes 4 arguments.])
617                 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [4],
618                         [How many arguments sox_open_read() takes.])
619         else
620                 AC_MSG_NOTICE([
621 Very weird SoX you've got there.
622 I better disable SoX on your behalf.
623                         ])
624                 sxe_cv_mm_sox_open_read_fooked="yes"
625         fi
626
627         ## clean up our cleanup snack
628         rm -f cleanup.c cleanup.o
629 ])dnl SXE_CHECK_SOX_LIBS
630
631 AC_DEFUN([SXE_CHECK_SOX_STRUCTS], [dnl
632         ## the new structs
633         AC_CHECK_TYPES([sox_format_t], [:], [:], [
634 #ifdef HAVE_SOX_H
635 # include <sox.h>
636 #endif
637                 ])
638         AC_CHECK_TYPES([sox_ssize_t], [:], [:], [
639 #ifdef HAVE_SOX_H
640 # include <sox.h>
641 #endif
642                 ])
643         AC_CHECK_TYPES([sox_sample_t], [:], [:], [
644 #ifdef HAVE_SOX_H
645 # include <sox.h>
646 #endif
647                 ])
648         AC_CHECK_TYPES([sox_signalinfo_t], [:], [:], [
649 #if defined HAVE_SOX_H
650 # include <sox.h>
651 #endif
652                 ])
653         AC_CHECK_TYPES([struct sox_format_t], [:], [:], [
654 #ifdef HAVE_SOX_H
655 # include <sox.h>
656 #endif
657                 ])
658         AC_CHECK_MEMBERS([struct sox_format_t.signal], [:], [:], [
659 #ifdef HAVE_SOX_H
660 # include <sox.h>
661 #endif
662                 ])
663
664         AC_CHECK_MEMBERS([sox_signalinfo_t.precision], [:], [:], [
665 #ifdef HAVE_SOX_H
666 # include <sox.h>
667 #endif
668                 ])
669 ])dnl SXE_CHECK_SOX_STRUCTS
670
671 \f
672 AC_DEFUN([SXE_MM_CHECK_MAD], [
673         ## arg #1: action on success
674         ## arg #2: action on failure
675         pushdef([MM_SUCC], [$1])
676         pushdef([MM_FAIL], [$2])
677
678         AC_MSG_CHECKING([for mad support])
679         AC_MSG_RESULT([])
680
681         MM_SUCC
682         SXE_CHECK_HEADERS([mad.h], [:], [MM_FAIL])
683         AC_CHECK_LIB([mad], [mad_synth_init], [:], [MM_FAIL])
684         AC_CHECK_LIB([mad], [mad_stream_init], [:], [MM_FAIL])
685         AC_CHECK_LIB([mad], [mad_frame_init], [:], [MM_FAIL])
686         AC_CHECK_LIB([mad], [mad_synth_frame], [:], [MM_FAIL])
687         AC_CHECK_LIB([mad], [mad_stream_buffer], [:], [MM_FAIL])
688         AC_CHECK_LIB([mad], [mad_frame_decode], [:], [MM_FAIL])
689
690         popdef([MM_SUCC])
691         popdef([MM_FAIL])
692 ])dnl SXE_MM_CHECK_MAD
693
694 AC_DEFUN([SXE_MM_CHECK_MAGIC], [
695         ## assumes $PKG_CONFIG is defined
696         ## arg #1: action on success
697         ## arg #2: action on failure
698         pushdef([MM_SUCC], [$1])
699         pushdef([MM_FAIL], [$2])
700
701         AC_MSG_CHECKING([for libmagic/file support])
702         AC_MSG_RESULT([])
703
704         SXE_DUMP_LIBS
705         MM_SUCC
706         AC_CHECK_LIB([magic], [magic_open], [:], [MM_FAIL])
707         SXE_CHECK_HEADERS([magic.h], [:], [MM_FAIL])
708         SXE_CHECK_HEADERS([file.h])
709         SXE_RESTORE_LIBS
710
711         popdef([MM_SUCC])
712         popdef([MM_FAIL])
713 ])dnl SXE_MM_CHECK_MAGIC
714
715
716 AC_DEFUN([SXE_MM_CHECK_OSS], [
717         ## arg #1: action on success
718         ## arg #2: action on failure
719         pushdef([MM_SUCC], [$1])
720         pushdef([MM_FAIL], [$2])
721
722         AC_MSG_CHECKING([for OSS support])
723         AC_MSG_RESULT([])
724
725         SXE_DUMP_LIBS
726         MM_FAIL
727         SXE_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h linux/soundcard.h soundcard.h])
728         if test "$ac_cv_header_linux_soundcard_h"="yes" -o      \
729                 "$ac_cv_header_machine_soundcard_h"="yes" -o    \
730                 "$ac_cv_header_soundcard_h"="yes" -o            \
731                 "$ac_cv_header_sys_soundcard_h"="yes"
732         then
733                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
734 #if defined HAVE_MACHINE_SOUNDCARD_H && HAVE_MACHINE_SOUNDCARD_H
735 #include <machine/soundcard.h>
736 #elif defined HAVE_SYS_SOUNDCARD_H && HAVE_SYS_SOUNDCARD_H
737 #include <sys/soundcard.h>
738 #elif defined HAVE_LINUX_SOUNDCARD_H && HAVE_LINUX_SOUNDCARD_H
739 #include <linux/soundcard.h>
740 #else
741 #include <soundcard.h>
742 #endif
743 ]],
744                 [[ ioctl(0, SNDCTL_DSP_RESET, 0); ]])],
745                         [oss_ioctl_linked=yes],
746                         [oss_ioctl_linked=no])
747                 if test "${oss_ioctl_linked}" = "no"
748                 then
749                         if test "${opsys}" = "netbsd"
750                         then
751                                 AC_CHECK_LIB([ossaudio],[_oss_ioctl],
752                                         [
753                                                 # netbsd needs this Linux OSS emulator library, just a ioctl
754                                                 # wrapper really
755                                                 MM_SUCC
756                                                 SXE_PREPEND([-lossaudio], [MM_LIBS])
757                                         ])
758                         fi
759                 else
760                         MM_SUCC
761                 fi
762         fi
763         SXE_RESTORE_LIBS
764
765         popdef([MM_SUCC])
766         popdef([MM_FAIL])
767 ])dnl SXE_MM_CHECK_OSS
768
769 AC_DEFUN([SXE_MM_CHECK_PULSE], [
770         ## assumes $PKG_CONFIG is defined
771         ## arg #1: action on success
772         ## arg #2: action on failure
773
774         PKG_CHECK_MODULES([PULSE], [libpulse >= 2.0.0], [$1], [$2])
775 ])dnl SXE_MM_CHECK_PULSE
776
777 AC_DEFUN([SXE_MM_CHECK_JACK], [
778         ## assumes $PKG_CONFIG is defined
779         ## arg #1: action on success
780         ## arg #2: action on failure
781
782         _SXE_MM_CHECK_pkgconfig_based([jack], [jack], [0.98.0], [dnl
783                 jack_client_open jack_get_ports jack_port_register dnl
784                 jack_set_process_callback jack_set_error_function dnl
785                 jack_on_shutdown jack_activate jack_connect jack_disconnect dnl
786                 jack_client_close jack_port_get_buffer], [jack/jack.h], [$1], [$2])
787 ])dnl SXE_MM_CHECK_JACK
788
789 AC_DEFUN([SXE_MM_CHECK_AO], [
790         ## assumes $PKG_CONFIG is defined
791         ## arg #1: action on success
792         ## arg #2: action on failure
793
794         _SXE_MM_CHECK_pkgconfig_based([ao], [ao], [0.6], [dnl
795                 ao_initialize ao_driver_id ao_default_driver_id dnl
796                 ao_open_live ao_close ao_shutdown ao_play], [ao/ao.h], [$1], [$2])
797 ])dnl SXE_MM_CHECK_AO
798
799 AC_DEFUN([SXE_MM_CHECK_ESD], [
800         ## arg #1: action on success
801         ## arg #2: action on failure
802         SXE_SEARCH_CONFIG_PROG([esd-config])
803
804         pushdef([MM_SUCC], [$1])
805         pushdef([MM_FAIL], [$2])
806
807         AC_MSG_CHECKING([for ESD support])
808         AC_MSG_RESULT([])
809
810         if test "$have_esd_config" = "no" -o -z "$ESD_CONFIG"; then
811                 AS_MESSAGE([*** esd-config not found.])
812                 AS_MESSAGE([*** Cannot check for ESD.])
813                 have_esd_config=no
814                 ESD_CONFIG=
815                 MM_FAIL
816         fi
817
818         if test "$have_esd_config" = "yes"; then
819                 SXE_DUMP_LIBS
820                 ESD_CPPFLAGS="`$ESD_CONFIG --cflags`"
821                 ESD_LDFLAGS="-L`$ESD_CONFIG --libs`"
822                 dnl SXE_APPEND_UNDUP([$esd_c_switch], [c_switch_site])
823                 dnl SXE_PREPEND([$esd_libs], [LIBS])
824                 CPPFLAGS="$CPPFLAGS $ESD_CPPFLAGS"
825                 LDFLAGS="$LDFLAGS $ESD_LDFLAGS"
826
827                 MM_SUCC
828                 SXE_CHECK_HEADERS([esd.h], [:], [MM_FAIL])
829                 AC_CHECK_LIB([esd], [esd_play_stream], [:], [MM_FAIL], [$esd_libs])
830
831                 ## restore anything
832                 SXE_RESTORE_LIBS
833         fi
834
835         popdef([MM_SUCC])
836         popdef([MM_FAIL])
837 ])dnl SXE_MM_CHECK_ESD
838
839 AC_DEFUN([SXE_MM_CHECK_ALSA], [
840         ## call like this SXE_MM_CHECK_ALSA([<if-found>], [<if-not-found>])
841         ## defines HAVE_ALSA, HAVE_ALSA_SOUND
842         ## and sxe_cv_feat_alsa
843         pushdef([ACTION_IF_FOUND], [$1])
844         pushdef([ACTION_IF_NOT_FOUND], [$2])
845
846         AC_CACHE_CHECK([for ALSA support],
847                 [sxe_cv_feat_alsa], [_SXE_MM_CHECK_ALSA])
848
849         if test "$sxe_cv_feat_alsa" = "yes"; then
850                 AC_DEFINE([HAVE_ALSA], [1],
851                         [Whether ALSA can be used as sound device])
852                 AC_DEFINE([HAVE_ALSA_SOUND], [1],
853                         [Whether ALSA can be used as sound device])
854                 ACTION_IF_FOUND
855                 :
856         else
857                 ACTION_IF_NOT_FOUND
858                 :
859         fi
860         popdef([ACTION_IF_FOUND])
861         popdef([ACTION_IF_NOT_FOUND])
862 ])dnl SXE_MM_CHECK_ALSA
863
864 AC_DEFUN([_SXE_MM_CHECK_ALSA], [dnl
865
866         AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
867         AC_REQUIRE([SXE_CHECK_ALSA_VERSION])
868         AC_REQUIRE([SXE_CHECK_ALSA_LIBS])
869
870         if test "$ac_cv_header_alsa_input_h" = "yes" -a \
871                 "$ac_cv_header_alsa_output_h" = "yes" -a \
872                 "$ac_cv_header_alsa_global_h" = "yes" -a \
873                 "$ac_cv_header_alsa_conf_h" = "yes" -a \
874                 "$ac_cv_header_alsa_pcm_h" = "yes" -a \
875                 "$ac_cv_header_alsa_error_h" = "yes" -a \
876                 \
877                 "$sxe_mm_alsa_version_supported_p" = "yes" -a \
878                 \
879                 "$ac_cv_lib_asound_snd_pcm_close" = "yes" -a \
880                 "$ac_cv_lib_asound_snd_pcm_hw_free" = "yes" -a \
881                 "$ac_cv_lib_asound_snd_pcm_hw_params_any" = "yes" -a \
882                 "$ac_cv_lib_asound_snd_pcm_hw_params_free" = "yes" -a \
883                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_access" = "yes" -a \
884                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_channels" = "yes" -a \
885                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_format" = "yes" -a \
886                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_rate_near" = "yes" -a \
887                 "$ac_cv_lib_asound_snd_pcm_hw_params_test_channels" = "yes" -a \
888                 "$ac_cv_lib_asound_snd_pcm_hw_params_test_format" = "yes" -a \
889                 "$ac_cv_lib_asound_snd_pcm_open" = "yes" -a \
890                 "$ac_cv_lib_asound_snd_pcm_prepare" = "yes" -a \
891                 "$ac_cv_lib_asound_snd_pcm_writei" = "yes"; then
892                 sxe_cv_feat_alsa="yes"
893         else
894                 sxe_cv_feat_alsa="no"
895         fi
896 ])dnl _SXE_MM_CHECK_ALSA
897
898 AC_DEFUN([SXE_CHECK_ALSA_HEADERS], [dnl
899         ## dump the current configuration
900         SXE_DUMP_LIBS
901         SXE_LANG_WERROR([off])
902         SXE_CHECK_HEADERS([alsa/input.h alsa/output.h alsa/global.h])
903         SXE_CHECK_HEADERS([alsa/conf.h], [:], [:], [[
904 #include <stdlib.h>
905 #include <stdio.h>
906 #if defined HAVE_ALSA_INPUT_H
907 # include <alsa/input.h>
908 #endif
909 #if defined HAVE_ALSA_OUTPUT_H
910 # include <alsa/output.h>
911 #endif
912 #if defined HAVE_ALSA_GLOBAL_H
913 # include <alsa/global.h>
914 #endif
915 ]])
916         SXE_CHECK_HEADERS([alsa/pcm.h alsa/error.h alsa/version.h], [:], [:], [[
917 #include <stdlib.h>
918 #include <stdio.h>
919 #if defined HAVE_ALSA_INPUT_H
920 # include <alsa/input.h>
921 #endif
922 #if defined HAVE_ALSA_OUTPUT_H
923 # include <alsa/output.h>
924 #endif
925 #if defined HAVE_ALSA_GLOBAL_H
926 # include <alsa/global.h>
927 #endif
928 #if defined HAVE_ALSA_CONF_H
929 # include <alsa/conf.h>
930 #endif
931 ]])
932         ## restor everything
933         SXE_RESTORE_LIBS
934 ])dnl SXE_CHECK_ALSA_HEADERS
935
936 AC_DEFUN([SXE_CHECK_ALSA_VERSION], [dnl
937         AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
938
939         ## dump the configuration
940         SXE_DUMP_LIBS
941         SXE_LANG_WERROR([off])
942         AC_MSG_CHECKING([for alsa version])
943
944         AC_RUN_IFELSE([AC_LANG_SOURCE([[
945 #include <stdlib.h>
946 #include <stdio.h>
947 #if defined HAVE_ALSA_INPUT_H
948 # include <alsa/input.h>
949 #endif
950 #if defined HAVE_ALSA_OUTPUT_H
951 # include <alsa/output.h>
952 #endif
953 #if defined HAVE_ALSA_GLOBAL_H
954 # include <alsa/global.h>
955 #endif
956 #if defined HAVE_ALSA_CONF_H
957 # include <alsa/conf.h>
958 #endif
959 #if defined HAVE_ALSA_PCM_H
960 # include <alsa/pcm.h>
961 #endif
962 #if defined HAVE_ALSA_ERROR_H
963 # include <alsa/error.h>
964 #endif
965 #if defined HAVE_ALSA_CONF_H
966 # include <alsa/version.h>
967 #endif
968
969 int main(int c, char *v[])
970 {
971         fprintf(stdout, SND_LIB_VERSION_STR);
972         return 0;
973 }]])], dnl [./conftest; alsa_subminor=$?],[alsa_subminor=$?],[alsa_subminor=0]
974         [sxe_mm_alsa_version=$(./conftest)],
975         [:], [sxe_mm_alsa_version="undeterminable"])
976
977         case "${sxe_mm_alsa_version}" in
978         0.*.* | 1.0.3* | 1.0.9* )
979                 AC_MSG_RESULT([${sxe_mm_alsa_version} (known to break)])
980                 AC_MSG_WARN([Your ALSA version is _KNOWN_ to fail! Do not say we have not warned you!])
981                 sxe_mm_alsa_version_supported_p="no"
982                 ;;
983         1.0.2 | 1.0.4* | 1.0.5* | 1.0.6* | 1.0.7* | 1.0.8* )
984                 AC_MSG_RESULT([${sxe_mm_alsa_version} (suspicious to break)])
985                 AC_MSG_WARN([Your ALSA version has not been tested. Do not be surprised if it fails!])
986                 sxe_mm_alsa_version_supported_p="no"
987                 ;;
988         1.0.10* | 1.0.11* | 1.0.12* | 1.0.13* | 1.0.14* | 1.0.15* | 1.0.16* )
989                 AC_MSG_RESULT([${sxe_mm_alsa_version} (sane)])
990                 sxe_mm_alsa_version_supported_p="yes"
991                 ;;
992         1.* )
993                 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
994                 AC_MSG_NOTICE([Your ALSA version is unknown, however we are confident that it works.])
995                 AC_MSG_NOTICE([However, if we screwed up something, please report back!])
996                 sxe_mm_alsa_version_supported_p="yes"
997                 ;;
998         * )
999                 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
1000                 AC_MSG_WARN([Your ALSA version is unknown hence not supported!])
1001                 sxe_mm_alsa_version_supported_p="no"
1002                 ;;
1003         esac
1004
1005         ## restore everything
1006         SXE_RESTORE_LIBS
1007 ])dnl SXE_CHECK_ALSA_VERSION
1008
1009 AC_DEFUN([SXE_CHECK_ALSA_LIBS], [dnl
1010         ## dump the current configuration
1011         SXE_DUMP_LIBS
1012
1013         AC_CHECK_LIB([asound], [snd_pcm_open], [:], [:])
1014         AC_CHECK_LIB([asound], [snd_pcm_close], [:], [:])
1015         AC_CHECK_LIB([asound], [snd_pcm_hw_free], [:], [:])
1016         AC_CHECK_LIB([asound], [snd_pcm_hw_params_any], [:], [:])
1017         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_access], [:], [:])
1018         AC_CHECK_LIB([asound], [snd_pcm_hw_params_free], [:], [:])
1019         AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_channels], [:], [:])
1020         AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_format], [:], [:])
1021         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_channels], [:], [:])
1022         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_format], [:], [:])
1023         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_rate_near], [:], [:])
1024         AC_CHECK_LIB([asound], [snd_pcm_prepare], [:], [:])
1025         AC_CHECK_LIB([asound], [snd_pcm_writei], [:], [:])
1026
1027         ## restore everything
1028         SXE_RESTORE_LIBS
1029 ])dnl SXE_CHECK_ALSA_LIBS
1030
1031
1032
1033 AC_DEFUN([SXE_MM_CHECK_NAS], [
1034         ## arg #1: action on success
1035         ## arg #2: action on failure
1036         pushdef([MM_SUCC], [$1])
1037         pushdef([MM_FAIL], [$2])
1038
1039         AC_MSG_CHECKING([for NAS support])
1040         AC_MSG_RESULT([])
1041
1042         SXE_DUMP_LIBS
1043
1044         MM_SUCC
1045         ## NAS is often stored inside the X hierarchy, so ...
1046         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1047         LDFLAGS="$LDFLAGS $X_LIBS"
1048         SXE_CHECK_HEADERS([audio/audiolib.h], [:], [MM_FAIL])
1049         AC_CHECK_LIB([audio], [AuOpenServer], [:], [MM_FAIL])
1050         AC_CHECK_LIB([audio], [AuCloseServer], [:], [MM_FAIL])
1051         AC_CHECK_LIB([audio], [AuCreateFlow], [:], [MM_FAIL])
1052         AC_CHECK_LIB([audio], [AuStartFlow], [:], [MM_FAIL])
1053         AC_CHECK_LIB([audio], [AuStopFlow], [:], [MM_FAIL])
1054         AC_CHECK_LIB([audio], [AuScanForTypedEvent], [:], [MM_FAIL])
1055         AC_CHECK_LIB([audio], [AuDispatchEvent], [:], [MM_FAIL])
1056         AC_CHECK_LIB([audio], [AuSetErrorHandler], [:], [MM_FAIL])
1057         AC_CHECK_LIB([audio], [AuSetIOErrorHandler], [:], [MM_FAIL])
1058         AC_CHECK_LIB([audio], [AuWriteElement], [:], [MM_FAIL])
1059         AC_CHECK_LIB([audio], [AuSetElements], [:], [MM_FAIL])
1060         AC_CHECK_LIB([audio], [AuRegisterEventHandler], [:], [MM_FAIL])
1061         AC_CHECK_LIB([audio], [AuSetElementParameters], [:], [MM_FAIL])
1062
1063         dnl If the nas library does not contain the error jump point,
1064         dnl then we force safer behavior.
1065         AC_EGREP_HEADER([AuXtErrorJump], [audio/Xtutil.h], [], [old_nas=yes])
1066         if test "$old_nas" = "yes"; then
1067                 AC_DEFINE([NAS_NO_ERROR_JUMP], [1], [Description here!])
1068         fi
1069
1070         ## restore anything
1071         SXE_RESTORE_LIBS
1072
1073         popdef([MM_SUCC])
1074         popdef([MM_FAIL])
1075 ])dnl SXE_MM_CHECK_NAS
1076
1077 dnl sxe-mm.m4 ends here