1dnl Process this file with autoconf to produce a configure script.
2
3AC_PREREQ([2.63])
4
5AC_INIT([libmikmod],[3.3.11])
6LIBMIKMOD_MAJOR_VERSION=3
7LIBMIKMOD_MINOR_VERSION=3
8LIBMIKMOD_MICRO_VERSION=11
9LIBMIKMOD_VERSION=$LIBMIKMOD_MAJOR_VERSION.$LIBMIKMOD_MINOR_VERSION.$LIBMIKMOD_MICRO_VERSION
10
11AC_CONFIG_AUX_DIR([autotools])
12AM_INIT_AUTOMAKE([1.10 foreign subdir-objects])
13AC_CONFIG_SRCDIR([include/mikmod_internals.h])
14AC_CONFIG_MACRO_DIR([m4])
15AC_CONFIG_LIBOBJ_DIR([posix])
16AM_MAINTAINER_MODE
17
18# Library versioning for libtool: CURRENT, REVISION, AGE
19# - library source changed -> increment REVISION
20# - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
21# - interfaces added -> increment AGE
22# - interfaces removed -> AGE = 0
23MIKMOD_LT_CURRENT=6
24MIKMOD_LT_REVISION=0
25MIKMOD_LT_AGE=3
26
27AC_SUBST(MIKMOD_LT_CURRENT)
28AC_SUBST(MIKMOD_LT_REVISION)
29AC_SUBST(MIKMOD_LT_AGE)
30
31# ===================
32# build target:
33# ===================
34
35AC_CANONICAL_HOST
36
37# these for convenience
38libmikmod_mingw=no
39libmikmod_cygwin=no
40libmikmod_linux=no
41libmikmod_darwin=no
42libmikmod_netbsd=no
43libmikmod_openbsd=no
44libmikmod_os2=no
45libmikmod_djgpp=no
46libmikmod_amiga=no
47libmikmod_haiku=no
48libmikmod_irix=no
49libmikmod_sun=no
50libmikmod_aix=no
51libmikmod_hpux=no
52
53case $host_os in
54	mingw*) libmikmod_mingw=yes ;;
55	cygwin*) libmikmod_cygwin=yes ;;
56	linux*) libmikmod_linux=yes ;;
57	darwin*) libmikmod_darwin=yes ;;
58	netbsd*) libmikmod_netbsd=yes ;;
59	openbsd*) libmikmod_openbsd=yes ;;
60	emx*) libmikmod_os2=yes ;;
61	*djgpp) libmikmod_djgpp=yes ;;
62	amigaos*|aros*|morphos*)
63		libmikmod_amiga=yes ;;
64	haiku*) libmikmod_haiku=yes ;;
65	hpux*) libmikmod_hpux=yes ;;
66	irix*) libmikmod_irix=yes ;;
67	aix*) AC_DEFINE([AIX], 1, [Define if your system is AIX 3.x - might be needed for 4.x too])
68		libmikmod_aix=yes ;;
69	sunos*|solaris*)
70		if test "$cross_compiling" != yes
71		then
72		   case `uname -r` in
73		     4*) AC_DEFINE([SUNOS], 1, [Define if your system is SunOS 4.x]) ;;
74		   esac
75		fi
76		libmikmod_sun=yes ;;
77esac
78
79# ==============================================================
80# libmikmod specific control variables and their default values.
81# ==============================================================
82
83libmikmod_hqmixer=yes
84
85libmikmod_driverlist=nosound
86
87libmikmod_driver_af=no
88libmikmod_driver_ahi=$libmikmod_amiga
89libmikmod_driver_aix=$libmikmod_aix
90libmikmod_driver_alsa=$libmikmod_linux
91libmikmod_driver_pulseaudio=yes
92libmikmod_driver_esd=no
93libmikmod_driver_nas=no
94libmikmod_driver_hp=$libmikmod_hpux
95libmikmod_driver_sdl=no
96libmikmod_driver_openal=no
97libmikmod_driver_oss=yes
98if test $libmikmod_openbsd = yes
99then
100  libmikmod_driver_oss=no
101fi
102libmikmod_driver_sam9407=no
103libmikmod_driver_sgi=$libmikmod_irix
104libmikmod_driver_sndio=$libmikmod_openbsd
105libmikmod_driver_sun=$libmikmod_sun
106if test $libmikmod_netbsd = yes
107then
108  libmikmod_driver_sun=yes
109fi
110libmikmod_driver_osx=$libmikmod_darwin
111libmikmod_driver_mac=no
112libmikmod_driver_win=yes
113libmikmod_driver_ds=yes
114libmikmod_driver_xaudio2=no
115libmikmod_driver_ultra=no
116libmikmod_driver_os2=$libmikmod_os2
117libmikmod_driver_dart=$libmikmod_os2
118libmikmod_driver_aiff=yes
119libmikmod_driver_wav=yes
120libmikmod_driver_raw=yes
121libmikmod_driver_stdout=yes
122libmikmod_driver_pipe=yes
123# ANDROID and DRV_OSLES are not configury-integrated
124libmikmod_driver_osles=no
125
126libmikmod_dynload=yes
127libmikmod_dynload_underscores=no
128libmikmod_debug=no
129libmikmod_threads=yes
130libmikmod_simd=no
131libmikmod_altivec=no
132libmikmod_sse2=no
133
134libmikmod_unix=default
135
136libmikmod_docs=yes
137
138# =========================
139# Configure script options.
140# =========================
141
142AC_ARG_ENABLE([hqmixer], [AS_HELP_STRING([--disable-hqmixer],[exclude support for high quality mixer [default=no]])],
143[if test "$enableval" = "no"
144then
145  libmikmod_hqmixer=no
146else
147  libmikmod_hqmixer=yes
148fi])
149
150AC_ARG_ENABLE([alldrv], [AS_HELP_STRING([--disable-alldrv],[disable all of the audio drivers. using additional --enable-XXX options enables the specified drivers.])],
151[if test "$enableval" = "no"
152then
153  libmikmod_driver_af=no
154  libmikmod_driver_ahi=no
155  libmikmod_driver_aix=no
156  libmikmod_driver_alsa=no
157  libmikmod_driver_pulseaudio=no
158  libmikmod_driver_esd=no
159  libmikmod_driver_nas=no
160  libmikmod_driver_hp=no
161  libmikmod_driver_sdl=no
162  libmikmod_driver_openal=no
163  libmikmod_driver_oss=no
164  libmikmod_driver_sam9407=no
165  libmikmod_driver_sgi=no
166  libmikmod_driver_sndio=no
167  libmikmod_driver_sun=no
168  libmikmod_driver_osx=no
169  libmikmod_driver_mac=no
170  libmikmod_driver_win=no
171  libmikmod_driver_ds=no
172  libmikmod_driver_xaudio2=no
173  libmikmod_driver_ultra=no
174  libmikmod_driver_os2=no
175  libmikmod_driver_dart=no
176  libmikmod_driver_aiff=no
177  libmikmod_driver_wav=no
178  libmikmod_driver_raw=no
179  libmikmod_driver_stdout=no
180  libmikmod_driver_pipe=no
181  libmikmod_driver_osles=no
182fi])
183
184AC_ARG_ENABLE([af], [AS_HELP_STRING([--enable-af],[include DEC AudioFile server driver [default=no]])],
185[if test "$enableval" = "yes"
186then
187  libmikmod_driver_af=yes
188else
189  libmikmod_driver_af=no
190fi])
191
192AC_ARG_ENABLE([alsa], [AS_HELP_STRING([--enable-alsa],[Linux only: include ALSA driver [guessed]])],
193[if test "$enableval" = "yes"
194then
195  libmikmod_driver_alsa=$libmikmod_linux
196else
197  libmikmod_driver_alsa=no
198fi])
199
200AC_ARG_ENABLE([oss], [AS_HELP_STRING([--enable-oss],[include OSS driver [guessed]])],
201[if test "$enableval" = "yes"
202then
203  libmikmod_driver_oss=yes
204else
205  libmikmod_driver_oss=no
206fi])
207
208AC_ARG_ENABLE([sunaudio], [AS_HELP_STRING([--enable-sunaudio],[For SunOS, Solaris, NetBSD or OpenBSD: include sunaudio driver [guessed]])],
209[if test "$enableval" = "yes"
210then
211  libmikmod_driver_sun=yes
212else
213  libmikmod_driver_sun=no
214fi])
215case $host_os in
216  netbsd*|openbsd*|sunos*|solaris*) ;;
217  *) libmikmod_driver_sun=no ;;
218esac
219
220AC_ARG_ENABLE([sndio], [AS_HELP_STRING([--enable-sndio],[OpenBSD only: include sndio driver [guessed]])],
221[if test "$enableval" = "yes"
222then
223  libmikmod_driver_sndio=yes
224else
225  libmikmod_driver_sndio=no
226fi])
227case $host_os in
228# hey, a linux port at sndio.org ..
229  openbsd*|linux*) ;;
230  *) libmikmod_driver_sndio=no ;;
231esac
232
233AC_ARG_ENABLE([aix], [AS_HELP_STRING([--enable-aix],[AIX only: include AIX audio driver [guessed]])],
234[if test "$enableval" = "yes"
235then
236  libmikmod_driver_aix=$libmikmod_aix
237else
238  libmikmod_driver_aix=no
239fi])
240
241AC_ARG_ENABLE([sgi], [AS_HELP_STRING([--enable-sgi],[IRIX only: include SGI audio driver [guessed]])],
242[if test "$enableval" = "yes"
243then
244  libmikmod_driver_sgi=$libmikmod_irix
245else
246  libmikmod_driver_sgi=no
247fi])
248
249AC_ARG_ENABLE([hp], [AS_HELP_STRING([--enable-hp],[HP/UX only: include HP/UX audio driver [guessed]])],
250[if test "$enableval" = "yes"
251then
252  libmikmod_driver_hp=$libmikmod_hpux
253else
254  libmikmod_driver_hp=no
255fi])
256
257AC_ARG_ENABLE([ahi], [AS_HELP_STRING([--enable-ahi],[Amiga only: include AHI driver [guessed]])],
258[if test "$enableval" = "yes"
259then
260  libmikmod_driver_ahi=$libmikmod_amiga
261else
262  libmikmod_driver_ahi=no
263fi])
264
265AC_ARG_ENABLE([pulseaudio], [AS_HELP_STRING([--enable-pulseaudio],[include PulseAudio driver [guessed]])],
266[if test "$enableval" = "yes"
267then
268  libmikmod_driver_pulseaudio=yes
269else
270  libmikmod_driver_pulseaudio=no
271fi])
272
273AC_ARG_ENABLE([esd], [AS_HELP_STRING([--enable-esd],[include EsounD (Enlightened Sound Daemon) driver [default=no]])],
274[if test "$enableval" = "yes"
275then
276  libmikmod_driver_esd=yes
277else
278  libmikmod_driver_esd=no
279fi])
280
281AC_ARG_ENABLE([nas], [AS_HELP_STRING([--enable-nas],[include the Network Audio System driver [default=no]])],
282[if test "$enableval" = "yes"
283then
284  libmikmod_driver_nas=yes
285else
286  libmikmod_driver_nas=no
287fi])
288
289case $host_os in
290  mingw*|emx*|*djgpp|amigaos*|aros*|morphos*)
291     libmikmod_driver_oss=no
292     libmikmod_driver_esd=no
293     libmikmod_driver_nas=no
294     libmikmod_driver_af=no
295     # windows, dos, os2 don't need sdl, stdout, or pipe.
296     # so default to disabled, but still user-selectable.
297     libmikmod_driver_pipe=no
298     libmikmod_driver_pulseaudio=no
299     libmikmod_driver_stdout=no
300     libmikmod_driver_sdl=no ;;
301  cygwin*|darwin*)
302     libmikmod_driver_oss=no
303     libmikmod_driver_esd=no
304     libmikmod_driver_nas=no
305     libmikmod_driver_af=no
306     libmikmod_driver_pulseaudio=no
307     # cygwin, osx don't need sdl.
308     libmikmod_driver_sdl=no ;;
309  *) ;;
310esac
311
312AC_ARG_ENABLE([aiff], [AS_HELP_STRING([--enable-aiff],[include support for output to an aiff file [default=yes]])],
313[if test "$enableval" = "yes"
314then
315  libmikmod_driver_aiff=yes
316else
317  libmikmod_driver_aiff=no
318fi])
319
320AC_ARG_ENABLE([wav], [AS_HELP_STRING([--enable-wav],[include support for output to a wav file [default=yes]])],
321[if test "$enableval" = "yes"
322then
323  libmikmod_driver_wav=yes
324else
325  libmikmod_driver_wav=no
326fi])
327
328AC_ARG_ENABLE([raw], [AS_HELP_STRING([--enable-raw],[include support for output raw data to a file [default=yes]])],
329[if test "$enableval" = "yes"
330then
331  libmikmod_driver_raw=yes
332else
333  libmikmod_driver_raw=no
334fi])
335
336AC_ARG_ENABLE([stdout], [AS_HELP_STRING([--enable-stdout],[include support for output to stdout [guessed]])],
337[if test "$enableval" = "yes"
338then
339  libmikmod_driver_stdout=yes
340else
341  libmikmod_driver_stdout=no
342fi])
343
344AC_ARG_ENABLE([pipe], [AS_HELP_STRING([--enable-pipe],[include support for output via a pipe to another command [guessed]])],
345[if test "$enableval" = "yes"
346then
347  libmikmod_driver_pipe=yes
348else
349  libmikmod_driver_pipe=no
350fi])
351
352AC_ARG_ENABLE([sdl], [AS_HELP_STRING([--enable-sdl],[include SDL driver [default=no]])],
353[if test "$enableval" = "yes"
354then
355  libmikmod_driver_sdl=yes
356else
357  libmikmod_driver_sdl=no
358fi])
359
360try_sdl2=yes
361AC_ARG_ENABLE([sdl2], [AS_HELP_STRING([--enable-sdl2],[try SDL2 first, then SDL-1.2 as libsdl [default=yes]])],
362[if test "$enableval" = "yes"
363then
364  try_sdl2=yes
365else
366  try_sdl2=no
367fi])
368
369AC_ARG_ENABLE([openal], [AS_HELP_STRING([--enable-openal],[include OpenAL driver [default=no]])],
370[if test "$enableval" = "yes"
371then
372  libmikmod_driver_openal=yes
373else
374  libmikmod_driver_openal=no
375fi])
376
377AC_ARG_ENABLE([osx], [AS_HELP_STRING([--enable-osx],[Darwin only: include OSX CoreAudio driver [guessed]])],
378[if test "$enableval" = "yes"
379then
380  libmikmod_driver_osx=$libmikmod_darwin
381else
382  libmikmod_driver_osx=no
383fi])
384
385AC_ARG_ENABLE([mac], [AS_HELP_STRING([--enable-mac],[Darwin only: include MAC carbon driver [default=no]])],
386[if test "$enableval" = "yes"
387then
388  libmikmod_driver_mac=$libmikmod_darwin
389else
390  libmikmod_driver_mac=no
391fi])
392
393AC_ARG_ENABLE([win], [AS_HELP_STRING([--enable-win],[Windows only: include Windows MCI driver [guessed]])],
394[if test "$enableval" = "yes"
395then
396  libmikmod_driver_win=yes
397else
398  libmikmod_driver_win=no
399fi])
400
401AC_ARG_ENABLE([ds], [AS_HELP_STRING([--enable-ds],[Windows only: include Direct Sound driver [guessed]])],
402[if test "$enableval" = "yes"
403then
404  libmikmod_driver_ds=yes
405else
406  libmikmod_driver_ds=no
407fi])
408
409AC_ARG_ENABLE([xaudio2], [AS_HELP_STRING([--enable-xaudio2],[Windows only: include XAudio2 driver [default=no]])],
410[if test "$enableval" = "yes"
411then
412  libmikmod_driver_xaudio2=yes
413else
414  libmikmod_driver_xaudio2=no
415fi])
416
417use_xaudio28=no
418AC_ARG_ENABLE([xaudio28], [AS_HELP_STRING([--enable-xaudio28],[Windows only: use XAudio2.8 for Windows8 instead of XAudio2.7 [default=no]])],
419[if test "$enableval" = "yes"
420then
421  use_xaudio28=yes
422else
423  use_xaudio28=no
424fi])
425
426AC_ARG_ENABLE([os2], [AS_HELP_STRING([--enable-os2],[OS/2 only: include the OS/2 MCI driver [guessed]])],
427[if test "$enableval" = "yes"
428then
429  libmikmod_driver_os2=$libmikmod_os2
430else
431  libmikmod_driver_os2=no
432fi])
433
434AC_ARG_ENABLE([dart], [AS_HELP_STRING([--enable-dart],[OS/2 (Warp 4) only: include OS/2 direct audio (DART) [guessed]])],
435[if test "$enableval" = "yes"
436then
437  libmikmod_driver_dart=$libmikmod_os2
438else
439  libmikmod_driver_dart=no
440fi])
441
442AC_ARG_ENABLE([sam9407], [AS_HELP_STRING([--enable-sam9407],[Linux only: include sam9407 driver [default=no]])],
443[if test "$enableval" = "yes"
444then
445  libmikmod_driver_sam9407=$libmikmod_linux
446else
447  libmikmod_driver_sam9407=no
448fi])
449
450AC_ARG_ENABLE([ultra], [AS_HELP_STRING([--enable-ultra],[Linux only: include Ultra driver [default=no]])],
451[if test "$enableval" = "yes"
452then
453  libmikmod_driver_ultra=$libmikmod_linux
454else
455  libmikmod_driver_ultra=no
456fi])
457
458AC_ARG_ENABLE([dl], [AS_HELP_STRING([--enable-dl],[load alsa, esound and ultra drivers at runtime [default=yes]])],
459[if test "$enableval" = "yes"
460then
461  libmikmod_dynload=yes
462else
463  libmikmod_dynload=no
464fi])
465
466AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],[build a debug version of libmikmod [default=no]])],
467[if test "$enableval" = "yes"
468then
469  libmikmod_debug=yes
470else
471  libmikmod_debug=no
472fi])
473
474AC_ARG_ENABLE([threads], [AS_HELP_STRING([--enable-threads],[build a thread-safe version of libmikmod [guessed]])],
475[if test "$enableval" = "yes"
476then
477	libmikmod_threads=yes
478else
479	libmikmod_threads=no
480fi])
481
482AC_ARG_ENABLE([simd], [AS_HELP_STRING([--enable-simd],[include SIMD (AltiVec or SSE2) mixer optimizations (Unstable!) [default=no]])],
483[if test "$enableval" = "yes"
484then
485  libmikmod_simd=yes
486else
487  libmikmod_simd=no
488fi])
489
490AC_ARG_ENABLE([unix], [AS_HELP_STRING([--enable-unix],[override the default value of MIKMOD_UNIX in mikmod_internals.h (if you *really* need to.)])],
491[if test "$enableval" = "yes"
492then
493  libmikmod_unix=1
494elif test "$enableval" = "no"
495 then
496  libmikmod_unix=0
497else
498  libmikmod_unix=default
499fi])
500
501AC_ARG_ENABLE([doc], [AS_HELP_STRING([--enable-doc],[Build and install the documentation [default=yes]])],
502[if test "$enableval" = "yes"
503then
504  libmikmod_docs=yes
505else
506  libmikmod_docs=no
507fi])
508
509# ===================
510# Check for programs.
511# ===================
512
513AC_PROG_CC
514AC_PROG_INSTALL
515AC_PROG_LN_S
516AC_PROG_MAKE_SET
517#LT_INIT([win32-dll])
518AC_LIBTOOL_WIN32_DLL
519AC_PROG_LIBTOOL
520
521# =============================================================
522# Check for typedefs, structures, and compiler characteristics.
523# =============================================================
524
525AC_PROG_GCC_TRADITIONAL
526AC_C_CONST
527AC_C_INLINE
528AC_CACHE_CHECK([if compiler understands the signed keyword],[libmikmod_cv_gcc_signed],
529	AC_LANG_SAVE
530	AC_LANG_C
531	AC_TRY_COMPILE(,[signed int t = 0;],[libmikmod_cv_gcc_signed=yes],[libmikmod_cv_gcc_signed=no])
532	AC_LANG_RESTORE)
533if test $libmikmod_cv_gcc_signed = no
534then
535	AC_DEFINE(signed,,[Define to empty if compiler does not understand the `signed' keyword.])
536fi
537
538AC_TYPE_PID_T
539AC_TYPE_SIZE_T
540AC_C_BIGENDIAN
541
542# =======================
543# Check for header files.
544# =======================
545
546AC_HEADER_STDC
547AC_HEADER_SYS_WAIT
548AC_CHECK_HEADERS([fcntl.h limits.h malloc.h memory.h sys/ioctl.h unistd.h])
549
550# ============================
551# Check for library functions.
552# ============================
553
554AC_CHECK_FUNCS([posix_memalign setenv snprintf srandom])
555AC_REPLACE_FUNCS([memcmp strstr])
556AC_CHECK_LIB([m],[floor],LIBRARY_LIB="-lm $LIBRARY_LIB")
557AC_EGREP_HEADER([srandom],[math.h],AC_DEFINE([SRANDOM_IN_MATH_H], 1,
558					 [Define if your system defines random(3) and srandom(3) in math.h instead of stdlib.h]))
559
560# ====================
561# Check for libraries.
562# ====================
563
564# dl functions
565# ------------
566if test $libmikmod_mingw = yes
567then
568	# libmikmod_dynload variable is for dlopen() api only
569	libmikmod_dynload=no
570fi
571
572if test $libmikmod_dynload = yes
573then
574	libmikmod_dynload=no
575	libmikmod_dllib=
576	# SunOS-style shared libraries
577	AC_CHECK_HEADERS([dlfcn.h])
578	if test $ac_cv_header_dlfcn_h = yes
579	then
580		AC_CHECK_LIB([c],[dlopen],[libmikmod_dynload=sun],
581		             [AC_CHECK_LIB([dl],[dlopen],[libmikmod_dynload=sun
582		                                      libmikmod_dllib="-ldl"],[libmikmod_dynload=no])])
583	else
584		# HP-UX-style shared libraries
585		AC_CHECK_HEADERS([dl.h])
586		if test $ac_cv_header_dl_h = yes
587		then
588			AC_CHECK_LIB([dld],[shl_load],[libmikmod_dynload=hp
589			                           libmikmod_dllib="-ldld"
590			                           CFLAGS="${CFLAGS} -DMIKMOD_DLAPI_HP=1 -I${srcdir}/dlapi"],
591			                          [libmikmod_dynload=no])
592		fi
593	fi
594fi
595
596if test $libmikmod_dynload = sun
597then
598	AC_CACHE_CHECK([wherever dynamically loaded symbols need underscores],[libmikmod_cv_dynload_underscores],
599		libmikmod_oldlibs=$LIBS
600		LIBS="$LIBS $libmikmod_dllib"
601		AC_LANG_SAVE
602		AC_LANG_C
603		AC_TRY_RUN(
604[#include <dlfcn.h>
605#ifndef RTLD_GLOBAL
606#define RTLD_GLOBAL 0
607#endif
608int main(void) {
609	void *libc, *printfptr;
610	libc = dlopen("libc.so", RTLD_LAZY | RTLD_GLOBAL);
611	if (!libc) exit(1);
612	printfptr = dlsym(libc, "_printf");
613	dlclose(libc);
614	exit(!printfptr);
615}],
616			[libmikmod_cv_dynload_underscores=yes],
617			[libmikmod_cv_dynload_underscores=no],
618			[libmikmod_cv_dynload_underscores=no])
619		AC_LANG_RESTORE
620		LIBS=$libmikmod_oldlibs
621	)
622	if test $libmikmod_cv_dynload_underscores = yes
623	then
624		AC_DEFINE([DLSYM_NEEDS_UNDERSCORE], 1, [Define if your system needs leading underscore to function names in dlsym() calls])
625	fi
626fi
627
628# POSIX.4 threads
629# ---------------
630if test $libmikmod_mingw = yes || test $libmikmod_amiga = yes
631then
632	dnl libmikmod_threads variable is for pthreads only
633	libmikmod_threads=no
634fi
635
636if test $libmikmod_threads = yes
637then
638	libmikmod_threads=no
639	AC_CACHE_CHECK([if compiler recognizes -pthread],[libmikmod_cv_gcc_pthread],
640		ac_save_CFLAGS=$CFLAGS
641		CFLAGS="$CFLAGS -pthread"
642		AC_LANG_SAVE
643		AC_LANG_C
644		AC_TRY_LINK([#include <pthread.h>],
645			[int p = pthread_create(NULL,NULL,NULL,NULL);],
646			[libmikmod_cv_gcc_pthread=yes],
647			[libmikmod_cv_gcc_pthread=no])
648		AC_LANG_RESTORE
649		CFLAGS=$ac_save_CFLAGS
650	)
651	if test $libmikmod_cv_gcc_pthread = yes
652	then
653		dnl There is no need for -pthread on darwin or haiku, as gcc
654		dnl complains about unrecognized option -pthread
655		if test $libmikmod_darwin = no && test $libmikmod_haiku = no
656		then
657			libmikmod_threads=""
658			CFLAGS="$CFLAGS -pthread"
659		fi
660	else
661		dnl AC_CHECK_HEADERS(pthread.h) unreliable
662		AC_CHECK_LIB([pthread],[pthread_create],[libmikmod_threads=-lpthread],
663				[AC_CHECK_LIB([c_r],[pthread_create],[libmikmod_threads=-lc_r])])
664	fi
665fi
666
667# ALSA - Linux only
668# -----------------
669if test $libmikmod_driver_alsa = yes
670then
671	libmikmod_driver_alsa=no
672	AC_CHECK_HEADERS([alsa/asoundlib.h],[AC_CHECK_LIB([asound],[snd_pcm_open],[libmikmod_driver_alsa=yes])])
673fi
674
675# Amiga audio
676# ---------------------
677if test $libmikmod_driver_ahi = yes
678then
679	libmikmod_driver_ahi=no
680	AC_CHECK_HEADERS([devices/ahi.h],[libmikmod_driver_ahi=yes])
681fi
682
683# pulseaudio
684# ----------
685if test $libmikmod_driver_pulseaudio = yes
686then
687	libmikmod_driver_pulseaudio=no
688	AC_CHECK_HEADERS([pulse/simple.h],[AC_CHECK_LIB([pulse-simple],[pa_simple_new],[libmikmod_driver_pulseaudio=yes])])
689fi
690
691# esd
692# ---
693if test $libmikmod_driver_esd = yes
694then
695	libmikmod_driver_esd=no
696	AM_PATH_ESD("0.2.18",[libmikmod_driver_esd=yes])
697fi
698
699# nas
700# ---
701if test $libmikmod_driver_nas = yes
702then
703	libmikmod_driver_nas=no
704	AC_PATH_X
705	AC_CHECK_HEADERS([audio/audiolib.h],[AC_CHECK_LIB([audio],[AuCreateFlow],[libmikmod_driver_nas=yes])])
706	if test $libmikmod_driver_nas = no
707	then
708	    if test -n "$ac_x_includes" || test -n "$ac_x_libraries"
709	    then
710		ac_save_CFLAGS=$CFLAGS
711		ac_save_LDFLAGS=$LDFLAGS
712		ac_save_LIBS=$LIBS
713		test -n "$ac_x_includes" && CFLAGS="$CFLAGS -I$ac_x_includes"
714		test -n "$ac_x_libraries" && LDFLAGS="$LDFLAGS -L$ac_x_libraries"
715		LIBS="$LIBS -laudio"
716		AC_MSG_CHECKING([X11 locations for NAS])
717		AC_TRY_LINK([#include <audio/audiolib.h>],
718				[AuFlowID f=AuCreateFlow(0,0);],
719				[libmikmod_driver_nas=yes])
720		CFLAGS=$ac_save_CFLAGS
721		LDFLAGS=$ac_save_LDFLAGS
722		LIBS=$ac_save_LIBS
723		AC_MSG_RESULT([$libmikmod_driver_nas])
724		if test $libmikmod_driver_nas = yes
725		then
726			test -n "$ac_x_includes" && CFLAGS="$CFLAGS -I$ac_x_includes"
727			test -n "$ac_x_libraries" && LIBRARY_LIB="$LIBRARY_LIB -L$ac_x_libraries"
728		fi
729	    fi
730	fi
731fi
732
733# OpenAL - all supported platforms
734# -----------------
735if test $libmikmod_driver_openal = yes
736then
737	libmikmod_driver_openal=no
738	if test $libmikmod_darwin = yes
739	then
740		# header-only test is good enough. need 10.4.
741		AC_CHECK_HEADERS([OpenAL/al.h OpenAL/alc.h],,,[
742#if HAVE_OPENAL_AL_H
743# include <OpenAL/al.h>
744#endif
745#if HAVE_OPENAL_ALC_H
746# include <OpenAL/alc.h>
747#endif
748				 ])
749		if test $ac_cv_header_OpenAL_al_h = yes && test $ac_cv_header_OpenAL_alc_h = yes
750		then
751			libmikmod_driver_openal=yes
752		fi
753	else
754		AC_CHECK_HEADERS([AL/al.h AL/alc.h AL/alext.h],,,[
755#if HAVE_AL_AL_H
756# include <AL/al.h>
757#endif
758#if HAVE_AL_ALC_H
759# include <AL/alc.h>
760#endif
761				 ])
762		if test $ac_cv_header_AL_al_h = yes && test $ac_cv_header_AL_alc_h = yes
763		then
764			AC_CHECK_LIB([openal],[alEnable],[libmikmod_driver_openal=yes])
765		fi
766	fi
767fi
768
769# SDL - all supported platforms
770# -----------------
771if test $libmikmod_driver_sdl = yes
772then
773	libmikmod_driver_sdl=no
774	if test $try_sdl2 = yes
775	then
776		AM_PATH_SDL2("2.0.0",[libmikmod_driver_sdl=yes])
777	fi
778	if test $libmikmod_driver_sdl != yes
779	then
780		AM_PATH_SDL("1.2.0",[libmikmod_driver_sdl=yes])
781	fi
782	# we don't need linking to SDLmain, because we are a library.
783	# we also don't need -lmingw32 for MinGW, because gcc adds it automatically.
784	# -mwindows doesn't make sense for us, either, i.e. no need for extra gdi32
785	# and comdlg32 linkage, nor the extra "--subsystem windows" flag.
786	SDL_CFLAGS="`echo $SDL_CFLAGS|sed -e 's/-Dmain=SDL_main//'`"
787	SDL_LIBS="`echo $SDL_LIBS|sed -e 's/-lSDLmain//'|sed -e 's/-lmingw32//'|sed -e 's/-mwindows//'`"
788fi
789AC_SUBST(SDL_CFLAGS)
790AC_SUBST(SDL_LIBS)
791
792# Windows audio
793# ---------------------
794case $host_os in
795 mingw*|cygwin*)
796	# do a windows.h check, just in case..
797	AC_CHECK_HEADERS([windows.h],,[AC_MSG_ERROR([Targeting windows, but windows.h not available])])
798	if test $libmikmod_driver_ds = yes
799	then
800		libmikmod_driver_ds=no
801		AC_CHECK_HEADERS([dsound.h],[libmikmod_driver_ds=yes])
802	fi
803	if test $libmikmod_driver_xaudio2 = yes
804	then
805		libmikmod_driver_xaudio2=no
806		ac_save_CPPFLAGS=$CPPFLAGS
807		if test $use_xaudio28 = yes
808		then
809			CPPFLAGS="$CPPLAGS -D_WIN32_WINNT=0x0602"
810		fi
811		AC_CHECK_HEADERS([xaudio2.h],[libmikmod_driver_xaudio2=yes])
812		if test $libmikmod_driver_xaudio2 = yes
813		then
814			AC_CACHE_CHECK([if XAUDIO2_VOICE_NOSAMPLESPLAYED is defined],[libmikmod_cv_xaudio2_7_header],
815			 [AC_TRY_COMPILE([#include <xaudio2.h>],[int flag=XAUDIO2_VOICE_NOSAMPLESPLAYED;],
816					[libmikmod_cv_xaudio2_7_header=yes],[libmikmod_cv_xaudio2_7_header=no])])
817			if test $libmikmod_cv_xaudio2_7_header = yes && test $use_xaudio28 = yes
818			then
819			  AC_MSG_WARN([xaudio2.h <= 2.7 and xaudio2.8 enabled - build will likely fail.])
820			fi
821			if test $libmikmod_cv_xaudio2_7_header = no && test $use_xaudio28 != yes
822			then
823			  AC_MSG_WARN([xaudio2.h >= 2.8 and xaudio2.8 disabled - build will likely fail.])
824			fi
825		fi
826		CPPFLAGS=$ac_save_CPPFLAGS
827	fi
828	;;
829
830 *)	libmikmod_driver_win=no
831	libmikmod_driver_ds=no
832	libmikmod_driver_xaudio2=no
833	;;
834esac
835
836# OS/2 audio
837# ---------------------
838case $host_os in
839 emx*)
840	# do an os2.h check, just in case..
841	AC_CHECK_HEADERS([os2.h],,[AC_MSG_ERROR([Targeting OS/2, but os2.h not available])])
842	;;
843esac
844
845# sgi audio - IRIX only
846# ---------------------
847if test $libmikmod_driver_sgi = yes
848then
849	libmikmod_driver_sgi=no
850	AC_CHECK_HEADERS([dmedia/audio.h],[AC_CHECK_LIB([audio],[ALseterrorhandler],[libmikmod_driver_sgi=yes])])
851fi
852
853# audiofile
854# ---------
855if test $libmikmod_driver_af = yes
856then
857	libmikmod_driver_af=no
858	AC_CHECK_HEADERS([AF/AFlib.h],[AC_CHECK_LIB([AF],[AFOpenAudioConn],[libmikmod_driver_af=yes])])
859fi
860
861# libgus - Linux only
862# -------------------
863if test $libmikmod_driver_ultra = yes
864then
865	libmikmod_driver_ultra=no
866	AC_CHECK_HEADERS([libgus.h])
867	if test $ac_cv_header_libgus_h = yes
868	then
869		AC_CACHE_CHECK([if libgus is new enough],[libmikmod_cv_libgus_h_good],
870		 [AC_TRY_COMPILE([#include <libgus.h>],
871[gus_info_t *info;
872int flg1=GUS_INSTR_SIMPLE;
873int flg2=GUS_WAVE_BIDIR;],
874				[libmikmod_cv_libgus_h_good=yes],[libmikmod_cv_libgus_h_good=no])])
875
876		if test $libmikmod_cv_libgus_h_good = yes
877		then
878			AC_CHECK_LIB([gus],[gus_cards],[libmikmod_driver_ultra=yes])
879		fi
880	fi
881fi
882
883# sam9407 - Linux only
884# --------------------
885if test $libmikmod_driver_sam9407 = yes
886then
887	libmikmod_driver_sam9407=no
888	AC_CHECK_HEADERS([sys/sam9407.h],[libmikmod_driver_sam9407=yes])
889fi
890
891# AIX audio
892# ---------
893if test $libmikmod_driver_aix = yes
894then
895	libmikmod_driver_aix=no
896	AC_CHECK_HEADERS([sys/audio.h sys/acpa.h])
897	if test $ac_cv_header_sys_audio_h = yes && test $ac_cv_header_sys_acpa_h = yes
898	then
899		libmikmod_driver_aix=yes
900	fi
901fi
902
903# HP/UX audio
904# -----------
905if test $libmikmod_driver_hp = yes
906then
907	libmikmod_driver_hp=no
908	AC_CHECK_HEADERS([sys/audio.h],[libmikmod_driver_hp=yes])
909fi
910
911# sndio - OpenBSD only
912# --------------------
913if test $libmikmod_driver_sndio = yes
914then
915	libmikmod_driver_sndio=no
916	AC_CHECK_HEADERS([sndio.h],[AC_CHECK_LIB([sndio],[sio_open],[libmikmod_driver_sndio=yes])])
917fi
918
919# sunaudio - NetBSD/OpenBSD/SunOS/Solaris only
920# --------------------------------------------
921if test $libmikmod_driver_sun = yes
922then
923	libmikmod_driver_sun=no
924	AC_CHECK_HEADERS([sun/audioio.h sys/audioio.h])
925	if test $ac_cv_header_sun_audioio_h = yes || test $ac_cv_header_sys_audioio_h = yes
926	then
927		libmikmod_driver_sun=yes
928	fi
929fi
930
931# ================
932# Choose settings.
933# ================
934
935if test $libmikmod_driver_raw = yes
936then
937	libmikmod_driverlist="raw $libmikmod_driverlist"
938	AC_DEFINE([DRV_RAW], 1, [Define if you want a raw pcm data file writer driver])
939fi
940if test $libmikmod_driver_wav = yes
941then
942	libmikmod_driverlist="wav $libmikmod_driverlist"
943	AC_DEFINE([DRV_WAV], 1, [Define if you want a .wav file writer driver])
944fi
945if test $libmikmod_driver_aiff = yes
946then
947	libmikmod_driverlist="aiff $libmikmod_driverlist"
948	AC_DEFINE([DRV_AIFF], 1, [Define if you want an .aiff file writer driver])
949fi
950
951if test $libmikmod_driver_pipe = yes
952then
953	libmikmod_driverlist="pipe $libmikmod_driverlist"
954	AC_DEFINE([DRV_PIPE], 1, [Define if your system supports binary pipes (i.e. Unix)])
955fi
956if test $libmikmod_driver_stdout = yes
957then
958	libmikmod_driverlist="stdout $libmikmod_driverlist"
959	AC_DEFINE([DRV_STDOUT], 1, [Define if you want support for output to stdout])
960fi
961
962if test $libmikmod_driver_af = yes
963then
964	libmikmod_driverlist="$libmikmod_driverlist audiofile"
965	AC_DEFINE([DRV_AF], 1, [Define if the DEC AudioFile server driver is compiled])
966	LIBRARY_LIB="-lAF $LIBRARY_LIB"
967fi
968
969if test $libmikmod_driver_win = yes
970then
971	libmikmod_driverlist="win $libmikmod_driverlist"
972	AC_DEFINE([DRV_WIN], 1, [Define if the Windows MCI driver is compiled])
973	LIBRARY_LIB="-lwinmm $LIBRARY_LIB"
974fi
975
976if test $libmikmod_driver_ds = yes
977then
978	libmikmod_driverlist="ds $libmikmod_driverlist"
979	AC_DEFINE([DRV_DS], 1, [Define if the Windows DirectSound driver is compiled])
980	LIBRARY_LIB="-ldsound $LIBRARY_LIB"
981fi
982
983if test $libmikmod_driver_xaudio2 = yes
984then
985	libmikmod_driverlist="xaudio2 $libmikmod_driverlist"
986	AC_DEFINE([DRV_XAUDIO2], 1, [Define if the Windows XAudio2 driver is compiled])
987	LIBRARY_LIB="-lole32 $LIBRARY_LIB"
988	if test $use_xaudio28 = yes
989	then
990		AC_DEFINE([DRV_XAUDIO28],1,[Define if using XAudio 2.8 for Windows8 with XAudio2 driver])
991		LIBRARY_LIB="-lxaudio2_8 $LIBRARY_LIB"
992	fi
993fi
994
995if test $libmikmod_driver_os2 = yes
996then
997	libmikmod_driverlist="os2 $libmikmod_driverlist"
998	AC_DEFINE([DRV_OS2], 1, [Define if the OS/2 MCI driver is compiled])
999	# drv_os2 and drv_dart both link to mmpm2
1000	if test $libmikmod_driver_dart = no
1001	then
1002		LIBRARY_LIB="-lmmpm2 $LIBRARY_LIB"
1003	fi
1004fi
1005
1006if test $libmikmod_driver_dart = yes
1007then
1008	libmikmod_driverlist="dart $libmikmod_driverlist"
1009	AC_DEFINE([DRV_DART], 1, [Define if the OS/2 direct audio (DART) driver is compiled])
1010	LIBRARY_LIB="-lmmpm2 $LIBRARY_LIB"
1011fi
1012
1013if test $libmikmod_driver_aix = yes
1014then
1015	libmikmod_driverlist="aix $libmikmod_driverlist"
1016	AC_DEFINE([DRV_AIX], 1, [Define if the AIX audio driver is compiled])
1017fi
1018
1019if test $libmikmod_driver_ahi = yes
1020then
1021	libmikmod_driverlist="ahi $libmikmod_driverlist"
1022	AC_DEFINE([DRV_AHI], 1, [Define if the Amiga AHI driver is compiled])
1023fi
1024
1025if test $libmikmod_driver_alsa = yes
1026then
1027	libmikmod_driverlist="alsa $libmikmod_driverlist"
1028	AC_DEFINE([DRV_ALSA], 1, [Define if the Linux ALSA driver is compiled])
1029	if test $libmikmod_dynload = no
1030	then
1031		LIBRARY_LIB="-lasound $LIBRARY_LIB"
1032	fi
1033fi
1034
1035if test $libmikmod_driver_pulseaudio = yes
1036then
1037	libmikmod_driverlist="pulseaudio $libmikmod_driverlist"
1038	AC_DEFINE([DRV_PULSEAUDIO], 1, [Define if the PulseAudio driver is compiled])
1039	LIBRARY_LIB="-lpulse-simple -lpulse $LIBRARY_LIB"
1040fi
1041
1042if test $libmikmod_driver_esd = yes
1043then
1044	libmikmod_driverlist="esd $libmikmod_driverlist"
1045	AC_DEFINE([DRV_ESD], 1, [Define if the Enlightened Sound Daemon driver is compiled])
1046	CFLAGS="$CFLAGS $ESD_CFLAGS"
1047	# Under Solaris and perhaps other systems, we have to forward esd
1048	# dependencies to libmikmod's dependency list.
1049	# However, no need to keep libraries we won't require (libossaudio on BSD
1050	# systems, libaudiofile, libasound on Linux)
1051	if test $libmikmod_dynload != no
1052	then
1053		ESD_LIBS="`echo $ESD_LIBS|sed -e 's/-lesd//'|sed -e 's/-lasound//'|sed -e 's/-laudiofile//'|sed -e 's/-lossaudio//'`"
1054	fi
1055	LIBRARY_LIB="$ESD_LIBS $LIBRARY_LIB"
1056fi
1057
1058if test $libmikmod_driver_nas = yes
1059then
1060	libmikmod_driverlist="nas $libmikmod_driverlist"
1061	AC_DEFINE([DRV_NAS], 1, [Define if the Network Audio System driver is compiled])
1062	LIBRARY_LIB="-laudio $LIBRARY_LIB"
1063fi
1064
1065if test $libmikmod_driver_hp = yes
1066then
1067	libmikmod_driverlist="hp $libmikmod_driverlist"
1068	AC_DEFINE([DRV_HP], 1, [Define if the HP-UX audio driver is compiled])
1069fi
1070
1071if test $libmikmod_driver_openal = yes
1072then
1073	libmikmod_driverlist="openal $libmikmod_driverlist"
1074	AC_DEFINE([DRV_OPENAL], 1, [Define if the OpenAL driver is compiled])
1075	if test $libmikmod_darwin = yes
1076	then
1077		LIBRARY_LIB="-framework OpenAL $LIBRARY_LIB"
1078	else
1079		LIBRARY_LIB="-lopenal $LIBRARY_LIB"
1080	fi
1081fi
1082
1083if test $libmikmod_driver_sdl = yes
1084then
1085	libmikmod_driverlist="sdl $libmikmod_driverlist"
1086	AC_DEFINE([DRV_SDL], 1, [Define if the SDL audio driver is compiled])
1087	CFLAGS="$SDL_CFLAGS $CFLAGS"
1088	LIBRARY_LIB="$SDL_LIBS $LIBRARY_LIB"
1089fi
1090
1091if test $libmikmod_driver_oss = yes && test $libmikmod_mingw = no && test $libmikmod_darwin = no
1092then
1093	AC_CHECK_HEADERS([sys/soundcard.h machine/soundcard.h soundcard.h])
1094
1095	# NetBSD and OpenBSD use ossaudio emulation layer,
1096	# otherwise no link library is needed.
1097	oss_library=""
1098	case $host_os in
1099	netbsd*|openbsd*)
1100		AC_CHECK_LIB([ossaudio],[_oss_ioctl],[oss_library="-lossaudio"])
1101		;;
1102	esac
1103
1104	AC_MSG_CHECKING([whether OSS code compiles])
1105	AC_TRY_COMPILE([#ifdef HAVE_SYS_IOCTL_H
1106# include <sys/ioctl.h>
1107#endif
1108#ifdef HAVE_SYS_SOUNDCARD_H
1109# include <sys/soundcard.h>
1110#elif defined(HAVE_MACHINE_SOUNDCARD_H)
1111# include <machine/soundcard.h>
1112#elif defined(HAVE_SOUNDCARD_H)
1113# include <soundcard.h>
1114#else
1115error No OSS header present.
1116#endif],
1117			[int i=SNDCTL_DSP_RESET;],
1118			[libmikmod_driver_oss=yes],
1119			[libmikmod_driver_oss=no])
1120	AC_MSG_RESULT([$libmikmod_driver_oss])
1121	if test $libmikmod_driver_oss = yes
1122	then
1123		libmikmod_driverlist="oss $libmikmod_driverlist"
1124		AC_DEFINE([DRV_OSS], 1, [Define if the Open Sound System driver is compiled])
1125		if test -n "$oss_library"
1126		then
1127			LIBRARY_LIB="$oss_library $LIBRARY_LIB"
1128		fi
1129	fi
1130fi
1131
1132if test $libmikmod_driver_osx = yes
1133then
1134	libmikmod_driverlist="osx $libmikmod_driverlist"
1135	AC_DEFINE([DRV_OSX], 1, [Define this if you want the MacOS X CoreAudio driver])
1136	LIBRARY_LIB="-framework CoreAudio $LIBRARY_LIB"
1137fi
1138
1139#OpenSL ES driver (e.g. Android)
1140if test $libmikmod_driver_osles = yes
1141then
1142	AC_DEFINE([DRV_OSLES], 1, [Define if the OpenSL ES driver is compiled])
1143	LIBRARY_LIB="-lOpenSLES $LIBRARY_LIB"
1144fi
1145
1146if test $libmikmod_driver_mac = yes
1147then
1148	libmikmod_driverlist="mac $libmikmod_driverlist"
1149	AC_DEFINE([DRV_MAC], 1, [Define this if you want the Carbon Mac Audio driver])
1150	LIBRARY_LIB="-framework Carbon $LIBRARY_LIB"
1151fi
1152
1153if test $libmikmod_driver_sam9407 = yes
1154then
1155	libmikmod_driverlist="sam9407 $libmikmod_driverlist"
1156	AC_DEFINE([DRV_SAM9407], 1, [Define if the Linux SAM9407 driver is compiled])
1157fi
1158
1159if test $libmikmod_driver_sgi = yes
1160then
1161	libmikmod_driverlist="sgi $libmikmod_driverlist"
1162	AC_DEFINE([DRV_SGI], 1, [Define if the SGI audio driver is compiled])
1163	LIBRARY_LIB="-laudio $LIBRARY_LIB"
1164fi
1165
1166if test $libmikmod_driver_sndio = yes
1167then
1168	libmikmod_driverlist="sndio $libmikmod_driverlist"
1169	AC_DEFINE([DRV_SNDIO], 1, [Define if the OpenBSD sndio driver is compiled])
1170	LIBRARY_LIB="-lsndio $LIBRARY_LIB"
1171fi
1172
1173if test $libmikmod_driver_sun = yes
1174then
1175	libmikmod_driverlist="sunaudio $libmikmod_driverlist"
1176	AC_DEFINE([DRV_SUN], 1, [Define if the Sun audio driver or compatible (NetBSD, OpenBSD) is compiled])
1177fi
1178
1179if test $libmikmod_driver_ultra = yes
1180then
1181	libmikmod_driverlist="ultra $libmikmod_driverlist"
1182	AC_DEFINE([DRV_ULTRA], 1, [Define if the Linux Ultra driver is compiled])
1183	if test $libmikmod_dynload = no
1184	then
1185		LIBRARY_LIB="-lgus $LIBRARY_LIB"
1186	fi
1187fi
1188
1189if test $libmikmod_debug = yes
1190then
1191	AC_DEFINE([MIKMOD_DEBUG], 1, [Define if you want a debug version of the library])
1192	CC="$CC -g"
1193fi
1194
1195if test $libmikmod_dynload != no
1196then
1197	AC_DEFINE([MIKMOD_DYNAMIC], 1, [Define if you want runtime dynamic linking of ALSA and EsounD drivers])
1198
1199	LIBRARY_LIB="$libmikmod_dllib $LIBRARY_LIB"
1200	if test $libmikmod_dynload = sun
1201	then
1202		# RTLD_GLOBAL is not defined under every system
1203		AC_CACHE_CHECK([if RTLD_GLOBAL is defined],libmikmod_cv_decl_rtld_global,
1204		 [AC_TRY_COMPILE([#include <dlfcn.h>],[int flag=RTLD_GLOBAL;],
1205			[libmikmod_cv_decl_rtld_global=yes],
1206			[libmikmod_cv_decl_rtld_global=no])])
1207		if test $libmikmod_cv_decl_rtld_global = yes
1208		then
1209			AC_DEFINE([HAVE_RTLD_GLOBAL], 1, [Define if your system has RTLD_GLOBAL defined in <dlfcn.h>])
1210		fi
1211	fi
1212fi
1213
1214# If compiling with gcc, use adequate optimization flags
1215if test $ac_cv_prog_gcc = yes
1216then
1217	# On at least x86 platforms, gcc 2.7.2.1 and earlier won't work if -O3 (or
1218	# -finline-functions) are used. Versions 2.7.2.3, 2.8.x and egcs are ok
1219	# (didn't test 2.7.2.2).
1220	# Until there's an easy way to catch broken inlining, we choose flags known
1221	# to work correctly depending of the compiler version.
1222	AC_CACHE_CHECK([if inlining functions is safe],[libmikmod_cv_gcc_inline_safe],
1223	 [AC_TRY_COMPILE(,[
1224#if !(defined __GNUC__ && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 7))
1225#error inlining functions is not safe
1226#endif
1227],
1228	[libmikmod_cv_gcc_inline_safe=yes],
1229	[libmikmod_cv_gcc_inline_safe=no])])
1230	if test $libmikmod_cv_gcc_inline_safe = no
1231	then
1232		CFLAGS="$CFLAGS -fno-strength-reduce"
1233	fi
1234	CFLAGS="$CFLAGS -ffast-math"
1235	if test $libmikmod_darwin = yes
1236	then
1237		CFLAGS="$CFLAGS -fno-common"
1238	fi
1239	if test $libmikmod_debug = yes
1240	then
1241		CFLAGS="$CFLAGS -Wall -Werror"
1242	else
1243		CFLAGS="$CFLAGS -Wall"
1244	fi
1245
1246	# pgcc 2.95.2 appears not to be able to compile libmikmod, although regular
1247	# gcc works fine. Issue a warning if the compiler is pgcc, until a reliable
1248	# way to detect flawed version (or, better, a reliable workaround) is
1249	# found.
1250dnl do not cache this test - better rechecking every time
1251	AC_MSG_CHECKING([if compiler is pgcc])
1252	if ($CC -v 2>&1 | grep ^pgcc > /dev/null) 2>/dev/null
1253	then
1254		libmikmod_gcc_is_pgcc=yes
1255	else
1256		libmikmod_gcc_is_pgcc=no
1257	fi
1258	AC_MSG_RESULT([$libmikmod_gcc_is_pgcc])
1259	if test $libmikmod_gcc_is_pgcc = yes
1260	then
1261		echo "
1262*** Version 2.95.2 of this compiler, and perhaps others, are unable to
1263*** compile libmikmod. If compilation fails for playercode/virtch.c
1264*** around line 650, with the error ``internal error--insn does not
1265*** satisfy its constraints'', then you'll have to use another compiler.
1266" >&2
1267	fi
1268fi
1269
1270if test x$libmikmod_threads != xno
1271then
1272	AC_DEFINE([HAVE_PTHREAD], 1, [Define if your system provides POSIX.4 threads])
1273	CFLAGS="$CFLAGS -D_REENTRANT"
1274	LIBRARY_LIB="$libmikmod_threads $LIBRARY_LIB"
1275	REENTRANT="-D_REENTRANT"
1276	if test $libmikmod_cv_gcc_pthread = yes
1277	then
1278		dnl There is no need for -pthread on darwin or haiku, as gcc
1279		dnl complains about unrecognized option -pthread
1280		if test $libmikmod_darwin = no && test $libmikmod_haiku = no
1281		then
1282			REENTRANT="-pthread $REENTRANT"
1283			LIB_LDADD="-pthread"
1284		fi
1285	fi
1286fi
1287
1288case $host_cpu in
1289  ppc|ppc64|powerpc|powerpc64)
1290	AC_MSG_CHECKING(whether to use altivec)
1291	if test x$libmikmod_simd = xyes
1292	then
1293		case $host_os in
1294		  darwin*)
1295			dnl compile all Altivec functions, check at run-time
1296			CFLAGS="$CFLAGS -faltivec -force_cpusubtype_ALL" ;;
1297		  *)
1298			dnl -faltivec and -force_cpusubtype_ALL are Apple-only
1299			dnl features.  -maltivec compiles all code for AltiVec..
1300			CFLAGS="$CFLAGS -maltivec" ;;
1301		esac
1302		libmikmod_altivec=yes
1303		libmikmod_simd=altivec
1304	fi
1305	AC_MSG_RESULT([$libmikmod_altivec])
1306	;;
1307
1308  i*86|x86_64)
1309	AC_MSG_CHECKING(whether to use sse2)
1310	if test x$libmikmod_simd = xyes
1311	then
1312		dnl x86_64 already enables sse2
1313		dnl add -msse2 for x86 to enable it
1314		case `arch` in
1315		  i*86) CFLAGS="$CFLAGS -msse2" ;;
1316		esac
1317		libmikmod_sse2=yes
1318		libmikmod_simd=sse2
1319	fi
1320	AC_MSG_RESULT([$libmikmod_sse2])
1321	;;
1322esac
1323
1324# see if we set libmikmod_simd properly
1325case $libmikmod_simd in
1326 altivec|sse2)
1327    AC_DEFINE([MIKMOD_SIMD], 1, [Define if you want to use SIMD (AltiVec or SSE2) optimizations (Unstable!)]) ;;
1328 *) libmikmod_simd=no ;;
1329esac
1330
1331# MIKMOD_UNIX override
1332if test "$libmikmod_unix" = "0" || test "$libmikmod_unix" = "1"
1333then
1334   AC_DEFINE_UNQUOTED([MIKMOD_UNIX], $libmikmod_unix, [Define to 0 or 1 to override MIKMOD_UNIX in mikmod_internals.h.])
1335fi
1336
1337if test $libmikmod_hqmixer = no
1338then
1339	AC_DEFINE([NO_HQMIXER], 1, [disable the high quality mixer (build only with the standart mixer)])
1340fi
1341
1342# symbol visibility
1343ac_save_CFLAGS="$CFLAGS"
1344CFLAGS="$CFLAGS -fvisibility=hidden -Werror"
1345AC_CACHE_CHECK([if compiler supports visibility attributes],[libmikmod_cv_gcc_visibility],
1346	AC_LANG_SAVE
1347	AC_LANG_C
1348	AC_TRY_COMPILE([void foo(void);
1349__attribute__((visibility("default"))) void foo(void) {}],
1350		[],
1351		[libmikmod_cv_gcc_visibility=yes],
1352		[libmikmod_cv_gcc_visibility=no])
1353	AC_LANG_RESTORE)
1354# we want symbol -fvisibility for elf targets, however it works
1355# with darwin/macho too.  other than that, windows, dos, os/2, amiga
1356# do not need it:  for any such targets, the -Werror switch is
1357# supposed to fail the above check. (I'm adding the manual test
1358# below nonetheless, just in case.)
1359case $host_os in
1360   mingw*|cygwin*|emx*|*djgpp|amigaos*|aros*|morphos*)
1361	libmikmod_cv_gcc_visibility=no
1362	;;
1363esac
1364CFLAGS="$ac_save_CFLAGS"
1365if test $libmikmod_cv_gcc_visibility = yes
1366then
1367   CFLAGS="$CFLAGS -DSYM_VISIBILITY -fvisibility=hidden"
1368fi
1369
1370# =================
1371# Create Makefiles.
1372# =================
1373
1374AM_CONDITIONAL([BUILD_DOCS], [test "$libmikmod_docs" = yes])
1375
1376AC_SUBST(REENTRANT)
1377
1378AC_SUBST(LIBRARY_LIB)
1379
1380AC_SUBST(LIBMIKMOD_MAJOR_VERSION)
1381AC_SUBST(LIBMIKMOD_MINOR_VERSION)
1382AC_SUBST(LIBMIKMOD_MICRO_VERSION)
1383AC_SUBST(LIBMIKMOD_VERSION)
1384
1385AC_SUBST(LIB_LDADD)
1386
1387AC_CONFIG_FILES([
1388libmikmod-config
1389libmikmod.pc
1390libmikmod.spec
1391Makefile
1392docs/Makefile
1393docs/libmikmod-config.1
1394dlapi/Makefile
1395drivers/Makefile
1396drivers/dos/Makefile
1397include/Makefile
1398loaders/Makefile
1399mmio/Makefile
1400depackers/Makefile
1401playercode/Makefile
1402posix/Makefile])
1403AC_CONFIG_HEADERS([config.h])
1404AC_OUTPUT
1405
1406chmod +x libmikmod-config
1407
1408# ====================
1409# Print configuration.
1410# ====================
1411
1412if test $libmikmod_dynload != no
1413then
1414	libmikmod_dynload="yes, ${libmikmod_dynload} style"
1415fi
1416
1417echo "
1418Library configuration:
1419
1420  Source code location: $srcdir
1421  Compiler: $CC
1422  Compiler flags: $CFLAGS
1423  Debug version: $libmikmod_debug
1424  SIMD optimizations: $libmikmod_simd
1425  Dynamically loaded drivers whenever possible: $libmikmod_dynload
1426  Drivers to be compiled: $libmikmod_driverlist
1427  HQ Mixer: $libmikmod_hqmixer
1428  Install path: $prefix/lib, $prefix/include
1429"
1430