1dnl Process this file with autoconf to produce a configure script.
2AC_INIT(README)
3AC_CONFIG_HEADER(include/SDL_config.h)
4AC_GNU_SOURCE
5AC_CONFIG_AUX_DIRS($srcdir/build-scripts)
6
7dnl Set various version strings - taken gratefully from the GTk sources
8#
9# Making releases:
10# Edit include/SDL/SDL_version.h and change the version, then:
11#   SDL_MICRO_VERSION += 1;
12#   SDL_INTERFACE_AGE += 1;
13#   SDL_BINARY_AGE += 1;
14# if any functions have been added, set SDL_INTERFACE_AGE to 0.
15# if backwards compatibility has been broken,
16# set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0.
17#
18SDL_MAJOR_VERSION=1
19SDL_MINOR_VERSION=2
20SDL_MICRO_VERSION=15
21SDL_INTERFACE_AGE=4
22SDL_BINARY_AGE=15
23SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
24
25AC_SUBST(SDL_MAJOR_VERSION)
26AC_SUBST(SDL_MINOR_VERSION)
27AC_SUBST(SDL_MICRO_VERSION)
28AC_SUBST(SDL_INTERFACE_AGE)
29AC_SUBST(SDL_BINARY_AGE)
30AC_SUBST(SDL_VERSION)
31
32# libtool versioning
33LT_INIT([win32-dll])
34
35LT_RELEASE=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION
36LT_CURRENT=`expr $SDL_MICRO_VERSION - $SDL_INTERFACE_AGE`
37LT_REVISION=$SDL_INTERFACE_AGE
38LT_AGE=`expr $SDL_BINARY_AGE - $SDL_INTERFACE_AGE`
39m4_pattern_allow([^LT_])
40
41AC_SUBST(LT_RELEASE)
42AC_SUBST(LT_CURRENT)
43AC_SUBST(LT_REVISION)
44AC_SUBST(LT_AGE)
45
46dnl Detect the canonical build and host environments
47AC_CONFIG_AUX_DIR([build-scripts])
48dnl AC_CANONICAL_HOST
49AC_C_BIGENDIAN
50if test x$ac_cv_c_bigendian = xyes; then
51    AC_DEFINE(SDL_BYTEORDER, 4321)
52else
53    AC_DEFINE(SDL_BYTEORDER, 1234)
54fi
55
56dnl Check for tools
57AC_PROG_LIBTOOL
58AC_PROG_CC
59AC_PROG_CXX
60AC_PROG_INSTALL
61AC_PROG_MAKE_SET
62AC_CHECK_TOOL(WINDRES, [windres], [:])
63
64dnl Set up the compiler and linker flags
65INCLUDE="-I$srcdir/include"
66if test x$srcdir != x.; then
67    # Remove SDL_config.h from the source directory, since it's the
68    # default one, and we want to include the one that we generate.
69    if test -f $srcdir/include/SDL_config.h; then
70        rm $srcdir/include/SDL_config.h
71    fi
72    INCLUDE="-Iinclude $INCLUDE"
73fi
74case "$host" in
75    *-*-cygwin*)
76        # We build SDL on cygwin without the UNIX emulation layer
77        BASE_CFLAGS="-I/usr/include/mingw -mno-cygwin"
78        BASE_LDFLAGS="-mno-cygwin"
79        ;;
80    *)
81        BASE_CFLAGS="-D_GNU_SOURCE=1"
82        BASE_LDFLAGS=""
83        ;;
84esac
85BUILD_CFLAGS="$CFLAGS $CPPFLAGS"
86EXTRA_CFLAGS="$INCLUDE $BASE_CFLAGS"
87BUILD_LDFLAGS="$LDFLAGS"
88EXTRA_LDFLAGS="$BASE_LDFLAGS"
89## These are common directories to find software packages
90#for path in /usr/freeware /usr/pkg /usr/X11R6 /usr/local; do
91#    if test -d $path/include; then
92#        EXTRA_CFLAGS="$EXTRA_CFLAGS -I$path/include"
93#    fi
94#    if test -d $path/lib; then
95#        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$path/lib"
96#    fi
97#done
98SDL_CFLAGS="$BASE_CFLAGS"
99SDL_LIBS="-lSDL $BASE_LDFLAGS"
100CPPFLAGS="$CPPFLAGS $EXTRA_CFLAGS"
101CFLAGS="$CFLAGS $EXTRA_CFLAGS"
102LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
103
104dnl set this to use on systems that use lib64 instead of lib
105base_libdir=`echo \${libdir} | sed 's/.*\/\(.*\)/\1/; q'`
106
107dnl Function to find a library in the compiler search path
108find_lib()
109{
110    gcc_bin_path=[`$CC -print-search-dirs 2>/dev/null | fgrep programs: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
111    gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
112    env_lib_path=[`echo $LIBS $LDFLAGS $* | sed 's/-L[ ]*//g'`]
113    if test "$cross_compiling" = yes; then
114        host_lib_path=""
115    else
116        host_lib_path="/usr/$base_libdir /usr/local/$base_libdir"
117    fi
118    for path in $gcc_bin_path $gcc_lib_path $env_lib_path $host_lib_path; do
119        lib=[`ls -- $path/$1 2>/dev/null | sort | sed 's/.*\/\(.*\)/\1/; q'`]
120        if test x$lib != x; then
121            echo $lib
122            return
123        fi
124    done
125}
126
127dnl Check for compiler characteristics
128AC_C_CONST
129AC_C_INLINE
130AC_C_VOLATILE
131
132dnl See whether we are allowed to use the system C library
133AC_ARG_ENABLE(libc,
134AC_HELP_STRING([--enable-libc], [Use the system C library [[default=yes]]]),
135              , enable_libc=yes)
136if test x$enable_libc = xyes; then
137    AC_DEFINE(HAVE_LIBC)
138
139    dnl Check for C library headers
140    AC_HEADER_STDC
141    AC_CHECK_HEADERS(sys/types.h stdio.h stdlib.h stddef.h stdarg.h malloc.h memory.h string.h strings.h inttypes.h stdint.h ctype.h math.h iconv.h signal.h)
142
143    dnl Check for typedefs, structures, etc.
144    AC_TYPE_SIZE_T
145    if test x$ac_cv_header_inttypes_h = xyes -o x$ac_cv_header_stdint_h = xyes; then
146        AC_CHECK_TYPE(int64_t)
147        if test x$ac_cv_type_int64_t = xyes; then
148            AC_DEFINE(SDL_HAS_64BIT_TYPE)
149        fi
150        have_inttypes=yes
151    fi
152
153    dnl Checks for library functions.
154    case "$host" in
155    *-*-cygwin* | *-*-mingw32*)
156        ;;
157    *)
158        AC_FUNC_ALLOCA
159        ;;
160    esac
161
162    AC_FUNC_MEMCMP
163    if test x$ac_cv_func_memcmp_working = xyes; then
164        AC_DEFINE(HAVE_MEMCMP)
165    fi
166    AC_FUNC_STRTOD
167    if test x$ac_cv_func_strtod = xyes; then
168        AC_DEFINE(HAVE_STRTOD)
169    fi
170    AC_CHECK_FUNC(mprotect,
171        AC_TRY_COMPILE([
172          #include <sys/types.h>
173          #include <sys/mman.h>
174        ],[
175        ],[
176        AC_DEFINE(HAVE_MPROTECT)
177        ]),
178    )
179    AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf iconv sigaction setjmp nanosleep)
180
181    AC_CHECK_LIB(iconv, libiconv_open, [EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
182    AC_CHECK_LIB(m, pow, [EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
183
184    AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE(HAVE_SA_SIGACTION)], ,[#include <signal.h>])
185fi
186
187if test x$have_inttypes != xyes; then
188    AC_CHECK_SIZEOF(char, 1)
189    AC_CHECK_SIZEOF(short, 2)
190    AC_CHECK_SIZEOF(int, 4)
191    AC_CHECK_SIZEOF(long, 4)
192    AC_CHECK_SIZEOF(long long, 8)
193    if test x$ac_cv_sizeof_char = x1; then
194        AC_DEFINE(int8_t, signed char)
195        AC_DEFINE(uint8_t, unsigned char)
196    fi
197    if test x$ac_cv_sizeof_short = x2; then
198        AC_DEFINE(int16_t, signed short)
199        AC_DEFINE(uint16_t, unsigned short)
200    else
201        if test x$ac_cv_sizeof_int = x2; then
202            AC_DEFINE(int16_t, signed int)
203            AC_DEFINE(uint16_t, unsigned int)
204        fi
205    fi
206    if test x$ac_cv_sizeof_int = x4; then
207        AC_DEFINE(int32_t, signed int)
208        AC_DEFINE(uint32_t, unsigned int)
209    else
210        if test x$ac_cv_sizeof_long = x4; then
211            AC_DEFINE(int32_t, signed long)
212            AC_DEFINE(uint32_t, unsigned long)
213        fi
214    fi
215    if test x$ac_cv_sizeof_long = x8; then
216        AC_DEFINE(int64_t, signed long)
217        AC_DEFINE(uint64_t, unsigned long)
218        AC_DEFINE(SDL_HAS_64BIT_TYPE)
219    else
220        if test x$ac_cv_sizeof_long_long = x8; then
221            AC_DEFINE(int64_t, signed long long)
222            AC_DEFINE(uint64_t, unsigned long long)
223            AC_DEFINE(SDL_HAS_64BIT_TYPE)
224        fi
225    fi
226    AC_DEFINE(size_t, unsigned int)
227    AC_DEFINE(uintptr_t, unsigned long)
228fi
229
230# Standard C sources
231SOURCES="$SOURCES $srcdir/src/*.c"
232SOURCES="$SOURCES $srcdir/src/audio/*.c"
233SOURCES="$SOURCES $srcdir/src/cdrom/*.c"
234SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c"
235SOURCES="$SOURCES $srcdir/src/events/*.c"
236SOURCES="$SOURCES $srcdir/src/file/*.c"
237SOURCES="$SOURCES $srcdir/src/stdlib/*.c"
238SOURCES="$SOURCES $srcdir/src/thread/*.c"
239SOURCES="$SOURCES $srcdir/src/timer/*.c"
240SOURCES="$SOURCES $srcdir/src/video/*.c"
241
242dnl Enable/disable various subsystems of the SDL library
243
244AC_ARG_ENABLE(audio,
245AC_HELP_STRING([--enable-audio], [Enable the audio subsystem [[default=yes]]]),
246              , enable_audio=yes)
247if test x$enable_audio != xyes; then
248    AC_DEFINE(SDL_AUDIO_DISABLED)
249fi
250AC_ARG_ENABLE(video,
251AC_HELP_STRING([--enable-video], [Enable the video subsystem [[default=yes]]]),
252              , enable_video=yes)
253if test x$enable_video != xyes; then
254    AC_DEFINE(SDL_VIDEO_DISABLED)
255fi
256AC_ARG_ENABLE(events,
257AC_HELP_STRING([--enable-events], [Enable the events subsystem [[default=yes]]]),
258              , enable_events=yes)
259if test x$enable_events != xyes; then
260    AC_DEFINE(SDL_EVENTS_DISABLED)
261fi
262AC_ARG_ENABLE(joystick,
263AC_HELP_STRING([--enable-joystick], [Enable the joystick subsystem [[default=yes]]]),
264              , enable_joystick=yes)
265if test x$enable_joystick != xyes; then
266    AC_DEFINE(SDL_JOYSTICK_DISABLED)
267else
268    SOURCES="$SOURCES $srcdir/src/joystick/*.c"
269fi
270AC_ARG_ENABLE(cdrom,
271AC_HELP_STRING([--enable-cdrom], [Enable the cdrom subsystem [[default=yes]]]),
272              , enable_cdrom=yes)
273if test x$enable_cdrom != xyes; then
274    AC_DEFINE(SDL_CDROM_DISABLED)
275fi
276AC_ARG_ENABLE(threads,
277AC_HELP_STRING([--enable-threads], [Enable the threading subsystem [[default=yes]]]),
278              , enable_threads=yes)
279if test x$enable_threads != xyes; then
280    AC_DEFINE(SDL_THREADS_DISABLED)
281fi
282AC_ARG_ENABLE(timers,
283AC_HELP_STRING([--enable-timers], [Enable the timer subsystem [[default=yes]]]),
284              , enable_timers=yes)
285if test x$enable_timers != xyes; then
286    AC_DEFINE(SDL_TIMERS_DISABLED)
287fi
288AC_ARG_ENABLE(file,
289AC_HELP_STRING([--enable-file], [Enable the file subsystem [[default=yes]]]),
290              , enable_file=yes)
291if test x$enable_file != xyes; then
292    AC_DEFINE(SDL_FILE_DISABLED)
293fi
294AC_ARG_ENABLE(loadso,
295AC_HELP_STRING([--enable-loadso], [Enable the shared object loading subsystem [[default=yes]]]),
296              , enable_loadso=yes)
297if test x$enable_loadso != xyes; then
298    AC_DEFINE(SDL_LOADSO_DISABLED)
299fi
300AC_ARG_ENABLE(cpuinfo,
301AC_HELP_STRING([--enable-cpuinfo], [Enable the cpuinfo subsystem [[default=yes]]]),
302              , enable_cpuinfo=yes)
303if test x$enable_cpuinfo != xyes; then
304    AC_DEFINE(SDL_CPUINFO_DISABLED)
305fi
306AC_ARG_ENABLE(assembly,
307AC_HELP_STRING([--enable-assembly], [Enable assembly routines [[default=yes]]]),
308              , enable_assembly=yes)
309if test x$enable_assembly = xyes; then
310    AC_DEFINE(SDL_ASSEMBLY_ROUTINES)
311fi
312
313dnl See if the OSS audio interface is supported
314CheckOSS()
315{
316    AC_ARG_ENABLE(oss,
317AC_HELP_STRING([--enable-oss], [support the OSS audio API [[default=yes]]]),
318                  , enable_oss=yes)
319    if test x$enable_audio = xyes -a x$enable_oss = xyes; then
320        AC_MSG_CHECKING(for OSS audio support)
321        have_oss=no
322        if test x$have_oss != xyes; then
323            AC_TRY_COMPILE([
324              #include <sys/soundcard.h>
325            ],[
326              int arg = SNDCTL_DSP_SETFRAGMENT;
327            ],[
328            have_oss=yes
329            ])
330        fi
331        if test x$have_oss != xyes; then
332            AC_TRY_COMPILE([
333              #include <soundcard.h>
334            ],[
335              int arg = SNDCTL_DSP_SETFRAGMENT;
336            ],[
337            have_oss=yes
338            AC_DEFINE(SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H)
339            ])
340        fi
341        AC_MSG_RESULT($have_oss)
342        if test x$have_oss = xyes; then
343            AC_DEFINE(SDL_AUDIO_DRIVER_OSS)
344            SOURCES="$SOURCES $srcdir/src/audio/dsp/*.c"
345            SOURCES="$SOURCES $srcdir/src/audio/dma/*.c"
346            have_audio=yes
347
348            # We may need to link with ossaudio emulation library
349            case "$host" in
350                *-*-openbsd*|*-*-netbsd*)
351                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lossaudio";;
352            esac
353        fi
354    fi
355}
356
357dnl See if the ALSA audio interface is supported
358CheckALSA()
359{
360    AC_ARG_ENABLE(alsa,
361AC_HELP_STRING([--enable-alsa], [support the ALSA audio API [[default=yes]]]),
362                  , enable_alsa=yes)
363    if test x$enable_audio = xyes -a x$enable_alsa = xyes; then
364        AM_PATH_ALSA(0.9.0, have_alsa=yes, have_alsa=no)
365        # Restore all flags from before the ALSA detection runs
366        CFLAGS="$alsa_save_CFLAGS"
367        LDFLAGS="$alsa_save_LDFLAGS"
368        LIBS="$alsa_save_LIBS"
369        if test x$have_alsa = xyes; then
370            AC_ARG_ENABLE(alsa-shared,
371AC_HELP_STRING([--enable-alsa-shared], [dynamically load ALSA audio support [[default=yes]]]),
372                          , enable_alsa_shared=yes)
373            alsa_lib=[`find_lib "libasound.so.*" "$ALSA_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
374
375            AC_DEFINE(SDL_AUDIO_DRIVER_ALSA)
376            SOURCES="$SOURCES $srcdir/src/audio/alsa/*.c"
377            EXTRA_CFLAGS="$EXTRA_CFLAGS $ALSA_CFLAGS"
378            if test x$have_loadso != xyes && \
379               test x$enable_alsa_shared = xyes; then
380                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ALSA loading])
381            fi
382            if test x$have_loadso = xyes && \
383               test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then
384                echo "-- dynamic libasound -> $alsa_lib"
385                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ALSA_DYNAMIC, "$alsa_lib")
386            else
387                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS"
388            fi
389            have_audio=yes
390        fi
391    fi
392}
393
394dnl Check whether we want to use IRIX 6.5+ native audio or not
395CheckDMEDIA()
396{
397    if test x$enable_audio = xyes; then
398        AC_MSG_CHECKING(for dmedia audio support)
399        have_dmedia=no
400        AC_TRY_COMPILE([
401          #include <dmedia/audio.h>
402        ],[
403          ALport audio_port;
404        ],[
405        have_dmedia=yes
406        ])
407        AC_MSG_RESULT($have_dmedia)
408        # Set up files for the audio library
409        if test x$have_dmedia = xyes; then
410            AC_DEFINE(SDL_AUDIO_DRIVER_DMEDIA)
411            SOURCES="$SOURCES $srcdir/src/audio/dmedia/*.c"
412            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -laudio"
413            have_audio=yes
414        fi
415    fi
416}
417
418dnl Check whether we want to use Tru64 UNIX native audio or not
419CheckMME()
420{
421    dnl Make sure we are running on an Tru64 UNIX
422    case $ARCH in
423        osf)
424            ;;
425        *)
426            return
427            ;;
428    esac
429    if test x$enable_audio = xyes; then
430        AC_MSG_CHECKING(for MME audio support)
431        MME_CFLAGS="-I/usr/include/mme"
432        MME_LIBS="-lmme"
433        have_mme=no
434        save_CFLAGS="$CFLAGS"
435        CFLAGS="$CFLAGS $MME_CFLAGS"
436        AC_TRY_COMPILE([
437          #include <mme_api.h>
438        ],[
439          HWAVEOUT sound;
440        ],[
441        have_mme=yes
442        ])
443        CFLAGS="$save_CFLAGS"
444        AC_MSG_RESULT($have_mme)
445        # Set up files for the audio library
446        if test x$have_mme = xyes; then
447            AC_DEFINE(SDL_AUDIO_DRIVER_MMEAUDIO)
448            SOURCES="$SOURCES $srcdir/src/audio/mme/*.c"
449            EXTRA_CFLAGS="$EXTRA_CFLAGS $MME_CFLAGS"
450            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $MME_LIBS"
451            have_audio=yes
452        fi
453    fi
454}
455
456dnl Find the ESD includes and libraries
457CheckESD()
458{
459    AC_ARG_ENABLE(esd,
460AC_HELP_STRING([--enable-esd], [support the Enlightened Sound Daemon [[default=yes]]]),
461                  , enable_esd=yes)
462    if test x$enable_audio = xyes -a x$enable_esd = xyes; then
463        AM_PATH_ESD(0.2.8, have_esd=yes, have_esd=no)
464        if test x$have_esd = xyes; then
465            AC_ARG_ENABLE(esd-shared,
466AC_HELP_STRING([--enable-esd-shared], [dynamically load ESD audio support [[default=yes]]]),
467                          , enable_esd_shared=yes)
468            esd_lib=[`find_lib "libesd.so.*" "$ESD_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
469
470            AC_DEFINE(SDL_AUDIO_DRIVER_ESD)
471            SOURCES="$SOURCES $srcdir/src/audio/esd/*.c"
472            EXTRA_CFLAGS="$EXTRA_CFLAGS $ESD_CFLAGS"
473            if test x$have_loadso != xyes && \
474               test x$enable_esd_shared = xyes; then
475                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ESD loading])
476            fi
477            if test x$have_loadso = xyes && \
478               test x$enable_esd_shared = xyes && test x$esd_lib != x; then
479                echo "-- dynamic libesd -> $esd_lib"
480                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ESD_DYNAMIC, "$esd_lib")
481            else
482                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS"
483            fi
484            have_audio=yes
485        fi
486    fi
487}
488
489dnl Find PulseAudio
490CheckPulseAudio()
491{
492    AC_ARG_ENABLE(pulseaudio,
493AC_HELP_STRING([--enable-pulseaudio], [use PulseAudio [[default=yes]]]),
494                  , enable_pulseaudio=yes)
495    if test x$enable_audio = xyes -a x$enable_pulseaudio = xyes; then
496        audio_pulse=no
497
498        PULSE_REQUIRED_VERSION=0.9
499
500        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
501        AC_MSG_CHECKING(for PulseAudio $PULSE_REQUIRED_VERSION support)
502        if test x$PKG_CONFIG != xno; then
503            if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $PULSE_REQUIRED_VERSION libpulse-simple; then
504                PULSE_CFLAGS=`$PKG_CONFIG --cflags libpulse-simple`
505                PULSE_LIBS=`$PKG_CONFIG --libs libpulse-simple`
506                audio_pulse=yes
507            fi
508        fi
509        AC_MSG_RESULT($audio_pulse)
510
511        if test x$audio_pulse = xyes; then
512            AC_ARG_ENABLE(pulseaudio-shared,
513AC_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio support [[default=yes]]]),
514                          , enable_pulseaudio_shared=yes)
515            pulse_lib=[`find_lib "libpulse-simple.so.*" "$PULSE_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
516
517            AC_DEFINE(SDL_AUDIO_DRIVER_PULSE)
518            SOURCES="$SOURCES $srcdir/src/audio/pulse/*.c"
519            EXTRA_CFLAGS="$EXTRA_CFLAGS $PULSE_CFLAGS"
520            if test x$have_loadso != xyes && \
521               test x$enable_pulseaudio_shared = xyes; then
522                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic PulseAudio loading])
523            fi
524            if test x$have_loadso = xyes && \
525               test x$enable_pulseaudio_shared = xyes && test x$pulse_lib != x; then
526                echo "-- dynamic libpulse-simple -> $pulse_lib"
527                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PULSE_DYNAMIC, "$pulse_lib")
528            else
529                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSE_LIBS"
530            fi
531            have_audio=yes
532        fi
533    fi
534}
535
536CheckARTSC()
537{
538    AC_ARG_ENABLE(arts,
539AC_HELP_STRING([--enable-arts], [support the Analog Real Time Synthesizer [[default=yes]]]),
540                  , enable_arts=yes)
541    if test x$enable_audio = xyes -a x$enable_arts = xyes; then
542        AC_PATH_PROG(ARTSCONFIG, artsc-config)
543        if test x$ARTSCONFIG = x -o x$ARTSCONFIG = x'"$ARTSCONFIG"'; then
544            : # arts isn't installed
545        else
546            ARTS_CFLAGS=`$ARTSCONFIG --cflags`
547            ARTS_LIBS=`$ARTSCONFIG --libs`
548            AC_MSG_CHECKING(for aRts development environment)
549            audio_arts=no
550            save_CFLAGS="$CFLAGS"
551            CFLAGS="$CFLAGS $ARTS_CFLAGS"
552            AC_TRY_COMPILE([
553             #include <artsc.h>
554            ],[
555             arts_stream_t stream;
556            ],[
557            audio_arts=yes
558            ])
559            CFLAGS="$save_CFLAGS"
560            AC_MSG_RESULT($audio_arts)
561            if test x$audio_arts = xyes; then
562                AC_ARG_ENABLE(arts-shared,
563AC_HELP_STRING([--enable-arts-shared], [dynamically load aRts audio support [[default=yes]]]),
564                              , enable_arts_shared=yes)
565                arts_lib=[`find_lib "libartsc.so.*" "$ARTS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
566
567                AC_DEFINE(SDL_AUDIO_DRIVER_ARTS)
568                SOURCES="$SOURCES $srcdir/src/audio/arts/*.c"
569                EXTRA_CFLAGS="$EXTRA_CFLAGS $ARTS_CFLAGS"
570                if test x$have_loadso != xyes && \
571                   test x$enable_arts_shared = xyes; then
572                    AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ARTS loading])
573                fi
574                if test x$have_loadso = xyes && \
575                   test x$enable_arts_shared = xyes && test x$arts_lib != x; then
576                    echo "-- dynamic libartsc -> $arts_lib"
577                    AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ARTS_DYNAMIC, "$arts_lib")
578                else
579                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS"
580                fi
581                have_audio=yes
582            fi
583        fi
584    fi
585}
586
587dnl See if the NAS audio interface is supported
588CheckNAS()
589{
590    AC_ARG_ENABLE(nas,
591AC_HELP_STRING([--enable-nas], [support the NAS audio API [[default=yes]]]),
592                  , enable_nas=yes)
593    if test x$enable_audio = xyes -a x$enable_nas = xyes; then
594        AC_CHECK_HEADER(audio/audiolib.h, have_nas_hdr=yes)
595        AC_CHECK_LIB(audio, AuOpenServer, have_nas_lib=yes)
596
597        AC_MSG_CHECKING(for NAS audio support)
598        have_nas=no
599
600        if test x$have_nas_hdr = xyes -a x$have_nas_lib = xyes; then
601            have_nas=yes
602            NAS_LIBS="-laudio"
603
604        elif test -r /usr/X11R6/include/audio/audiolib.h; then
605            have_nas=yes
606            NAS_CFLAGS="-I/usr/X11R6/include/"
607            NAS_LIBS="-L/usr/X11R6/lib -laudio -lXt"
608
609        dnl On IRIX, the NAS includes are in a different directory,
610        dnl and libnas must be explicitly linked in
611
612        elif test -r /usr/freeware/include/nas/audiolib.h; then
613            have_nas=yes
614            NAS_LIBS="-lnas -lXt"
615        fi
616
617        AC_MSG_RESULT($have_nas)
618
619        if test x$have_nas = xyes; then
620            AC_ARG_ENABLE(nas-shared,
621AC_HELP_STRING([--enable-nas-shared], [dynamically load NAS audio support [[default=yes]]]),
622                          , enable_nas_shared=yes)
623            nas_lib=[`find_lib "libaudio.so.*" "$NAS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
624
625            if test x$have_loadso != xyes && \
626               test x$enable_nas_shared = xyes; then
627                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic NAS loading])
628            fi
629            if test x$have_loadso = xyes && \
630               test x$enable_nas_shared = xyes && test x$nas_lib != x; then
631                echo "-- dynamic libaudio -> $nas_lib"
632                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_NAS_DYNAMIC, "$nas_lib")
633            else
634                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS"
635            fi
636
637            AC_DEFINE(SDL_AUDIO_DRIVER_NAS)
638            SOURCES="$SOURCES $srcdir/src/audio/nas/*.c"
639            EXTRA_CFLAGS="$EXTRA_CFLAGS $NAS_CFLAGS"
640            have_audio=yes
641        fi
642    fi
643}
644
645dnl rcg07142001 See if the user wants the disk writer audio driver...
646CheckDiskAudio()
647{
648    AC_ARG_ENABLE(diskaudio,
649AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [[default=yes]]]),
650                  , enable_diskaudio=yes)
651    if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then
652        AC_DEFINE(SDL_AUDIO_DRIVER_DISK)
653        SOURCES="$SOURCES $srcdir/src/audio/disk/*.c"
654    fi
655}
656
657dnl rcg03142006 See if the user wants the dummy audio driver...
658CheckDummyAudio()
659{
660    AC_ARG_ENABLE(dummyaudio,
661AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [[default=yes]]]),
662                  , enable_dummyaudio=yes)
663    if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then
664        AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY)
665        SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
666    fi
667}
668
669dnl Set up the Atari Audio driver
670CheckAtariAudio()
671{
672    AC_ARG_ENABLE(mintaudio,
673AC_HELP_STRING([--enable-mintaudio], [support Atari audio driver [[default=yes]]]),
674                  , enable_mintaudio=yes)
675    if test x$enable_audio = xyes -a x$enable_mintaudio = xyes; then
676        mintaudio=no
677        AC_CHECK_HEADER(mint/falcon.h, have_mint_falcon_hdr=yes)
678        if test x$have_mint_falcon_hdr = xyes; then
679            mintaudio=yes
680            AC_DEFINE(SDL_AUDIO_DRIVER_MINT)
681            SOURCES="$SOURCES $srcdir/src/audio/mint/*.c"
682            SOURCES="$SOURCES $srcdir/src/audio/mint/*.S"
683            have_audio=yes
684        fi
685    fi
686}
687
688dnl See if we can use x86 assembly blitters
689# NASM is available from: http://nasm.sourceforge.net
690CheckNASM()
691{
692    dnl Make sure we are running on an x86 platform
693    case $host in
694        i?86*)
695            ;;
696        *)
697        # Nope, bail early.
698            return
699            ;;
700    esac
701
702    dnl Mac OS X might report itself as "i386" but generate x86_64 code.
703    dnl  So see what size we think a pointer is, and bail if not 32-bit.
704    AC_CHECK_SIZEOF([void *], 4)
705    if test x$ac_cv_sizeof_void_p != x4; then
706        return
707    fi
708
709    dnl Check for NASM (for assembly blit routines)
710    AC_ARG_ENABLE(nasm,
711AC_HELP_STRING([--enable-nasm], [use nasm assembly blitters on x86 [[default=yes]]]),
712                  , enable_nasm=yes)
713    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_nasm = xyes; then
714        CompileNASM()
715        {
716            # Usage: CompileNASM <filename>
717            AC_MSG_CHECKING(to see if $NASM supports $1)
718            if $NASM $NASMFLAGS $1 -o $1.o >&AS_MESSAGE_LOG_FD 2>&1; then
719                CompileNASM_ret="yes"
720            else
721                CompileNASM_ret="no"
722            fi
723            rm -f $1 $1.o
724            AC_MSG_RESULT($CompileNASM_ret)
725            test "$CompileNASM_ret" = "yes"
726        }
727
728        if test x"$NASMFLAGS" = x; then
729            case $ARCH in
730              win32)
731                  NASMFLAGS="-f win32"
732                  ;;
733              macosx)
734                  NASMFLAGS="-f macho"
735                  ;;
736              *)
737                  NASMFLAGS="-f elf32"
738                  ;;
739            esac
740        fi
741
742        AC_PATH_PROG(NASM, nasm)
743        echo "%ifidn __OUTPUT_FORMAT__,elf32" > unquoted-sections
744        echo "section .note.GNU-stack noalloc noexec nowrite progbits" >> unquoted-sections
745        echo "%endif" >> unquoted-sections
746        CompileNASM unquoted-sections || NASM=""
747
748        if test "x$NASM" != x -a "x$NASM" != x'"$NASM"'; then
749            AC_DEFINE(SDL_HERMES_BLITTERS)
750            SOURCES="$SOURCES $srcdir/src/hermes/*.asm"
751            NASMFLAGS="$NASMFLAGS -I $srcdir/src/hermes/"
752
753            dnl See if hidden visibility is supported
754            echo "GLOBAL _bar:function hidden" > symbol-visibility
755            echo "_bar:" >> symbol-visibility
756            CompileNASM symbol-visibility && NASMFLAGS="$NASMFLAGS -DHIDDEN_VISIBILITY"
757
758            AC_SUBST(NASM)
759            AC_SUBST(NASMFLAGS)
760
761            case "$host" in
762                # this line is needed for QNX, because it's not defined the __ELF__
763                *-*-qnx*)
764                     EXTRA_CFLAGS="$EXTRA_CFLAGS -D__ELF__";;
765                *-*-solaris*)
766                     EXTRA_CFLAGS="$EXTRA_CFLAGS -D__ELF__";;
767            esac
768        fi
769    fi
770}
771
772dnl Check for altivec instruction support using gas syntax
773CheckAltivec()
774{
775    AC_ARG_ENABLE(altivec,
776AC_HELP_STRING([--enable-altivec], [use altivec assembly blitters on PPC [[default=yes]]]),
777                  , enable_altivec=yes)
778    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_altivec = xyes; then
779        save_CFLAGS="$CFLAGS"
780        have_gcc_altivec=no
781        have_altivec_h_hdr=no
782        altivec_CFLAGS="-maltivec"
783        CFLAGS="$save_CFLAGS $altivec_CFLAGS"
784
785        AC_MSG_CHECKING(for Altivec with GCC altivec.h and -maltivec option)
786        AC_TRY_COMPILE([
787        #include <altivec.h>
788        vector unsigned int vzero() {
789            return vec_splat_u32(0);
790        }
791        ],[
792        ],[
793        have_gcc_altivec=yes
794        have_altivec_h_hdr=yes
795        ])
796        AC_MSG_RESULT($have_gcc_altivec)
797
798        if test x$have_gcc_altivec = xno; then
799            AC_MSG_CHECKING(for Altivec with GCC -maltivec option)
800            AC_TRY_COMPILE([
801            vector unsigned int vzero() {
802                return vec_splat_u32(0);
803            }
804            ],[
805            ],[
806            have_gcc_altivec=yes
807            ])
808            AC_MSG_RESULT($have_gcc_altivec)
809        fi
810
811        if test x$have_gcc_altivec = xno; then
812            AC_MSG_CHECKING(for Altivec with GCC altivec.h and -faltivec option)
813            altivec_CFLAGS="-faltivec"
814            CFLAGS="$save_CFLAGS $altivec_CFLAGS"
815            AC_TRY_COMPILE([
816            #include <altivec.h>
817            vector unsigned int vzero() {
818                return vec_splat_u32(0);
819            }
820            ],[
821            ],[
822            have_gcc_altivec=yes
823            have_altivec_h_hdr=yes
824            ])
825            AC_MSG_RESULT($have_gcc_altivec)
826	fi
827
828        if test x$have_gcc_altivec = xno; then
829            AC_MSG_CHECKING(for Altivec with GCC -faltivec option)
830            AC_TRY_COMPILE([
831            vector unsigned int vzero() {
832                return vec_splat_u32(0);
833            }
834            ],[
835            ],[
836            have_gcc_altivec=yes
837            ])
838            AC_MSG_RESULT($have_gcc_altivec)
839        fi
840        CFLAGS="$save_CFLAGS"
841
842        if test x$have_gcc_altivec = xyes; then
843            AC_DEFINE(SDL_ALTIVEC_BLITTERS)
844            if test x$have_altivec_h_hdr = xyes; then
845              AC_DEFINE(HAVE_ALTIVEC_H)
846            fi
847            EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
848        fi
849    fi
850}
851
852dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
853dnl  Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
854CheckVisibilityHidden()
855{
856    AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
857    have_gcc_fvisibility=no
858
859    visibility_CFLAGS="-fvisibility=hidden"
860    save_CFLAGS="$CFLAGS"
861    CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
862    AC_TRY_COMPILE([
863    #if !defined(__GNUC__) || __GNUC__ < 4
864    #error SDL only uses visibility attributes in GCC 4 or newer
865    #endif
866    ],[
867    ],[
868    have_gcc_fvisibility=yes
869    ])
870    AC_MSG_RESULT($have_gcc_fvisibility)
871    CFLAGS="$save_CFLAGS"
872
873    if test x$have_gcc_fvisibility = xyes; then
874        EXTRA_CFLAGS="$EXTRA_CFLAGS $visibility_CFLAGS"
875    fi
876}
877
878dnl See if GCC's -Wall is supported.
879CheckWarnAll()
880{
881    AC_MSG_CHECKING(for GCC -Wall option)
882    have_gcc_Wall=no
883
884    save_CFLAGS="$CFLAGS"
885    CFLAGS="$save_CFLAGS -Wall"
886    AC_TRY_COMPILE([
887    int x = 0;
888    ],[
889    ],[
890    have_gcc_Wall=yes
891    ])
892    AC_MSG_RESULT($have_gcc_Wall)
893    CFLAGS="$save_CFLAGS"
894
895    if test x$have_gcc_Wall = xyes; then
896        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
897
898        dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
899        AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
900        need_gcc_Wno_multichar=no
901        case "$host" in
902            *-*-beos* | *-*-haiku*)
903                need_gcc_Wno_multichar=yes
904                ;;
905        esac
906        AC_MSG_RESULT($need_gcc_Wno_multichar)
907        if test x$need_gcc_Wno_multichar = xyes; then
908            EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-multichar"
909        fi
910    fi
911}
912
913
914dnl Do the iPod thing
915CheckIPod()
916{
917    AC_ARG_ENABLE(ipod,
918AC_HELP_STRING([--enable-ipod], [configure SDL to work with iPodLinux [[default=no]]]),
919        , enable_ipod=no)
920
921    if test x$enable_ipod = xyes; then
922        EXTRA_CFLAGS="$EXTRA_CFLAGS -DIPOD"
923        AC_DEFINE(SDL_VIDEO_DRIVER_IPOD)
924        SOURCES="$SOURCES $srcdir/src/video/ipod/*.c"
925    fi
926}
927
928dnl Find the nanox include and library directories
929CheckNANOX()
930{
931    AC_ARG_ENABLE(video-nanox,
932        AC_HELP_STRING([--enable-video-nanox], [use nanox video driver [[default=no]]]),
933        , enable_video_nanox=no)
934
935    if test x$enable_video = xyes -a x$enable_video_nanox = xyes; then
936        AC_ARG_ENABLE(nanox-debug,  
937            AC_HELP_STRING([--enable-nanox-debug], [print debug messages [[default=no]]]),
938            , enable_nanox_debug=no)
939        if test x$enable_nanox_debug = xyes; then
940            EXTRA_CFLAGS="$EXTRA_CFLAGS -DENABLE_NANOX_DEBUG"
941        fi
942
943        AC_ARG_ENABLE(nanox-share-memory,  
944            AC_HELP_STRING([--enable-nanox-share-memory], [use share memory [[default=no]]]),
945            , enable_nanox_share_memory=no)
946        if test x$enable_nanox_share_memory = xyes; then
947            EXTRA_CFLAGS="$EXTRA_CFLAGS -DNANOX_SHARE_MEMORY"
948        fi
949
950        AC_ARG_ENABLE(nanox_direct_fb, 
951            AC_HELP_STRING([--enable-nanox-direct-fb], [use direct framebuffer access [[default=no]]]),
952            , enable_nanox_direct_fb=no)
953        if test x$enable_nanox_direct_fb = xyes; then
954            EXTRA_CFLAGS="$EXTRA_CFLAGS -DENABLE_NANOX_DIRECT_FB"
955        fi
956
957        AC_DEFINE(SDL_VIDEO_DRIVER_NANOX)
958        SOURCES="$SOURCES $srcdir/src/video/nanox/*.c"
959        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lnano-X"
960        have_video=yes
961    fi
962}
963
964dnl Find the X11 include and library directories
965CheckX11()
966{
967    AC_ARG_ENABLE(video-x11,
968AC_HELP_STRING([--enable-video-x11], [use X11 video driver [[default=yes]]]),
969                  , enable_video_x11=yes)
970    if test x$enable_video = xyes -a x$enable_video_x11 = xyes; then
971        case "$host" in
972            *-*-darwin*)
973                # This isn't necessary for X11, but fixes GLX detection
974                if test "x$x_includes" = xNONE && test "x$x_libraries" = xNONE; then
975                    x_includes="/usr/X11R6/include"
976                    x_libraries="/usr/X11R6/lib"
977                fi
978                ;;
979        esac
980        AC_PATH_X
981        AC_PATH_XTRA
982        if test x$have_x = xyes; then
983            # Only allow dynamically loaded X11 if the X11 function pointers
984            # will not end up in the global namespace, which causes problems
985            # with other libraries calling X11 functions.
986            x11_symbols_private=$have_gcc_fvisibility
987
988            AC_ARG_ENABLE(x11-shared,
989AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=maybe]]]),
990                          , enable_x11_shared=maybe)
991
992            case "$host" in
993                *-*-darwin*) # Latest Mac OS X actually ships with Xrandr/Xrender libs...
994                    x11_symbols_private=yes
995                    x11_lib='/usr/X11R6/lib/libX11.6.dylib'
996                    x11ext_lib='/usr/X11R6/lib/libXext.6.dylib'
997                    xrender_lib='/usr/X11R6/lib/libXrender.1.dylib'
998                    xrandr_lib='/usr/X11R6/lib/libXrandr.2.dylib'
999                    ;;
1000                *-*-osf*)
1001                    x11_lib='libX11.so'
1002                    x11ext_lib='libXext.so'
1003                    ;;
1004                *-*-irix*) # IRIX 6.5 requires that we use /usr/lib32
1005                    x11_lib='libX11.so'
1006                    x11ext_lib='libXext.so'
1007                    ;;
1008                *)
1009                    x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1010                    x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1011                    xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1012                    xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1013                    ;;
1014            esac
1015
1016            X_CFLAGS="$X_CFLAGS -DXTHREADS"
1017            if test x$ac_cv_func_shmat != xyes; then
1018                X_CFLAGS="$X_CFLAGS -DNO_SHARED_MEMORY"
1019            fi
1020            CFLAGS="$CFLAGS $X_CFLAGS"
1021            LDFLAGS="$LDFLAGS $X_LIBS"
1022
1023            AC_DEFINE(SDL_VIDEO_DRIVER_X11)
1024            SOURCES="$SOURCES $srcdir/src/video/x11/*.c"
1025            EXTRA_CFLAGS="$EXTRA_CFLAGS $X_CFLAGS"
1026
1027            if test x$enable_x11_shared = xmaybe; then
1028                enable_x11_shared=$x11_symbols_private
1029            fi
1030            if test x$have_loadso != xyes && \
1031               test x$enable_x11_shared = xyes; then
1032                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading])
1033                enable_x11_shared=no
1034            fi
1035            if test x$x11_symbols_private != xyes && \
1036               test x$enable_x11_shared = xyes; then
1037                AC_MSG_WARN([You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading])
1038                enable_x11_shared=no
1039            fi
1040
1041            if test x$have_loadso = xyes && \
1042               test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then
1043                echo "-- dynamic libX11 -> $x11_lib"
1044                echo "-- dynamic libX11ext -> $x11ext_lib"
1045                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib")
1046                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib")
1047            else
1048                enable_x11_shared=no
1049                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext"
1050            fi
1051            have_video=yes
1052
1053            AC_ARG_ENABLE(dga,
1054AC_HELP_STRING([--enable-dga], [allow use of X11 DGA code [[default=yes]]]),
1055                          , enable_dga=yes)
1056            if test x$enable_dga = xyes; then
1057                SOURCES="$SOURCES $srcdir/src/video/Xext/Xxf86dga/*.c"
1058            fi
1059            AC_ARG_ENABLE(video-dga,
1060AC_HELP_STRING([--enable-video-dga], [use DGA 2.0 video driver [[default=yes]]]),
1061                  , enable_video_dga=yes)
1062            if test x$enable_dga = xyes -a x$enable_video_dga = xyes; then
1063                AC_DEFINE(SDL_VIDEO_DRIVER_DGA)
1064                SOURCES="$SOURCES $srcdir/src/video/dga/*.c"
1065            fi
1066            AC_ARG_ENABLE(video-x11-dgamouse,
1067AC_HELP_STRING([--enable-video-x11-dgamouse], [use X11 DGA for mouse events [[default=yes]]]),
1068                          , enable_video_x11_dgamouse=yes)
1069            if test x$enable_dga = xyes -a x$enable_video_x11_dgamouse = xyes; then
1070                AC_DEFINE(SDL_VIDEO_DRIVER_X11_DGAMOUSE)
1071            fi
1072            AC_ARG_ENABLE(video-x11-vm,
1073AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[default=yes]]]),
1074                          , enable_video_x11_vm=yes)
1075            if test x$enable_video_x11_vm = xyes; then
1076                AC_DEFINE(SDL_VIDEO_DRIVER_X11_VIDMODE)
1077                SOURCES="$SOURCES $srcdir/src/video/Xext/Xxf86vm/*.c"
1078            fi
1079            AC_ARG_ENABLE(video-x11-xv,
1080AC_HELP_STRING([--enable-video-x11-xv], [use X11 XvImage extension for video [[default=yes]]]),
1081                          , enable_video_x11_xv=yes)
1082            if test x$enable_video_x11_xv = xyes; then
1083                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XV)
1084                SOURCES="$SOURCES $srcdir/src/video/Xext/Xv/*.c"
1085            fi
1086            AC_ARG_ENABLE(video-x11-xinerama,
1087AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[default=yes]]]),
1088                            , enable_video_x11_xinerama=yes)
1089            if test x$enable_video_x11_xinerama = xyes; then
1090                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA)
1091                SOURCES="$SOURCES $srcdir/src/video/Xext/Xinerama/*.c"
1092            fi
1093            AC_ARG_ENABLE(video-x11-xme,
1094AC_HELP_STRING([--enable-video-x11-xme], [enable Xi Graphics XME for fullscreen [[default=yes]]]),
1095                            , enable_video_x11_xme=yes)
1096            if test x$enable_video_x11_xme = xyes; then
1097                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XME)
1098                SOURCES="$SOURCES $srcdir/src/video/Xext/XME/*.c"
1099            fi
1100            AC_ARG_ENABLE(video-x11-xrandr,
1101AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [[default=yes]]]),
1102                            , enable_video_x11_xrandr=yes)
1103            if test x$enable_video_x11_xrandr = xyes; then
1104                definitely_enable_video_x11_xrandr=no
1105                AC_CHECK_HEADER(X11/extensions/Xrandr.h,
1106                                have_xrandr_h_hdr=yes,
1107                                have_xrandr_h_hdr=no,
1108                                [#include <X11/Xlib.h>
1109                                ])
1110                if test x$have_xrandr_h_hdr = xyes; then
1111                    if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
1112                        echo "-- dynamic libXrender -> $xrender_lib"
1113                        echo "-- dynamic libXrandr -> $xrandr_lib"
1114                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER, "$xrender_lib")
1115                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib")
1116                        definitely_enable_video_x11_xrandr=yes
1117                    else
1118                        AC_CHECK_LIB(Xrender, XRenderQueryExtension, have_xrender_lib=yes)
1119                        AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
1120                        if test x$have_xrender_lib = xyes && test x$have_xrandr_lib = xyes ; then
1121                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr -lXrender"
1122                            definitely_enable_video_x11_xrandr=yes
1123                        fi
1124                    fi
1125                fi
1126            fi
1127            if test x$definitely_enable_video_x11_xrandr = xyes; then
1128                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR)
1129            fi
1130        fi
1131    fi
1132}
1133
1134dnl Check for QNX photon video driver
1135CheckPHOTON()
1136{
1137    AC_ARG_ENABLE(video-photon,
1138AC_HELP_STRING([--enable-video-photon], [use QNX Photon video driver [[default=yes]]]),
1139                  , enable_video_photon=yes)
1140    if test x$enable_video = xyes -a x$enable_video_photon = xyes; then
1141        AC_MSG_CHECKING(for QNX Photon support)
1142        video_photon=no
1143        AC_TRY_COMPILE([
1144          #include <Ph.h>
1145          #include <Pt.h>
1146          #include <photon/Pg.h>
1147          #include <photon/PdDirect.h>
1148        ],[
1149         PgDisplaySettings_t *visual;
1150        ],[
1151        video_photon=yes
1152        ])
1153        AC_MSG_RESULT($video_photon)
1154        if test x$video_photon = xyes; then
1155            AC_DEFINE(SDL_VIDEO_DRIVER_PHOTON)
1156            SOURCES="$SOURCES $srcdir/src/video/photon/*.c"
1157            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lph"
1158            have_video=yes
1159
1160            CheckOpenGLQNX
1161        fi
1162    fi
1163}
1164
1165dnl Set up the BWindow video driver if enabled
1166CheckBWINDOW()
1167{
1168    if test x$enable_video = xyes; then
1169        AC_DEFINE(SDL_VIDEO_DRIVER_BWINDOW)
1170        SOURCES="$SOURCES $srcdir/src/video/bwindow/*.cc"
1171        have_video=yes
1172    fi
1173}
1174
1175dnl Set up the Carbon/QuickDraw video driver for Mac OS X (but not Darwin)
1176CheckCARBON()
1177{
1178    AC_ARG_ENABLE(video-carbon,
1179AC_HELP_STRING([--enable-video-carbon], [use Carbon/QuickDraw video driver [[default=no]]]),
1180                  , enable_video_carbon=no)
1181    if test x$enable_video = xyes -a x$enable_video_carbon = xyes; then
1182        AC_MSG_CHECKING(for Carbon framework)
1183        have_carbon=no
1184        AC_TRY_COMPILE([
1185          #include <Carbon/Carbon.h>
1186        ],[
1187        ],[
1188        have_carbon=yes
1189        ])
1190        AC_MSG_RESULT($have_carbon)
1191        if test x$have_carbon = xyes; then
1192            AC_DEFINE(SDL_VIDEO_DRIVER_TOOLBOX)
1193            SOURCES="$SOURCES $srcdir/src/video/maccommon/*.c"
1194            SOURCES="$SOURCES $srcdir/src/video/macrom/*.c"
1195            have_video=yes
1196        fi
1197    fi
1198}
1199
1200dnl Set up the Cocoa/Quartz video driver for Mac OS X (but not Darwin)
1201CheckCOCOA()
1202{
1203    AC_ARG_ENABLE(video-cocoa,
1204AC_HELP_STRING([--enable-video-cocoa], [use Cocoa/Quartz video driver [[default=yes]]]),
1205                  , enable_video_cocoa=yes)
1206    if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
1207        save_CFLAGS="$CFLAGS"
1208        dnl work around that we don't have Objective-C support in autoconf
1209        CFLAGS="$CFLAGS -x objective-c"
1210        AC_MSG_CHECKING(for Cocoa framework)
1211        have_cocoa=no
1212        AC_TRY_COMPILE([
1213          #import <Cocoa/Cocoa.h>
1214        ],[
1215        ],[
1216        have_cocoa=yes
1217        ])
1218        AC_MSG_RESULT($have_cocoa)
1219        CFLAGS="$save_CFLAGS"
1220        if test x$have_cocoa = xyes; then
1221            AC_DEFINE(SDL_VIDEO_DRIVER_QUARTZ)
1222            SOURCES="$SOURCES $srcdir/src/video/quartz/*.m"
1223            have_video=yes
1224        fi
1225    fi
1226}
1227
1228dnl Find the framebuffer console includes
1229CheckFBCON()
1230{
1231    AC_ARG_ENABLE(video-fbcon,
1232AC_HELP_STRING([--enable-video-fbcon], [use framebuffer console video driver [[default=yes]]]),
1233                  , enable_video_fbcon=yes)
1234    if test x$enable_video = xyes -a x$enable_video_fbcon = xyes; then
1235        AC_MSG_CHECKING(for framebuffer console support)
1236        video_fbcon=no
1237        AC_TRY_COMPILE([
1238         #include <linux/fb.h>
1239         #include <linux/kd.h>
1240         #include <linux/keyboard.h>
1241        ],[
1242        ],[
1243        video_fbcon=yes
1244        ])
1245        AC_MSG_RESULT($video_fbcon)
1246        if test x$video_fbcon = xyes; then
1247            AC_CHECK_FUNCS(getpagesize)
1248            AC_DEFINE(SDL_VIDEO_DRIVER_FBCON)
1249            SOURCES="$SOURCES $srcdir/src/video/fbcon/*.c"
1250            have_video=yes
1251        fi
1252    fi
1253}
1254
1255dnl Find DirectFB
1256CheckDirectFB()
1257{
1258    AC_ARG_ENABLE(video-directfb,
1259AC_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [[default=yes]]]),
1260                  , enable_video_directfb=yes)
1261    if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
1262        video_directfb=no
1263
1264        DIRECTFB_REQUIRED_VERSION=0.9.15
1265
1266        AC_PATH_PROG(DIRECTFBCONFIG, directfb-config, no)
1267        if test x$DIRECTFBCONFIG = xno; then
1268            AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1269            if test x$PKG_CONFIG != xno; then
1270                if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb; then
1271                    DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags directfb`
1272                    DIRECTFB_LIBS=`$PKG_CONFIG --libs directfb`
1273                    video_directfb=yes
1274                fi
1275            fi
1276        else
1277            set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'`
1278            NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
1279            set -- `directfb-config --version | sed 's/\./ /g'`
1280            HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
1281            if test $HAVE_VERSION -ge $NEED_VERSION; then
1282                DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags`
1283                DIRECTFB_LIBS=`$DIRECTFBCONFIG --libs`
1284                video_directfb=yes
1285            fi
1286        fi
1287        if test x$video_directfb = xyes; then
1288            # SuSE 11.1 installs directfb-config without directfb-devel
1289            save_CFLAGS="$CFLAGS"
1290            CFLAGS="$CFLAGS $DIRECTFB_CFLAGS"
1291            AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
1292            CFLAGS="$save_CFLAGS"
1293            video_directfb=$have_directfb_hdr
1294        fi
1295        AC_MSG_CHECKING(for DirectFB $DIRECTFB_REQUIRED_VERSION support)
1296        AC_MSG_RESULT($video_directfb)
1297
1298        if test x$video_directfb = xyes; then
1299            AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB)
1300            SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
1301            EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
1302            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
1303            have_video=yes
1304        fi
1305    fi
1306}
1307
1308dnl See if we're running on PlayStation 2 hardware
1309CheckPS2GS()
1310{
1311    AC_ARG_ENABLE(video-ps2gs,
1312AC_HELP_STRING([--enable-video-ps2gs], [use PlayStation 2 GS video driver [[default=yes]]]),
1313                  , enable_video_ps2gs=yes)
1314    if test x$enable_video = xyes -a x$enable_video_ps2gs = xyes; then
1315        AC_MSG_CHECKING(for PlayStation 2 GS support)
1316        video_ps2gs=no
1317        AC_TRY_COMPILE([
1318         #include <linux/ps2/dev.h>
1319         #include <linux/ps2/gs.h>
1320        ],[
1321        ],[
1322        video_ps2gs=yes
1323        ])
1324        AC_MSG_RESULT($video_ps2gs)
1325        if test x$video_ps2gs = xyes; then
1326            AC_DEFINE(SDL_VIDEO_DRIVER_PS2GS)
1327            SOURCES="$SOURCES $srcdir/src/video/ps2gs/*.c"
1328            have_video=yes
1329        fi
1330    fi
1331}
1332
1333dnl See if we're running on PlayStation 3 Cell hardware
1334CheckPS3()
1335{
1336  AC_ARG_ENABLE(video-ps3,
1337                AC_HELP_STRING([--enable-video-ps3], [use PlayStation 3 Cell driver [[default=yes]]]),
1338                , enable_video_ps3=yes)
1339  if test x$enable_video = xyes -a x$enable_video_ps3 = xyes; then
1340    AC_MSG_CHECKING(for PlayStation 3 Cell support)
1341    video_ps3=no
1342    AC_TRY_COMPILE([
1343      #include <linux/fb.h>
1344      #include <asm/ps3fb.h>
1345      #include <libspe2.h>
1346    ],[
1347    ],[
1348      video_ps3=yes
1349    ])
1350    AC_MSG_RESULT($video_ps3)
1351    if test x$video_ps3 = xyes; then
1352      AC_DEFINE(SDL_VIDEO_DRIVER_PS3)
1353      SOURCES="$SOURCES $srcdir/src/video/ps3/*.c"
1354      EXTRA_CFLAGS="$EXTRA_CFLAGS -I/opt/cell/sdk/usr/include"
1355      EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lbilin_scaler_spu -lfb_writer_spu -lyuv2rgb_spu -L/opt/cell/sdk/usr/lib -lspe2"
1356      have_video=yes
1357    fi
1358  fi
1359}
1360
1361dnl Find the GGI includes
1362CheckGGI()
1363{
1364    AC_ARG_ENABLE(video-ggi,
1365AC_HELP_STRING([--enable-video-ggi], [use GGI video driver [[default=no]]]),
1366                  , enable_video_ggi=no)
1367    if test x$enable_video = xyes -a x$enable_video_ggi = xyes; then
1368        AC_MSG_CHECKING(for GGI support)
1369        video_ggi=no
1370        AC_TRY_COMPILE([
1371         #include <ggi/ggi.h>
1372         #include <ggi/gii.h>
1373        ],[
1374        ],[
1375        video_ggi=yes
1376        ])
1377        AC_MSG_RESULT($video_ggi)
1378        if test x$video_ggi = xyes; then
1379            AC_DEFINE(SDL_VIDEO_DRIVER_GGI)
1380            SOURCES="$SOURCES $srcdir/src/video/ggi/*.c"
1381            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lggi -lgii -lgg"
1382            have_video=yes
1383        fi
1384    fi
1385}
1386
1387dnl Find the SVGAlib includes and libraries
1388CheckSVGA()
1389{
1390    AC_ARG_ENABLE(video-svga,
1391AC_HELP_STRING([--enable-video-svga], [use SVGAlib video driver [[default=yes]]]),
1392                  , enable_video_svga=yes)
1393    if test x$enable_video = xyes -a x$enable_video_svga = xyes; then
1394        AC_MSG_CHECKING(for SVGAlib (1.4.0+) support)
1395        video_svga=no
1396        AC_TRY_COMPILE([
1397         #include <vga.h>
1398         #include <vgamouse.h>
1399         #include <vgakeyboard.h>
1400        ],[
1401         if ( SCANCODE_RIGHTWIN && SCANCODE_LEFTWIN ) {
1402             exit(0);
1403         }
1404        ],[
1405        video_svga=yes
1406        ])
1407        AC_MSG_RESULT($video_svga)
1408        if test x$video_svga = xyes; then
1409            AC_DEFINE(SDL_VIDEO_DRIVER_SVGALIB)
1410            SOURCES="$SOURCES $srcdir/src/video/svga/*.c"
1411            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvga"
1412            have_video=yes
1413        fi
1414    fi
1415}
1416
1417dnl Find the VGL includes and libraries
1418CheckVGL()
1419{
1420    AC_ARG_ENABLE(video-vgl,
1421AC_HELP_STRING([--enable-video-vgl], [use VGL video driver [[default=yes]]]),
1422                  , enable_video_vgl=yes)
1423    if test x$enable_video = xyes -a x$enable_video_vgl = xyes; then
1424        AC_MSG_CHECKING(for libVGL support)
1425        video_vgl=no
1426        AC_TRY_COMPILE([
1427         #include <sys/fbio.h>
1428         #include <sys/consio.h>
1429         #include <sys/kbio.h>
1430         #include <vgl.h>
1431        ],[
1432         VGLBitmap bitmap;
1433         bitmap.Type = VIDBUF32;
1434         bitmap.PixelBytes = 4;
1435         exit(bitmap.Bitmap);
1436        ],[
1437        video_vgl=yes
1438        ])
1439        AC_MSG_RESULT($video_vgl)
1440        if test x$video_vgl = xyes; then
1441            AC_DEFINE(SDL_VIDEO_DRIVER_VGL)
1442            SOURCES="$SOURCES $srcdir/src/video/vgl/*.c"
1443            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvgl"
1444            have_video=yes
1445        fi
1446    fi
1447}
1448
1449dnl Set up the wscons video driver if enabled
1450CheckWscons()
1451{
1452    AC_ARG_ENABLE(video-wscons,
1453AC_HELP_STRING([--enable-video-wscons], [use wscons video driver [[default=yes]]]),
1454                  , enable_video_wscons=yes)
1455    if test x$enable_video = xyes -a x$enable_video_wscons = xyes; then
1456        AC_MSG_CHECKING(for wscons support)
1457        video_wscons=no
1458        AC_TRY_COMPILE([
1459         #include <sys/time.h>
1460         #include <dev/wscons/wsconsio.h>
1461         #include <dev/wscons/wsdisplay_usl_io.h>
1462        ],[
1463         int wsmode = WSDISPLAYIO_MODE_DUMBFB;
1464        ],[
1465        video_wscons=yes
1466        ])
1467        AC_MSG_RESULT($video_wscons)
1468        if test x$video_wscons = xyes; then
1469            AC_DEFINE(SDL_VIDEO_DRIVER_WSCONS)
1470            SOURCES="$SOURCES $srcdir/src/video/wscons/*.c"
1471            have_video=yes
1472        fi
1473    fi
1474}
1475
1476
1477dnl Find the AAlib includes
1478CheckAAlib()
1479{
1480    AC_ARG_ENABLE(video-aalib,
1481AC_HELP_STRING([--enable-video-aalib], [use AAlib video driver [[default=no]]]),
1482                  , enable_video_aalib=no)
1483    if test x$enable_video = xyes -a x$enable_video_aalib = xyes; then
1484        AC_MSG_CHECKING(for AAlib support)
1485        video_aalib=no
1486        AC_TRY_COMPILE([
1487         #include <aalib.h>
1488        ],[
1489        ],[
1490        video_aalib=yes
1491        ])
1492        AC_MSG_RESULT($video_aalib)
1493        if test x$video_aalib = xyes; then
1494            AC_DEFINE(SDL_VIDEO_DRIVER_AALIB)
1495            SOURCES="$SOURCES $srcdir/src/video/aalib/*.c"
1496            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -laa"
1497            have_video=yes
1498        fi
1499    fi
1500}
1501
1502dnl Find the libcaca includes
1503CheckCaca()
1504{
1505    AC_ARG_ENABLE(video-caca,
1506AC_HELP_STRING([--enable-video-caca], [use libcaca video driver [[default=no]]]),
1507                  , enable_video_caca=no)
1508    if test x$enable_video = xyes -a x$enable_video_caca = xyes; then
1509        video_caca=no
1510        AC_PATH_PROG(CACACONFIG, caca-config, no)
1511        if test x$CACACONFIG != xno; then
1512            AC_MSG_CHECKING(for libcaca support)
1513            CACA_CFLAGS=`$CACACONFIG --cflags`
1514            CACA_LDFLAGS=`$CACACONFIG --libs`
1515            save_CFLAGS="$CFLAGS"
1516            AC_TRY_COMPILE([
1517             #include <caca.h>
1518            ],[
1519            ],[
1520             video_caca=yes
1521            ])
1522            CFLAGS="$save_CFLAGS"
1523            AC_MSG_RESULT($video_caca)
1524            if test x$video_caca = xyes; then
1525                AC_DEFINE(SDL_VIDEO_DRIVER_CACA)
1526                EXTRA_CFLAGS="$EXTRA_CFLAGS $CACA_CFLAGS"
1527                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $CACA_LDFLAGS"
1528                SOURCES="$SOURCES $srcdir/src/video/caca/*.c"
1529            fi
1530        fi
1531    fi
1532}
1533
1534dnl Set up the QTopia video driver if enabled
1535CheckQtopia()
1536{
1537    AC_ARG_ENABLE(video-qtopia,
1538AC_HELP_STRING([--enable-video-qtopia], [use Qtopia video driver [[default=no]]]),
1539                  , enable_video_qtopia=no)
1540    if test x$enable_video = xyes -a x$enable_video_qtopia = xyes; then
1541        AC_MSG_CHECKING(for Qtopia support)
1542        video_qtopia=no
1543        QTOPIA_FLAGS="-DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -I${QPEDIR}/include -I${QTDIR}/include/ -DNO_DEBUG -fno-rtti -fno-exceptions"
1544        AC_LANG_CPLUSPLUS
1545        OLD_CXX="$CXXFLAGS"
1546        CXXFLAGS="$QTOPIA_FLAGS"
1547        AC_TRY_COMPILE([
1548         #include <qpe/qpeapplication.h>
1549        ],[
1550        ],[
1551        video_qtopia=yes
1552        ])
1553        CXXFLAGS="$OLD_CXX"
1554        AC_MSG_RESULT($video_qtopia)
1555        if test x$video_qtopia = xyes; then
1556            AC_DEFINE(SDL_VIDEO_DRIVER_QTOPIA)
1557            SOURCES="$SOURCES $srcdir/src/video/qtopia/*.cc"
1558            SDLMAIN_SOURCES="$srcdir/src/main/qtopia/*.cc"
1559            SDLMAIN_LDFLAGS="-static"
1560            EXTRA_CFLAGS="$EXTRA_CFLAGS $QTOPIA_FLAGS"
1561            SDL_CFLAGS="$SDL_CFLAGS -DQWS -Dmain=SDL_main"
1562            SDL_LIBS="-lSDLmain $SDL_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
1563            have_video=yes
1564        fi
1565        AC_LANG_C
1566    fi
1567}
1568
1569dnl Set up the PicoGUI video driver if enabled
1570CheckPicoGUI()
1571{
1572    AC_ARG_ENABLE(video-picogui,
1573AC_HELP_STRING([--enable-video-picogui], [use PicoGUI video driver [[default=no]]]),
1574                  , enable_video_picogui=no)
1575    if test x$enable_video = xyes -a x$enable_video_picogui = xyes; then
1576        AC_MSG_CHECKING(for PicoGUI support)
1577        video_picogui=no
1578        AC_TRY_COMPILE([
1579         #include <picogui.h>
1580        ],[
1581        ],[
1582        video_picogui=yes
1583        ])
1584        AC_MSG_RESULT($video_picogui)
1585        if test x$video_picogui = xyes; then
1586            AC_DEFINE(SDL_VIDEO_DRIVER_PICOGUI)
1587            SOURCES="$SOURCES $srcdir/src/video/picogui/*.c"
1588            SDL_LIBS="$SDL_LIBS -lpgui"
1589            have_video=yes
1590        fi
1591    fi
1592}
1593
1594dnl Set up the Atari Bios keyboard driver
1595CheckAtariBiosEvent()
1596{
1597    SOURCES="$SOURCES $srcdir/src/video/ataricommon/*.c"
1598    SOURCES="$SOURCES $srcdir/src/video/ataricommon/*.S"
1599}
1600
1601dnl Set up the Atari Xbios driver
1602CheckAtariXbiosVideo()
1603{
1604    AC_ARG_ENABLE(xbios,
1605AC_HELP_STRING([--enable-video-xbios], [use Atari Xbios video driver [[default=yes]]]),
1606                  , enable_video_xbios=yes)
1607    video_xbios=no
1608    if test x$enable_video = xyes -a x$enable_video_xbios = xyes; then
1609        video_xbios=yes
1610        AC_DEFINE(SDL_VIDEO_DRIVER_XBIOS)
1611        SOURCES="$SOURCES $srcdir/src/video/xbios/*.c"
1612        have_video=yes
1613    fi
1614}
1615
1616dnl Set up the Atari Gem driver
1617CheckAtariGemVideo()
1618{
1619    AC_ARG_ENABLE(gem,
1620AC_HELP_STRING([--enable-video-gem], [use Atari Gem video driver [[default=yes]]]),
1621                  , enable_video_gem=yes)
1622    if test x$enable_video = xyes -a x$enable_video_gem = xyes; then
1623        video_gem=no
1624        AC_CHECK_HEADER(gem.h, have_gem_hdr=yes)
1625        AC_CHECK_LIB(gem, appl_init, have_gem_lib=yes)
1626        if test x$have_gem_hdr = xyes -a x$have_gem_lib = xyes; then
1627            video_gem=yes
1628            AC_DEFINE(SDL_VIDEO_DRIVER_GEM)
1629            SOURCES="$SOURCES $srcdir/src/video/gem/*.c"
1630            SDL_LIBS="$SDL_LIBS -lgem"
1631            have_video=yes
1632        fi
1633    fi
1634}
1635
1636dnl rcg04172001 Set up the Null video driver.
1637CheckDummyVideo()
1638{
1639    AC_ARG_ENABLE(video-dummy,
1640AC_HELP_STRING([--enable-video-dummy], [use dummy video driver [[default=yes]]]),
1641                  , enable_video_dummy=yes)
1642    if test x$enable_video_dummy = xyes; then
1643        AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY)
1644        SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
1645        have_video=yes
1646    fi
1647}
1648
1649dnl Check to see if OpenGL support is desired
1650AC_ARG_ENABLE(video-opengl,
1651AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]),
1652              , enable_video_opengl=yes)
1653
1654dnl Find OpenGL
1655CheckOpenGLX11()
1656{
1657    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1658        AC_MSG_CHECKING(for OpenGL (GLX) support)
1659        video_opengl=no
1660        AC_TRY_COMPILE([
1661         #include <GL/gl.h>
1662         #include <GL/glx.h>
1663         #include <GL/glu.h>
1664        ],[
1665        ],[
1666        video_opengl=yes
1667        ])
1668        AC_MSG_RESULT($video_opengl)
1669        if test x$video_opengl = xyes; then
1670            AC_DEFINE(SDL_VIDEO_OPENGL)
1671            AC_DEFINE(SDL_VIDEO_OPENGL_GLX)
1672        fi
1673    fi
1674}
1675
1676dnl Find QNX RtP OpenGL
1677CheckOpenGLQNX()
1678{
1679    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1680        AC_MSG_CHECKING(for OpenGL (Photon) support)
1681        video_opengl=no
1682        AC_TRY_COMPILE([
1683         #include <GL/gl.h>
1684        ],[
1685        ],[
1686        video_opengl=yes
1687        ])
1688        AC_MSG_RESULT($video_opengl)
1689        if test x$video_opengl = xyes; then
1690            AC_DEFINE(SDL_VIDEO_OPENGL)
1691            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
1692        fi
1693    fi
1694}
1695
1696dnl Check for Win32 OpenGL
1697CheckWIN32GL()
1698{
1699    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1700        AC_DEFINE(SDL_VIDEO_OPENGL)
1701        AC_DEFINE(SDL_VIDEO_OPENGL_WGL)
1702    fi
1703}
1704
1705dnl Check for BeOS OpenGL
1706CheckBeGL()
1707{
1708    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1709        AC_DEFINE(SDL_VIDEO_OPENGL)
1710        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
1711    fi
1712}
1713
1714dnl Check for MacOS OpenGL
1715CheckMacGL()
1716{
1717    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1718        AC_DEFINE(SDL_VIDEO_OPENGL)
1719        case "$host" in
1720            *-*-darwin*)
1721                if test x$enable_video_cocoa = xyes; then
1722                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGL"
1723                fi
1724                if test x$enable_video_carbon = xyes; then
1725                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AGL"
1726                fi
1727        esac
1728    fi
1729}
1730
1731dnl Check for Mesa offscreen rendering
1732CheckAtariOSMesa()
1733{
1734    if test "x$enable_video" = "xyes" -a "x$enable_video_opengl" = "xyes"; then
1735        AC_CHECK_HEADER(GL/osmesa.h, have_osmesa_hdr=yes)
1736        AC_CHECK_LIB(OSMesa, OSMesaCreateContext, have_osmesa_lib=yes, have_osmesa_lib=no, -lm)
1737
1738        # Static linking to -lOSMesa
1739        AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
1740        if test "x$OSMESA_CONFIG" = "xno" -o "x$enable_atari_ldg" = "xno"; then
1741            # -lOSMesa is really the static library
1742            if test "x$have_osmesa_hdr" = "xyes" -a "x$have_osmesa_lib" = "xyes"; then
1743                OSMESA_LIBS="-lOSMesa"
1744            fi
1745        else
1746            # -lOSMesa is a loader for OSMesa.ldg
1747            OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
1748            OSMESA_LIBS=`$OSMESA_CONFIG --libs`
1749        fi
1750        AC_DEFINE(SDL_VIDEO_OPENGL)
1751        AC_DEFINE(SDL_VIDEO_OPENGL_OSMESA)
1752        SDL_CFLAGS="$SDL_CFLAGS $OSMESA_CFLAGS"
1753        SDL_LIBS="$SDL_LIBS $OSMESA_LIBS"
1754
1755        AC_ARG_ENABLE(osmesa-shared,
1756AC_HELP_STRING([--enable-osmesa-shared], [dynamically load OSMesa OpenGL support [[default=yes]]]),
1757                              , enable_osmesa_shared=yes)
1758        if test "x$enable_osmesa_shared" = "xyes" -a "x$enable_atari_ldg" = "xyes"; then
1759            # Dynamic linking
1760            if test "x$have_osmesa_hdr" = "xyes"; then
1761                AC_DEFINE(SDL_VIDEO_OPENGL_OSMESA_DYNAMIC)
1762            fi
1763        fi
1764    fi
1765}
1766
1767AC_ARG_ENABLE(screensaver,
1768AC_HELP_STRING([--enable-screensaver], [enable screensaver by default while any SDL application is running [[default=no]]]),
1769              , enable_screensaver=no)
1770if test x$enable_screensaver = xno; then
1771    AC_DEFINE(SDL_VIDEO_DISABLE_SCREENSAVER)
1772fi
1773
1774dnl See if we can use the new unified event interface in Linux 2.4
1775CheckInputEvents()
1776{
1777    dnl Check for Linux 2.4 unified input event interface support
1778    AC_ARG_ENABLE(input-events,
1779AC_HELP_STRING([--enable-input-events], [use Linux 2.4 unified input interface [[default=yes]]]),
1780                  , enable_input_events=yes)
1781    if test x$enable_input_events = xyes; then
1782        AC_MSG_CHECKING(for Linux 2.4 unified input interface)
1783        use_input_events=no
1784        AC_TRY_COMPILE([
1785          #include <linux/input.h>
1786        ],[
1787          #ifndef EVIOCGNAME
1788          #error EVIOCGNAME() ioctl not available
1789          #endif
1790        ],[
1791        use_input_events=yes
1792        ])
1793        AC_MSG_RESULT($use_input_events)
1794        if test x$use_input_events = xyes; then
1795            AC_DEFINE(SDL_INPUT_LINUXEV)
1796        fi
1797    fi
1798}
1799
1800dnl See if we can use the Touchscreen input library
1801CheckTslib()
1802{
1803    AC_ARG_ENABLE(input-tslib,
1804AC_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[default=yes]]]),
1805                  , enable_input_tslib=yes)
1806    if test x$enable_input_tslib = xyes; then
1807        AC_MSG_CHECKING(for Touchscreen library support)
1808        enable_input_tslib=no
1809        AC_TRY_COMPILE([
1810          #include "tslib.h"
1811        ],[
1812        ],[
1813        enable_input_tslib=yes
1814        ])
1815        AC_MSG_RESULT($enable_input_tslib)
1816        if test x$enable_input_tslib = xyes; then
1817            AC_DEFINE(SDL_INPUT_TSLIB)
1818            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts"
1819        fi
1820    fi
1821}
1822
1823dnl See if we can use GNU pth library for threads
1824CheckPTH()
1825{
1826    dnl Check for pth support
1827    AC_ARG_ENABLE(pth,
1828AC_HELP_STRING([--enable-pth], [use GNU pth library for multi-threading [[default=yes]]]),
1829                  , enable_pth=yes)
1830    if test x$enable_threads = xyes -a x$enable_pth = xyes; then
1831        AC_PATH_PROG(PTH_CONFIG, pth-config, no)
1832        if test "$PTH_CONFIG" = "no"; then
1833            use_pth=no
1834        else
1835            use_pth=yes
1836        fi
1837        AC_MSG_CHECKING(pth)
1838        AC_MSG_RESULT($use_pth)
1839        if test "x$use_pth" = xyes; then
1840            AC_DEFINE(SDL_THREAD_PTH)
1841            SOURCES="$SOURCES $srcdir/src/thread/pth/*.c"
1842            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
1843            SDL_CFLAGS="$SDL_CFLAGS `$PTH_CONFIG --cflags`"
1844            SDL_LIBS="$SDL_LIBS `$PTH_CONFIG --libs --all`"
1845            have_threads=yes
1846        fi
1847    fi
1848}
1849
1850dnl See what type of thread model to use on Linux and Solaris
1851CheckPTHREAD()
1852{
1853    dnl Check for pthread support
1854    AC_ARG_ENABLE(pthreads,
1855AC_HELP_STRING([--enable-pthreads], [use POSIX threads for multi-threading [[default=yes]]]),
1856                  , enable_pthreads=yes)
1857    dnl This is used on Linux for glibc binary compatibility (Doh!)
1858    AC_ARG_ENABLE(pthread-sem,
1859AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]),
1860                  , enable_pthread_sem=yes)
1861    case "$host" in
1862        *-*-linux*|*-*-uclinux*)
1863            pthread_cflags="-D_REENTRANT"
1864            pthread_lib="-lpthread"
1865            ;;
1866        *-*-bsdi*)
1867            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
1868            pthread_lib=""
1869            ;;
1870        *-*-darwin*)
1871            pthread_cflags="-D_THREAD_SAFE"
1872# causes Carbon.p complaints?
1873#            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
1874            ;;
1875        *-*-freebsd*|*-*-dragonfly*)
1876            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
1877            pthread_lib="-pthread"
1878            ;;
1879        *-*-netbsd*)
1880            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
1881            pthread_lib="-lpthread"
1882            ;;
1883        *-*-openbsd*)
1884            pthread_cflags="-D_REENTRANT"
1885            pthread_lib="-pthread"
1886            ;;
1887        *-*-solaris*)
1888            pthread_cflags="-D_REENTRANT"
1889            pthread_lib="-lpthread -lposix4"
1890            ;;
1891        *-*-sysv5*)
1892            pthread_cflags="-D_REENTRANT -Kthread"
1893            pthread_lib=""
1894            ;;
1895        *-*-irix*)
1896            pthread_cflags="-D_SGI_MP_SOURCE"
1897            pthread_lib="-lpthread"
1898            ;;
1899        *-*-aix*)
1900            pthread_cflags="-D_REENTRANT -mthreads"
1901            pthread_lib="-lpthread"
1902            ;;
1903        *-*-hpux11*)
1904            pthread_cflags="-D_REENTRANT"
1905            pthread_lib="-L/usr/lib -lpthread"
1906            ;;
1907        *-*-qnx*)
1908            pthread_cflags=""
1909            pthread_lib=""
1910            ;;
1911        *-*-osf*)
1912            pthread_cflags="-D_REENTRANT"
1913            if test x$ac_cv_prog_gcc = xyes; then
1914                pthread_lib="-lpthread -lrt"
1915            else
1916                pthread_lib="-lpthread -lexc -lrt"
1917            fi
1918            ;;
1919        *)
1920            pthread_cflags="-D_REENTRANT"
1921            pthread_lib="-lpthread"
1922            ;;
1923    esac
1924    if test x$enable_threads = xyes -a x$enable_pthreads = xyes -a x$enable_ipod != xyes; then
1925        # Save the original compiler flags and libraries
1926        ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
1927        # Add the pthread compiler flags and libraries
1928        CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
1929        # Check to see if we have pthread support on this system
1930        AC_MSG_CHECKING(for pthreads)
1931        use_pthreads=no
1932        AC_TRY_LINK([
1933         #include <pthread.h>
1934        ],[
1935         pthread_attr_t type;
1936         pthread_attr_init(&type);
1937        ],[
1938        use_pthreads=yes
1939        ])
1940        AC_MSG_RESULT($use_pthreads)
1941        # Restore the compiler flags and libraries
1942        CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
1943
1944        # Do futher testing if we have pthread support...
1945        if test x$use_pthreads = xyes; then
1946            AC_DEFINE(SDL_THREAD_PTHREAD)
1947            EXTRA_CFLAGS="$EXTRA_CFLAGS $pthread_cflags"
1948            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $pthread_lib"
1949            SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags"
1950            SDL_LIBS="$SDL_LIBS $pthread_lib"
1951
1952            # Save the original compiler flags and libraries
1953            ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
1954            # Add the pthread compiler flags and libraries
1955            CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
1956
1957            # Check to see if recursive mutexes are available
1958            AC_MSG_CHECKING(for recursive mutexes)
1959            has_recursive_mutexes=no
1960            if test x$has_recursive_mutexes = xno; then
1961                AC_TRY_COMPILE([
1962                  #include <pthread.h>
1963                ],[
1964                  pthread_mutexattr_t attr;
1965                  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
1966                ],[
1967                has_recursive_mutexes=yes
1968                AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX)
1969                ])
1970            fi
1971            if test x$has_recursive_mutexes = xno; then
1972                AC_TRY_COMPILE([
1973                  #include <pthread.h>
1974                ],[
1975                  pthread_mutexattr_t attr;
1976                  pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
1977                ],[
1978                has_recursive_mutexes=yes
1979                AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP)
1980                ])
1981            fi
1982            AC_MSG_RESULT($has_recursive_mutexes)
1983
1984            # Check to see if pthread semaphore support is missing
1985            if test x$enable_pthread_sem = xyes; then
1986                AC_MSG_CHECKING(for pthread semaphores)
1987                have_pthread_sem=no
1988                AC_TRY_COMPILE([
1989                  #include <pthread.h>
1990                  #include <semaphore.h>
1991                ],[
1992                ],[
1993                have_pthread_sem=yes
1994                ])
1995                AC_MSG_RESULT($have_pthread_sem)
1996            fi
1997            if test x$have_pthread_sem = xyes; then
1998                AC_MSG_CHECKING(for sem_timedwait)
1999                have_sem_timedwait=no
2000                AC_TRY_LINK([
2001                  #include <pthread.h>
2002                  #include <semaphore.h>
2003                ],[
2004                  sem_timedwait(NULL, NULL);
2005                ],[
2006                have_sem_timedwait=yes
2007                AC_DEFINE(HAVE_SEM_TIMEDWAIT)
2008                ])
2009                AC_MSG_RESULT($have_sem_timedwait)
2010            fi
2011
2012            # Restore the compiler flags and libraries
2013            CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
2014
2015            # Basic thread creation functions
2016            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c"
2017
2018            # Semaphores
2019            # We can fake these with mutexes and condition variables if necessary
2020            if test x$have_pthread_sem = xyes; then
2021                SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syssem.c"
2022            else
2023                SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
2024            fi
2025
2026            # Mutexes
2027            # We can fake these with semaphores if necessary
2028            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_sysmutex.c"
2029
2030            # Condition variables
2031            # We can fake these with semaphores and mutexes if necessary
2032            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syscond.c"
2033
2034            have_threads=yes
2035        else
2036            CheckPTH
2037        fi
2038    fi
2039}
2040
2041dnl Determine whether the compiler can produce Win32 executables
2042CheckWIN32()
2043{
2044    AC_MSG_CHECKING(Win32 compiler)
2045    have_win32_gcc=no
2046    AC_TRY_COMPILE([
2047     #include <windows.h>
2048    ],[
2049    ],[
2050    have_win32_gcc=yes
2051    ])
2052    AC_MSG_RESULT($have_win32_gcc)
2053    if test x$have_win32_gcc != xyes; then
2054       AC_MSG_ERROR([
2055*** Your compiler ($CC) does not produce Win32 executables!
2056       ])
2057    fi
2058
2059    dnl See if the user wants to redirect standard output to files
2060    AC_ARG_ENABLE(stdio-redirect,
2061AC_HELP_STRING([--enable-stdio-redirect], [Redirect STDIO to files on Win32 [[default=yes]]]),
2062                  , enable_stdio_redirect=yes)
2063    if test x$enable_stdio_redirect != xyes; then
2064        EXTRA_CFLAGS="$EXTRA_CFLAGS -DNO_STDIO_REDIRECT"
2065    fi
2066
2067    if test x$enable_video = xyes; then
2068        AC_DEFINE(SDL_VIDEO_DRIVER_WINDIB)
2069        SOURCES="$SOURCES $srcdir/src/video/wincommon/*.c"
2070        SOURCES="$SOURCES $srcdir/src/video/windib/*.c"
2071        have_video=yes
2072    fi
2073}
2074
2075dnl Find the DirectX includes and libraries
2076CheckDIRECTX()
2077{
2078    AC_ARG_ENABLE(directx,
2079AC_HELP_STRING([--enable-directx], [use DirectX for Win32 audio/video [[default=yes]]]),
2080                  , enable_directx=yes)
2081    if test x$enable_directx = xyes; then
2082        have_directx=no
2083        AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
2084        AC_CHECK_HEADER(dsound.h, have_dsound=yes)
2085        AC_CHECK_HEADER(dinput.h, use_dinput=yes)
2086        if test x$have_ddraw = xyes -a x$have_dsound = xyes -a x$use_dinput = xyes; then
2087            have_directx=yes
2088        fi
2089        if test x$enable_video = xyes -a x$have_directx = xyes; then
2090            AC_DEFINE(SDL_VIDEO_DRIVER_DDRAW)
2091            SOURCES="$SOURCES $srcdir/src/video/windx5/*.c"
2092            have_video=yes
2093        fi
2094    fi
2095}
2096
2097dnl Check for the dlfcn.h interface for dynamically loading objects
2098CheckDLOPEN()
2099{
2100    AC_ARG_ENABLE(sdl-dlopen,
2101AC_HELP_STRING([--enable-sdl-dlopen], [use dlopen for shared object loading [[default=yes]]]),
2102                  , enable_sdl_dlopen=yes)
2103    if test x$enable_sdl_dlopen = xyes; then
2104        AC_MSG_CHECKING(for dlopen)
2105        have_dlopen=no
2106        AC_TRY_COMPILE([
2107         #include <dlfcn.h>
2108        ],[
2109         #if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED <= 1020
2110         #error Use dlcompat for Mac OS X 10.2 compatibility
2111         #endif
2112        ],[
2113        have_dlopen=yes
2114        ])
2115        AC_MSG_RESULT($have_dlopen)
2116
2117        if test x$have_dlopen = xyes; then
2118            AC_CHECK_LIB(c, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS",
2119               AC_CHECK_LIB(dl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl",
2120                  AC_CHECK_LIB(ltdl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lltdl")))
2121            AC_DEFINE(SDL_LOADSO_DLOPEN)
2122            SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
2123            have_loadso=yes
2124        fi
2125    fi
2126}
2127
2128dnl Set up the Atari LDG (shared object loader)
2129CheckAtariLdg()
2130{
2131    AC_ARG_ENABLE(atari-ldg,
2132AC_HELP_STRING([--enable-atari-ldg], [use Atari LDG for shared object loading [[default=yes]]]),
2133                  , enable_atari_ldg=yes)
2134    if test x$video_gem = xyes -a x$enable_atari_ldg = xyes; then
2135        AC_CHECK_HEADER(ldg.h, have_ldg_hdr=yes)
2136        AC_CHECK_LIB(ldg, ldg_open, have_ldg_lib=yes, have_ldg_lib=no, -lgem)
2137        if test x$have_ldg_hdr = xyes -a x$have_ldg_lib = xyes; then
2138            AC_DEFINE(SDL_LOADSO_LDG)
2139            SOURCES="$SOURCES $srcdir/src/loadso/mint/*.c"
2140            SDL_LIBS="$SDL_LIBS -lldg -lgem"
2141            have_loadso=yes
2142        fi
2143    fi
2144}
2145
2146dnl Check for the usbhid(3) library on *BSD
2147CheckUSBHID()
2148{
2149    if test x$enable_joystick = xyes; then
2150        AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
2151        if test x$have_libusbhid = xyes; then
2152            AC_CHECK_HEADER(usbhid.h, [USB_CFLAGS="-DHAVE_USBHID_H"])
2153            AC_CHECK_HEADER(libusbhid.h, [USB_CFLAGS="-DHAVE_LIBUSBHID_H"])
2154            USB_LIBS="$USB_LIBS -lusbhid"
2155        else
2156            AC_CHECK_HEADER(usb.h, [USB_CFLAGS="-DHAVE_USB_H"])
2157            AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
2158            AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
2159        fi
2160            
2161        save_CFLAGS="$CFLAGS"
2162        CFLAGS="$CFLAGS $USB_CFLAGS"
2163
2164        AC_MSG_CHECKING(for usbhid)
2165        have_usbhid=no
2166        AC_TRY_COMPILE([
2167          #include <sys/types.h>
2168          #if defined(HAVE_USB_H)
2169          #include <usb.h>
2170          #endif
2171          #ifdef __DragonFly__
2172          # include <bus/usb/usb.h>
2173          # include <bus/usb/usbhid.h>
2174          #else
2175          # include <dev/usb/usb.h>
2176          # include <dev/usb/usbhid.h>
2177          #endif
2178          #if defined(HAVE_USBHID_H)
2179          #include <usbhid.h>
2180          #elif defined(HAVE_LIBUSB_H)
2181          #include <libusb.h>
2182          #elif defined(HAVE_LIBUSBHID_H)
2183          #include <libusbhid.h>
2184          #endif
2185        ],[
2186          struct report_desc *repdesc;
2187          struct usb_ctl_report *repbuf;
2188          hid_kind_t hidkind;
2189        ],[
2190        have_usbhid=yes
2191        ])
2192        AC_MSG_RESULT($have_usbhid)
2193
2194        if test x$have_usbhid = xyes; then
2195            AC_MSG_CHECKING(for ucr_data member of usb_ctl_report)
2196            have_usbhid_ucr_data=no
2197            AC_TRY_COMPILE([
2198              #include <sys/types.h>
2199              #if defined(HAVE_USB_H)
2200              #include <usb.h>
2201              #endif
2202              #ifdef __DragonFly__
2203              # include <bus/usb/usb.h>
2204              # include <bus/usb/usbhid.h>
2205              #else
2206              # include <dev/usb/usb.h>
2207              # include <dev/usb/usbhid.h>
2208              #endif
2209              #if defined(HAVE_USBHID_H)
2210              #include <usbhid.h>
2211              #elif defined(HAVE_LIBUSB_H)
2212              #include <libusb.h>
2213              #elif defined(HAVE_LIBUSBHID_H)
2214              #include <libusbhid.h>
2215              #endif
2216            ],[
2217              struct usb_ctl_report buf;
2218              if (buf.ucr_data) { }
2219            ],[
2220            have_usbhid_ucr_data=yes
2221            ])
2222            if test x$have_usbhid_ucr_data = xyes; then
2223                USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
2224            fi
2225            AC_MSG_RESULT($have_usbhid_ucr_data)
2226            
2227            AC_MSG_CHECKING(for new usbhid API)
2228            have_usbhid_new=no
2229            AC_TRY_COMPILE([
2230              #include <sys/types.h>
2231              #if defined(HAVE_USB_H)
2232              #include <usb.h>
2233              #endif
2234              #ifdef __DragonFly__
2235              #include <bus/usb/usb.h>
2236              #include <bus/usb/usbhid.h>
2237              #else
2238              #include <dev/usb/usb.h>
2239              #include <dev/usb/usbhid.h>
2240              #endif
2241              #if defined(HAVE_USBHID_H)
2242              #include <usbhid.h>
2243              #elif defined(HAVE_LIBUSB_H)
2244              #include <libusb.h>
2245              #elif defined(HAVE_LIBUSBHID_H)
2246              #include <libusbhid.h>
2247              #endif
2248            ],[
2249              report_desc_t d;
2250              hid_start_parse(d, 1, 1);
2251            ],[
2252            have_usbhid_new=yes
2253            ])
2254            if test x$have_usbhid_new = xyes; then
2255                USB_CFLAGS="$USB_CFLAGS -DUSBHID_NEW"
2256            fi
2257            AC_MSG_RESULT($have_usbhid_new)
2258
2259            AC_MSG_CHECKING(for struct joystick in machine/joystick.h)
2260            have_machine_joystick=no
2261            AC_TRY_COMPILE([
2262              #include <machine/joystick.h>
2263            ],[
2264              struct joystick t;
2265            ],[
2266            have_machine_joystick=yes
2267            ])
2268            if test x$have_machine_joystick = xyes; then
2269                AC_DEFINE(SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H)
2270            fi
2271            AC_MSG_RESULT($have_machine_joystick)
2272
2273            AC_DEFINE(SDL_JOYSTICK_USBHID)
2274            SOURCES="$SOURCES $srcdir/src/joystick/bsd/*.c"
2275            EXTRA_CFLAGS="$EXTRA_CFLAGS $USB_CFLAGS"
2276            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $USB_LIBS"
2277            have_joystick=yes
2278        fi
2279        CFLAGS="$save_CFLAGS"
2280    fi
2281}
2282
2283dnl Check for clock_gettime()
2284CheckClockGettime()
2285{
2286    AC_ARG_ENABLE(clock_gettime,
2287AC_HELP_STRING([--enable-clock_gettime], [use clock_gettime() instead of gettimeofday() on UNIX [[default=no]]]),
2288                  , enable_clock_gettime=no)
2289    if test x$enable_clock_gettime = xyes; then
2290        AC_CHECK_LIB(rt, clock_gettime, have_clock_gettime=yes)
2291        if test x$have_clock_gettime = xyes; then
2292            AC_DEFINE(HAVE_CLOCK_GETTIME)
2293            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lrt"
2294        fi
2295    fi
2296}
2297
2298dnl Check for a valid linux/version.h
2299CheckLinuxVersion()
2300{
2301    AC_CHECK_HEADER(linux/version.h, have_linux_version_h=yes)
2302    if test x$have_linux_version_h = xyes; then
2303        EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_LINUX_VERSION_H"
2304    fi
2305}
2306
2307dnl Check if we want to use RPATH
2308CheckRPATH()
2309{
2310    AC_ARG_ENABLE(rpath,
2311AC_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [[default=yes]]]),
2312                  , enable_rpath=yes)
2313}
2314
2315dnl Set up the configuration based on the host platform!
2316case "$host" in
2317    arm-*-elf*) # FIXME: Can we get more specific for iPodLinux?
2318        ARCH=linux
2319        CheckDummyVideo
2320        CheckIPod
2321        # Set up files for the timer library
2322        if test x$enable_timers = xyes; then
2323            AC_DEFINE(SDL_TIMER_UNIX)
2324            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
2325            have_timers=yes
2326        fi
2327        ;;
2328    *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*)
2329        case "$host" in
2330            *-*-linux*)         ARCH=linux ;;
2331            *-*-uclinux*)       ARCH=linux ;;
2332            *-*-kfreebsd*-gnu)  ARCH=kfreebsd-gnu ;;
2333            *-*-knetbsd*-gnu)   ARCH=knetbsd-gnu ;;
2334            *-*-kopenbsd*-gnu)  ARCH=kopenbsd-gnu ;;
2335            *-*-gnu*)           ARCH=gnu ;; # must be last of the gnu variants
2336            *-*-bsdi*)          ARCH=bsdi ;;
2337            *-*-freebsd*)       ARCH=freebsd ;;
2338            *-*-dragonfly*)     ARCH=freebsd ;;
2339            *-*-netbsd*)        ARCH=netbsd ;;
2340            *-*-openbsd*)       ARCH=openbsd ;;
2341            *-*-sysv5*)         ARCH=sysv5 ;;
2342            *-*-solaris*)       ARCH=solaris ;;
2343            *-*-hpux*)          ARCH=hpux ;;
2344            *-*-irix*)          ARCH=irix ;;
2345            *-*-aix*)           ARCH=aix ;;
2346            *-*-osf*)           ARCH=osf ;;
2347        esac
2348        CheckVisibilityHidden
2349        CheckDummyVideo
2350        CheckDiskAudio
2351        CheckDummyAudio
2352        CheckDLOPEN
2353        CheckNASM
2354        CheckAltivec
2355        CheckOSS
2356        CheckDMEDIA
2357        CheckMME
2358        CheckALSA
2359        CheckARTSC
2360        CheckESD
2361        CheckPulseAudio
2362        CheckNAS
2363        CheckX11
2364        CheckNANOX
2365        CheckFBCON
2366        CheckDirectFB
2367        CheckPS2GS
2368        CheckPS3
2369        CheckGGI
2370        CheckSVGA
2371        CheckVGL
2372        CheckWscons
2373        CheckAAlib
2374        CheckCaca
2375        CheckQtopia
2376        CheckPicoGUI
2377        CheckOpenGLX11
2378        CheckInputEvents
2379        CheckTslib
2380        CheckUSBHID
2381        CheckPTHREAD
2382        CheckClockGettime
2383        CheckLinuxVersion
2384        CheckRPATH
2385        # Set up files for the audio library
2386        if test x$enable_audio = xyes; then
2387          case $ARCH in
2388            sysv5|solaris|hpux)
2389                AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO)
2390                SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
2391                have_audio=yes
2392            ;;
2393            netbsd|openbsd)
2394                AC_DEFINE(SDL_AUDIO_DRIVER_BSD)
2395                SOURCES="$SOURCES $srcdir/src/audio/bsd/*.c"
2396                have_audio=yes
2397            ;;
2398            aix)
2399                AC_DEFINE(SDL_AUDIO_DRIVER_PAUD)
2400                SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c"
2401                have_audio=yes
2402            ;;
2403          esac
2404        fi
2405        # Set up files for the joystick library
2406        if test x$enable_joystick = xyes; then
2407          case $ARCH in
2408            linux)
2409                AC_DEFINE(SDL_JOYSTICK_LINUX)
2410                SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
2411                have_joystick=yes
2412            ;;
2413          esac
2414        fi
2415        # Set up files for the cdrom library
2416        if test x$enable_cdrom = xyes; then
2417          case $ARCH in
2418            linux|solaris)
2419                AC_DEFINE(SDL_CDROM_LINUX)
2420                SOURCES="$SOURCES $srcdir/src/cdrom/linux/*.c"
2421                have_cdrom=yes
2422            ;;
2423            *freebsd*)
2424                AC_DEFINE(SDL_CDROM_FREEBSD)
2425                SOURCES="$SOURCES $srcdir/src/cdrom/freebsd/*.c"
2426                have_cdrom=yes
2427            ;;
2428            *openbsd*|*netbsd*)
2429                AC_DEFINE(SDL_CDROM_OPENBSD)
2430                SOURCES="$SOURCES $srcdir/src/cdrom/openbsd/*.c"
2431                have_cdrom=yes
2432            ;;
2433            bsdi)
2434                AC_DEFINE(SDL_CDROM_BSDI)
2435                SOURCES="$SOURCES $srcdir/src/cdrom/bsdi/*.c"
2436                have_cdrom=yes
2437            ;;
2438            aix)
2439                AC_DEFINE(SDL_CDROM_AIX)
2440                SOURCES="$SOURCES $srcdir/src/cdrom/aix/*.c"
2441                have_cdrom=yes
2442            ;;
2443            osf)
2444                AC_DEFINE(SDL_CDROM_OSF)
2445                SOURCES="$SOURCES $srcdir/src/cdrom/osf/*.c"
2446                have_cdrom=yes
2447            ;;
2448          esac
2449        fi
2450        # Set up files for the thread library
2451        if test x$enable_threads = xyes -a x$use_pthreads != xyes -a x$use_pth != xyes -a x$ARCH = xirix; then
2452            AC_DEFINE(SDL_THREAD_SPROC)
2453            SOURCES="$SOURCES $srcdir/src/thread/irix/*.c"
2454            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c"
2455            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
2456            have_threads=yes
2457        fi
2458        # Set up files for the timer library
2459        if test x$enable_timers = xyes; then
2460            AC_DEFINE(SDL_TIMER_UNIX)
2461            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
2462            have_timers=yes
2463        fi
2464        ;;
2465    *-*-qnx*)
2466        ARCH=qnx
2467        CheckDummyVideo
2468        CheckDiskAudio
2469        CheckDummyAudio
2470        # CheckNASM
2471        CheckDLOPEN
2472        CheckNAS
2473        CheckPHOTON
2474        CheckX11
2475        CheckOpenGLX11
2476        CheckPTHREAD
2477        # Set up files for the audio library
2478        if test x$enable_audio = xyes; then
2479            AC_DEFINE(SDL_AUDIO_DRIVER_QNXNTO)
2480            SOURCES="$SOURCES $srcdir/src/audio/nto/*.c"
2481            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lasound"
2482            have_audio=yes
2483        fi
2484        # Set up files for the cdrom library
2485        if test x$enable_cdrom = xyes; then
2486            AC_DEFINE(SDL_CDROM_QNX)
2487            SOURCES="$SOURCES $srcdir/src/cdrom/qnx/*.c"
2488            have_cdrom=yes
2489        fi
2490        # Set up files for the timer library
2491        if test x$enable_timers = xyes; then
2492            AC_DEFINE(SDL_TIMER_UNIX)
2493            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
2494            have_timers=yes
2495        fi
2496        ;;
2497    *-*-cygwin* | *-*-mingw32*)
2498        ARCH=win32
2499        if test "$build" != "$host"; then # cross-compiling
2500            # Default cross-compile location
2501            ac_default_prefix=/usr/local/cross-tools/i386-mingw32
2502        else
2503            # Look for the location of the tools and install there
2504            if test "$BUILD_PREFIX" != ""; then
2505                ac_default_prefix=$BUILD_PREFIX
2506            fi
2507        fi
2508        CheckDummyVideo
2509        CheckDiskAudio
2510        CheckDummyAudio
2511        CheckWIN32
2512        CheckWIN32GL
2513        CheckDIRECTX
2514        CheckNASM
2515        # Set up files for the audio library
2516        if test x$enable_audio = xyes; then
2517            AC_DEFINE(SDL_AUDIO_DRIVER_WAVEOUT)
2518            SOURCES="$SOURCES $srcdir/src/audio/windib/*.c"
2519            if test x$have_directx = xyes; then
2520                AC_DEFINE(SDL_AUDIO_DRIVER_DSOUND)
2521                SOURCES="$SOURCES $srcdir/src/audio/windx5/*.c"
2522            fi
2523            have_audio=yes
2524        fi
2525        # Set up files for the joystick library
2526        if test x$enable_joystick = xyes; then
2527            AC_DEFINE(SDL_JOYSTICK_WINMM)
2528            SOURCES="$SOURCES $srcdir/src/joystick/win32/*.c"
2529            have_joystick=yes
2530        fi
2531        # Set up files for the cdrom library
2532        if test x$enable_cdrom = xyes; then
2533            AC_DEFINE(SDL_CDROM_WIN32)
2534            SOURCES="$SOURCES $srcdir/src/cdrom/win32/*.c"
2535            have_cdrom=yes
2536        fi
2537        # Set up files for the thread library
2538        if test x$enable_threads = xyes; then
2539            AC_DEFINE(SDL_THREAD_WIN32)
2540            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_sysmutex.c"
2541            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_syssem.c"
2542            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_systhread.c"
2543            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
2544            have_threads=yes
2545        fi
2546        # Set up files for the timer library
2547        if test x$enable_timers = xyes; then
2548            AC_DEFINE(SDL_TIMER_WIN32)
2549            SOURCES="$SOURCES $srcdir/src/timer/win32/*.c"
2550            have_timers=yes
2551        fi
2552        # Set up files for the shared object loading library
2553        if test x$enable_loadso = xyes; then
2554            AC_DEFINE(SDL_LOADSO_WIN32)
2555            SOURCES="$SOURCES $srcdir/src/loadso/win32/*.c"
2556            have_loadso=yes
2557        fi
2558        # Set up the system libraries we need
2559        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm"
2560        if test x$have_directx = xyes; then
2561            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldxguid"
2562        fi
2563        # The Win32 platform requires special setup
2564        SOURCES="$SOURCES $srcdir/src/main/win32/*.rc"
2565        SDLMAIN_SOURCES="$srcdir/src/main/win32/*.c"
2566        SDLMAIN_LDFLAGS="-static"
2567        SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
2568        SDL_LIBS="-lmingw32 -lSDLmain $SDL_LIBS -mwindows"
2569        ;;
2570    *-wince*)
2571        ARCH=win32
2572        CheckDummyVideo
2573        CheckDiskAudio
2574        CheckDummyAudio
2575        CheckWIN32
2576        CheckNASM
2577        SOURCES="$SOURCES $srcdir/src/video/gapi/*.c"
2578        EXTRA_CFLAGS="$EXTRA_CFLAGS -D_WIN32_WCE=0x420"
2579        if test x$enable_audio = xyes; then
2580            AC_DEFINE(SDL_AUDIO_DRIVER_WAVEOUT)
2581            SOURCES="$SOURCES $srcdir/src/audio/windib/*.c"
2582            have_audio=yes
2583        fi
2584        # Set up files for the thread library
2585        if test x$enable_threads = xyes; then
2586            AC_DEFINE(SDL_THREAD_WIN32)
2587            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_sysmutex.c"
2588            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_syssem.c"
2589            SOURCES="$SOURCES $srcdir/src/thread/win32/SDL_systhread.c"
2590            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
2591            have_threads=yes
2592        fi
2593        # Set up files for the timer library
2594        if test x$enable_timers = xyes; then
2595            AC_DEFINE(SDL_TIMER_WINCE)
2596            SOURCES="$SOURCES $srcdir/src/timer/wince/*.c"
2597            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lcoredll -lmmtimer"
2598            have_timers=yes
2599        fi
2600        # Set up files for the shared object loading library
2601        if test x$enable_loadso = xyes; then
2602            AC_DEFINE(SDL_LOADSO_WIN32)
2603            SOURCES="$SOURCES $srcdir/src/loadso/win32/*.c"
2604            have_loadso=yes
2605        fi
2606        # Set up the system libraries we need
2607        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lcoredll -lcommctrl"
2608        # The Win32 platform requires special setup
2609        SDLMAIN_SOURCES="$srcdir/src/main/win32/*.c"
2610        SDLMAIN_LDFLAGS="-static"
2611        SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main -D_WIN32_WCE=0x420"
2612        SDL_LIBS="-lSDLmain $SDL_LIBS"
2613        ;;
2614    *-*-beos* | *-*-haiku*)
2615        ARCH=beos
2616        ac_default_prefix=/boot/develop/tools/gnupro
2617        CheckDummyVideo
2618        CheckDiskAudio
2619        CheckDummyAudio
2620        CheckNASM
2621        CheckBWINDOW
2622        CheckBeGL
2623        # Set up files for the audio library
2624        if test x$enable_audio = xyes; then
2625            AC_DEFINE(SDL_AUDIO_DRIVER_BAUDIO)
2626            SOURCES="$SOURCES $srcdir/src/audio/baudio/*.cc"
2627            have_audio=yes
2628        fi
2629        # Set up files for the joystick library
2630        if test x$enable_joystick = xyes; then
2631            AC_DEFINE(SDL_JOYSTICK_BEOS)
2632            SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc"
2633            have_joystick=yes
2634        fi
2635        # Set up files for the cdrom library
2636        if test x$enable_cdrom = xyes; then
2637            AC_DEFINE(SDL_CDROM_BEOS)
2638            SOURCES="$SOURCES $srcdir/src/cdrom/beos/*.cc"
2639            have_cdrom=yes
2640        fi
2641        # Set up files for the thread library
2642        if test x$enable_threads = xyes; then
2643            AC_DEFINE(SDL_THREAD_BEOS)
2644            SOURCES="$SOURCES $srcdir/src/thread/beos/*.c"
2645            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c"
2646            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
2647            have_threads=yes
2648        fi
2649        # Set up files for the timer library
2650        if test x$enable_timers = xyes; then
2651            AC_DEFINE(SDL_TIMER_BEOS)
2652            SOURCES="$SOURCES $srcdir/src/timer/beos/*.c"
2653            have_timers=yes
2654        fi
2655        # Set up files for the shared object loading library
2656        if test x$enable_loadso = xyes; then
2657            case "$host" in
2658                *-*-beos*)
2659                    AC_DEFINE(SDL_LOADSO_BEOS)
2660                    SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c"
2661                ;;
2662                *-*-haiku*)
2663                    AC_DEFINE(SDL_LOADSO_DLOPEN)
2664                    SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
2665                ;;
2666            esac    
2667            have_loadso=yes
2668        fi
2669        # The BeOS platform requires special setup.
2670        SOURCES="$srcdir/src/main/beos/*.cc $SOURCES"
2671        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
2672        ;;
2673    *-*-darwin* )
2674        # This could be either full "Mac OS X", or plain "Darwin" which is
2675        # just the OS X kernel sans upper layers like Carbon and Cocoa.
2676        # Next line is broken, and a few files below require Mac OS X (full)
2677        ARCH=macosx
2678
2679        # Mac OS X builds with both the Carbon and OSX APIs at the moment
2680        EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_CARBON"
2681        EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"
2682
2683        # HACK: Reset EXTRA_LDFLAGS; the only thing it contains at this point
2684        # is -lm which is not needed under Mac OS X. But for some reasons it
2685        # also tends to contain spurious -L switches, which we don't want to
2686        # use here or in sdl-config. Hence we reset it.
2687        EXTRA_LDFLAGS=""
2688
2689        CheckVisibilityHidden
2690        CheckDummyVideo
2691        CheckDiskAudio
2692        CheckDummyAudio
2693        CheckDLOPEN
2694        CheckNASM
2695
2696        # Set up files for the shared object loading library
2697        # (this needs to be done before the dynamic X11 check)
2698        if test x$enable_loadso = xyes -a x$have_dlopen != xyes; then
2699            AC_DEFINE(SDL_LOADSO_DLCOMPAT)
2700            SOURCES="$SOURCES $srcdir/src/loadso/macosx/*.c"
2701            have_loadso=yes
2702        fi
2703
2704        CheckCOCOA
2705        CheckCARBON
2706        CheckX11
2707        CheckMacGL
2708        CheckOpenGLX11
2709        CheckPTHREAD
2710        CheckAltivec
2711
2712        # Need this or things might misbuild on a G3.
2713        EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL"
2714
2715        # Set up files for the audio library
2716        if test x$enable_audio = xyes; then
2717            AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO)
2718            SOURCES="$SOURCES $srcdir/src/audio/macosx/*.c"
2719            have_audio=yes
2720        fi
2721        # Set up files for the joystick library
2722        if test x$enable_joystick = xyes; then
2723            AC_DEFINE(SDL_JOYSTICK_IOKIT)
2724            SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
2725            have_joystick=yes
2726            need_iokit_framework=yes
2727        fi
2728        # Set up files for the cdrom library
2729        if test x$enable_cdrom = xyes; then
2730            AC_DEFINE(SDL_CDROM_MACOSX)
2731            SOURCES="$SOURCES $srcdir/src/cdrom/macosx/*.c"
2732            have_cdrom=yes
2733        fi
2734        # Set up files for the timer library
2735        if test x$enable_timers = xyes; then
2736            AC_DEFINE(SDL_TIMER_UNIX)
2737            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
2738            have_timers=yes
2739        fi
2740        # The Mac OS X platform requires special setup.
2741        SDLMAIN_SOURCES="$srcdir/src/main/macosx/*.m"
2742        SDLMAIN_LDFLAGS="-static"
2743        EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
2744        SDL_LIBS="-lSDLmain $SDL_LIBS"
2745        if test x$enable_video_cocoa = xyes; then
2746            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
2747            need_iokit_framework=yes
2748        fi
2749        if test x$enable_video_carbon = xyes -o x$enable_video_cocoa = xyes; then
2750            # The Cocoa backend still needs Carbon
2751            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ApplicationServices"
2752            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
2753        fi
2754        # If either the audio or CD driver is used, add the AudioUnit framework
2755        if test x$enable_audio = xyes -o x$enable_cdrom = xyes; then
2756            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit"
2757        fi
2758        # Some subsystems reference IOKit...
2759        if test x$need_iokit_framework = xyes; then
2760            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
2761        fi
2762        ;;
2763    *-*-mint*)
2764        ARCH=mint
2765        CheckDummyVideo
2766        CheckDiskAudio
2767        CheckDummyAudio
2768        CheckAtariBiosEvent
2769        CheckAtariXbiosVideo
2770        CheckAtariGemVideo
2771        CheckAtariAudio
2772        CheckAtariLdg
2773        CheckAtariOSMesa
2774        CheckPTH
2775        # Set up files for the audio library
2776        if test x$enable_threads = xyes -a x$enable_pth = xyes; then
2777            if test x$enable_audio = xyes; then
2778                AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO)
2779                SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
2780                have_audio=yes
2781            fi
2782        fi
2783        # Set up files for the joystick library
2784        if test x$enable_joystick = xyes; then
2785            AC_DEFINE(SDL_JOYSTICK_MINT)
2786            SOURCES="$SOURCES $srcdir/src/joystick/mint/*.c"
2787            have_joystick=yes
2788        fi
2789        # Set up files for the cdrom library
2790        if test x$enable_cdrom = xyes; then
2791            AC_DEFINE(SDL_CDROM_MINT)
2792            SOURCES="$SOURCES $srcdir/src/cdrom/mint/*.c"
2793            have_cdrom=yes
2794        fi
2795        # Set up files for the timer library
2796        if test x$enable_timers = xyes; then
2797            if test x$enable_threads = xyes -a x$enable_pth = xyes; then
2798                AC_DEFINE(SDL_TIMER_UNIX)
2799                SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
2800            else
2801                AC_DEFINE(SDL_TIMER_MINT)
2802                SOURCES="$SOURCES $srcdir/src/timer/mint/*.c"
2803                SOURCES="$SOURCES $srcdir/src/timer/mint/*.S"
2804            fi
2805            have_timers=yes
2806        fi
2807        ;;
2808    *-riscos)
2809        ARCH=riscos
2810        CheckOSS
2811        CheckPTHREAD
2812        # Set up files for the video library
2813        if test x$enable_video = xyes; then
2814            AC_DEFINE(SDL_VIDEO_DRIVER_RISCOS)
2815            SOURCES="$SOURCES $srcdir/src/video/riscos/*.c"
2816            SOURCES="$SOURCES $srcdir/src/video/riscos/*.S"
2817            have_video=yes
2818        fi
2819        # Set up files for the joystick library
2820        if test x$enable_joystick = xyes; then
2821            AC_DEFINE(SDL_JOYSTICK_RISCOS)
2822            SOURCES="$SOURCES $srcdir/src/joystick/riscos/*.c"
2823            have_joystick=yes
2824        fi
2825        # Set up files for the timer library
2826        if test x$enable_timers = xyes; then
2827            AC_DEFINE(SDL_TIMER_RISCOS)
2828            SOURCES="$SOURCES $srcdir/src/timer/riscos/*.c"
2829            have_timers=yes
2830        fi
2831        # The RISC OS platform requires special setup.
2832        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ljpeg -ltiff -lpng -lz"
2833        ;;
2834    *)
2835        AC_MSG_ERROR([
2836*** Unsupported host:  Please add to configure.in
2837        ])
2838        ;;
2839esac
2840
2841dnl Do this on all platforms, after everything else.
2842CheckWarnAll
2843
2844# Verify that we have all the platform specific files we need
2845
2846if test x$enable_joystick = xyes; then
2847  if test x$have_joystick != xyes; then
2848    # Wants joystick subsystem, but doesn't have a platform-specific backend...
2849    AC_DEFINE(SDL_JOYSTICK_DUMMY)
2850    SOURCES="$SOURCES $srcdir/src/joystick/dummy/*.c"
2851  fi
2852fi
2853if test x$have_cdrom != xyes; then
2854    if test x$enable_cdrom = xyes; then
2855        AC_DEFINE(SDL_CDROM_DISABLED)
2856    fi
2857    SOURCES="$SOURCES $srcdir/src/cdrom/dummy/*.c"
2858fi
2859if test x$have_threads != xyes; then
2860    if test x$enable_threads = xyes; then
2861        AC_DEFINE(SDL_THREADS_DISABLED)
2862    fi
2863    SOURCES="$SOURCES $srcdir/src/thread/generic/*.c"
2864fi
2865if test x$have_timers != xyes; then
2866    if test x$enable_timers = xyes; then
2867        AC_DEFINE(SDL_TIMERS_DISABLED)
2868    fi
2869    SOURCES="$SOURCES $srcdir/src/timer/dummy/*.c"
2870fi
2871if test x$have_loadso != xyes; then
2872    if test x$enable_loadso = xyes; then
2873        AC_DEFINE(SDL_LOADSO_DISABLED)
2874    fi
2875    SOURCES="$SOURCES $srcdir/src/loadso/dummy/*.c"
2876fi
2877if test x$SDLMAIN_SOURCES = x; then
2878    SDLMAIN_SOURCES="$srcdir/src/main/dummy/*.c"
2879    SDLMAIN_LDFLAGS="-static"
2880fi
2881
2882OBJECTS=`echo $SOURCES | sed 's,[[^ ]]*/\([[^ ]]*\)\.asm,$(objects)/\1.lo,g'`
2883OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.lo,g'`
2884OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.lo,g'`
2885OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
2886OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.S,$(objects)/\1.lo,g'`
2887OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.lo,g'`
2888
2889SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.lo,g'`
2890SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.lo,g'`
2891SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
2892
2893# Set runtime shared library paths as needed
2894
2895if test "x$enable_rpath" = "xyes"; then
2896  if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = irix -o $ARCH = linux -o $ARCH = netbsd; then
2897    SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
2898  fi
2899  if test $ARCH = solaris; then
2900    SDL_RLD_FLAGS="-R\${libdir}"
2901  fi
2902else
2903  SDL_RLD_FLAGS=""
2904fi
2905
2906case "$ARCH" in
2907  macosx)
2908    if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
2909      SDL_LIBS="$SDL_LIBS -Wl,-framework,Cocoa"
2910    fi
2911    if test x$enable_video = xyes -a x$enable_video_carbon = xyes; then
2912      SDL_LIBS="$SDL_LIBS -Wl,-framework,Carbon"
2913    fi
2914    # Evil hack to allow static linking on Mac OS X
2915    SDL_STATIC_LIBS="\${libdir}/libSDLmain.a \${libdir}/libSDL.a $EXTRA_LDFLAGS"
2916    ;;
2917  *)
2918    SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
2919    ;;
2920esac
2921
2922dnl Expand the cflags and libraries needed by apps using SDL
2923AC_SUBST(SDL_CFLAGS)
2924AC_SUBST(SDL_LIBS)
2925AC_SUBST(SDL_STATIC_LIBS)
2926AC_SUBST(SDL_RLD_FLAGS)
2927if test x$enable_shared = xyes; then
2928    ENABLE_SHARED_TRUE=
2929    ENABLE_SHARED_FALSE="#"
2930else
2931    ENABLE_SHARED_TRUE="#"
2932    ENABLE_SHARED_FALSE=
2933fi
2934if test x$enable_static = xyes; then
2935    ENABLE_STATIC_TRUE=
2936    ENABLE_STATIC_FALSE="#"
2937else
2938    ENABLE_STATIC_TRUE="#"
2939    ENABLE_STATIC_FALSE=
2940fi
2941AC_SUBST(ENABLE_SHARED_TRUE)
2942AC_SUBST(ENABLE_SHARED_FALSE)
2943AC_SUBST(ENABLE_STATIC_TRUE)
2944AC_SUBST(ENABLE_STATIC_FALSE)
2945
2946dnl Expand the sources and objects needed to build the library
2947AC_SUBST(ac_aux_dir)
2948AC_SUBST(INCLUDE)
2949AC_SUBST(SOURCES)
2950AC_SUBST(OBJECTS)
2951AC_SUBST(SDLMAIN_SOURCES)
2952AC_SUBST(SDLMAIN_OBJECTS)
2953AC_SUBST(SDLMAIN_LDFLAGS)
2954AC_SUBST(BUILD_CFLAGS)
2955AC_SUBST(EXTRA_CFLAGS)
2956AC_SUBST(BUILD_LDFLAGS)
2957AC_SUBST(EXTRA_LDFLAGS)
2958AC_SUBST(WINDRES)
2959
2960AC_OUTPUT([
2961    Makefile sdl-config SDL.spec SDL.qpg sdl.pc
2962], [
2963    : >build-deps
2964    if test x"$MAKE" = x; then MAKE=make; fi; $MAKE depend
2965])
2966