Update PUI to use ffi-curl
[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_avformat_av_get_sample_fmt_string" = "yes" -a \
392                 "$ac_cv_lib_avformat_av_get_bytes_per_sample" = "yes" -a \
393                 "$ac_cv_lib_avcodec_avcodec_find_decoder" = "yes" -a \
394                 "$ac_cv_lib_avcodec_avcodec_open2" = "yes" -a \
395                 "$ac_cv_lib_avutil_av_dict_get" = "yes"; then
396                 sxe_cv_feat_ffmpeg="yes"
397         else
398                 sxe_cv_feat_ffmpeg="no"
399         fi
400
401         if test "$sxe_cv_feat_ffmpeg" = "yes"; then
402                 :
403                 ACTION_IF_FOUND
404         else
405                 :
406                 ACTION_IF_NOT_FOUND
407         fi
408
409         popdef([ACTION_IF_FOUND])
410         popdef([ACTION_IF_NOT_FOUND])
411 ])dnl SXE_MM_CHECK_FFMPEG
412
413 AC_DEFUN([SXE_CHECK_FFMPEG_HEADERS], [dnl
414         FFMPEG_CPPFLAGS="$(${PKG_CONFIG} --cflags libavformat libavcodec libavutil)"
415
416         ## backup current configuration
417         SXE_DUMP_LIBS
418         CPPFLAGS="${CPPFLAGS} ${FFMPEG_CPPFLAGS}"
419         AC_CHECK_HEADERS([avformat.h avcodec.h])
420         AC_CHECK_HEADERS([ffmpeg/avformat.h ffmpeg/avcodec.h])
421         AC_CHECK_HEADERS([ffmpeg/dict.h ffmpeg/time.h])
422         AC_CHECK_HEADERS([libavformat/avformat.h libavcodec/avcodec.h])
423         AC_CHECK_HEADERS([libavutil/dict.h libavutil/time.h])
424
425         ## restore configuration
426         SXE_RESTORE_LIBS
427 ])dnl SXE_CHECK_FFMPEG_HEADERS
428
429 AC_DEFUN([SXE_CHECK_FFMPEG_LIBS], [dnl
430         FFMPEG_LDFLAGS="$(${PKG_CONFIG} --libs-only-other libavformat libavcodec libavutil) \
431                 $(${PKG_CONFIG} --libs-only-L libavformat libavcodec libavutil)"
432         FFMPEG_LIBS="$(${PKG_CONFIG} --libs-only-l libavformat libavcodec libavutil)"
433
434         ## backup current configuration
435         SXE_DUMP_LIBS
436         LDFLAGS="${LDFLAGS} ${FFMPEG_LDFLAGS}"
437
438         AC_CHECK_LIB([avcodec], [avcodec_find_decoder], [:], [:], [${FFMPEG_LIBS}])
439         AC_CHECK_LIB([avcodec], [avcodec_open2], [:], [:], [${FFMPEG_LIBS}])
440         AC_CHECK_LIB([avcodec], [avcodec_decode_audio], [:], [:], [${FFMPEG_LIBS}])
441         AC_CHECK_LIB([avcodec], [avcodec_decode_audio2], [:], [:], [${FFMPEG_LIBS}])
442         AC_CHECK_LIB([avcodec], [avcodec_decode_audio3], [:], [:], [${FFMPEG_LIBS}])
443         AC_CHECK_LIB([avcodec], [avcodec_decode_audio4], [:], [:], [${FFMPEG_LIBS}])
444
445         AC_CHECK_LIB([avformat], [avformat_open_input], [:], [:], [${FFMPEG_LIBS}])
446         AC_CHECK_LIB([avformat], [avformat_close_input], [:], [:], [${FFMPEG_LIBS}])
447         AC_CHECK_LIB([avformat], [avformat_find_stream_info], [:], [:], [${FFMPEG_LIBS}])
448         AC_CHECK_LIB([avformat], [av_iformat_next], [:], [:], [${FFMPEG_LIBS}])
449         AC_CHECK_LIB([avformat], [av_probe_input_format], [:], [:], [${FFMPEG_LIBS}])
450         AC_CHECK_LIB([avformat], [av_read_frame], [:], [:], [${FFMPEG_LIBS}])
451         AC_CHECK_LIB([avformat], [av_seek_frame], [:], [:], [${FFMPEG_LIBS}])
452         AC_CHECK_LIB([avformat], [av_register_all], [:], [:], [${FFMPEG_LIBS}])
453         AC_CHECK_LIB([avformat], [av_dump_format], [:], [:], [${FFMPEG_LIBS}])
454         AC_CHECK_LIB([avformat], [av_get_bytes_per_sample], [:], [:], [${FFMPEG_LIBS}])
455         AC_CHECK_LIB([avformat], [av_get_sample_fmt_string], [:], [:], [${FFMPEG_LIBS}])
456         AC_CHECK_LIB([avformat], [avformat_alloc_context], [:], [:], [${FFMPEG_LIBS}])
457         AC_CHECK_LIB([avformat], [avformat_free_context], [:], [:], [${FFMPEG_LIBS}])
458         AC_CHECK_LIB([avformat], [avio_alloc_context], [:], [:], [${FFMPEG_LIBS}])
459         AC_CHECK_LIB([avformat], [avio_size], [:], [:], [${FFMPEG_LIBS}])
460         AC_CHECK_LIB([avformat], [avio_feof], [:], [:], [${FFMPEG_LIBS}])
461
462         AC_CHECK_LIB([avutil], [av_dict_get], [:], [:], [${FFMPEG_LIBS}])
463
464         if test "$ac_cv_lib_avcodec_avcodec_decode_audio" = "yes"; then
465                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO], [1],
466                           [Define to 1 if avcodec_decode_audio is usable.])
467         fi
468         if test "$ac_cv_lib_avcodec_avcodec_decode_audio2" = "yes"; then
469                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO2], [1],
470                           [Define to 1 if avcodec_decode_audio2 is usable.])
471         fi
472         if test "$ac_cv_lib_avcodec_avcodec_decode_audio3" = "yes"; then
473                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO3], [1],
474                           [Define to 1 if avcodec_decode_audio is usable.])
475         fi
476         if test "$ac_cv_lib_avcodec_avcodec_decode_audio4" = "yes"; then
477                 AC_DEFINE([HAVE_AVCODEC_DECODE_AUDIO4], [1],
478                           [Define to 1 if avcodec_decode_audio is usable.])
479         fi
480
481         ## restore configuration
482         SXE_RESTORE_LIBS
483 ])dnl SXE_CHECK_FFMPEG_LIBS
484
485
486 dnl
487 dnl SoX
488 dnl ===
489 AC_DEFUN([SXE_MM_CHECK_SOX], [dnl
490         ## call like this SXE_MM_CHECK_SOX([<if-found>], [<if-not-found>])
491         ## arg #1: action on success
492         ## arg #2: action on failure
493         pushdef([ACTION_IF_FOUND], [$1])
494         pushdef([ACTION_IF_NOT_FOUND], [$2])
495
496         AC_CACHE_CHECK([for SoX support], [sxe_cv_feat_sox], [_SXE_CHECK_SOX])
497
498         if test "$sxe_cv_feat_sox" = "yes"; then
499                 ACTION_IF_FOUND
500                 :
501         else
502                 ACTION_IF_NOT_FOUND
503                 :
504         fi
505
506         popdef([ACTION_IF_FOUND])
507         popdef([ACTION_IF_NOT_FOUND])
508 ])dnl SXE_MM_CHECK_SOX
509
510 AC_DEFUN([_SXE_CHECK_SOX], [dnl
511         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
512
513         if test "$have_smelly_sox" = "yes"; then
514                 sxe_cv_feat_sox="no"
515         else
516                 SXE_CHECK_SOX_HEADERS
517                 SXE_CHECK_SOX_LIBS
518                 SXE_CHECK_SOX_STRUCTS
519
520                 if test "$ac_cv_lib_sox_sox_open_read" = "yes" -a \
521                         "$ac_cv_lib_sox_sox_close" = "yes" -a \
522                         "$ac_cv_lib_sox_sox_seek" = "yes" -a \
523                         "$ac_cv_header_sox_h" = "yes" -a \
524                         "$ac_cv_type_sox_format_t" = "yes" -a \
525                         "$ac_cv_type_struct_sox_format_t" = "yes" -a \
526                         "$sxe_cv_mm_sox_open_read_fooked" != "yes"; then
527                         sxe_cv_feat_sox="yes"
528                 else
529                         sxe_cv_feat_sox="no"
530                 fi
531                 :
532         fi
533 ])dnl _SXE_CHECK_SOX
534
535 AC_DEFUN([SXE_CHECK_SOX_LOCATIONS], [dnl
536         PKG_CHECK_MODULES([SOX], [sox >= 14.1.0], [dnl
537                 have_smelly_sox="no"
538                 sox_cppflags="$SOX_CFLAGS"
539                 sox_ldflags=
540                 sox_libs="$SOX_LIBS"], [dnl
541                 have_smelly_sox="yes"
542                 AC_MSG_WARN([Your SoX is too old or non-existant. You need >= 14.1.0])])
543 ])dnl SXE_CHECK_SOX_PLACES
544
545 AC_DEFUN([SXE_PUMP_SOX_LOCATIONS], [dnl
546         SXE_DUMP_LIBS
547         CPPFLAGS="$CPPFLAGS $sox_cppflags"
548         LDFLAGS="$LDFLAGS $sox_ldflags"
549         LIBS="$LIBS $sox_libs"
550 ])dnl SXE_PUMP_SOX_LOCATIONS
551
552 AC_DEFUN([SXE_DUMP_SOX_LOCATIONS], [dnl
553         SXE_RESTORE_LIBS
554 ])dnl SXE_DUMP_SOX_LOCATIONS
555
556 AC_DEFUN([SXE_CHECK_SOX_HEADERS], [dnl
557         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
558         SXE_PUMP_SOX_LOCATIONS
559         AC_CHECK_HEADERS([sox.h])
560         SXE_DUMP_SOX_LOCATIONS
561 ])dnl SXE_CHECK_SOX_HEADERS
562
563 AC_DEFUN([SXE_CHECK_SOX_LIBS], [dnl
564         AC_REQUIRE([SXE_CHECK_SOX_LOCATIONS])
565
566         echo "void cleanup(void) {}" > cleanup.c
567         $CC -c -o cleanup.o cleanup.c
568
569         SXE_PUMP_SOX_LOCATIONS
570         ## checks for the spankin' new sox
571         AC_CHECK_LIB([sox], [sox_open_read], [:], [:],
572                 [cleanup.o $sox_ldflags $sox_libs])
573         AC_CHECK_LIB([sox], [sox_close], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
574         AC_CHECK_LIB([sox], [sox_read], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
575         AC_CHECK_LIB([sox], [sox_seek], [:], [:], [cleanup.o $sox_ldflags $sox_libs])
576
577         SXE_DUMP_SOX_LOCATIONS
578
579         SXE_DUMP_LIBS
580         CPPFLAGS="$CPPFLAGS ${SOX_CPPFLAGS}"
581         SXE_LANG_WERROR([on])
582         SXE_MSG_CHECKING([whether sox_open_read() takes 4 arguments])
583         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
584 #if defined HAVE_ERRNO_H
585 # include <errno.h>
586 #endif
587 #if defined HAVE_SOX_H
588 # include <sox.h>
589 #endif
590                 ]], [
591                 sox_open_read("tmp", NULL, NULL, NULL);
592                 ])],
593                 [sxe_cv_mm_sox_open_read_4args="yes"],
594                 [sxe_cv_mm_sox_open_read_4args="no"])
595         SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_4args])
596
597         SXE_MSG_CHECKING([whether sox_open_read() takes 3 arguments])
598         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
599 #if defined HAVE_ERRNO_H
600 # include <errno.h>
601 #endif
602 #if defined HAVE_SOX_H
603 # include <sox.h>
604 #endif
605                 ]], [
606                 sox_open_read("tmp", NULL, NULL);
607                 ])],
608                 [sxe_cv_mm_sox_open_read_3args="yes"],
609                 [sxe_cv_mm_sox_open_read_3args="no"])
610         SXE_MSG_RESULT([$sxe_cv_mm_sox_open_read_3args])
611         SXE_RESTORE_LIBS
612
613         if test "$sxe_cv_mm_sox_open_read_3args" = "yes"; then
614                 AC_DEFINE([HAVE_SOX_OPEN_READ_3ARGS], [1],
615                         [Whether sox_open_read() takes 3 arguments.])
616                 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [3],
617                         [How many arguments sox_open_read() takes.])
618         elif test "$sxe_cv_mm_sox_open_read_4args" = "yes"; then
619                 AC_DEFINE([HAVE_SOX_OPEN_READ_4ARGS], [1],
620                         [Whether sox_open_read() takes 4 arguments.])
621                 AC_DEFINE([HAVE_SOX_OPEN_READ_NARGS], [4],
622                         [How many arguments sox_open_read() takes.])
623         else
624                 AC_MSG_NOTICE([
625 Very weird SoX you've got there.
626 I better disable SoX on your behalf.
627                         ])
628                 sxe_cv_mm_sox_open_read_fooked="yes"
629         fi
630
631         ## clean up our cleanup snack
632         rm -f cleanup.c cleanup.o
633 ])dnl SXE_CHECK_SOX_LIBS
634
635 AC_DEFUN([SXE_CHECK_SOX_STRUCTS], [dnl
636         ## the new structs
637         AC_CHECK_TYPES([sox_format_t], [:], [:], [
638 #ifdef HAVE_SOX_H
639 # include <sox.h>
640 #endif
641                 ])
642         AC_CHECK_TYPES([sox_ssize_t], [:], [:], [
643 #ifdef HAVE_SOX_H
644 # include <sox.h>
645 #endif
646                 ])
647         AC_CHECK_TYPES([sox_sample_t], [:], [:], [
648 #ifdef HAVE_SOX_H
649 # include <sox.h>
650 #endif
651                 ])
652         AC_CHECK_TYPES([sox_signalinfo_t], [:], [:], [
653 #if defined HAVE_SOX_H
654 # include <sox.h>
655 #endif
656                 ])
657         AC_CHECK_TYPES([struct sox_format_t], [:], [:], [
658 #ifdef HAVE_SOX_H
659 # include <sox.h>
660 #endif
661                 ])
662         AC_CHECK_MEMBERS([struct sox_format_t.signal], [:], [:], [
663 #ifdef HAVE_SOX_H
664 # include <sox.h>
665 #endif
666                 ])
667
668         AC_CHECK_MEMBERS([sox_signalinfo_t.precision], [:], [:], [
669 #ifdef HAVE_SOX_H
670 # include <sox.h>
671 #endif
672                 ])
673 ])dnl SXE_CHECK_SOX_STRUCTS
674
675 \f
676 AC_DEFUN([SXE_MM_CHECK_MAD], [
677         ## arg #1: action on success
678         ## arg #2: action on failure
679         pushdef([MM_SUCC], [$1])
680         pushdef([MM_FAIL], [$2])
681
682         AC_MSG_CHECKING([for mad support])
683         AC_MSG_RESULT([])
684
685         MM_SUCC
686         SXE_CHECK_HEADERS([mad.h], [:], [MM_FAIL])
687         AC_CHECK_LIB([mad], [mad_synth_init], [:], [MM_FAIL])
688         AC_CHECK_LIB([mad], [mad_stream_init], [:], [MM_FAIL])
689         AC_CHECK_LIB([mad], [mad_frame_init], [:], [MM_FAIL])
690         AC_CHECK_LIB([mad], [mad_synth_frame], [:], [MM_FAIL])
691         AC_CHECK_LIB([mad], [mad_stream_buffer], [:], [MM_FAIL])
692         AC_CHECK_LIB([mad], [mad_frame_decode], [:], [MM_FAIL])
693
694         popdef([MM_SUCC])
695         popdef([MM_FAIL])
696 ])dnl SXE_MM_CHECK_MAD
697
698 AC_DEFUN([SXE_MM_CHECK_MAGIC], [
699         ## assumes $PKG_CONFIG is defined
700         ## arg #1: action on success
701         ## arg #2: action on failure
702         pushdef([MM_SUCC], [$1])
703         pushdef([MM_FAIL], [$2])
704
705         AC_MSG_CHECKING([for libmagic/file support])
706         AC_MSG_RESULT([])
707
708         SXE_DUMP_LIBS
709         MM_SUCC
710         AC_CHECK_LIB([magic], [magic_open], [:], [MM_FAIL])
711         SXE_CHECK_HEADERS([magic.h], [:], [MM_FAIL])
712         SXE_CHECK_HEADERS([file.h])
713         SXE_RESTORE_LIBS
714
715         popdef([MM_SUCC])
716         popdef([MM_FAIL])
717 ])dnl SXE_MM_CHECK_MAGIC
718
719
720 AC_DEFUN([SXE_MM_CHECK_OSS], [
721         ## arg #1: action on success
722         ## arg #2: action on failure
723         pushdef([MM_SUCC], [$1])
724         pushdef([MM_FAIL], [$2])
725
726         AC_MSG_CHECKING([for OSS support])
727         AC_MSG_RESULT([])
728
729         SXE_DUMP_LIBS
730         MM_FAIL
731         SXE_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h linux/soundcard.h soundcard.h])
732         if test "$ac_cv_header_linux_soundcard_h"="yes" -o      \
733                 "$ac_cv_header_machine_soundcard_h"="yes" -o    \
734                 "$ac_cv_header_soundcard_h"="yes" -o            \
735                 "$ac_cv_header_sys_soundcard_h"="yes"
736         then
737                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
738 #if defined HAVE_MACHINE_SOUNDCARD_H && HAVE_MACHINE_SOUNDCARD_H
739 #include <machine/soundcard.h>
740 #elif defined HAVE_SYS_SOUNDCARD_H && HAVE_SYS_SOUNDCARD_H
741 #include <sys/soundcard.h>
742 #elif defined HAVE_LINUX_SOUNDCARD_H && HAVE_LINUX_SOUNDCARD_H
743 #include <linux/soundcard.h>
744 #else
745 #include <soundcard.h>
746 #endif
747 ]],
748                 [[ ioctl(0, SNDCTL_DSP_RESET, 0); ]])],
749                         [oss_ioctl_linked=yes],
750                         [oss_ioctl_linked=no])
751                 if test "${oss_ioctl_linked}" = "no"
752                 then
753                         if test "${opsys}" = "netbsd"
754                         then
755                                 AC_CHECK_LIB([ossaudio],[_oss_ioctl],
756                                         [
757                                                 # netbsd needs this Linux OSS emulator library, just a ioctl
758                                                 # wrapper really
759                                                 MM_SUCC
760                                                 SXE_PREPEND([-lossaudio], [MM_LIBS])
761                                         ])
762                         fi
763                 else
764                         MM_SUCC
765                 fi
766         fi
767         SXE_RESTORE_LIBS
768
769         popdef([MM_SUCC])
770         popdef([MM_FAIL])
771 ])dnl SXE_MM_CHECK_OSS
772
773 AC_DEFUN([SXE_MM_CHECK_PULSE], [
774         ## assumes $PKG_CONFIG is defined
775         ## arg #1: action on success
776         ## arg #2: action on failure
777
778         PKG_CHECK_MODULES([PULSE], [libpulse >= 2.0.0], [$1], [$2])
779 ])dnl SXE_MM_CHECK_PULSE
780
781 AC_DEFUN([SXE_MM_CHECK_JACK], [
782         ## assumes $PKG_CONFIG is defined
783         ## arg #1: action on success
784         ## arg #2: action on failure
785
786         _SXE_MM_CHECK_pkgconfig_based([jack], [jack], [0.98.0], [dnl
787                 jack_client_open jack_get_ports jack_port_register dnl
788                 jack_set_process_callback jack_set_error_function dnl
789                 jack_on_shutdown jack_activate jack_connect jack_disconnect dnl
790                 jack_client_close jack_port_get_buffer], [jack/jack.h], [$1], [$2])
791 ])dnl SXE_MM_CHECK_JACK
792
793 AC_DEFUN([SXE_MM_CHECK_AO], [
794         ## assumes $PKG_CONFIG is defined
795         ## arg #1: action on success
796         ## arg #2: action on failure
797
798         _SXE_MM_CHECK_pkgconfig_based([ao], [ao], [0.6], [dnl
799                 ao_initialize ao_driver_id ao_default_driver_id dnl
800                 ao_open_live ao_close ao_shutdown ao_play], [ao/ao.h], [$1], [$2])
801 ])dnl SXE_MM_CHECK_AO
802
803 AC_DEFUN([SXE_MM_CHECK_ESD], [
804         ## arg #1: action on success
805         ## arg #2: action on failure
806         SXE_SEARCH_CONFIG_PROG([esd-config])
807
808         pushdef([MM_SUCC], [$1])
809         pushdef([MM_FAIL], [$2])
810
811         AC_MSG_CHECKING([for ESD support])
812         AC_MSG_RESULT([])
813
814         if test "$have_esd_config" = "no" -o -z "$ESD_CONFIG"; then
815                 AS_MESSAGE([*** esd-config not found.])
816                 AS_MESSAGE([*** Cannot check for ESD.])
817                 have_esd_config=no
818                 ESD_CONFIG=
819                 MM_FAIL
820         fi
821
822         if test "$have_esd_config" = "yes"; then
823                 SXE_DUMP_LIBS
824                 ESD_CPPFLAGS="`$ESD_CONFIG --cflags`"
825                 ESD_LDFLAGS="-L`$ESD_CONFIG --libs`"
826                 dnl SXE_APPEND_UNDUP([$esd_c_switch], [c_switch_site])
827                 dnl SXE_PREPEND([$esd_libs], [LIBS])
828                 CPPFLAGS="$CPPFLAGS $ESD_CPPFLAGS"
829                 LDFLAGS="$LDFLAGS $ESD_LDFLAGS"
830
831                 MM_SUCC
832                 SXE_CHECK_HEADERS([esd.h], [:], [MM_FAIL])
833                 AC_CHECK_LIB([esd], [esd_play_stream], [:], [MM_FAIL], [$esd_libs])
834
835                 ## restore anything
836                 SXE_RESTORE_LIBS
837         fi
838
839         popdef([MM_SUCC])
840         popdef([MM_FAIL])
841 ])dnl SXE_MM_CHECK_ESD
842
843 AC_DEFUN([SXE_MM_CHECK_ALSA], [
844         ## call like this SXE_MM_CHECK_ALSA([<if-found>], [<if-not-found>])
845         ## defines HAVE_ALSA, HAVE_ALSA_SOUND
846         ## and sxe_cv_feat_alsa
847         pushdef([ACTION_IF_FOUND], [$1])
848         pushdef([ACTION_IF_NOT_FOUND], [$2])
849
850         AC_CACHE_CHECK([for ALSA support],
851                 [sxe_cv_feat_alsa], [_SXE_MM_CHECK_ALSA])
852
853         if test "$sxe_cv_feat_alsa" = "yes"; then
854                 AC_DEFINE([HAVE_ALSA], [1],
855                         [Whether ALSA can be used as sound device])
856                 AC_DEFINE([HAVE_ALSA_SOUND], [1],
857                         [Whether ALSA can be used as sound device])
858                 ACTION_IF_FOUND
859                 :
860         else
861                 ACTION_IF_NOT_FOUND
862                 :
863         fi
864         popdef([ACTION_IF_FOUND])
865         popdef([ACTION_IF_NOT_FOUND])
866 ])dnl SXE_MM_CHECK_ALSA
867
868 AC_DEFUN([_SXE_MM_CHECK_ALSA], [dnl
869
870         AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
871         AC_REQUIRE([SXE_CHECK_ALSA_VERSION])
872         AC_REQUIRE([SXE_CHECK_ALSA_LIBS])
873
874         if test "$ac_cv_header_alsa_input_h" = "yes" -a \
875                 "$ac_cv_header_alsa_output_h" = "yes" -a \
876                 "$ac_cv_header_alsa_global_h" = "yes" -a \
877                 "$ac_cv_header_alsa_conf_h" = "yes" -a \
878                 "$ac_cv_header_alsa_pcm_h" = "yes" -a \
879                 "$ac_cv_header_alsa_error_h" = "yes" -a \
880                 \
881                 "$sxe_mm_alsa_version_supported_p" = "yes" -a \
882                 \
883                 "$ac_cv_lib_asound_snd_pcm_close" = "yes" -a \
884                 "$ac_cv_lib_asound_snd_pcm_hw_free" = "yes" -a \
885                 "$ac_cv_lib_asound_snd_pcm_hw_params_any" = "yes" -a \
886                 "$ac_cv_lib_asound_snd_pcm_hw_params_free" = "yes" -a \
887                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_access" = "yes" -a \
888                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_channels" = "yes" -a \
889                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_format" = "yes" -a \
890                 "$ac_cv_lib_asound_snd_pcm_hw_params_set_rate_near" = "yes" -a \
891                 "$ac_cv_lib_asound_snd_pcm_hw_params_test_channels" = "yes" -a \
892                 "$ac_cv_lib_asound_snd_pcm_hw_params_test_format" = "yes" -a \
893                 "$ac_cv_lib_asound_snd_pcm_open" = "yes" -a \
894                 "$ac_cv_lib_asound_snd_pcm_prepare" = "yes" -a \
895                 "$ac_cv_lib_asound_snd_pcm_writei" = "yes"; then
896                 sxe_cv_feat_alsa="yes"
897         else
898                 sxe_cv_feat_alsa="no"
899         fi
900 ])dnl _SXE_MM_CHECK_ALSA
901
902 AC_DEFUN([SXE_CHECK_ALSA_HEADERS], [dnl
903         ## dump the current configuration
904         SXE_DUMP_LIBS
905         SXE_LANG_WERROR([off])
906         SXE_CHECK_HEADERS([alsa/input.h alsa/output.h alsa/global.h])
907         SXE_CHECK_HEADERS([alsa/conf.h], [:], [:], [[
908 #include <stdlib.h>
909 #include <stdio.h>
910 #if defined HAVE_ALSA_INPUT_H
911 # include <alsa/input.h>
912 #endif
913 #if defined HAVE_ALSA_OUTPUT_H
914 # include <alsa/output.h>
915 #endif
916 #if defined HAVE_ALSA_GLOBAL_H
917 # include <alsa/global.h>
918 #endif
919 ]])
920         SXE_CHECK_HEADERS([alsa/pcm.h alsa/error.h alsa/version.h], [:], [:], [[
921 #include <stdlib.h>
922 #include <stdio.h>
923 #if defined HAVE_ALSA_INPUT_H
924 # include <alsa/input.h>
925 #endif
926 #if defined HAVE_ALSA_OUTPUT_H
927 # include <alsa/output.h>
928 #endif
929 #if defined HAVE_ALSA_GLOBAL_H
930 # include <alsa/global.h>
931 #endif
932 #if defined HAVE_ALSA_CONF_H
933 # include <alsa/conf.h>
934 #endif
935 ]])
936         ## restor everything
937         SXE_RESTORE_LIBS
938 ])dnl SXE_CHECK_ALSA_HEADERS
939
940 AC_DEFUN([SXE_CHECK_ALSA_VERSION], [dnl
941         AC_REQUIRE([SXE_CHECK_ALSA_HEADERS])
942
943         ## dump the configuration
944         SXE_DUMP_LIBS
945         SXE_LANG_WERROR([off])
946         AC_MSG_CHECKING([for alsa version])
947
948         AC_RUN_IFELSE([AC_LANG_SOURCE([[
949 #include <stdlib.h>
950 #include <stdio.h>
951 #if defined HAVE_ALSA_INPUT_H
952 # include <alsa/input.h>
953 #endif
954 #if defined HAVE_ALSA_OUTPUT_H
955 # include <alsa/output.h>
956 #endif
957 #if defined HAVE_ALSA_GLOBAL_H
958 # include <alsa/global.h>
959 #endif
960 #if defined HAVE_ALSA_CONF_H
961 # include <alsa/conf.h>
962 #endif
963 #if defined HAVE_ALSA_PCM_H
964 # include <alsa/pcm.h>
965 #endif
966 #if defined HAVE_ALSA_ERROR_H
967 # include <alsa/error.h>
968 #endif
969 #if defined HAVE_ALSA_CONF_H
970 # include <alsa/version.h>
971 #endif
972
973 int main(int c, char *v[])
974 {
975         fprintf(stdout, SND_LIB_VERSION_STR);
976         return 0;
977 }]])], dnl [./conftest; alsa_subminor=$?],[alsa_subminor=$?],[alsa_subminor=0]
978         [sxe_mm_alsa_version=$(./conftest)],
979         [:], [sxe_mm_alsa_version="undeterminable"])
980
981         case "${sxe_mm_alsa_version}" in
982         0.*.* | 1.0.3* | 1.0.9* )
983                 AC_MSG_RESULT([${sxe_mm_alsa_version} (known to break)])
984                 AC_MSG_WARN([Your ALSA version is _KNOWN_ to fail! Do not say we have not warned you!])
985                 sxe_mm_alsa_version_supported_p="no"
986                 ;;
987         1.0.2 | 1.0.4* | 1.0.5* | 1.0.6* | 1.0.7* | 1.0.8* )
988                 AC_MSG_RESULT([${sxe_mm_alsa_version} (suspicious to break)])
989                 AC_MSG_WARN([Your ALSA version has not been tested. Do not be surprised if it fails!])
990                 sxe_mm_alsa_version_supported_p="no"
991                 ;;
992         1.0.10* | 1.0.11* | 1.0.12* | 1.0.13* | 1.0.14* | 1.0.15* | 1.0.16* )
993                 AC_MSG_RESULT([${sxe_mm_alsa_version} (sane)])
994                 sxe_mm_alsa_version_supported_p="yes"
995                 ;;
996         1.* )
997                 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
998                 AC_MSG_NOTICE([Your ALSA version is unknown, however we are confident that it works.])
999                 AC_MSG_NOTICE([However, if we screwed up something, please report back!])
1000                 sxe_mm_alsa_version_supported_p="yes"
1001                 ;;
1002         * )
1003                 AC_MSG_RESULT([${sxe_mm_alsa_version} (unknown)])
1004                 AC_MSG_WARN([Your ALSA version is unknown hence not supported!])
1005                 sxe_mm_alsa_version_supported_p="no"
1006                 ;;
1007         esac
1008
1009         ## restore everything
1010         SXE_RESTORE_LIBS
1011 ])dnl SXE_CHECK_ALSA_VERSION
1012
1013 AC_DEFUN([SXE_CHECK_ALSA_LIBS], [dnl
1014         ## dump the current configuration
1015         SXE_DUMP_LIBS
1016
1017         AC_CHECK_LIB([asound], [snd_pcm_open], [:], [:])
1018         AC_CHECK_LIB([asound], [snd_pcm_close], [:], [:])
1019         AC_CHECK_LIB([asound], [snd_pcm_hw_free], [:], [:])
1020         AC_CHECK_LIB([asound], [snd_pcm_hw_params_any], [:], [:])
1021         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_access], [:], [:])
1022         AC_CHECK_LIB([asound], [snd_pcm_hw_params_free], [:], [:])
1023         AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_channels], [:], [:])
1024         AC_CHECK_LIB([asound], [snd_pcm_hw_params_test_format], [:], [:])
1025         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_channels], [:], [:])
1026         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_format], [:], [:])
1027         AC_CHECK_LIB([asound], [snd_pcm_hw_params_set_rate_near], [:], [:])
1028         AC_CHECK_LIB([asound], [snd_pcm_prepare], [:], [:])
1029         AC_CHECK_LIB([asound], [snd_pcm_writei], [:], [:])
1030
1031         ## restore everything
1032         SXE_RESTORE_LIBS
1033 ])dnl SXE_CHECK_ALSA_LIBS
1034
1035
1036
1037 AC_DEFUN([SXE_MM_CHECK_NAS], [
1038         ## arg #1: action on success
1039         ## arg #2: action on failure
1040         pushdef([MM_SUCC], [$1])
1041         pushdef([MM_FAIL], [$2])
1042
1043         AC_MSG_CHECKING([for NAS support])
1044         AC_MSG_RESULT([])
1045
1046         SXE_DUMP_LIBS
1047
1048         MM_SUCC
1049         ## NAS is often stored inside the X hierarchy, so ...
1050         CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1051         LDFLAGS="$LDFLAGS $X_LIBS"
1052         SXE_CHECK_HEADERS([audio/audiolib.h], [:], [MM_FAIL])
1053         AC_CHECK_LIB([audio], [AuOpenServer], [:], [MM_FAIL])
1054         AC_CHECK_LIB([audio], [AuCloseServer], [:], [MM_FAIL])
1055         AC_CHECK_LIB([audio], [AuCreateFlow], [:], [MM_FAIL])
1056         AC_CHECK_LIB([audio], [AuStartFlow], [:], [MM_FAIL])
1057         AC_CHECK_LIB([audio], [AuStopFlow], [:], [MM_FAIL])
1058         AC_CHECK_LIB([audio], [AuScanForTypedEvent], [:], [MM_FAIL])
1059         AC_CHECK_LIB([audio], [AuDispatchEvent], [:], [MM_FAIL])
1060         AC_CHECK_LIB([audio], [AuSetErrorHandler], [:], [MM_FAIL])
1061         AC_CHECK_LIB([audio], [AuSetIOErrorHandler], [:], [MM_FAIL])
1062         AC_CHECK_LIB([audio], [AuWriteElement], [:], [MM_FAIL])
1063         AC_CHECK_LIB([audio], [AuSetElements], [:], [MM_FAIL])
1064         AC_CHECK_LIB([audio], [AuRegisterEventHandler], [:], [MM_FAIL])
1065         AC_CHECK_LIB([audio], [AuSetElementParameters], [:], [MM_FAIL])
1066
1067         dnl If the nas library does not contain the error jump point,
1068         dnl then we force safer behavior.
1069         AC_EGREP_HEADER([AuXtErrorJump], [audio/Xtutil.h], [], [old_nas=yes])
1070         if test "$old_nas" = "yes"; then
1071                 AC_DEFINE([NAS_NO_ERROR_JUMP], [1], [Description here!])
1072         fi
1073
1074         ## restore anything
1075         SXE_RESTORE_LIBS
1076
1077         popdef([MM_SUCC])
1078         popdef([MM_FAIL])
1079 ])dnl SXE_MM_CHECK_NAS
1080
1081 dnl sxe-mm.m4 ends here