1dnl Process this file with autoconf to produce a configure script.
2AC_INIT(README.txt)
3AC_CONFIG_HEADER(include/SDL_config.h)
4AC_CONFIG_AUX_DIR(build-scripts)
5AC_CONFIG_MACRO_DIR([acinclude])
6
7dnl Save the CFLAGS to see whether they were passed in or generated
8orig_CFLAGS="$CFLAGS"
9
10dnl Set various version strings - taken gratefully from the GTk sources
11#
12# Making releases:
13# Edit include/SDL_version.h and change the version, then:
14#   SDL_MICRO_VERSION += 1;
15#   SDL_INTERFACE_AGE += 1;
16#   SDL_BINARY_AGE += 1;
17# if any functions have been added, set SDL_INTERFACE_AGE to 0.
18# if backwards compatibility has been broken,
19# set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0.
20#
21SDL_MAJOR_VERSION=2
22SDL_MINOR_VERSION=0
23SDL_MICRO_VERSION=5
24SDL_INTERFACE_AGE=1
25SDL_BINARY_AGE=5
26SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
27
28AC_SUBST(SDL_MAJOR_VERSION)
29AC_SUBST(SDL_MINOR_VERSION)
30AC_SUBST(SDL_MICRO_VERSION)
31AC_SUBST(SDL_INTERFACE_AGE)
32AC_SUBST(SDL_BINARY_AGE)
33AC_SUBST(SDL_VERSION)
34
35# libtool versioning
36LT_INIT([win32-dll])
37
38LT_RELEASE=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION
39LT_CURRENT=`expr $SDL_MICRO_VERSION - $SDL_INTERFACE_AGE`
40LT_REVISION=$SDL_INTERFACE_AGE
41LT_AGE=`expr $SDL_BINARY_AGE - $SDL_INTERFACE_AGE`
42m4_pattern_allow([^LT_])
43
44AC_SUBST(LT_RELEASE)
45AC_SUBST(LT_CURRENT)
46AC_SUBST(LT_REVISION)
47AC_SUBST(LT_AGE)
48
49dnl Detect the canonical build and host environments
50dnl AC_CANONICAL_HOST
51
52dnl Check for tools
53AC_PROG_LIBTOOL
54AC_PROG_CC
55AC_PROG_CXX
56AC_PROG_INSTALL
57AC_PROG_MAKE_SET
58AC_CHECK_TOOL(WINDRES, [windres], [:])
59
60dnl Make sure that srcdir is a full pathname
61case "$host" in
62    *-*-mingw32*)
63        # Except on msys, where make can't handle full pathnames (bug 1972)
64        ;;
65    *)
66        srcdir=`cd $srcdir && pwd`
67        ;;
68esac
69
70dnl Set up the compiler and linker flags
71INCLUDE="-I$srcdir/include"
72if test x$srcdir != x.; then
73    INCLUDE="-Iinclude $INCLUDE"
74elif test -d .hg; then
75    AC_MSG_ERROR([
76*** When building from Mercurial you should configure and build in a
77    separate directory so you don't clobber SDL_config.h, SDL_revision.h
78])
79fi
80BASE_CFLAGS=""
81BASE_LDFLAGS=""
82case "$host" in
83    *-*-cygwin*)
84        # We build SDL on cygwin without the UNIX emulation layer
85        save_CFLAGS="$CFLAGS"
86        have_no_cygwin=no
87        AC_MSG_CHECKING(for GCC -mno-cygwin option)
88        CFLAGS="$save_CFLAGS -mno-cygwin"
89
90        AC_TRY_COMPILE([
91        ],[
92        ],[
93        have_no_cygwin=yes
94        ])
95        AC_MSG_RESULT($have_no_cygwin)
96        CFLAGS="$save_CFLAGS"
97
98        if test x$have_no_cygwin = xyes; then
99            BASE_CFLAGS="-mno-cygwin"
100            BASE_LDFLAGS="-mno-cygwin"
101        fi
102        BASE_CFLAGS="$BASE_CFLAGS -I/usr/include/mingw"
103        ;;
104esac
105# Uncomment the following line if you want to force SDL and applications
106# built with it to be compiled for a particular architecture.
107#AX_GCC_ARCHFLAG([no], [BASE_CFLAGS="$BASE_CFLAGS $ax_cv_gcc_archflag]")
108BUILD_CFLAGS="$CFLAGS $CPPFLAGS -DUSING_GENERATED_CONFIG_H"
109# The default optimization for SDL is -O3 (Bug #31)
110if test "x$orig_CFLAGS" = x; then
111    BUILD_CFLAGS=`echo $BUILD_CFLAGS | sed 's/-O2/-O3/'`
112fi
113EXTRA_CFLAGS="$INCLUDE $BASE_CFLAGS"
114BUILD_LDFLAGS="$LDFLAGS"
115EXTRA_LDFLAGS="$BASE_LDFLAGS"
116## These are common directories to find software packages
117#for path in /usr/freeware /usr/pkg /usr/X11R6 /usr/local; do
118#    if test -d $path/include; then
119#        EXTRA_CFLAGS="$EXTRA_CFLAGS -I$path/include"
120#    fi
121#    if test -d $path/lib; then
122#        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$path/lib"
123#    fi
124#done
125SDL_CFLAGS="$BASE_CFLAGS"
126SDL_LIBS="-lSDL2 $BASE_LDFLAGS"
127CPPFLAGS="$CPPFLAGS $EXTRA_CFLAGS"
128CFLAGS="$CFLAGS $EXTRA_CFLAGS"
129LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
130
131dnl set this to use on systems that use lib64 instead of lib
132base_libdir=`echo \${libdir} | sed 's/.*\/\(.*\)/\1/; q'`
133
134dnl Function to find a library in the compiler search path
135find_lib()
136{
137    gcc_bin_path=[`$CC -print-search-dirs 2>/dev/null | fgrep programs: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
138    gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
139    env_lib_path=[`echo $LIBS $LDFLAGS $* | sed 's/-L[ ]*//g'`]
140    if test "$cross_compiling" = yes; then
141        host_lib_path=""
142    else
143        host_lib_path="/usr/$base_libdir /usr/local/$base_libdir"
144    fi
145    for path in $env_lib_path $gcc_bin_path $gcc_lib_path $host_lib_path; do
146        lib=[`ls -- $path/$1 2>/dev/null | sed -e '/\.so\..*\./d' -e 's,.*/,,' | sort | tail -1`]
147        if test x$lib != x; then
148            echo $lib
149            return
150        fi
151    done
152}
153
154dnl Check for compiler characteristics
155AC_C_CONST
156AC_C_INLINE
157AC_C_VOLATILE
158
159dnl See whether we want assertions for debugging/sanity checking SDL itself.
160AC_ARG_ENABLE(assertions,
161AC_HELP_STRING([--enable-assertions],
162               [Enable internal sanity checks (auto/disabled/release/enabled/paranoid) [[default=auto]]]),
163              , enable_assertions=auto)
164case "$enable_assertions" in
165    auto) # Use optimization settings to determine assertion level
166        ;;
167    disabled)
168        AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 0, [ ])
169        ;;
170    release)
171        AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 1, [ ])
172        ;;
173    enabled)
174        AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 2, [ ])
175        ;;
176    paranoid)
177        AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 3, [ ])
178        ;;
179    *)
180        AC_MSG_ERROR([*** unknown assertion level. stop.])
181        ;;
182esac
183
184dnl See whether we can use gcc style dependency tracking
185AC_ARG_ENABLE(dependency-tracking,
186AC_HELP_STRING([--enable-dependency-tracking],
187               [Use gcc -MMD -MT dependency tracking [[default=yes]]]),
188              , enable_dependency_tracking=yes)
189if test x$enable_dependency_tracking = xyes; then
190    have_gcc_mmd_mt=no
191    AC_MSG_CHECKING(for GCC -MMD -MT option)
192    AC_TRY_COMPILE([
193    #if !defined(__GNUC__) || __GNUC__ < 3
194    #error Dependency tracking requires GCC 3.0 or newer
195    #endif
196    ],[
197    ],[
198    have_gcc_mmd_mt=yes
199    ])
200    AC_MSG_RESULT($have_gcc_mmd_mt)
201
202    if test x$have_gcc_mmd_mt = xyes; then
203        DEPENDENCY_TRACKING_OPTIONS="-MMD -MT \$@"
204    fi
205fi
206
207AC_MSG_CHECKING(for linker option --no-undefined)
208have_no_undefined=no
209case "$host" in
210    dnl Skip this on platforms where it is just simply busted.
211    *-*-openbsd*)
212        ;;
213
214    *)
215        save_LDFLAGS="$LDFLAGS"
216        LDFLAGS="$LDFLAGS -Wl,--no-undefined"
217        AC_TRY_LINK([
218        ],[
219        ],[
220        have_no_undefined=yes
221        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined"
222        ])
223        LDFLAGS="$save_LDFLAGS"
224        ;;
225esac
226AC_MSG_RESULT($have_no_undefined)
227
228dnl See whether we are allowed to use the system C library
229AC_ARG_ENABLE(libc,
230AC_HELP_STRING([--enable-libc], [Use the system C library [[default=yes]]]),
231              , enable_libc=yes)
232if test x$enable_libc = xyes; then
233    AC_DEFINE(HAVE_LIBC, 1, [ ])
234
235    dnl Check for C library headers
236    AC_HEADER_STDC
237    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)
238
239    dnl Check for typedefs, structures, etc.
240    AC_TYPE_SIZE_T
241
242    dnl Check for defines
243    AC_CHECK_DEFINE(M_PI, math.h)
244
245    dnl Checks for library functions.
246    case "$host" in
247    *-*-cygwin* | *-*-mingw32*)
248        ;;
249    *)
250        AC_FUNC_ALLOCA
251        ;;
252    esac
253
254    AC_FUNC_MEMCMP
255    if test x$ac_cv_func_memcmp_working = xyes; then
256        AC_DEFINE(HAVE_MEMCMP, 1, [ ])
257    fi
258    AC_FUNC_STRTOD
259    if test x$ac_cv_func_strtod = xyes; then
260        AC_DEFINE(HAVE_STRTOD, 1, [ ])
261    fi
262    AC_CHECK_FUNC(mprotect,
263        AC_TRY_COMPILE([
264          #include <sys/types.h>
265          #include <sys/mman.h>
266        ],[
267        ],[
268        AC_DEFINE(HAVE_MPROTECT, 1, [ ])
269        ]),
270    )
271    AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv 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 vsscanf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname)
272
273    AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
274    AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt sqrtf tan tanf)
275
276    AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
277    AC_CHECK_FUNCS(iconv)
278
279    AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE(HAVE_SA_SIGACTION)], ,[#include <signal.h>])
280fi
281
282dnl AC_CHECK_SIZEOF(void*)
283
284dnl See whether we can use gcc atomic operations on this architecture
285AC_ARG_ENABLE(gcc-atomics,
286AC_HELP_STRING([--enable-gcc-atomics],
287               [Use gcc builtin atomics [[default=yes]]]),
288              , enable_gcc_atomics=yes)
289if test x$enable_gcc_atomics = xyes; then
290    have_gcc_atomics=no
291    AC_MSG_CHECKING(for GCC builtin atomic operations)
292    AC_TRY_LINK([
293    ],[
294    int a;
295    void *x, *y, *z;
296    __sync_lock_test_and_set(&a, 4);
297    __sync_lock_test_and_set(&x, y);
298    __sync_fetch_and_add(&a, 1);
299    __sync_bool_compare_and_swap(&a, 5, 10);
300    __sync_bool_compare_and_swap(&x, y, z);
301    ],[
302    have_gcc_atomics=yes
303    ])
304    AC_MSG_RESULT($have_gcc_atomics)
305
306    if test x$have_gcc_atomics = xyes; then
307        AC_DEFINE(HAVE_GCC_ATOMICS, 1, [ ])
308    else
309        # See if we have the minimum operation needed for GCC atomics
310        AC_TRY_LINK([
311        ],[
312        int a;
313        __sync_lock_test_and_set(&a, 1);
314        __sync_lock_release(&a);
315        ],[
316        have_gcc_sync_lock_test_and_set=yes
317        ])
318        if test x$have_gcc_sync_lock_test_and_set = xyes; then
319            AC_DEFINE(HAVE_GCC_SYNC_LOCK_TEST_AND_SET, 1, [ ])
320        fi
321    fi
322fi
323
324# Standard C sources
325SOURCES="$SOURCES $srcdir/src/*.c"
326SOURCES="$SOURCES $srcdir/src/atomic/*.c"
327SOURCES="$SOURCES $srcdir/src/audio/*.c"
328SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c"
329SOURCES="$SOURCES $srcdir/src/dynapi/*.c"
330SOURCES="$SOURCES $srcdir/src/events/*.c"
331SOURCES="$SOURCES $srcdir/src/file/*.c"
332SOURCES="$SOURCES $srcdir/src/haptic/*.c"
333SOURCES="$SOURCES $srcdir/src/joystick/*.c"
334SOURCES="$SOURCES $srcdir/src/libm/*.c"
335SOURCES="$SOURCES $srcdir/src/power/*.c"
336#SOURCES="$SOURCES $srcdir/src/filesystem/*.c"
337SOURCES="$SOURCES $srcdir/src/render/*.c"
338SOURCES="$SOURCES $srcdir/src/render/*/*.c"
339SOURCES="$SOURCES $srcdir/src/stdlib/*.c"
340SOURCES="$SOURCES $srcdir/src/thread/*.c"
341SOURCES="$SOURCES $srcdir/src/timer/*.c"
342SOURCES="$SOURCES $srcdir/src/video/*.c"
343
344dnl Enable/disable various subsystems of the SDL library
345
346AC_ARG_ENABLE(atomic,
347AC_HELP_STRING([--enable-atomic], [Enable the atomic operations subsystem [[default=yes]]]),
348              , enable_atomic=yes)
349if test x$enable_atomic != xyes; then
350    AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ])
351else
352    SUMMARY_modules="${SUMMARY_modules} atomic"
353fi
354AC_ARG_ENABLE(audio,
355AC_HELP_STRING([--enable-audio], [Enable the audio subsystem [[default=yes]]]),
356              , enable_audio=yes)
357if test x$enable_audio != xyes; then
358    AC_DEFINE(SDL_AUDIO_DISABLED, 1, [ ])
359else
360    SUMMARY_modules="${SUMMARY_modules} audio"
361fi
362AC_ARG_ENABLE(video,
363AC_HELP_STRING([--enable-video], [Enable the video subsystem [[default=yes]]]),
364              , enable_video=yes)
365if test x$enable_video != xyes; then
366    AC_DEFINE(SDL_VIDEO_DISABLED, 1, [ ])
367else
368    SUMMARY_modules="${SUMMARY_modules} video"
369fi
370AC_ARG_ENABLE(render,
371AC_HELP_STRING([--enable-render], [Enable the render subsystem [[default=yes]]]),
372              , enable_render=yes)
373if test x$enable_render != xyes; then
374    AC_DEFINE(SDL_RENDER_DISABLED, 1, [ ])
375else
376    SUMMARY_modules="${SUMMARY_modules} render"
377fi
378AC_ARG_ENABLE(events,
379AC_HELP_STRING([--enable-events], [Enable the events subsystem [[default=yes]]]),
380              , enable_events=yes)
381if test x$enable_events != xyes; then
382    AC_DEFINE(SDL_EVENTS_DISABLED, 1, [ ])
383else
384    SUMMARY_modules="${SUMMARY_modules} events"
385fi
386AC_ARG_ENABLE(joystick,
387AC_HELP_STRING([--enable-joystick], [Enable the joystick subsystem [[default=yes]]]),
388              , enable_joystick=yes)
389if test x$enable_joystick != xyes; then
390    AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
391else
392    SUMMARY_modules="${SUMMARY_modules} joystick"
393fi
394AC_ARG_ENABLE(haptic,
395AC_HELP_STRING([--enable-haptic], [Enable the haptic (force feedback) subsystem [[default=yes]]]),
396              , enable_haptic=yes)
397if test x$enable_haptic != xyes; then
398    AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
399else
400    SUMMARY_modules="${SUMMARY_modules} haptic"
401fi
402AC_ARG_ENABLE(power,
403AC_HELP_STRING([--enable-power], [Enable the power subsystem [[default=yes]]]),
404              , enable_power=yes)
405if test x$enable_power != xyes; then
406    AC_DEFINE(SDL_POWER_DISABLED, 1, [ ])
407else
408    SUMMARY_modules="${SUMMARY_modules} power"
409fi
410AC_ARG_ENABLE(filesystem,
411AC_HELP_STRING([--enable-filesystem], [Enable the filesystem subsystem [[default=yes]]]),
412              , enable_filesystem=yes)
413if test x$enable_filesystem != xyes; then
414    AC_DEFINE(SDL_FILESYSTEM_DISABLED, 1, [ ])
415else
416    SUMMARY_modules="${SUMMARY_modules} filesystem"
417fi
418AC_ARG_ENABLE(threads,
419AC_HELP_STRING([--enable-threads], [Enable the threading subsystem [[default=yes]]]),
420              , enable_threads=yes)
421if test x$enable_threads != xyes; then
422    AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
423else
424    SUMMARY_modules="${SUMMARY_modules} threads"
425fi
426AC_ARG_ENABLE(timers,
427AC_HELP_STRING([--enable-timers], [Enable the timer subsystem [[default=yes]]]),
428              , enable_timers=yes)
429if test x$enable_timers != xyes; then
430    AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
431else
432    SUMMARY_modules="${SUMMARY_modules} timers"
433fi
434AC_ARG_ENABLE(file,
435AC_HELP_STRING([--enable-file], [Enable the file subsystem [[default=yes]]]),
436              , enable_file=yes)
437if test x$enable_file != xyes; then
438    AC_DEFINE(SDL_FILE_DISABLED, 1, [ ])
439else
440    SUMMARY_modules="${SUMMARY_modules} file"
441fi
442AC_ARG_ENABLE(loadso,
443AC_HELP_STRING([--enable-loadso], [Enable the shared object loading subsystem [[default=yes]]]),
444              , enable_loadso=yes)
445if test x$enable_loadso != xyes; then
446    AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
447else
448    SUMMARY_modules="${SUMMARY_modules} loadso"
449fi
450AC_ARG_ENABLE(cpuinfo,
451AC_HELP_STRING([--enable-cpuinfo], [Enable the cpuinfo subsystem [[default=yes]]]),
452              , enable_cpuinfo=yes)
453if test x$enable_cpuinfo != xyes; then
454    AC_DEFINE(SDL_CPUINFO_DISABLED, 1, [ ])
455else
456    SUMMARY_modules="${SUMMARY_modules} cpuinfo"
457fi
458AC_ARG_ENABLE(assembly,
459AC_HELP_STRING([--enable-assembly], [Enable assembly routines [[default=yes]]]),
460              , enable_assembly=yes)
461if test x$enable_assembly = xyes; then
462    SUMMARY_modules="${SUMMARY_modules} assembly"
463
464    AC_DEFINE(SDL_ASSEMBLY_ROUTINES, 1, [ ])
465
466    # Make sure that we don't generate floating point code that would
467    # cause illegal instruction exceptions on older processors
468    case "$host" in
469        *-*-darwin*)
470            # Don't need to worry about Apple hardware, it's all SSE capable
471            default_ssemath=yes
472            ;;
473        *64-*-*)
474            # x86 64-bit architectures all have SSE instructions
475            default_ssemath=yes
476            ;;
477        *)
478            default_ssemath=no
479            ;;
480    esac
481    AC_ARG_ENABLE(ssemath,
482AC_HELP_STRING([--enable-ssemath], [Allow GCC to use SSE floating point math [[default=no]]]),
483                  , enable_ssemath=$default_ssemath)
484    if test x$enable_ssemath = xno; then
485        if test x$have_gcc_sse = xyes -o x$have_gcc_sse2 = xyes; then
486            EXTRA_CFLAGS="$EXTRA_CFLAGS -mfpmath=387"
487        fi
488    fi
489
490    dnl Check for various instruction support
491    AC_ARG_ENABLE(mmx,
492AC_HELP_STRING([--enable-mmx], [use MMX assembly routines [[default=yes]]]),
493                  , enable_mmx=yes)
494    if test x$enable_mmx = xyes; then
495        save_CFLAGS="$CFLAGS"
496        have_gcc_mmx=no
497        AC_MSG_CHECKING(for GCC -mmmx option)
498        mmx_CFLAGS="-mmmx"
499        CFLAGS="$save_CFLAGS $mmx_CFLAGS"
500
501        AC_TRY_COMPILE([
502        #ifdef __MINGW32__
503        #include <_mingw.h>
504        #ifdef __MINGW64_VERSION_MAJOR
505        #include <intrin.h>
506        #else
507        #include <mmintrin.h>
508        #endif
509        #else
510        #include <mmintrin.h>
511        #endif
512        #ifndef __MMX__
513        #error Assembler CPP flag not enabled
514        #endif
515        ],[
516        ],[
517        have_gcc_mmx=yes
518        ])
519        AC_MSG_RESULT($have_gcc_mmx)
520        CFLAGS="$save_CFLAGS"
521
522        if test x$have_gcc_mmx = xyes; then
523            EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS"
524            SUMMARY_math="${SUMMARY_math} mmx"
525        fi
526    fi
527
528    AC_ARG_ENABLE(3dnow,
529AC_HELP_STRING([--enable-3dnow], [use 3DNow! assembly routines [[default=yes]]]),
530                  , enable_3dnow=yes)
531    if test x$enable_3dnow = xyes; then
532        save_CFLAGS="$CFLAGS"
533        have_gcc_3dnow=no
534        AC_MSG_CHECKING(for GCC -m3dnow option)
535        amd3dnow_CFLAGS="-m3dnow"
536        CFLAGS="$save_CFLAGS $amd3dnow_CFLAGS"
537
538        AC_TRY_LINK([
539        #include <mm3dnow.h>
540        #ifndef __3dNOW__
541        #error Assembler CPP flag not enabled
542        #endif
543        ],[
544        void *p = 0;
545        _m_prefetch(p);
546        ],[
547        have_gcc_3dnow=yes
548        ])
549        AC_MSG_RESULT($have_gcc_3dnow)
550        CFLAGS="$save_CFLAGS"
551
552        if test x$have_gcc_3dnow = xyes; then
553            EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS"
554            SUMMARY_math="${SUMMARY_math} 3dnow"
555        fi
556    fi
557
558    AC_ARG_ENABLE(sse,
559AC_HELP_STRING([--enable-sse], [use SSE assembly routines [[default=yes]]]),
560                  , enable_sse=yes)
561    if test x$enable_sse = xyes; then
562        save_CFLAGS="$CFLAGS"
563        have_gcc_sse=no
564        AC_MSG_CHECKING(for GCC -msse option)
565        sse_CFLAGS="-msse"
566        CFLAGS="$save_CFLAGS $sse_CFLAGS"
567
568        AC_TRY_COMPILE([
569        #ifdef __MINGW32__
570        #include <_mingw.h>
571        #ifdef __MINGW64_VERSION_MAJOR
572        #include <intrin.h>
573        #else
574        #include <xmmintrin.h>
575        #endif
576        #else
577        #include <xmmintrin.h>
578        #endif
579        #ifndef __SSE__
580        #error Assembler CPP flag not enabled
581        #endif
582        ],[
583        ],[
584        have_gcc_sse=yes
585        ])
586        AC_MSG_RESULT($have_gcc_sse)
587        CFLAGS="$save_CFLAGS"
588
589        if test x$have_gcc_sse = xyes; then
590            EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS"
591            SUMMARY_math="${SUMMARY_math} sse"
592        fi
593    fi
594
595    AC_ARG_ENABLE(sse2,
596AC_HELP_STRING([--enable-sse2], [use SSE2 assembly routines [[default=no]]]),
597                  , enable_sse2=$default_ssemath)
598    if test x$enable_sse2 = xyes; then
599        save_CFLAGS="$CFLAGS"
600        have_gcc_sse2=no
601        AC_MSG_CHECKING(for GCC -msse2 option)
602        sse2_CFLAGS="-msse2"
603        CFLAGS="$save_CFLAGS $sse2_CFLAGS"
604
605        AC_TRY_COMPILE([
606        #ifdef __MINGW32__
607        #include <_mingw.h>
608        #ifdef __MINGW64_VERSION_MAJOR
609        #include <intrin.h>
610        #else
611        #include <emmintrin.h>
612        #endif
613        #else
614        #include <emmintrin.h>
615        #endif
616        #ifndef __SSE2__
617        #error Assembler CPP flag not enabled
618        #endif
619        ],[
620        ],[
621        have_gcc_sse2=yes
622        ])
623        AC_MSG_RESULT($have_gcc_sse2)
624        CFLAGS="$save_CFLAGS"
625
626        if test x$have_gcc_sse2 = xyes; then
627            EXTRA_CFLAGS="$EXTRA_CFLAGS $sse2_CFLAGS"
628            SUMMARY_math="${SUMMARY_math} sse2"
629        fi
630    fi
631
632    AC_ARG_ENABLE(altivec,
633AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes]]]),
634                  , enable_altivec=yes)
635    if test x$enable_altivec = xyes; then
636        save_CFLAGS="$CFLAGS"
637        have_gcc_altivec=no
638        have_altivec_h_hdr=no
639        altivec_CFLAGS="-maltivec"
640        CFLAGS="$save_CFLAGS $altivec_CFLAGS"
641
642        AC_MSG_CHECKING(for Altivec with GCC altivec.h and -maltivec option)
643        AC_TRY_COMPILE([
644        #include <altivec.h>
645        vector unsigned int vzero() {
646            return vec_splat_u32(0);
647        }
648        ],[
649        ],[
650        have_gcc_altivec=yes
651        have_altivec_h_hdr=yes
652        ])
653        AC_MSG_RESULT($have_gcc_altivec)
654
655        if test x$have_gcc_altivec = xno; then
656            AC_MSG_CHECKING(for Altivec with GCC -maltivec option)
657            AC_TRY_COMPILE([
658            vector unsigned int vzero() {
659                return vec_splat_u32(0);
660            }
661            ],[
662            ],[
663            have_gcc_altivec=yes
664            ])
665            AC_MSG_RESULT($have_gcc_altivec)
666        fi
667
668        if test x$have_gcc_altivec = xno; then
669            AC_MSG_CHECKING(for Altivec with GCC altivec.h and -faltivec option)
670            altivec_CFLAGS="-faltivec"
671            CFLAGS="$save_CFLAGS $altivec_CFLAGS"
672            AC_TRY_COMPILE([
673            #include <altivec.h>
674            vector unsigned int vzero() {
675                return vec_splat_u32(0);
676            }
677            ],[
678            ],[
679            have_gcc_altivec=yes
680            have_altivec_h_hdr=yes
681            ])
682            AC_MSG_RESULT($have_gcc_altivec)
683        fi
684
685        if test x$have_gcc_altivec = xno; then
686            AC_MSG_CHECKING(for Altivec with GCC -faltivec option)
687            AC_TRY_COMPILE([
688            vector unsigned int vzero() {
689                return vec_splat_u32(0);
690            }
691            ],[
692            ],[
693            have_gcc_altivec=yes
694            ])
695            AC_MSG_RESULT($have_gcc_altivec)
696        fi
697        CFLAGS="$save_CFLAGS"
698
699        if test x$have_gcc_altivec = xyes; then
700            AC_DEFINE(SDL_ALTIVEC_BLITTERS, 1, [ ])
701            if test x$have_altivec_h_hdr = xyes; then
702              AC_DEFINE(HAVE_ALTIVEC_H, 1, [ ])
703            fi
704            EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
705            SUMMARY_math="${SUMMARY_math} altivec"
706        fi
707    fi
708fi
709
710dnl See if the OSS audio interface is supported
711CheckOSS()
712{
713    AC_ARG_ENABLE(oss,
714AC_HELP_STRING([--enable-oss], [support the OSS audio API [[default=maybe]]]),
715                  , enable_oss=maybe)
716
717    # OpenBSD "has" OSS, but it's not really for app use. They want you to
718    #  use sndio instead. So on there, we default to disabled. You can force
719    #  it on if you really want, though.
720    if test x$enable_oss = xmaybe; then
721        enable_oss=yes
722        case "$host" in
723            *-*-openbsd*)
724                enable_oss=no;;
725        esac
726    fi
727
728    if test x$enable_audio = xyes -a x$enable_oss = xyes; then
729        AC_MSG_CHECKING(for OSS audio support)
730        have_oss=no
731        if test x$have_oss != xyes; then
732            AC_TRY_COMPILE([
733              #include <sys/soundcard.h>
734            ],[
735              int arg = SNDCTL_DSP_SETFRAGMENT;
736            ],[
737            have_oss=yes
738            ])
739        fi
740        if test x$have_oss != xyes; then
741            AC_TRY_COMPILE([
742              #include <soundcard.h>
743            ],[
744              int arg = SNDCTL_DSP_SETFRAGMENT;
745            ],[
746            have_oss=yes
747            AC_DEFINE(SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H, 1, [ ])
748            ])
749        fi
750        AC_MSG_RESULT($have_oss)
751        if test x$have_oss = xyes; then
752            SUMMARY_audio="${SUMMARY_audio} oss"
753            AC_DEFINE(SDL_AUDIO_DRIVER_OSS, 1, [ ])
754            SOURCES="$SOURCES $srcdir/src/audio/dsp/*.c"
755            have_audio=yes
756
757            # We may need to link with ossaudio emulation library
758            case "$host" in
759                *-*-openbsd*|*-*-netbsd*)
760                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lossaudio";;
761            esac
762        fi
763    fi
764}
765
766dnl See if the ALSA audio interface is supported
767CheckALSA()
768{
769    AC_ARG_ENABLE(alsa,
770AC_HELP_STRING([--enable-alsa], [support the ALSA audio API [[default=yes]]]),
771                  , enable_alsa=yes)
772    if test x$enable_audio = xyes -a x$enable_alsa = xyes; then
773        AM_PATH_ALSA(1.0.11, have_alsa=yes, have_alsa=no)
774        # Restore all flags from before the ALSA detection runs
775        CFLAGS="$alsa_save_CFLAGS"
776        LDFLAGS="$alsa_save_LDFLAGS"
777        LIBS="$alsa_save_LIBS"
778        if test x$have_alsa = xyes; then
779            AC_ARG_ENABLE(alsa-shared,
780AC_HELP_STRING([--enable-alsa-shared], [dynamically load ALSA audio support [[default=yes]]]),
781                          , enable_alsa_shared=yes)
782            alsa_lib=[`find_lib "libasound.so.*" "$ALSA_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
783
784            AC_DEFINE(SDL_AUDIO_DRIVER_ALSA, 1, [ ])
785            SOURCES="$SOURCES $srcdir/src/audio/alsa/*.c"
786            EXTRA_CFLAGS="$EXTRA_CFLAGS $ALSA_CFLAGS"
787            if test x$have_loadso != xyes && \
788               test x$enable_alsa_shared = xyes; then
789                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ALSA loading])
790            fi
791            if test x$have_loadso = xyes && \
792               test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then
793                echo "-- dynamic libasound -> $alsa_lib"
794                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ALSA_DYNAMIC, "$alsa_lib", [ ])
795                SUMMARY_audio="${SUMMARY_audio} alsa(dynamic)"
796            else
797                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS"
798                SUMMARY_audio="${SUMMARY_audio} alsa"
799            fi
800            have_audio=yes
801        fi
802    fi
803}
804
805dnl Find the ESD includes and libraries
806CheckESD()
807{
808    AC_ARG_ENABLE(esd,
809AC_HELP_STRING([--enable-esd], [support the Enlightened Sound Daemon [[default=yes]]]),
810                  , enable_esd=yes)
811    if test x$enable_audio = xyes -a x$enable_esd = xyes; then
812        AM_PATH_ESD(0.2.8, have_esd=yes, have_esd=no)
813        if test x$have_esd = xyes; then
814            AC_ARG_ENABLE(esd-shared,
815AC_HELP_STRING([--enable-esd-shared], [dynamically load ESD audio support [[default=yes]]]),
816                          , enable_esd_shared=yes)
817            esd_lib=[`find_lib "libesd.so.*" "$ESD_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
818
819            AC_DEFINE(SDL_AUDIO_DRIVER_ESD, 1, [ ])
820            SOURCES="$SOURCES $srcdir/src/audio/esd/*.c"
821            EXTRA_CFLAGS="$EXTRA_CFLAGS $ESD_CFLAGS"
822            if test x$have_loadso != xyes && \
823               test x$enable_esd_shared = xyes; then
824                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ESD loading])
825            fi
826            if test x$have_loadso = xyes && \
827               test x$enable_esd_shared = xyes && test x$esd_lib != x; then
828                echo "-- dynamic libesd -> $esd_lib"
829                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ESD_DYNAMIC, "$esd_lib", [ ])
830                SUMMARY_audio="${SUMMARY_audio} esd(dynamic)"
831            else
832                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS"
833                SUMMARY_audio="${SUMMARY_audio} esd"
834            fi
835            have_audio=yes
836        fi
837    fi
838}
839
840dnl Find PulseAudio
841CheckPulseAudio()
842{
843    AC_ARG_ENABLE(pulseaudio,
844AC_HELP_STRING([--enable-pulseaudio], [use PulseAudio [[default=yes]]]),
845                  , enable_pulseaudio=yes)
846    if test x$enable_audio = xyes -a x$enable_pulseaudio = xyes; then
847        audio_pulseaudio=no
848
849        PULSEAUDIO_REQUIRED_VERSION=0.9
850
851        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
852        AC_MSG_CHECKING(for PulseAudio $PULSEAUDIO_REQUIRED_VERSION support)
853        if test x$PKG_CONFIG != xno; then
854        if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $PULSEAUDIO_REQUIRED_VERSION libpulse-simple; then
855                PULSEAUDIO_CFLAGS=`$PKG_CONFIG --cflags libpulse-simple`
856                PULSEAUDIO_LIBS=`$PKG_CONFIG --libs libpulse-simple`
857                audio_pulseaudio=yes
858            fi
859        fi
860        AC_MSG_RESULT($audio_pulseaudio)
861
862        if test x$audio_pulseaudio = xyes; then
863            AC_ARG_ENABLE(pulseaudio-shared,
864AC_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio support [[default=yes]]]),
865                          , enable_pulseaudio_shared=yes)
866            pulseaudio_lib=[`find_lib "libpulse-simple.so.*" "$PULSEAUDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
867
868            AC_DEFINE(SDL_AUDIO_DRIVER_PULSEAUDIO, 1, [ ])
869            SOURCES="$SOURCES $srcdir/src/audio/pulseaudio/*.c"
870            EXTRA_CFLAGS="$EXTRA_CFLAGS $PULSEAUDIO_CFLAGS"
871            if test x$have_loadso != xyes && \
872               test x$enable_pulseaudio_shared = xyes; then
873                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic PulseAudio loading])
874            fi
875            if test x$have_loadso = xyes && \
876               test x$enable_pulseaudio_shared = xyes && test x$pulseaudio_lib != x; then
877                echo "-- dynamic libpulse-simple -> $pulseaudio_lib"
878                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC, "$pulseaudio_lib", [ ])
879                SUMMARY_audio="${SUMMARY_audio} pulse(dynamic)"
880
881                case "$host" in
882                    # On Solaris, pulseaudio must be linked deferred explicitly
883                    # to prevent undefined symbol failures.
884                    *-*-solaris*)
885                        PULSEAUDIO_LIBS=`echo $PULSEAUDIO_LIBS | sed 's/\-l/-Wl,-l/g'`
886                        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-zdeferred $PULSEAUDIO_LIBS -Wl,-znodeferred"
887                esac
888            else
889                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSEAUDIO_LIBS"
890                SUMMARY_audio="${SUMMARY_audio} pulse"
891            fi
892            have_audio=yes
893        fi
894    fi
895}
896
897CheckARTSC()
898{
899    AC_ARG_ENABLE(arts,
900AC_HELP_STRING([--enable-arts], [support the Analog Real Time Synthesizer [[default=yes]]]),
901                  , enable_arts=yes)
902    if test x$enable_audio = xyes -a x$enable_arts = xyes; then
903        AC_PATH_PROG(ARTSCONFIG, artsc-config)
904        if test x$ARTSCONFIG = x -o x$ARTSCONFIG = x'"$ARTSCONFIG"'; then
905            : # arts isn't installed
906        else
907            ARTS_CFLAGS=`$ARTSCONFIG --cflags`
908            ARTS_LIBS=`$ARTSCONFIG --libs`
909            AC_MSG_CHECKING(for aRts development environment)
910            audio_arts=no
911            save_CFLAGS="$CFLAGS"
912            CFLAGS="$CFLAGS $ARTS_CFLAGS"
913            AC_TRY_COMPILE([
914             #include <artsc.h>
915            ],[
916             arts_stream_t stream;
917            ],[
918            audio_arts=yes
919            ])
920            CFLAGS="$save_CFLAGS"
921            AC_MSG_RESULT($audio_arts)
922            if test x$audio_arts = xyes; then
923                AC_ARG_ENABLE(arts-shared,
924AC_HELP_STRING([--enable-arts-shared], [dynamically load aRts audio support [[default=yes]]]),
925                              , enable_arts_shared=yes)
926                arts_lib=[`find_lib "libartsc.so.*" "$ARTS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
927
928                AC_DEFINE(SDL_AUDIO_DRIVER_ARTS, 1, [ ])
929                SOURCES="$SOURCES $srcdir/src/audio/arts/*.c"
930                EXTRA_CFLAGS="$EXTRA_CFLAGS $ARTS_CFLAGS"
931                if test x$have_loadso != xyes && \
932                   test x$enable_arts_shared = xyes; then
933                    AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ARTS loading])
934                fi
935                if test x$have_loadso = xyes && \
936                   test x$enable_arts_shared = xyes && test x$arts_lib != x; then
937                    echo "-- dynamic libartsc -> $arts_lib"
938                    AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ARTS_DYNAMIC, "$arts_lib", [ ])
939                    SUMMARY_audio="${SUMMARY_audio} arts(dynamic)"
940                else
941                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS"
942                    SUMMARY_audio="${SUMMARY_audio} arts"
943                fi
944                have_audio=yes
945            fi
946        fi
947    fi
948}
949
950dnl See if the NAS audio interface is supported
951CheckNAS()
952{
953    AC_ARG_ENABLE(nas,
954AC_HELP_STRING([--enable-nas], [support the NAS audio API [[default=yes]]]),
955                  , enable_nas=yes)
956    if test x$enable_audio = xyes -a x$enable_nas = xyes; then
957        AC_CHECK_HEADER(audio/audiolib.h, have_nas_hdr=yes)
958        AC_CHECK_LIB(audio, AuOpenServer, have_nas_lib=yes)
959
960        AC_MSG_CHECKING(for NAS audio support)
961        have_nas=no
962
963        if test x$have_nas_hdr = xyes -a x$have_nas_lib = xyes; then
964            have_nas=yes
965            NAS_LIBS="-laudio"
966
967        elif test -r /usr/X11R6/include/audio/audiolib.h; then
968            have_nas=yes
969            NAS_CFLAGS="-I/usr/X11R6/include/"
970            NAS_LIBS="-L/usr/X11R6/lib -laudio -lXt"
971
972        fi
973
974        AC_MSG_RESULT($have_nas)
975
976        if test x$have_nas = xyes; then
977            AC_ARG_ENABLE(nas-shared,
978AC_HELP_STRING([--enable-nas-shared], [dynamically load NAS audio support [[default=yes]]]),
979                          , enable_nas_shared=yes)
980            nas_lib=[`find_lib "libaudio.so.*" "$NAS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
981
982            if test x$have_loadso != xyes && \
983               test x$enable_nas_shared = xyes; then
984                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic NAS loading])
985            fi
986            if test x$have_loadso = xyes && \
987               test x$enable_nas_shared = xyes && test x$nas_lib != x; then
988                echo "-- dynamic libaudio -> $nas_lib"
989                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_NAS_DYNAMIC, "$nas_lib", [ ])
990                SUMMARY_audio="${SUMMARY_audio} nas(dynamic)"
991            else
992                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS"
993                SUMMARY_audio="${SUMMARY_audio} nas"
994            fi
995
996            AC_DEFINE(SDL_AUDIO_DRIVER_NAS, 1, [ ])
997            SOURCES="$SOURCES $srcdir/src/audio/nas/*.c"
998            EXTRA_CFLAGS="$EXTRA_CFLAGS $NAS_CFLAGS"
999            have_audio=yes
1000        fi
1001    fi
1002}
1003
1004dnl See if the sndio audio interface is supported
1005CheckSNDIO()
1006{
1007    AC_ARG_ENABLE(sndio,
1008AC_HELP_STRING([--enable-sndio], [support the sndio audio API [[default=yes]]]),
1009                  , enable_sndio=yes)
1010    if test x$enable_audio = xyes -a x$enable_sndio = xyes; then
1011        AC_CHECK_HEADER(sndio.h, have_sndio_hdr=yes)
1012        AC_CHECK_LIB(sndio, sio_open, have_sndio_lib=yes)
1013
1014        AC_MSG_CHECKING(for sndio audio support)
1015        have_sndio=no
1016
1017        if test x$have_sndio_hdr = xyes -a x$have_sndio_lib = xyes; then
1018            have_sndio=yes
1019            SNDIO_LIBS="-lsndio"
1020        fi
1021
1022        AC_MSG_RESULT($have_sndio)
1023
1024        if test x$have_sndio = xyes; then
1025            AC_ARG_ENABLE(sndio-shared,
1026AC_HELP_STRING([--enable-sndio-shared], [dynamically load sndio audio support [[default=yes]]]),
1027                          , enable_sndio_shared=yes)
1028            sndio_lib=[`find_lib "libsndio.so.*" "$SNDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1029
1030            if test x$have_loadso != xyes && \
1031               test x$enable_sndio_shared = xyes; then
1032                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic sndio loading])
1033            fi
1034            if test x$have_loadso = xyes && \
1035               test x$enable_sndio_shared = xyes && test x$sndio_lib != x; then
1036                echo "-- dynamic libsndio -> $sndio_lib"
1037                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC, "$sndio_lib", [ ])
1038                SUMMARY_audio="${SUMMARY_audio} sndio(dynamic)"
1039            else
1040                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS"
1041                SUMMARY_audio="${SUMMARY_audio} sndio"
1042            fi
1043
1044            AC_DEFINE(SDL_AUDIO_DRIVER_SNDIO, 1, [ ])
1045            SOURCES="$SOURCES $srcdir/src/audio/sndio/*.c"
1046            EXTRA_CFLAGS="$EXTRA_CFLAGS $SNDIO_CFLAGS"
1047            have_audio=yes
1048        fi
1049    fi
1050}
1051
1052dnl rcg07142001 See if the user wants the disk writer audio driver...
1053CheckDiskAudio()
1054{
1055    AC_ARG_ENABLE(diskaudio,
1056AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [[default=yes]]]),
1057                  , enable_diskaudio=yes)
1058    if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then
1059        AC_DEFINE(SDL_AUDIO_DRIVER_DISK, 1, [ ])
1060        SOURCES="$SOURCES $srcdir/src/audio/disk/*.c"
1061        SUMMARY_audio="${SUMMARY_audio} disk"
1062    fi
1063}
1064
1065dnl rcg03142006 See if the user wants the dummy audio driver...
1066CheckDummyAudio()
1067{
1068    AC_ARG_ENABLE(dummyaudio,
1069AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [[default=yes]]]),
1070                  , enable_dummyaudio=yes)
1071    if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then
1072        AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ])
1073        SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
1074        SUMMARY_audio="${SUMMARY_audio} dummy"
1075    fi
1076}
1077
1078dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
1079dnl  Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
1080CheckVisibilityHidden()
1081{
1082    AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
1083    have_gcc_fvisibility=no
1084
1085    visibility_CFLAGS="-fvisibility=hidden"
1086    save_CFLAGS="$CFLAGS"
1087    CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
1088    AC_TRY_COMPILE([
1089    #if !defined(__GNUC__) || __GNUC__ < 4
1090    #error SDL only uses visibility attributes in GCC 4 or newer
1091    #endif
1092    ],[
1093    ],[
1094    have_gcc_fvisibility=yes
1095    ])
1096    AC_MSG_RESULT($have_gcc_fvisibility)
1097    CFLAGS="$save_CFLAGS"
1098
1099    if test x$have_gcc_fvisibility = xyes; then
1100        EXTRA_CFLAGS="$EXTRA_CFLAGS $visibility_CFLAGS"
1101    fi
1102}
1103
1104dnl See if GCC's -mpreferred-stack-boundary is supported.
1105dnl  Reference: http://bugzilla.libsdl.org/show_bug.cgi?id=1296
1106CheckStackBoundary()
1107{
1108    AC_MSG_CHECKING(for GCC -mpreferred-stack-boundary option)
1109    have_gcc_preferred_stack_boundary=no
1110
1111    save_CFLAGS="$CFLAGS"
1112    CFLAGS="$save_CFLAGS -mpreferred-stack-boundary=2"
1113    AC_TRY_COMPILE([
1114    int x = 0;
1115    ],[
1116    ],[
1117    have_gcc_preferred_stack_boundary=yes
1118    ])
1119    AC_MSG_RESULT($have_gcc_preferred_stack_boundary)
1120    CFLAGS="$save_CFLAGS"
1121
1122    if test x$have_gcc_preferred_stack_boundary = xyes; then
1123        EXTRA_CFLAGS="$EXTRA_CFLAGS -mpreferred-stack-boundary=2"
1124    fi
1125}
1126
1127dnl See if GCC's -Wdeclaration-after-statement is supported.
1128dnl  This lets us catch things that would fail on a C89 compiler when using
1129dnl  a modern GCC.
1130CheckDeclarationAfterStatement()
1131{
1132    AC_MSG_CHECKING(for GCC -Wdeclaration-after-statement option)
1133    have_gcc_declaration_after_statement=no
1134
1135    save_CFLAGS="$CFLAGS"
1136    CFLAGS="$save_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
1137    AC_TRY_COMPILE([
1138    int x = 0;
1139    ],[
1140    ],[
1141    have_gcc_declaration_after_statement=yes
1142    ])
1143    AC_MSG_RESULT($have_gcc_declaration_after_statement)
1144    CFLAGS="$save_CFLAGS"
1145
1146    if test x$have_gcc_declaration_after_statement = xyes; then
1147        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
1148    fi
1149}
1150
1151dnl See if GCC's -Wall is supported.
1152CheckWarnAll()
1153{
1154    AC_MSG_CHECKING(for GCC -Wall option)
1155    have_gcc_Wall=no
1156
1157    save_CFLAGS="$CFLAGS"
1158    CFLAGS="$save_CFLAGS -Wall"
1159    AC_TRY_COMPILE([
1160    int x = 0;
1161    ],[
1162    ],[
1163    have_gcc_Wall=yes
1164    ])
1165    AC_MSG_RESULT($have_gcc_Wall)
1166    CFLAGS="$save_CFLAGS"
1167
1168    if test x$have_gcc_Wall = xyes; then
1169        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
1170
1171        dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
1172        AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
1173        need_gcc_Wno_multichar=no
1174        case "$host" in
1175            *-*-haiku*)
1176                need_gcc_Wno_multichar=yes
1177                ;;
1178        esac
1179        AC_MSG_RESULT($need_gcc_Wno_multichar)
1180        if test x$need_gcc_Wno_multichar = xyes; then
1181            EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-multichar"
1182        fi
1183    fi
1184}
1185
1186dnl Check for Wayland
1187CheckWayland()
1188{
1189    AC_ARG_ENABLE(video-wayland,
1190AC_HELP_STRING([--enable-video-wayland], [use Wayland video driver [[default=yes]]]),
1191                  ,enable_video_wayland=yes)
1192
1193    AC_ARG_ENABLE(video-wayland-qt-touch,
1194AC_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for Wayland video driver [[default=yes]]]),
1195                  ,enable_video_wayland_qt_touch=yes)
1196
1197    if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then
1198        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1199        AC_MSG_CHECKING(for Wayland support)
1200        video_wayland=no
1201        if  test x$PKG_CONFIG != xno && \
1202            test x$video_opengl_egl = xyes && \
1203            test x$video_opengles_v2 = xyes; then
1204            if $PKG_CONFIG --exists wayland-client wayland-scanner wayland-protocols wayland-egl wayland-cursor egl xkbcommon ; then
1205                WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor xkbcommon`
1206                WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor xkbcommon`
1207                WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
1208                WAYLAND_CORE_PROTOCOL_DIR=`$PKG_CONFIG --variable=pkgdatadir wayland-client`
1209                WAYLAND_PROTOCOLS_DIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
1210                video_wayland=yes
1211            fi
1212        fi
1213        AC_MSG_RESULT($video_wayland)
1214
1215        if test x$video_wayland = xyes; then
1216            AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND, 1, [ ])
1217            if test x$enable_video_wayland_qt_touch = xyes; then
1218                AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH, 1, [ ])
1219            fi
1220
1221            WAYLAND_PROTOCOLS_UNSTABLE="relative-pointer-unstable-v1 pointer-constraints-unstable-v1"
1222
1223            SOURCES="$SOURCES $srcdir/src/video/wayland/*.c"
1224            EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS -I\$(gen)"
1225            AC_ARG_ENABLE(wayland-shared,
1226AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[default=maybe]]]),
1227                          , enable_wayland_shared=maybe)
1228
1229            dnl FIXME: Do BSD and OS X need special cases?
1230            case "$host" in
1231                *)
1232                    wayland_client_lib=[`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1233                    wayland_egl_lib=[`find_lib "libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1234                    if test x$wayland_egl_lib = x; then
1235                        dnl This works in Ubuntu 13.10, maybe others
1236                        wayland_egl_lib=[`find_lib "mesa-egl/libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1237                    fi
1238                    wayland_cursor_lib=[`find_lib "libwayland-cursor.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1239                    xkbcommon_lib=[`find_lib "libxkbcommon.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1240                    ;;
1241            esac
1242
1243            if test x$enable_wayland_shared = xmaybe; then
1244                enable_wayland_shared=yes
1245            fi
1246            if test x$have_loadso != xyes && \
1247               test x$enable_wayland_shared = xyes; then
1248                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Wayland loading])
1249                enable_wayland_shared=no
1250            fi
1251            if test x$have_loadso = xyes && \
1252               test x$enable_wayland_shared = xyes && \
1253               test x$wayland_client_lib != x && \
1254               test x$wayland_egl_lib != x && \
1255               test x$wayland_cursor_lib != x && \
1256               test x$xkbcommon_lib != x; then
1257                echo "-- dynamic libwayland-client -> $wayland_client_lib"
1258                echo "-- dynamic libwayland-egl -> $wayland_egl_lib"
1259                echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib"
1260                echo "-- dynamic libxkbcommon -> $xkbcommon_lib"
1261                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, "$wayland_client_lib", [ ])
1262                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, "$wayland_egl_lib", [ ])
1263                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, "$wayland_cursor_lib", [ ])
1264                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ])
1265                SUMMARY_video="${SUMMARY_video} wayland(dynamic)"
1266            else
1267                enable_wayland_shared=no
1268                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS"
1269                SUMMARY_video="${SUMMARY_video} wayland"
1270            fi
1271            have_video=yes
1272        fi
1273    fi
1274}
1275
1276dnl Check for Mir
1277CheckMir()
1278{
1279    AC_ARG_ENABLE(video-mir,
1280AC_HELP_STRING([--enable-video-mir], [use Mir video driver [[default=yes]]]),
1281                  ,enable_video_mir=yes)
1282
1283    if test x$enable_video = xyes -a x$enable_video_mir = xyes; then
1284        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1285        AC_MSG_CHECKING(for Mir support)
1286        video_mir=no
1287        if test x$PKG_CONFIG != xno; then
1288            if $PKG_CONFIG --exists mirclient egl xkbcommon ; then
1289                MIR_CFLAGS=`$PKG_CONFIG --cflags mirclient egl xkbcommon`
1290                MIR_LIBS=`$PKG_CONFIG --libs mirclient egl xkbcommon`
1291                save_CFLAGS="$CFLAGS"
1292                CFLAGS="$save_CFLAGS $MIR_CFLAGS"
1293
1294                dnl This will disable Mir if >= v0.25 is not available
1295                AC_TRY_COMPILE([
1296                #include <mir_toolkit/mir_client_library.h>
1297                ],[
1298                    MirTouchAction actions = mir_touch_actions
1299                ],[
1300                video_mir=yes
1301                ])
1302                CFLAGS="$save_CFLAGS"
1303            fi
1304        fi
1305        AC_MSG_RESULT($video_mir)
1306
1307        if test x$video_mir = xyes; then
1308            AC_DEFINE(SDL_VIDEO_DRIVER_MIR, 1, [ ])
1309            SOURCES="$SOURCES $srcdir/src/video/mir/*.c"
1310            EXTRA_CFLAGS="$EXTRA_CFLAGS $MIR_CFLAGS"
1311            AC_ARG_ENABLE(mir-shared,
1312AC_HELP_STRING([--enable-mir-shared], [dynamically load Mir support [[default=maybe]]]),
1313                          , enable_mir_shared=maybe)
1314
1315            dnl FIXME: Do BSD and OS X need special cases?
1316            case "$host" in
1317                *)
1318                    mirclient_lib=[`find_lib "libmirclient.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1319                    xkbcommon_lib=[`find_lib "libxkbcommon.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
1320                    ;;
1321            esac
1322
1323            if test x$enable_mir_shared = xmaybe; then
1324                enable_mir_shared=yes
1325            fi
1326            if test x$have_loadso != xyes && \
1327               test x$enable_mir_shared = xyes; then
1328                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Mir loading])
1329                enable_mir_shared=no
1330            fi
1331            if test x$have_loadso = xyes && \
1332               test x$enable_mir_shared = xyes && \
1333               test x$mirclient_lib != x && \
1334               test x$xkbcommon_lib != x; then
1335                echo "-- dynamic libmirclient -> $mirclient_lib"
1336                echo "-- dynamic libxkbcommon -> $xkbcommon_lib"
1337                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_MIR_DYNAMIC, "$mirclient_lib", [ ])
1338                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ])
1339                SUMMARY_video="${SUMMARY_video} mir(dynamic)"
1340            else
1341                enable_mir_shared=no
1342                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $MIR_LIBS"
1343                SUMMARY_video="${SUMMARY_video} mir"
1344            fi
1345            have_video=yes
1346        fi
1347    fi
1348}
1349
1350dnl Check for Native Client stuff
1351CheckNativeClient()
1352{
1353        AC_TRY_COMPILE([
1354          #if !defined(__native_client__)
1355          #error "NO NACL"
1356          #endif
1357        ],[
1358        ],[
1359        AC_DEFINE(SDL_VIDEO_DRIVER_NACL)
1360        AC_DEFINE(SDL_AUDIO_DRIVER_NACL)
1361        AC_DEFINE(HAVE_POW, 1, [ ])
1362        AC_DEFINE(HAVE_OPENGLES2, 1, [ ])
1363        AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
1364        AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
1365
1366        SDL_LIBS="-lppapi_simple -lppapi_gles2 $SDL_LIBS"
1367
1368        SDLMAIN_SOURCES="$srcdir/src/main/nacl/*.c"
1369        SOURCES="$SOURCES $srcdir/src/audio/nacl/*.c"
1370        SUMMARY_audio="${SUMMARY_audio} nacl"
1371        SOURCES="$SOURCES $srcdir/src/video/nacl/*.c"
1372        SUMMARY_video="${SUMMARY_video} nacl opengles2"
1373        ])
1374}
1375
1376
1377dnl Find the X11 include and library directories
1378CheckX11()
1379{
1380
1381
1382    AC_ARG_ENABLE(video-x11,
1383AC_HELP_STRING([--enable-video-x11], [use X11 video driver [[default=yes]]]),
1384                  , enable_video_x11=yes)
1385    if test x$enable_video = xyes -a x$enable_video_x11 = xyes; then
1386        case "$host" in
1387            *-*-darwin*)
1388                # This isn't necessary for X11, but fixes GLX detection
1389                if test "x$x_includes" = xNONE && \
1390                   test "x$x_libraries" = xNONE && \
1391                   test -d /usr/X11R6/include && \
1392                   test -d /usr/X11R6/lib; then
1393                    x_includes="/usr/X11R6/include"
1394                    x_libraries="/usr/X11R6/lib"
1395                fi
1396                ;;
1397        esac
1398        AC_PATH_X
1399        AC_PATH_XTRA
1400        if test x$have_x = xyes; then
1401            AC_ARG_ENABLE(x11-shared,
1402AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=maybe]]]),
1403                          , enable_x11_shared=maybe)
1404
1405            case "$host" in
1406                *-*-darwin*)
1407                    x11_lib='/usr/X11R6/lib/libX11.6.dylib'
1408                    x11ext_lib='/usr/X11R6/lib/libXext.6.dylib'
1409                    xcursor_lib='/usr/X11R6/lib/libXcursor.1.dylib'
1410                    xinerama_lib='/usr/X11R6/lib/libXinerama.1.dylib'
1411                    xinput_lib='/usr/X11R6/lib/libXi.6.dylib'
1412                    xrandr_lib='/usr/X11R6/lib/libXrandr.2.dylib'
1413                    xrender_lib='/usr/X11R6/lib/libXrender.1.dylib'
1414                    xss_lib='/usr/X11R6/lib/libXss.1.dylib'
1415                    xvidmode_lib='/usr/X11R6/lib/libXxf86vm.1.dylib'
1416                    ;;
1417                *-*-openbsd*)
1418                    x11_lib='libX11.so'
1419                    x11ext_lib='libXext.so'
1420                    xcursor_lib='libXcursor.so'
1421                    xinerama_lib='libXinerama.so'
1422                    xinput_lib='libXi.so'
1423                    xrandr_lib='libXrandr.so'
1424                    xrender_lib='libXrender.so'
1425                    xss_lib='libXss.so'
1426                    xvidmode_lib='libXxf86vm.so'
1427                    ;;
1428                *)
1429                    x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1430                    x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1431                    xcursor_lib=[`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1432                    xinerama_lib=[`find_lib "libXinerama.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1433                    xinput_lib=[`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1434                    xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1435                    xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1436                    xss_lib=[`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1437                    xvidmode_lib=[`find_lib "libXxf86vm.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
1438                    ;;
1439            esac
1440
1441            if test x$ac_cv_func_shmat != xyes; then
1442                X_CFLAGS="$X_CFLAGS -DNO_SHARED_MEMORY"
1443            fi
1444            CFLAGS="$CFLAGS $X_CFLAGS"
1445            LDFLAGS="$LDFLAGS $X_LIBS"
1446
1447            AC_CHECK_HEADER(X11/extensions/Xext.h,
1448                            have_xext_h_hdr=yes,
1449                            have_xext_h_hdr=no,
1450                            [#include <X11/Xlib.h>
1451                             #include <X11/Xproto.h>
1452                            ])
1453            if test x$have_xext_h_hdr != xyes; then
1454               AC_MSG_ERROR([
1455*** Missing Xext.h, maybe you need to install the libxext-dev package?
1456               ])
1457            fi
1458
1459            AC_DEFINE(SDL_VIDEO_DRIVER_X11, 1, [ ])
1460            SOURCES="$SOURCES $srcdir/src/video/x11/*.c"
1461            EXTRA_CFLAGS="$EXTRA_CFLAGS $X_CFLAGS"
1462
1463            # Needed so SDL applications can include SDL_syswm.h
1464            SDL_CFLAGS="$SDL_CFLAGS $X_CFLAGS"
1465
1466            if test x$enable_x11_shared = xmaybe; then
1467                enable_x11_shared=yes
1468            fi
1469            if test x$have_loadso != xyes && \
1470               test x$enable_x11_shared = xyes; then
1471                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading])
1472                enable_x11_shared=no
1473            fi
1474            if test x$have_loadso = xyes && \
1475               test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then
1476                echo "-- dynamic libX11 -> $x11_lib"
1477                echo "-- dynamic libX11ext -> $x11ext_lib"
1478                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib", [ ])
1479                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib", [ ])
1480                SUMMARY_video="${SUMMARY_video} x11(dynamic)"
1481            else
1482                enable_x11_shared=no
1483                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext"
1484                SUMMARY_video="${SUMMARY_video} x11"
1485            fi
1486            have_video=yes
1487
1488            AC_MSG_CHECKING(for const parameter to XextAddDisplay)
1489            have_const_param_XextAddDisplay=no
1490            AC_TRY_COMPILE([
1491              #include <X11/Xlib.h>
1492              #include <X11/Xproto.h>
1493              #include <X11/extensions/Xext.h>
1494              #include <X11/extensions/extutil.h>
1495              extern XExtDisplayInfo* XextAddDisplay(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f);
1496            ],[
1497            ],[
1498            have_const_param_XextAddDisplay=yes
1499            AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY)
1500            ])
1501            AC_MSG_RESULT($have_const_param_XextAddDisplay)
1502
1503            dnl AC_CHECK_LIB(X11, XGetEventData, AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS, 1, [Have XGenericEvent]))
1504            AC_MSG_CHECKING([for XGenericEvent])
1505            have_XGenericEvent=no
1506            AC_TRY_COMPILE([
1507              	#include <X11/Xlib.h>
1508            ],[
1509Display *display;
1510XEvent event;
1511XGenericEventCookie *cookie = &event.xcookie;
1512XNextEvent(display, &event);
1513XGetEventData(display, cookie);
1514XFreeEventData(display, cookie);
1515            ],[
1516                have_XGenericEvent=yes
1517                AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS)
1518            ])
1519            AC_MSG_RESULT($have_XGenericEvent)
1520
1521            AC_CHECK_LIB(X11, XkbKeycodeToKeysym, AC_DEFINE(SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM, 1, [Have XkbKeycodeToKeysym]))
1522
1523            AC_ARG_ENABLE(video-x11-xcursor,
1524AC_HELP_STRING([--enable-video-x11-xcursor], [enable X11 Xcursor support [[default=yes]]]),
1525                            , enable_video_x11_xcursor=yes)
1526            if test x$enable_video_x11_xcursor = xyes; then
1527                definitely_enable_video_x11_xcursor=no
1528                AC_CHECK_HEADER(X11/Xcursor/Xcursor.h,
1529                                have_xcursor_h_hdr=yes,
1530                                have_xcursor_h_hdr=no,
1531                                [#include <X11/Xlib.h>
1532                                ])
1533                if test x$have_xcursor_h_hdr = xyes; then
1534                    if test x$enable_x11_shared = xyes && test x$xcursor_lib != x ; then
1535                        echo "-- dynamic libXcursor -> $xcursor_lib"
1536                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR, "$xcursor_lib", [ ])
1537                        definitely_enable_video_x11_xcursor=yes
1538                    else
1539                        AC_CHECK_LIB(Xcursor, XcursorImageCreate, have_xcursor_lib=yes)
1540                        if test x$have_xcursor_lib = xyes ; then
1541                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXcursor"
1542                            definitely_enable_video_x11_xcursor=yes
1543                        fi
1544                    fi
1545                fi
1546            fi
1547            if test x$definitely_enable_video_x11_xcursor = xyes; then
1548                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XCURSOR, 1, [ ])
1549                SUMMARY_video_x11="${SUMMARY_video_x11} xcursor"
1550            fi
1551            AC_ARG_ENABLE(video-x11-xdbe,
1552AC_HELP_STRING([--enable-video-x11-xdbe], [enable X11 Xdbe support [[default=yes]]]),
1553                            , enable_video_x11_xdbe=yes)
1554            if test x$enable_video_x11_xdbe = xyes; then
1555                AC_CHECK_HEADER(X11/extensions/Xdbe.h,
1556                                have_dbe_h_hdr=yes,
1557                                have_dbe_h_hdr=no,
1558                                [#include <X11/Xlib.h>
1559                                ])
1560                if test x$have_dbe_h_hdr = xyes; then
1561                    AC_DEFINE(SDL_VIDEO_DRIVER_X11_XDBE, 1, [ ])
1562                    SUMMARY_video_x11="${SUMMARY_video_x11} xdbe"
1563                fi
1564            fi
1565            AC_ARG_ENABLE(video-x11-xinerama,
1566AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[default=yes]]]),
1567                            , enable_video_x11_xinerama=yes)
1568            if test x$enable_video_x11_xinerama = xyes; then
1569                definitely_enable_video_x11_xinerama=no
1570                AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1571                                have_xinerama_h_hdr=yes,
1572                                have_xinerama_h_hdr=no,
1573                                [#include <X11/Xlib.h>
1574                                ])
1575                if test x$have_xinerama_h_hdr = xyes; then
1576                    if test x$enable_x11_shared = xyes && test x$xinerama_lib != x ; then
1577                        echo "-- dynamic libXinerama -> $xinerama_lib"
1578                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA, "$xinerama_lib", [ ])
1579                        definitely_enable_video_x11_xinerama=yes
1580                    else
1581                        AC_CHECK_LIB(Xinerama, XineramaQueryExtension, have_xinerama_lib=yes)
1582                        if test x$have_xinerama_lib = xyes ; then
1583                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXinerama"
1584                            definitely_enable_video_x11_xinerama=yes
1585                        fi
1586                    fi
1587                fi
1588            fi
1589            if test x$definitely_enable_video_x11_xinerama = xyes; then
1590                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA, 1, [ ])
1591                SUMMARY_video_x11="${SUMMARY_video_x11} xinerama"
1592            fi
1593            AC_ARG_ENABLE(video-x11-xinput,
1594AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [[default=yes]]]),
1595                            , enable_video_x11_xinput=yes)
1596            if test x$enable_video_x11_xinput = xyes; then
1597                definitely_enable_video_x11_xinput=no
1598                AC_CHECK_HEADER(X11/extensions/XInput2.h,
1599                                have_xinput_h_hdr=yes,
1600                                have_xinput_h_hdr=no,
1601                                [#include <X11/Xlib.h>
1602                                ])
1603                if test x$have_xinput_h_hdr = xyes; then
1604                    if test x$enable_x11_shared = xyes && test x$xinput_lib != x ; then
1605                        echo "-- dynamic libXi -> $xinput_lib"
1606                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2, "$xinput_lib", [ ])
1607                        definitely_enable_video_x11_xinput=yes
1608                    else
1609                        AC_CHECK_LIB(Xi, XOpenDevice, have_xinput_lib=yes)
1610                        if test x$have_xinput_lib = xyes ; then
1611                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXi"
1612                            definitely_enable_video_x11_xinput=yes
1613                        fi
1614                    fi
1615                fi
1616            fi
1617            if test x$definitely_enable_video_x11_xinput = xyes; then
1618                SUMMARY_video_x11="${SUMMARY_video_x11} xinput2"
1619                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2, 1, [ ])
1620                AC_MSG_CHECKING(for xinput2 multitouch)
1621            	have_xinput2_multitouch=no
1622            	AC_TRY_COMPILE([
1623              		#include <X11/Xlib.h>
1624             		#include <X11/Xproto.h>
1625			#include <X11/extensions/XInput2.h>
1626            	],[
1627int event_type = XI_TouchBegin;
1628XITouchClassInfo *t;
1629            	],[
1630            	have_xinput2_multitouch=yes
1631            	AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH)
1632                SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch"
1633            	])
1634            	AC_MSG_RESULT($have_xinput2_multitouch)
1635            fi
1636            AC_ARG_ENABLE(video-x11-xrandr,
1637AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [[default=yes]]]),
1638                            , enable_video_x11_xrandr=yes)
1639            if test x$enable_video_x11_xrandr = xyes; then
1640                dnl XRRScreenResources is only present in Xrandr >= 1.2, we use that as a test.
1641                definitely_enable_video_x11_xrandr=no
1642                have_xrandr_h_hdr=no
1643                AC_TRY_COMPILE([
1644                #include <X11/Xlib.h>
1645                #include <X11/extensions/Xrandr.h>
1646                ],[
1647                XRRScreenResources *res = NULL;
1648                ],[
1649                have_xrandr_h_hdr=yes
1650                ])
1651                if test x$have_xrandr_h_hdr = xyes; then
1652                    if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
1653                        echo "-- dynamic libXrandr -> $xrandr_lib"
1654                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib", [ ])
1655                        definitely_enable_video_x11_xrandr=yes
1656                    else
1657                        AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
1658                        if test x$have_xrandr_lib = xyes ; then
1659                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr"
1660                            definitely_enable_video_x11_xrandr=yes
1661                        fi
1662                    fi
1663                fi
1664            fi
1665            if test x$definitely_enable_video_x11_xrandr = xyes; then
1666                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR, 1, [ ])
1667                SUMMARY_video_x11="${SUMMARY_video_x11} xrandr"
1668            fi
1669            AC_ARG_ENABLE(video-x11-scrnsaver,
1670AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension [[default=yes]]]),
1671                            , enable_video_x11_scrnsaver=yes)
1672            if test x$enable_video_x11_scrnsaver = xyes; then
1673                AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
1674                                have_scrnsaver_h_hdr=yes,
1675                                have_scrnsaver_h_hdr=no,
1676                                [#include <X11/Xlib.h>
1677                                ])
1678                if test x$have_scrnsaver_h_hdr = xyes; then
1679                    if test x$enable_x11_shared = xyes && test x$xss_lib != x ; then
1680                        echo "-- dynamic libXss -> $xss_lib"
1681                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS, "$xss_lib", [ ])
1682                        definitely_enable_video_x11_scrnsaver=yes
1683                    else
1684                        AC_CHECK_LIB(Xss, XScreenSaverSuspend, have_xss_lib=yes)
1685                        if test x$have_xss_lib = xyes ; then
1686                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXss"
1687                            definitely_enable_video_x11_scrnsaver=yes
1688                        fi
1689                    fi
1690                fi
1691            fi
1692            if test x$definitely_enable_video_x11_scrnsaver = xyes; then
1693                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSCRNSAVER, 1, [ ])
1694                SUMMARY_video_x11="${SUMMARY_video_x11} xscrnsaver"
1695            fi
1696            AC_ARG_ENABLE(video-x11-xshape,
1697AC_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [[default=yes]]]),
1698                            , enable_video_x11_xshape=yes)
1699            if test x$enable_video_x11_xshape = xyes; then
1700                AC_CHECK_HEADER(X11/extensions/shape.h,
1701                                have_shape_h_hdr=yes,
1702                                have_shape_h_hdr=no,
1703                                [#include <X11/Xlib.h>
1704                                ])
1705                if test x$have_shape_h_hdr = xyes; then
1706                    AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSHAPE, 1, [ ])
1707                    SUMMARY_video_x11="${SUMMARY_video_x11} xshape"
1708                fi
1709            fi
1710            AC_ARG_ENABLE(video-x11-vm,
1711AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[default=yes]]]),
1712                            , enable_video_x11_vm=yes)
1713            if test x$enable_video_x11_vm = xyes; then
1714                definitely_enable_video_x11_vm=no
1715                AC_CHECK_HEADER(X11/extensions/xf86vmode.h,
1716                                have_vm_h_hdr=yes,
1717                                have_vm_h_hdr=no,
1718                                [#include <X11/Xlib.h>
1719                                ])
1720                if test x$have_vm_h_hdr = xyes; then
1721                    if test x$enable_x11_shared = xyes && test x$xvidmode_lib != x ; then
1722                        echo "-- dynamic libXxf86vm -> $xvidmode_lib"
1723                        AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE, "$xvidmode_lib", [ ])
1724                        definitely_enable_video_x11_vm=yes
1725                    else
1726                        AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, have_vm_lib=yes)
1727                        if test x$have_vm_lib = xyes ; then
1728                            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXxf86vm"
1729                            definitely_enable_video_x11_vm=yes
1730                        fi
1731                    fi
1732                fi
1733            fi
1734            if test x$definitely_enable_video_x11_vm = xyes; then
1735                AC_DEFINE(SDL_VIDEO_DRIVER_X11_XVIDMODE, 1, [ ])
1736                SUMMARY_video_x11="${SUMMARY_video_x11} xvidmode"
1737            fi
1738        fi
1739    fi
1740}
1741
1742dnl Set up the Vivante video driver if enabled
1743CheckVivanteVideo()
1744{
1745    AC_ARG_ENABLE(video-vivante,
1746AC_HELP_STRING([--enable-video-vivante], [use Vivante EGL video driver [[default=yes]]]),
1747                  , enable_video_vivante=yes)
1748    if test x$enable_video = xyes -a x$enable_video_vivante = xyes; then
1749        AC_MSG_CHECKING(for Vivante VDK API)
1750        have_vivante_vdk=no
1751        AC_TRY_COMPILE([
1752          #define LINUX
1753          #define EGL_API_FB
1754          #include <gc_vdk.h>
1755        ],[
1756        ],[
1757        have_vivante_vdk=yes
1758        ])
1759        AC_MSG_RESULT($have_vivante_vdk)
1760
1761        AC_MSG_CHECKING(for Vivante FB API)
1762        have_vivante_egl=no
1763        AC_TRY_COMPILE([
1764          #define LINUX
1765          #define EGL_API_FB
1766          #include <EGL/eglvivante.h>
1767        ],[
1768        ],[
1769        have_vivante_egl=yes
1770        ])
1771        AC_MSG_RESULT($have_vivante_egl)
1772
1773        if test x$have_vivante_vdk = xyes -o x$have_vivante_egl = xyes; then
1774            AC_DEFINE(SDL_VIDEO_DRIVER_VIVANTE, 1, [ ])
1775            EXTRA_CFLAGS="$EXTRA_CFLAGS -DLINUX -DEGL_API_FB"
1776            if test x$have_vivante_vdk = xyes; then
1777                AC_DEFINE(SDL_VIDEO_DRIVER_VIVANTE_VDK, 1, [ ])
1778                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lVDK"
1779            fi
1780            SOURCES="$SOURCES $srcdir/src/video/vivante/*.c"
1781            SUMMARY_video="${SUMMARY_video} vivante"
1782            have_video=yes
1783        fi
1784    fi
1785}
1786
1787dnl Set up the Haiku video driver if enabled
1788CheckHaikuVideo()
1789{
1790    if test x$enable_video = xyes; then
1791        AC_DEFINE(SDL_VIDEO_DRIVER_HAIKU, 1, [ ])
1792        SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc"
1793        have_video=yes
1794        SUMMARY_video="${SUMMARY_video} haiku"
1795    fi
1796}
1797
1798dnl Set up the Cocoa video driver for Mac OS X (but not Darwin)
1799CheckCOCOA()
1800{
1801    AC_ARG_ENABLE(video-cocoa,
1802AC_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [[default=yes]]]),
1803                  , enable_video_cocoa=yes)
1804    if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
1805        save_CFLAGS="$CFLAGS"
1806        dnl work around that we don't have Objective-C support in autoconf
1807        CFLAGS="$CFLAGS -x objective-c"
1808        AC_MSG_CHECKING(for Cocoa framework)
1809        have_cocoa=no
1810        AC_TRY_COMPILE([
1811          #import <Cocoa/Cocoa.h>
1812        ],[
1813        ],[
1814        have_cocoa=yes
1815        ])
1816        AC_MSG_RESULT($have_cocoa)
1817        CFLAGS="$save_CFLAGS"
1818        if test x$have_cocoa = xyes; then
1819            AC_DEFINE(SDL_VIDEO_DRIVER_COCOA, 1, [ ])
1820            SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m"
1821            SUMMARY_video="${SUMMARY_video} cocoa"
1822            have_video=yes
1823        fi
1824    fi
1825}
1826
1827dnl Find DirectFB
1828CheckDirectFB()
1829{
1830    AC_ARG_ENABLE(video-directfb,
1831AC_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [[default=no]]]),
1832                  , enable_video_directfb=no)
1833    if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
1834        video_directfb=no
1835
1836        DIRECTFB_REQUIRED_VERSION=1.0.0
1837        AC_PATH_PROGS(DIRECTFBCONFIG, directfb-config, no, [$prefix/bin:$PATH])
1838        if test x$DIRECTFBCONFIG = xno; then
1839            AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1840            if test x$PKG_CONFIG != xno; then
1841                if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb; then
1842                    DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags directfb`
1843                    DIRECTFB_LIBS=`$PKG_CONFIG --libs directfb`
1844                    DIRECTFB_PREFIX=`$PKG_CONFIG --variable=prefix directfb`
1845                    video_directfb=yes
1846                fi
1847            fi
1848        else
1849            set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'`
1850            NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
1851            set -- `$DIRECTFBCONFIG --version | sed 's/\./ /g'`
1852            HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
1853            if test $HAVE_VERSION -ge $NEED_VERSION; then
1854                DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags`
1855                DIRECTFB_LIBS=`$DIRECTFBCONFIG --libs`
1856                DIRECTFB_PREFIX=`$DIRECTFBCONFIG --prefix`
1857                video_directfb=yes
1858            fi
1859        fi
1860        if test x$video_directfb = xyes; then
1861            # SuSE 11.1 installs directfb-config without directfb-devel
1862            save_CPPFLAGS="$CPPFLAGS"
1863            CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
1864            AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
1865            CPPFLAGS="$save_CPPFLAGS"
1866            video_directfb=$have_directfb_hdr
1867        fi
1868        AC_MSG_CHECKING(for DirectFB $DIRECTFB_REQUIRED_VERSION support)
1869        AC_MSG_RESULT($video_directfb)
1870
1871        if test x$video_directfb = xyes; then
1872            AC_ARG_ENABLE(directfb-shared,
1873AC_HELP_STRING([--enable-directfb-shared], [dynamically load directfb support [[default=yes]]]),
1874                              , enable_directfb_shared=yes)
1875
1876            AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB, 1, [ ])
1877            AC_DEFINE(SDL_VIDEO_RENDER_DIRECTFB, 1, [ ])
1878            SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
1879            EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
1880
1881            AC_MSG_CHECKING(for directfb dynamic loading support)
1882            directfb_shared=no
1883            directfb_lib=[`find_lib "libdirectfb.so.*" "$DIRECTFB_LIBS"`]
1884            # | sed 's/.*\/\(.*\)/\1/; q'`]
1885AC_MSG_WARN("directfb $directfb_lib")
1886            if test x$have_loadso != xyes && \
1887               test x$enable_directfb_shared = xyes; then
1888                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic directfb loading])
1889            fi
1890            if test x$have_loadso = xyes && \
1891               test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
1892                directfb_shared=yes
1893                echo "-- $directfb_lib_spec -> $directfb_lib"
1894                AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ])
1895                SUMMARY_video="${SUMMARY_video} directfb(dynamic)"
1896            else
1897                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
1898                SUMMARY_video="${SUMMARY_video} directfb"
1899            fi
1900            AC_MSG_RESULT($directfb_shared)
1901            SDL_CFLAGS="$SDL_CFLAGS $DIRECTFB_CFLAGS"
1902            have_video=yes
1903        fi
1904    fi
1905}
1906
1907dnl Find FusionSound
1908CheckFusionSound()
1909{
1910    AC_ARG_ENABLE(fusionsound,
1911AC_HELP_STRING([--enable-fusionsound], [use FusionSound audio driver [[default=no]]]),
1912                  , enable_fusionsound=no)
1913    if test x$enable_audio = xyes -a x$enable_fusionsound = xyes; then
1914        fusionsound=no
1915
1916        FUSIONSOUND_REQUIRED_VERSION=1.1.1
1917
1918        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1919        AC_MSG_CHECKING(for FusionSound $FUSIONSOUND_REQUIRED_VERSION support)
1920        if test x$PKG_CONFIG != xno; then
1921            if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $FUSIONSOUND_REQUIRED_VERSION fusionsound; then
1922                FUSIONSOUND_CFLAGS=`$PKG_CONFIG --cflags fusionsound`
1923                FUSIONSOUND_LIBS=`$PKG_CONFIG --libs fusionsound`
1924                fusionsound=yes
1925            fi
1926        fi
1927        AC_MSG_RESULT($fusionsound)
1928
1929        if test x$fusionsound = xyes; then
1930            AC_DEFINE(SDL_AUDIO_DRIVER_FUSIONSOUND, 1, [ ])
1931            SOURCES="$SOURCES $srcdir/src/audio/fusionsound/*.c"
1932            EXTRA_CFLAGS="$EXTRA_CFLAGS $FUSIONSOUND_CFLAGS"
1933
1934            AC_ARG_ENABLE(fusionsound-shared,
1935AC_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audio support [[default=yes]]]),
1936                          , enable_fusionsound_shared=yes)
1937            fusionsound_shared=no
1938            AC_MSG_CHECKING(for FusionSound dynamic loading support)
1939            if test x$have_loadso != xyes && \
1940               test x$enable_fusionsound_shared = xyes; then
1941                AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic fusionsound loading])
1942            fi
1943            if test x$have_loadso = xyes && \
1944               test x$enable_fusionsound_shared = xyes; then
1945                AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC, "libfusionsound.so", [ ])
1946                fusionsound_shared=yes
1947                SUMMARY_audio="${SUMMARY_audio} fusionsound(dynamic)"
1948            else
1949                EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS"
1950                SUMMARY_audio="${SUMMARY_audio} fusionsound"
1951            fi
1952            AC_MSG_RESULT($fusionsound_shared)
1953
1954            have_audio=yes
1955        fi
1956    fi
1957}
1958
1959dnl rcg04172001 Set up the Null video driver.
1960CheckDummyVideo()
1961{
1962    AC_ARG_ENABLE(video-dummy,
1963AC_HELP_STRING([--enable-video-dummy], [use dummy video driver [[default=yes]]]),
1964                  , enable_video_dummy=yes)
1965    if test x$enable_video_dummy = xyes; then
1966        AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ])
1967        SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
1968        have_video=yes
1969        SUMMARY_video="${SUMMARY_video} dummy"
1970    fi
1971}
1972
1973dnl Check to see if OpenGL support is desired
1974AC_ARG_ENABLE(video-opengl,
1975AC_HELP_STRING([--enable-video-opengl], [include OpenGL support [[default=yes]]]),
1976              , enable_video_opengl=yes)
1977
1978dnl Find OpenGL
1979CheckOpenGLX11()
1980{
1981    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
1982        AC_MSG_CHECKING(for OpenGL (GLX) support)
1983        video_opengl=no
1984        AC_TRY_COMPILE([
1985         #include <GL/gl.h>
1986         #include <GL/glx.h>
1987        ],[
1988        ],[
1989        video_opengl=yes
1990        ])
1991        AC_MSG_RESULT($video_opengl)
1992        if test x$video_opengl = xyes; then
1993            AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
1994            AC_DEFINE(SDL_VIDEO_OPENGL_GLX, 1, [ ])
1995            AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
1996            SUMMARY_video="${SUMMARY_video} opengl"
1997        fi
1998    fi
1999}
2000
2001dnl Check to see if OpenGL ES support is desired
2002AC_ARG_ENABLE(video-opengles,
2003AC_HELP_STRING([--enable-video-opengles], [include OpenGL ES support [[default=yes]]]),
2004              , enable_video_opengles=yes)
2005AC_ARG_ENABLE(video-opengles1,
2006AC_HELP_STRING([--enable-video-opengles1], [include OpenGL ES 1.1 support [[default=yes]]]),
2007              , enable_video_opengles1=yes)
2008AC_ARG_ENABLE(video-opengles2,
2009AC_HELP_STRING([--enable-video-opengles2], [include OpenGL ES 2.0 support [[default=yes]]]),
2010              , enable_video_opengles2=yes)
2011
2012dnl Find OpenGL ES
2013CheckOpenGLESX11()
2014{
2015    if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
2016        AC_MSG_CHECKING(for EGL support)
2017        video_opengl_egl=no
2018        AC_TRY_COMPILE([
2019          #define LINUX
2020          #define EGL_API_FB
2021          #include <EGL/egl.h>
2022          #include <EGL/eglext.h>
2023        ],[
2024        ],[
2025        video_opengl_egl=yes
2026        ])
2027        AC_MSG_RESULT($video_opengl_egl)
2028        if test x$video_opengl_egl = xyes; then
2029            AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
2030        fi
2031
2032        if test x$enable_video_opengles1 = xyes; then
2033            AC_MSG_CHECKING(for OpenGL ES v1 headers)
2034            video_opengles_v1=no
2035            AC_TRY_COMPILE([
2036             #include <GLES/gl.h>
2037             #include <GLES/glext.h>
2038            ],[
2039            ],[
2040            video_opengles_v1=yes
2041            ])
2042            AC_MSG_RESULT($video_opengles_v1)
2043            if test x$video_opengles_v1 = xyes; then
2044                AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ])
2045                AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ])
2046                SUMMARY_video="${SUMMARY_video} opengl_es1"
2047            fi
2048        fi
2049
2050        if test x$enable_video_opengles2 = xyes; then
2051            AC_MSG_CHECKING(for OpenGL ES v2 headers)
2052            video_opengles_v2=no
2053            AC_TRY_COMPILE([
2054             #include <GLES2/gl2.h>
2055             #include <GLES2/gl2ext.h>
2056            ],[
2057            ],[
2058            video_opengles_v2=yes
2059            ])
2060            AC_MSG_RESULT($video_opengles_v2)
2061            if test x$video_opengles_v2 = xyes; then
2062                AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
2063                AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
2064                SUMMARY_video="${SUMMARY_video} opengl_es2"
2065            fi
2066        fi
2067    fi
2068}
2069
2070dnl Check for Windows OpenGL
2071CheckWINDOWSGL()
2072{
2073    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
2074        AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
2075        AC_DEFINE(SDL_VIDEO_OPENGL_WGL, 1, [ ])
2076        AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
2077        SUMMARY_video="${SUMMARY_video} opengl"
2078    fi
2079}
2080
2081dnl Check for Windows OpenGL
2082CheckWINDOWSGLES()
2083{
2084    if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
2085
2086        AC_MSG_CHECKING(for EGL support)
2087        video_opengl_egl=no
2088        AC_TRY_COMPILE([
2089         #include <EGL/egl.h>
2090        ],[
2091        ],[
2092        video_opengl_egl=yes
2093        ])
2094        AC_MSG_RESULT($video_opengl_egl)
2095        if test x$video_opengl_egl = xyes; then
2096            AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
2097            AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
2098            SUMMARY_video="${SUMMARY_video} opengl_es1"
2099        fi
2100
2101        AC_MSG_CHECKING(for OpenGL ES v2 headers)
2102        video_opengles_v2=no
2103        AC_TRY_COMPILE([
2104         #include <GLES2/gl2.h>
2105         #include <GLES2/gl2ext.h>
2106        ],[
2107        ],[
2108        video_opengles_v2=yes
2109        ])
2110        AC_MSG_RESULT($video_opengles_v2)
2111        if test x$video_opengles_v2 = xyes; then
2112            AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
2113            AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
2114            AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
2115            SUMMARY_video="${SUMMARY_video} opengl_es2"
2116        fi
2117    fi
2118}
2119
2120dnl Check for Haiku OpenGL
2121CheckHaikuGL()
2122{
2123    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
2124        AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
2125        AC_DEFINE(SDL_VIDEO_OPENGL_HAIKU, 1, [ ])
2126        AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
2127        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
2128        SUMMARY_video="${SUMMARY_video} opengl"
2129    fi
2130}
2131
2132dnl Check for MacOS OpenGL
2133CheckMacGL()
2134{
2135    if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
2136        AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
2137        AC_DEFINE(SDL_VIDEO_OPENGL_CGL, 1, [ ])
2138        AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
2139        SUMMARY_video="${SUMMARY_video} opengl"
2140    fi
2141}
2142
2143CheckEmscriptenGLES()
2144{
2145    if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
2146        AC_MSG_CHECKING(for EGL support)
2147        video_opengl_egl=no
2148        AC_TRY_COMPILE([
2149         #include <EGL/egl.h>
2150        ],[
2151        ],[
2152        video_opengl_egl=yes
2153        ])
2154        AC_MSG_RESULT($video_opengl_egl)
2155        if test x$video_opengl_egl = xyes; then
2156            AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
2157        fi
2158
2159        AC_MSG_CHECKING(for OpenGL ES v2 headers)
2160        video_opengles_v2=no
2161        AC_TRY_COMPILE([
2162         #include <GLES2/gl2.h>
2163         #include <GLES2/gl2ext.h>
2164        ],[
2165        ],[
2166        video_opengles_v2=yes
2167        ])
2168        AC_MSG_RESULT($video_opengles_v2)
2169        if test x$video_opengles_v2 = xyes; then
2170            AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
2171            AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
2172            SUMMARY_video="${SUMMARY_video} opengl_es2"
2173        fi
2174    fi
2175}
2176
2177dnl See if we can use the new unified event interface in Linux 2.4
2178CheckInputEvents()
2179{
2180    dnl Check for Linux 2.4 unified input event interface support
2181        AC_MSG_CHECKING(for Linux 2.4 unified input interface)
2182        use_input_events=no
2183        AC_TRY_COMPILE([
2184          #include <linux/input.h>
2185        ],[
2186          #ifndef EVIOCGNAME
2187          #error EVIOCGNAME() ioctl not available
2188          #endif
2189        ],[
2190        use_input_events=yes
2191        ])
2192        AC_MSG_RESULT($use_input_events)
2193        if test x$use_input_events = xyes; then
2194            AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
2195            SUMMARY_input="${SUMMARY_input} linuxev"
2196        fi
2197}
2198
2199dnl See if we can use the kernel kd.h header
2200CheckInputKD()
2201{
2202
2203    AC_MSG_CHECKING(for Linux kd.h)
2204    use_input_kd=no
2205    AC_TRY_COMPILE([
2206      #include <linux/kd.h>
2207      #include <linux/keyboard.h>
2208    ],[
2209        struct kbentry kbe;
2210        kbe.kb_table = KG_CTRL;
2211        ioctl(0, KDGKBENT, &kbe);
2212    ],[
2213    use_input_kd=yes
2214    ])
2215    AC_MSG_RESULT($use_input_kd)
2216    if test x$use_input_kd = xyes; then
2217        AC_DEFINE(SDL_INPUT_LINUXKD, 1, [ ])
2218        SUMMARY_input="${SUMMARY_input} linuxkd"
2219    fi
2220}
2221
2222dnl See if the platform offers libudev for device enumeration and hotplugging.
2223CheckLibUDev()
2224{
2225    AC_ARG_ENABLE(libudev,
2226AC_HELP_STRING([--enable-libudev], [enable libudev support [[default=yes]]]),
2227                        , enable_libudev=yes)
2228    if test x$enable_libudev = xyes; then
2229        AC_CHECK_HEADER(libudev.h,
2230                        have_libudev_h_hdr=yes,
2231                        have_libudev_h_hdr=no)
2232        if test x$have_libudev_h_hdr = xyes; then
2233            AC_DEFINE(HAVE_LIBUDEV_H, 1, [ ])
2234        fi
2235    fi
2236}
2237
2238dnl See if the platform offers libdbus for various IPC techniques.
2239CheckDBus()
2240{
2241    AC_ARG_ENABLE(dbus,
2242AC_HELP_STRING([--enable-dbus], [enable D-Bus support [[default=yes]]]),
2243                        , enable_dbus=yes)
2244    if test x$enable_dbus = xyes; then
2245        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2246        if test x$PKG_CONFIG != xno; then
2247            DBUS_CFLAGS=`$PKG_CONFIG --cflags dbus-1`
2248            save_CFLAGS="$CFLAGS"
2249            CFLAGS="$save_CFLAGS $DBUS_CFLAGS"
2250            AC_CHECK_HEADER(dbus/dbus.h,
2251                            have_dbus_dbus_h_hdr=yes,
2252                            have_dbus_dbus_h_hdr=no)
2253            CFLAGS="$save_CFLAGS"
2254            if test x$have_dbus_dbus_h_hdr = xyes; then
2255                AC_DEFINE(HAVE_DBUS_DBUS_H, 1, [ ])
2256                EXTRA_CFLAGS="$EXTRA_CFLAGS $DBUS_CFLAGS"
2257                SOURCES="$SOURCES $srcdir/src/core/linux/SDL_dbus.c"
2258            fi
2259        fi
2260    fi
2261}
2262
2263dnl See if the platform wanna IME support.
2264CheckIME()
2265{
2266    AC_ARG_ENABLE(ime,
2267AC_HELP_STRING([--enable-ime], [enable IME support [[default=yes]]]),
2268                  , enable_ime=yes)
2269    if test x$enable_ime = xyes; then
2270        AC_DEFINE(SDL_USE_IME, 1, [ ])
2271            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_ime.c"
2272    fi
2273}
2274
2275dnl See if the platform has libibus IME support.
2276CheckIBus()
2277{
2278    AC_ARG_ENABLE(ibus,
2279AC_HELP_STRING([--enable-ibus], [enable IBus support [[default=yes]]]),
2280                  , enable_ibus=yes)
2281    if test x$enable_ibus = xyes; then
2282        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2283        if test x$PKG_CONFIG != xno; then
2284            IBUS_CFLAGS=`$PKG_CONFIG --cflags ibus-1.0`
2285            save_CFLAGS="$CFLAGS"
2286            CFLAGS="$save_CFLAGS $IBUS_CFLAGS"
2287            AC_CHECK_HEADER(ibus-1.0/ibus.h,
2288                            have_ibus_ibus_h_hdr=yes,
2289                            have_ibus_ibus_h_hdr=no)
2290            AC_CHECK_HEADER(sys/inotify.h,
2291                            have_inotify_inotify_h_hdr=yes,
2292                            have_inotify_inotify_h_hdr=no)
2293            CFLAGS="$save_CFLAGS"
2294            if test x$have_ibus_ibus_h_hdr = xyes; then
2295                if test x$enable_ime != xyes; then
2296                    AC_MSG_WARN([IME support is required for IBus.])
2297                    have_ibus_ibus_h_hdr=no
2298                elif test x$enable_dbus != xyes; then
2299                    AC_MSG_WARN([DBus support is required for IBus.])
2300                    have_ibus_ibus_h_hdr=no
2301                elif test x$have_inotify_inotify_h_hdr != xyes; then
2302                    AC_MSG_WARN([INotify support is required for IBus.])
2303                    have_ibus_ibus_h_hdr=no
2304                else
2305                    AC_DEFINE(HAVE_IBUS_IBUS_H, 1, [ ])
2306                    EXTRA_CFLAGS="$EXTRA_CFLAGS $IBUS_CFLAGS"
2307                    SOURCES="$SOURCES $srcdir/src/core/linux/SDL_ibus.c"
2308               fi
2309            fi
2310        fi
2311    fi
2312}
2313
2314dnl See if the platform has fcitx IME support.
2315CheckFcitx()
2316{
2317    AC_ARG_ENABLE(fcitx,
2318AC_HELP_STRING([--enable-fcitx], [enable fcitx support [[default=yes]]]),
2319                  , enable_fcitx=yes)
2320    if test x$enable_fcitx = xyes; then
2321        AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2322        if test x$PKG_CONFIG != xno; then
2323            FCITX_CFLAGS=`$PKG_CONFIG --cflags fcitx`
2324            CFLAGS="$CFLAGS $FCITX_CFLAGS"
2325            AC_CHECK_HEADER(fcitx/frontend.h,
2326                            have_fcitx_frontend_h_hdr=yes,
2327                            have_fcitx_frontend_h_hdr=no)
2328            CFLAGS="$save_CFLAGS"
2329            if test x$have_fcitx_frontend_h_hdr = xyes; then
2330                if test x$enable_ime != xyes; then
2331                    AC_MSG_WARN([IME support is required for fcitx.])
2332                    have_fcitx_frontend_h_hdr=no
2333                elif test x$enable_dbus != xyes; then
2334                    AC_MSG_WARN([DBus support is required for fcitx.])
2335                    have_fcitx_frontend_h_hdr=no
2336                else
2337                    AC_DEFINE(HAVE_FCITX_FRONTEND_H, 1, [ ])
2338                    EXTRA_CFLAGS="$EXTRA_CFLAGS $FCITX_CFLAGS"
2339                    SOURCES="$SOURCES $srcdir/src/core/linux/SDL_fcitx.c"
2340               fi
2341            fi
2342        fi
2343    fi
2344}
2345
2346dnl See if we can use the Touchscreen input library
2347CheckTslib()
2348{
2349    AC_ARG_ENABLE(input-tslib,
2350AC_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[default=yes]]]),
2351                  , enable_input_tslib=yes)
2352    if test x$enable_input_tslib = xyes; then
2353        AC_MSG_CHECKING(for Touchscreen library support)
2354        enable_input_tslib=no
2355        AC_TRY_COMPILE([
2356          #include "tslib.h"
2357        ],[
2358        ],[
2359        enable_input_tslib=yes
2360        ])
2361        AC_MSG_RESULT($enable_input_tslib)
2362        if test x$enable_input_tslib = xyes; then
2363            AC_DEFINE(SDL_INPUT_TSLIB, 1, [ ])
2364            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts"
2365            SUMMARY_input="${SUMMARY_input} ts"
2366        fi
2367    fi
2368}
2369
2370dnl See what type of thread model to use on Linux and Solaris
2371CheckPTHREAD()
2372{
2373    dnl Check for pthread support
2374    AC_ARG_ENABLE(pthreads,
2375AC_HELP_STRING([--enable-pthreads], [use POSIX threads for multi-threading [[default=yes]]]),
2376                  , enable_pthreads=yes)
2377    dnl This is used on Linux for glibc binary compatibility (Doh!)
2378    AC_ARG_ENABLE(pthread-sem,
2379AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]),
2380                  , enable_pthread_sem=yes)
2381    case "$host" in
2382         *-*-androideabi*)
2383            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
2384            pthread_lib=""
2385            ;;
2386        *-*-linux*|*-*-uclinux*)
2387            pthread_cflags="-D_REENTRANT"
2388            pthread_lib="-lpthread"
2389            ;;
2390        *-*-bsdi*)
2391            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
2392            pthread_lib=""
2393            ;;
2394        *-*-darwin*)
2395            pthread_cflags="-D_THREAD_SAFE"
2396# causes Carbon.p complaints?
2397#            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
2398            ;;
2399        *-*-freebsd*|*-*-dragonfly*)
2400            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
2401            pthread_lib="-pthread"
2402            ;;
2403        *-*-netbsd*)
2404            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
2405            pthread_lib="-lpthread"
2406            ;;
2407        *-*-openbsd*)
2408            pthread_cflags="-D_REENTRANT"
2409            pthread_lib="-pthread"
2410            ;;
2411        *-*-solaris2.9)
2412            # From Solaris 9+, posix4's preferred name is rt.
2413            pthread_cflags="-D_REENTRANT"
2414            pthread_lib="-lpthread -lrt"
2415            ;;
2416        *-*-solaris2.10)
2417            # Solaris 10+ merged pthread into libc.
2418            pthread_cflags="-D_REENTRANT"
2419            pthread_lib="-lrt"
2420            ;;
2421        *-*-solaris*)
2422            # Solaris 11+ merged rt into libc.
2423            pthread_cflags="-D_REENTRANT"
2424            pthread_lib=""
2425            ;;
2426        *-*-sysv5*)
2427            pthread_cflags="-D_REENTRANT -Kthread"
2428            pthread_lib=""
2429            ;;
2430        *-*-aix*)
2431            pthread_cflags="-D_REENTRANT -mthreads"
2432            pthread_lib="-lpthread"
2433            ;;
2434        *-*-hpux11*)
2435            pthread_cflags="-D_REENTRANT"
2436            pthread_lib="-L/usr/lib -lpthread"
2437            ;;
2438        *-*-haiku*)
2439            pthread_cflags="-D_REENTRANT"
2440            pthread_lib=""
2441            ;;
2442        *)
2443            pthread_cflags="-D_REENTRANT"
2444            pthread_lib="-lpthread"
2445            ;;
2446    esac
2447    if test x$enable_threads = xyes -a x$enable_pthreads = xyes; then
2448        # Save the original compiler flags and libraries
2449        ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
2450        # Add the pthread compiler flags and libraries
2451        CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
2452        # Check to see if we have pthread support on this system
2453        AC_MSG_CHECKING(for pthreads)
2454        use_pthreads=no
2455        AC_TRY_LINK([
2456         #include <pthread.h>
2457        ],[
2458         pthread_attr_t type;
2459         pthread_attr_init(&type);
2460        ],[
2461        use_pthreads=yes
2462        ])
2463        AC_MSG_RESULT($use_pthreads)
2464        # Restore the compiler flags and libraries
2465        CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
2466
2467        # Do futher testing if we have pthread support...
2468        if test x$use_pthreads = xyes; then
2469            AC_DEFINE(SDL_THREAD_PTHREAD, 1, [ ])
2470            EXTRA_CFLAGS="$EXTRA_CFLAGS $pthread_cflags"
2471            EXTRA_LDFLAGS="$EXTRA_LDFLAGS $pthread_lib"
2472            SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags"
2473
2474            # Save the original compiler flags and libraries
2475            ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
2476            # Add the pthread compiler flags and libraries
2477            CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
2478
2479            # Check to see if recursive mutexes are available
2480            AC_MSG_CHECKING(for recursive mutexes)
2481            has_recursive_mutexes=no
2482            if test x$has_recursive_mutexes = xno; then
2483                AC_TRY_LINK([
2484                  #define _GNU_SOURCE 1
2485                  #include <pthread.h>
2486                ],[
2487                  pthread_mutexattr_t attr;
2488                  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
2489                ],[
2490                has_recursive_mutexes=yes
2491                AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX, 1, [ ])
2492                ])
2493            fi
2494            if test x$has_recursive_mutexes = xno; then
2495                AC_TRY_LINK([
2496                  #define _GNU_SOURCE 1
2497                  #include <pthread.h>
2498                ],[
2499                  pthread_mutexattr_t attr;
2500                  pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
2501                ],[
2502                has_recursive_mutexes=yes
2503                AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP, 1, [ ])
2504                ])
2505            fi
2506            AC_MSG_RESULT($has_recursive_mutexes)
2507
2508            # Check to see if pthread semaphore support is missing
2509            if test x$enable_pthread_sem = xyes; then
2510                AC_MSG_CHECKING(for pthread semaphores)
2511                have_pthread_sem=no
2512                AC_TRY_COMPILE([
2513                  #include <pthread.h>
2514                  #include <semaphore.h>
2515                ],[
2516                ],[
2517                have_pthread_sem=yes
2518                ])
2519                AC_MSG_RESULT($have_pthread_sem)
2520            fi
2521            if test x$have_pthread_sem = xyes; then
2522                AC_MSG_CHECKING(for sem_timedwait)
2523                have_sem_timedwait=no
2524                AC_TRY_LINK([
2525                  #include <pthread.h>
2526                  #include <semaphore.h>
2527                ],[
2528                  sem_timedwait(NULL, NULL);
2529                ],[
2530                have_sem_timedwait=yes
2531                AC_DEFINE(HAVE_SEM_TIMEDWAIT)
2532                ])
2533                AC_MSG_RESULT($have_sem_timedwait)
2534            fi
2535
2536            AC_CHECK_HEADER(pthread_np.h, have_pthread_np_h=yes, have_pthread_np_h=no, [ #include <pthread.h> ])
2537            if test x$have_pthread_np_h = xyes; then
2538                AC_DEFINE(HAVE_PTHREAD_NP_H, 1, [ ])
2539            fi
2540
2541            # Check to see if pthread naming is available
2542            AC_MSG_CHECKING(for pthread_setname_np)
2543            AC_TRY_LINK_FUNC(pthread_setname_np, [
2544              has_pthread_setname_np=yes
2545              AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [ ])
2546            ],[
2547              has_pthread_setname_np=no
2548            ])
2549            AC_MSG_RESULT($has_pthread_setname_np)
2550
2551            AC_MSG_CHECKING(for pthread_set_name_np)
2552            AC_TRY_LINK_FUNC(pthread_set_name_np, [
2553              has_pthread_set_name_np=yes
2554              AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [ ])
2555            ],[
2556              has_pthread_set_name_np=no
2557            ])
2558            AC_MSG_RESULT($has_pthread_set_name_np)
2559
2560            # Restore the compiler flags and libraries
2561            CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
2562
2563            # Basic thread creation functions
2564            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c"
2565
2566            # Semaphores
2567            # We can fake these with mutexes and condition variables if necessary
2568            if test x$have_pthread_sem = xyes; then
2569                SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syssem.c"
2570            else
2571                SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
2572            fi
2573
2574            # Mutexes
2575            # We can fake these with semaphores if necessary
2576            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_sysmutex.c"
2577
2578            # Condition variables
2579            # We can fake these with semaphores and mutexes if necessary
2580            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syscond.c"
2581
2582            # Thread local storage
2583            SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systls.c"
2584
2585            have_threads=yes
2586        fi
2587    fi
2588}
2589
2590dnl Determine whether the compiler can produce Windows executables
2591CheckWINDOWS()
2592{
2593    AC_MSG_CHECKING(Windows compiler)
2594    have_win32_gcc=no
2595    AC_TRY_COMPILE([
2596     #include <windows.h>
2597    ],[
2598    ],[
2599    have_win32_gcc=yes
2600    ])
2601    AC_MSG_RESULT($have_win32_gcc)
2602    if test x$have_win32_gcc != xyes; then
2603       AC_MSG_ERROR([
2604*** Your compiler ($CC) does not produce Windows executables!
2605       ])
2606    fi
2607
2608    AC_MSG_CHECKING(Windows CE)
2609    have_wince=no
2610    AC_TRY_COMPILE([
2611#if !defined(_WIN32_WCE) && !defined(__MINGW32CE__)
2612#error This is not Windows CE
2613#endif
2614    ],[
2615    ],[
2616    have_wince=yes
2617       AC_MSG_ERROR([
2618*** Sorry, Windows CE is no longer supported.
2619       ])
2620    ])
2621    AC_MSG_RESULT($have_wince)
2622
2623    # This fixes Windows stack alignment with newer GCC
2624    CheckStackBoundary
2625}
2626
2627dnl Find the DirectX includes and libraries
2628CheckDIRECTX()
2629{
2630    AC_ARG_ENABLE(directx,
2631AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[default=yes]]]),
2632                  , enable_directx=yes)
2633    if test x$enable_directx = xyes; then
2634        AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
2635        AC_CHECK_HEADER(d3d11_1.h, have_d3d11=yes)
2636        AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
2637        AC_CHECK_HEADER(dsound.h, have_dsound=yes)
2638        AC_CHECK_HEADER(dinput.h, have_dinput=yes)
2639        AC_CHECK_HEADER(dxgi.h, have_dxgi=yes)
2640        AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes)
2641        AC_CHECK_HEADER(xinput.h, have_xinput=yes)
2642
2643        if test x$have_ddraw = xyes; then
2644            AC_DEFINE(HAVE_DDRAW_H, 1, [ ])
2645        fi
2646        if test x$have_dinput = xyes; then
2647            AC_DEFINE(HAVE_DINPUT_H, 1, [ ])
2648        fi
2649        if test x$have_dsound = xyes; then
2650            AC_DEFINE(HAVE_DSOUND_H, 1, [ ])
2651        fi
2652        if test x$have_dxgi = xyes; then
2653            AC_DEFINE(HAVE_DXGI_H, 1, [ ])
2654        fi
2655        if test x$have_xinput = xyes; then
2656            AC_DEFINE(HAVE_XINPUT_H, 1, [ ])
2657        fi
2658
2659        SUMMARY_video="${SUMMARY_video} directx"
2660        SUMMARY_audio="${SUMMARY_audio} directx"
2661
2662        # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers.
2663        # FIXME:  ...so force it off for now.
2664        case "$host" in
2665            *-*-cygwin*)
2666            have_dinput=false
2667            ;;
2668        esac
2669    fi
2670}
2671
2672dnl Check for the dlfcn.h interface for dynamically loading objects
2673CheckDLOPEN()
2674{
2675    AC_ARG_ENABLE(sdl-dlopen,
2676AC_HELP_STRING([--enable-sdl-dlopen], [use dlopen for shared object loading [[default=yes]]]),
2677                  , enable_sdl_dlopen=yes)
2678    if test x$enable_sdl_dlopen = xyes; then
2679        AC_MSG_CHECKING(for dlopen)
2680        have_dlopen=no
2681        AC_TRY_COMPILE([
2682         #include <dlfcn.h>
2683        ],[
2684         void *handle = dlopen("", RTLD_NOW);
2685         const char *loaderror = (char *) dlerror();
2686        ],[
2687        have_dlopen=yes
2688        ])
2689        AC_MSG_RESULT($have_dlopen)
2690
2691        if test x$have_dlopen = xyes; then
2692            AC_CHECK_LIB(c, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS",
2693               AC_CHECK_LIB(dl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl",
2694                  AC_CHECK_LIB(ltdl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lltdl")))
2695            AC_DEFINE(SDL_LOADSO_DLOPEN, 1, [ ])
2696            SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
2697            have_loadso=yes
2698        fi
2699    fi
2700}
2701
2702dnl Check for the usbhid(3) library on *BSD
2703CheckUSBHID()
2704{
2705    case "$host" in
2706        *-*-*bsd*)
2707            if test x$enable_joystick = xyes; then
2708                AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
2709                if test x$have_libusbhid = xyes; then
2710                    AC_CHECK_HEADER(usbhid.h, [USB_CFLAGS="-DHAVE_USBHID_H"])
2711                    AC_CHECK_HEADER(libusbhid.h, [USB_CFLAGS="-DHAVE_LIBUSBHID_H"])
2712                    USB_LIBS="$USB_LIBS -lusbhid"
2713                else
2714                    AC_CHECK_HEADER(usb.h, [USB_CFLAGS="-DHAVE_USB_H"])
2715                    AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
2716                    AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
2717                fi
2718
2719                save_CFLAGS="$CFLAGS"
2720                CFLAGS="$CFLAGS $USB_CFLAGS"
2721
2722                AC_MSG_CHECKING(for usbhid)
2723                have_usbhid=no
2724                AC_TRY_COMPILE([
2725                  #include <sys/types.h>
2726                  #if defined(HAVE_USB_H)
2727                  #include <usb.h>
2728                  #endif
2729                  #ifdef __DragonFly__
2730                  # include <bus/usb/usb.h>
2731                  # include <bus/usb/usbhid.h>
2732                  #else
2733                  # include <dev/usb/usb.h>
2734                  # include <dev/usb/usbhid.h>
2735                  #endif
2736                  #if defined(HAVE_USBHID_H)
2737                  #include <usbhid.h>
2738                  #elif defined(HAVE_LIBUSB_H)
2739                  #include <libusb.h>
2740                  #elif defined(HAVE_LIBUSBHID_H)
2741                  #include <libusbhid.h>
2742                  #endif
2743                ],[
2744                  struct report_desc *repdesc;
2745                  struct usb_ctl_report *repbuf;
2746                  hid_kind_t hidkind;
2747                ],[
2748                have_usbhid=yes
2749                ])
2750                AC_MSG_RESULT($have_usbhid)
2751
2752                if test x$have_usbhid = xyes; then
2753                    AC_MSG_CHECKING(for ucr_data member of usb_ctl_report)
2754                    have_usbhid_ucr_data=no
2755                    AC_TRY_COMPILE([
2756                      #include <sys/types.h>
2757                      #if defined(HAVE_USB_H)
2758                      #include <usb.h>
2759                      #endif
2760                      #ifdef __DragonFly__
2761                      # include <bus/usb/usb.h>
2762                      # include <bus/usb/usbhid.h>
2763                      #else
2764                      # include <dev/usb/usb.h>
2765                      # include <dev/usb/usbhid.h>
2766                      #endif
2767                      #if defined(HAVE_USBHID_H)
2768                      #include <usbhid.h>
2769                      #elif defined(HAVE_LIBUSB_H)
2770                      #include <libusb.h>
2771                      #elif defined(HAVE_LIBUSBHID_H)
2772                      #include <libusbhid.h>
2773                      #endif
2774                    ],[
2775                      struct usb_ctl_report buf;
2776                      if (buf.ucr_data) { }
2777                    ],[
2778                    have_usbhid_ucr_data=yes
2779                    ])
2780                    if test x$have_usbhid_ucr_data = xyes; then
2781                        USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
2782                    fi
2783                    AC_MSG_RESULT($have_usbhid_ucr_data)
2784
2785                    AC_MSG_CHECKING(for new usbhid API)
2786                    have_usbhid_new=no
2787                    AC_TRY_COMPILE([
2788                      #include <sys/types.h>
2789                      #if defined(HAVE_USB_H)
2790                      #include <usb.h>
2791                      #endif
2792                      #ifdef __DragonFly__
2793                      #include <bus/usb/usb.h>
2794                      #include <bus/usb/usbhid.h>
2795                      #else
2796                      #include <dev/usb/usb.h>
2797                      #include <dev/usb/usbhid.h>
2798                      #endif
2799                      #if defined(HAVE_USBHID_H)
2800                      #include <usbhid.h>
2801                      #elif defined(HAVE_LIBUSB_H)
2802                      #include <libusb.h>
2803                      #elif defined(HAVE_LIBUSBHID_H)
2804                      #include <libusbhid.h>
2805                      #endif
2806                    ],[
2807                      report_desc_t d;
2808                      hid_start_parse(d, 1, 1);
2809                    ],[
2810                    have_usbhid_new=yes
2811                    ])
2812                    if test x$have_usbhid_new = xyes; then
2813                        USB_CFLAGS="$USB_CFLAGS -DUSBHID_NEW"
2814                    fi
2815                    AC_MSG_RESULT($have_usbhid_new)
2816
2817                    AC_MSG_CHECKING(for struct joystick in machine/joystick.h)
2818                    have_machine_joystick=no
2819                    AC_TRY_COMPILE([
2820                      #include <machine/joystick.h>
2821                    ],[
2822                      struct joystick t;
2823                    ],[
2824                    have_machine_joystick=yes
2825                    ])
2826                    if test x$have_machine_joystick = xyes; then
2827                        AC_DEFINE(SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H, 1, [ ])
2828                    fi
2829                    AC_MSG_RESULT($have_machine_joystick)
2830
2831                    AC_DEFINE(SDL_JOYSTICK_USBHID, 1, [ ])
2832                    SOURCES="$SOURCES $srcdir/src/joystick/bsd/*.c"
2833                    EXTRA_CFLAGS="$EXTRA_CFLAGS $USB_CFLAGS"
2834                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS $USB_LIBS"
2835                    have_joystick=yes
2836                fi
2837                CFLAGS="$save_CFLAGS"
2838            fi
2839        ;;
2840    esac
2841}
2842
2843dnl Check for clock_gettime()
2844CheckClockGettime()
2845{
2846    AC_ARG_ENABLE(clock_gettime,
2847AC_HELP_STRING([--enable-clock_gettime], [use clock_gettime() instead of gettimeofday() on UNIX [[default=yes]]]),
2848                  , enable_clock_gettime=yes)
2849    if test x$enable_clock_gettime = xyes; then
2850        AC_CHECK_LIB(rt, clock_gettime, have_clock_gettime=yes)
2851        if test x$have_clock_gettime = xyes; then
2852            AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
2853            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lrt"
2854        else
2855            AC_CHECK_LIB(c, clock_gettime, have_clock_gettime=yes)
2856            if test x$have_clock_gettime = xyes; then
2857               AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
2858               EXTRA_LDFLAGS="$EXTRA_LDFLAGS"
2859            fi
2860        fi
2861    fi
2862}
2863
2864dnl Check for a valid linux/version.h
2865CheckLinuxVersion()
2866{
2867    AC_CHECK_HEADER(linux/version.h, have_linux_version_h=yes)
2868    if test x$have_linux_version_h = xyes; then
2869        EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_LINUX_VERSION_H"
2870    fi
2871}
2872
2873dnl Check if we want to use RPATH
2874CheckRPATH()
2875{
2876    AC_ARG_ENABLE(rpath,
2877AC_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [[default=yes]]]),
2878                  , enable_rpath=yes)
2879}
2880
2881dnl Do this on all platforms, before everything else (other things might want to override it).
2882CheckWarnAll
2883
2884dnl Set up the configuration based on the host platform!
2885case "$host" in
2886    *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*)
2887        case "$host" in
2888            *-raspberry-linux*)
2889                # Raspberry Pi
2890                ARCH=linux
2891                RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux"
2892                CFLAGS="$CFLAGS $RPI_CFLAGS"
2893                SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS"
2894                EXTRA_CFLAGS="$EXTRA_CFLAGS $RPI_CFLAGS"
2895                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L/opt/vc/lib -lbcm_host -ldl"
2896
2897                if test x$enable_video = xyes; then
2898                    SOURCES="$SOURCES $srcdir/src/video/raspberry/*.c"
2899                    # FIXME: confdefs? Not AC_DEFINE?
2900                    $as_echo "#define SDL_VIDEO_DRIVER_RPI 1" >>confdefs.h
2901                    SUMMARY_video="${SUMMARY_video} rpi"
2902                fi
2903                ;;
2904            *-*-androideabi*)
2905                # Android
2906                ARCH=android
2907                ANDROID_CFLAGS="-DGL_GLEXT_PROTOTYPES"
2908                CFLAGS="$CFLAGS $ANDROID_CFLAGS"
2909                SDL_CFLAGS="$SDL_CFLAGS $ANDROID_CFLAGS"
2910                EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS"
2911                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid"
2912
2913                if test x$enable_video = xyes; then
2914                    SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c"
2915                    # FIXME: confdefs? Not AC_DEFINE?
2916                    $as_echo "#define SDL_VIDEO_DRIVER_ANDROID 1" >>confdefs.h
2917                    SUMMARY_video="${SUMMARY_video} android"
2918                fi
2919                ;;
2920            *-*-linux*)         ARCH=linux ;;
2921            *-*-uclinux*)       ARCH=linux ;;
2922            *-*-kfreebsd*-gnu)  ARCH=kfreebsd-gnu ;;
2923            *-*-knetbsd*-gnu)   ARCH=knetbsd-gnu ;;
2924            *-*-kopenbsd*-gnu)  ARCH=kopenbsd-gnu ;;
2925            *-*-gnu*)           ARCH=gnu ;; # must be last of the gnu variants
2926            *-*-bsdi*)          ARCH=bsdi ;;
2927            *-*-freebsd*)       ARCH=freebsd ;;
2928            *-*-dragonfly*)     ARCH=freebsd ;;
2929            *-raspberry-netbsd*)
2930                # Raspberry Pi
2931                ARCH=netbsd
2932                RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux"
2933                CFLAGS="$CFLAGS $RPI_CFLAGS"
2934                SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS"
2935                EXTRA_CFLAGS="$EXTRA_CFLAGS $RPI_CFLAGS"
2936                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host -ldl"
2937
2938                if test x$enable_video = xyes; then
2939                    SOURCES="$SOURCES $srcdir/src/video/raspberry/*.c"
2940                    $as_echo "#define SDL_VIDEO_DRIVER_RPI 1" >>confdefs.h
2941                    SUMMARY_video="${SUMMARY_video} raspberry"
2942                fi
2943                ;;
2944            *-*-netbsd*)        ARCH=netbsd ;;
2945            *-*-openbsd*)       ARCH=openbsd ;;
2946            *-*-sysv5*)         ARCH=sysv5 ;;
2947            *-*-solaris*)       ARCH=solaris ;;
2948            *-*-hpux*)          ARCH=hpux ;;
2949            *-*-aix*)           ARCH=aix ;;
2950            *-*-minix*)         ARCH=minix ;;
2951        esac
2952        CheckVisibilityHidden
2953        CheckDeclarationAfterStatement
2954        CheckDummyVideo
2955        CheckDiskAudio
2956        CheckDummyAudio
2957        CheckDLOPEN
2958        CheckOSS
2959        CheckALSA
2960        CheckPulseAudio
2961        CheckARTSC
2962        CheckESD
2963        CheckNAS
2964        CheckSNDIO
2965        CheckX11
2966        CheckDirectFB
2967        CheckFusionSound
2968        CheckOpenGLX11
2969        CheckOpenGLESX11
2970        CheckMir
2971        CheckWayland
2972        CheckLibUDev
2973        CheckDBus
2974        CheckIME
2975        CheckIBus
2976        CheckFcitx
2977        case $ARCH in
2978          linux)
2979              CheckInputEvents
2980              CheckInputKD
2981          ;;
2982        esac
2983        CheckTslib
2984        CheckUSBHID
2985        CheckPTHREAD
2986        CheckClockGettime
2987        CheckLinuxVersion
2988        CheckRPATH
2989        CheckVivanteVideo
2990        # Set up files for the audio library
2991        if test x$enable_audio = xyes; then
2992          case $ARCH in
2993            sysv5|solaris|hpux)
2994                AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
2995                SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
2996                have_audio=yes
2997            ;;
2998            netbsd)  # Don't use this on OpenBSD, it's busted.
2999                AC_DEFINE(SDL_AUDIO_DRIVER_BSD, 1, [ ])
3000                SOURCES="$SOURCES $srcdir/src/audio/bsd/*.c"
3001                have_audio=yes
3002            ;;
3003            aix)
3004                AC_DEFINE(SDL_AUDIO_DRIVER_PAUDIO, 1, [ ])
3005                SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c"
3006                have_audio=yes
3007            ;;
3008            android)
3009                AC_DEFINE(SDL_AUDIO_DRIVER_ANDROID, 1, [ ])
3010                SOURCES="$SOURCES $srcdir/src/audio/android/*.c"
3011                SUMMARY_audio="${SUMMARY_audio} android"
3012                have_audio=yes
3013            ;;
3014          esac
3015        fi
3016        # Set up files for the joystick library
3017        if test x$enable_joystick = xyes; then
3018          case $ARCH in
3019            linux)
3020                AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
3021                SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
3022                have_joystick=yes
3023            ;;
3024            android)
3025                AC_DEFINE(SDL_JOYSTICK_ANDROID, 1, [ ])
3026                SOURCES="$SOURCES $srcdir/src/joystick/android/*.c"
3027                have_joystick=yes
3028            ;;
3029          esac
3030        fi
3031        # Set up files for the haptic library
3032        if test x$enable_haptic = xyes; then
3033           if test x$use_input_events = xyes; then
3034             case $ARCH in
3035               linux)
3036                   AC_DEFINE(SDL_HAPTIC_LINUX, 1, [ ])
3037                   SOURCES="$SOURCES $srcdir/src/haptic/linux/*.c"
3038                   have_haptic=yes
3039               ;;
3040             esac
3041           fi
3042        fi
3043        # Set up files for the power library
3044        if test x$enable_power = xyes; then
3045             case $ARCH in
3046               linux)
3047                   AC_DEFINE(SDL_POWER_LINUX, 1, [ ])
3048                   SOURCES="$SOURCES $srcdir/src/power/linux/*.c"
3049                   have_power=yes
3050               ;;
3051               android)
3052                   AC_DEFINE(SDL_POWER_ANDROID, 1, [ ])
3053                   SOURCES="$SOURCES $srcdir/src/power/android/*.c"
3054                   have_power=yes
3055               ;;
3056             esac
3057        fi
3058        # Set up files for the filesystem library
3059        if test x$enable_filesystem = xyes; then
3060             case $ARCH in
3061               android)
3062                   AC_DEFINE(SDL_FILESYSTEM_ANDROID, 1, [ ])
3063                   SOURCES="$SOURCES $srcdir/src/filesystem/android/*.c"
3064                   have_filesystem=yes
3065               ;;
3066               *)
3067                   AC_DEFINE(SDL_FILESYSTEM_UNIX, 1, [ ])
3068                   SOURCES="$SOURCES $srcdir/src/filesystem/unix/*.c"
3069                   have_filesystem=yes
3070               ;;
3071             esac
3072        fi
3073        # Set up files for the timer library
3074        if test x$enable_timers = xyes; then
3075            AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
3076            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
3077            have_timers=yes
3078        fi
3079        # Set up files for udev hotplugging support
3080        if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then
3081            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c"
3082        fi
3083        # Set up files for evdev input
3084        if test x$use_input_events = xyes; then
3085            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev.c"
3086        fi
3087        ;;
3088    *-*-cygwin* | *-*-mingw32*)
3089        ARCH=win32
3090        if test "$build" != "$host"; then # cross-compiling
3091            # Default cross-compile location
3092            ac_default_prefix=/usr/local/cross-tools/$host
3093        else
3094            # Look for the location of the tools and install there
3095            if test "$BUILD_PREFIX" != ""; then
3096                ac_default_prefix=$BUILD_PREFIX
3097            fi
3098        fi
3099        CheckDummyVideo
3100        CheckDiskAudio
3101        CheckDummyAudio
3102        CheckWINDOWS
3103        CheckWINDOWSGL
3104        CheckWINDOWSGLES
3105        CheckDIRECTX
3106
3107        # Set up the core platform files
3108        SOURCES="$SOURCES $srcdir/src/core/windows/*.c"
3109
3110        # Set up files for the video library
3111        if test x$enable_video = xyes; then
3112            AC_DEFINE(SDL_VIDEO_DRIVER_WINDOWS, 1, [ ])
3113            SOURCES="$SOURCES $srcdir/src/video/windows/*.c"
3114            have_video=yes
3115            AC_ARG_ENABLE(render-d3d,
3116AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[default=yes]]]),
3117                                , enable_render_d3d=yes)
3118            if test x$enable_render_d3d = xyes -a x$have_d3d = xyes; then
3119                AC_DEFINE(SDL_VIDEO_RENDER_D3D, 1, [ ])
3120            fi
3121            if test x$enable_render_d3d = xyes -a x$have_d3d11 = xyes; then
3122                AC_DEFINE(SDL_VIDEO_RENDER_D3D11, 1, [ ])
3123            fi
3124        fi
3125        # Set up files for the audio library
3126        if test x$enable_audio = xyes; then
3127            AC_DEFINE(SDL_AUDIO_DRIVER_WINMM, 1, [ ])
3128            SOURCES="$SOURCES $srcdir/src/audio/winmm/*.c"
3129            if test x$have_dsound = xyes; then
3130                AC_DEFINE(SDL_AUDIO_DRIVER_DSOUND, 1, [ ])
3131                SOURCES="$SOURCES $srcdir/src/audio/directsound/*.c"
3132            fi
3133            if test x$have_xaudio2 = xyes; then
3134                AC_DEFINE(SDL_AUDIO_DRIVER_XAUDIO2, 1, [ ])
3135                SOURCES="$SOURCES $srcdir/src/audio/xaudio2/*.c"
3136            fi
3137            have_audio=yes
3138        fi
3139        # Set up files for the joystick library
3140        if test x$enable_joystick = xyes; then
3141            if test x$have_dinput = xyes -o x$have_xinput = xyes; then
3142                if test x$have_xinput = xyes; then
3143                    AC_DEFINE(SDL_JOYSTICK_XINPUT, 1, [ ])
3144                fi
3145                if test x$have_dinput = xyes; then
3146                    AC_DEFINE(SDL_JOYSTICK_DINPUT, 1, [ ])
3147                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldinput8 -ldxguid -ldxerr8"
3148                fi
3149            else
3150                AC_DEFINE(SDL_JOYSTICK_WINMM, 1, [ ])
3151            fi
3152            SOURCES="$SOURCES $srcdir/src/joystick/windows/*.c"
3153            have_joystick=yes
3154        fi
3155        if test x$enable_haptic = xyes; then
3156            if test x$have_dinput = xyes -o x$have_xinput = xyes; then
3157                if test x$have_xinput = xyes; then
3158                    AC_DEFINE(SDL_HAPTIC_XINPUT, 1, [ ])
3159                fi
3160                if test x$have_dinput = xyes; then
3161                    AC_DEFINE(SDL_HAPTIC_DINPUT, 1, [ ])
3162                fi
3163                SOURCES="$SOURCES $srcdir/src/haptic/windows/*.c"
3164                have_haptic=yes
3165            fi
3166        fi
3167        if test x$enable_power = xyes; then
3168            AC_DEFINE(SDL_POWER_WINDOWS, 1, [ ])
3169            SOURCES="$SOURCES $srcdir/src/power/windows/SDL_syspower.c"
3170            have_power=yes
3171        fi
3172        if test x$enable_filesystem = xyes; then
3173            AC_DEFINE(SDL_FILESYSTEM_WINDOWS, 1, [ ])
3174            SOURCES="$SOURCES $srcdir/src/filesystem/windows/SDL_sysfilesystem.c"
3175            have_filesystem=yes
3176        fi
3177        # Set up files for the thread library
3178        if test x$enable_threads = xyes; then
3179            AC_DEFINE(SDL_THREAD_WINDOWS, 1, [ ])
3180            SOURCES="$SOURCES $srcdir/src/thread/windows/*.c"
3181            SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
3182            have_threads=yes
3183        fi
3184        # Set up files for the timer library
3185        if test x$enable_timers = xyes; then
3186            AC_DEFINE(SDL_TIMER_WINDOWS, 1, [ ])
3187            SOURCES="$SOURCES $srcdir/src/timer/windows/*.c"
3188            have_timers=yes
3189        fi
3190        # Set up files for the shared object loading library
3191        if test x$enable_loadso = xyes; then
3192            AC_DEFINE(SDL_LOADSO_WINDOWS, 1, [ ])
3193            SOURCES="$SOURCES $srcdir/src/loadso/windows/*.c"
3194            have_loadso=yes
3195        fi
3196        # Set up the system libraries we need
3197        if test -f /lib/w32api/libuuid.a; then
3198            LIBUUID=/lib/w32api/libuuid.a
3199        else
3200            LIBUUID=-luuid
3201        fi
3202        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion $LIBUUID -static-libgcc"
3203        # The Windows platform requires special setup
3204        VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
3205        SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
3206        SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
3207        SDL_LIBS="-lSDL2main $SDL_LIBS -mwindows"
3208
3209        # Check to see if this is a mingw or cygwin build
3210        have_mingw32=
3211        AC_CHECK_LIB(mingw32, main, [have_mingw32=yes])
3212        if test x$have_mingw32 = xyes; then
3213            SDL_LIBS="-lmingw32 $SDL_LIBS"
3214        else
3215            SDL_LIBS="-lcygwin $SDL_LIBS"
3216        fi
3217        ;;
3218
3219    dnl BeOS support removed after SDL 2.0.1. Haiku still works.  --ryan.
3220    *-*-beos*)
3221        AC_MSG_ERROR([
3222*** BeOS support has been removed as of SDL 2.0.2.
3223        ])
3224        ;;
3225
3226    *-*-haiku*)
3227        ARCH=haiku
3228        ac_default_prefix=/boot/system
3229        CheckDummyVideo
3230        CheckDiskAudio
3231        CheckDummyAudio
3232        CheckHaikuVideo
3233        CheckHaikuGL
3234        CheckPTHREAD
3235
3236        # Set up files for the audio library
3237        if test x$enable_audio = xyes; then
3238            AC_DEFINE(SDL_AUDIO_DRIVER_HAIKU, 1, [ ])
3239            SOURCES="$SOURCES $srcdir/src/audio/haiku/*.cc"
3240            have_audio=yes
3241        fi
3242        # Set up files for the joystick library
3243        if test x$enable_joystick = xyes; then
3244            AC_DEFINE(SDL_JOYSTICK_HAIKU, 1, [ ])
3245            SOURCES="$SOURCES $srcdir/src/joystick/haiku/*.cc"
3246            have_joystick=yes
3247        fi
3248        # Set up files for the timer library
3249        if test x$enable_timers = xyes; then
3250            AC_DEFINE(SDL_TIMER_HAIKU, 1, [ ])
3251            SOURCES="$SOURCES $srcdir/src/timer/haiku/*.c"
3252            have_timers=yes
3253        fi
3254        # Set up files for the shared object loading library
3255        if test x$enable_loadso = xyes; then
3256            AC_DEFINE(SDL_LOADSO_HAIKU, 1, [ ])
3257            SOURCES="$SOURCES $srcdir/src/loadso/haiku/*.c"
3258            have_loadso=yes
3259        fi
3260        # Set up files for the system power library
3261        if test x$enable_power = xyes; then
3262            AC_DEFINE(SDL_POWER_HAIKU, 1, [ ])
3263            SOURCES="$SOURCES $srcdir/src/power/haiku/*.c"
3264            have_power=yes
3265        fi
3266        # Set up files for the system filesystem library
3267        if test x$enable_filesystem = xyes; then
3268            AC_DEFINE(SDL_FILESYSTEM_HAIKU, 1, [ ])
3269            SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc"
3270            have_filesystem=yes
3271        fi
3272        # The Haiku platform requires special setup.
3273        SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES"
3274        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
3275        ;;
3276    arm*-apple-darwin*)
3277        # iOS - We are not writing anything to confdefs.h because you have to replace
3278        # SDL_config.h for SDL_config_iphoneos.h anyway
3279        ARCH=ios
3280
3281        CheckVisibilityHidden
3282        CheckDeclarationAfterStatement
3283        CheckDummyVideo
3284        CheckDiskAudio
3285        CheckDummyAudio
3286        CheckDLOPEN
3287        CheckCOCOA
3288        CheckPTHREAD
3289
3290
3291        # Set up files for the audio library
3292        if test x$enable_audio = xyes; then
3293            SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.m"
3294            SUMMARY_audio="${SUMMARY_audio} coreaudio"
3295            have_audio=yes
3296        fi
3297        # Set up files for the joystick library
3298        if test x$enable_joystick = xyes; then
3299            SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
3300            have_joystick=yes
3301        fi
3302        # Set up files for the haptic library
3303        #if test x$enable_haptic = xyes; then
3304        #    SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
3305        #    have_haptic=yes
3306        #    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
3307        #fi
3308        # Set up files for the power library
3309        if test x$enable_power = xyes; then
3310            SOURCES="$SOURCES $srcdir/src/power/uikit/*.m"
3311            have_power=yes
3312        fi
3313        # Set up files for the filesystem library
3314        if test x$enable_filesystem = xyes; then
3315            SOURCES="$SOURCES $srcdir/src/filesystem/cocoa/*.m"
3316            have_filesystem=yes
3317        fi
3318        # Set up files for the timer library
3319        if test x$enable_timers = xyes; then
3320            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
3321            have_timers=yes
3322        fi
3323        # Set up additional files for the file library
3324        if test x$enable_file = xyes; then
3325            SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
3326        fi
3327        # The iOS platform requires special setup.
3328        SOURCES="$SOURCES $srcdir/src/video/uikit/*.m"
3329        EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
3330        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm -liconv -lobjc"
3331        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Foundation"
3332        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,UIKit"
3333        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGLES"
3334        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore"
3335        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio"
3336        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox"
3337        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreGraphics"
3338        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreMotion"
3339        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,GameController"
3340        ;;
3341    *-*-darwin* )
3342        # This could be either full "Mac OS X", or plain "Darwin" which is
3343        # just the OS X kernel sans upper layers like Carbon and Cocoa.
3344        # Next line is broken, and a few files below require Mac OS X (full)
3345        ARCH=macosx
3346
3347        # Mac OS X builds with both the Carbon and OSX APIs at the moment
3348        EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_CARBON"
3349        EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"
3350
3351        CheckVisibilityHidden
3352        CheckDeclarationAfterStatement
3353        CheckDummyVideo
3354        CheckDiskAudio
3355        CheckDummyAudio
3356        CheckDLOPEN
3357        CheckCOCOA
3358        CheckX11
3359        CheckMacGL
3360        CheckOpenGLX11
3361        CheckPTHREAD
3362
3363        # Set up files for the audio library
3364        if test x$enable_audio = xyes; then
3365            AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
3366            SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.m"
3367            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox"
3368            SUMMARY_audio="${SUMMARY_audio} coreaudio"
3369            have_audio=yes
3370        fi
3371        # Set up files for the joystick library
3372        if test x$enable_joystick = xyes; then
3373            AC_DEFINE(SDL_JOYSTICK_IOKIT, 1, [ ])
3374            SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
3375            have_joystick=yes
3376        fi
3377        # Set up files for the haptic library
3378        if test x$enable_haptic = xyes; then
3379            AC_DEFINE(SDL_HAPTIC_IOKIT, 1, [ ])
3380            SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
3381            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
3382            have_haptic=yes
3383        fi
3384        # Set up files for the power library
3385        if test x$enable_power = xyes; then
3386            AC_DEFINE(SDL_POWER_MACOSX, 1, [ ])
3387            SOURCES="$SOURCES $srcdir/src/power/macosx/*.c"
3388            have_power=yes
3389        fi
3390        # Set up files for the filesystem library
3391        if test x$enable_filesystem = xyes; then
3392            AC_DEFINE(SDL_FILESYSTEM_COCOA, 1, [ ])
3393            SOURCES="$SOURCES $srcdir/src/filesystem/cocoa/*.m"
3394            have_filesystem=yes
3395        fi
3396        # Set up files for the timer library
3397        if test x$enable_timers = xyes; then
3398            AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
3399            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
3400            have_timers=yes
3401        fi
3402        # Set up additional files for the file library
3403        if test x$enable_file = xyes; then
3404            SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
3405        fi
3406        # The Mac OS X platform requires special setup.
3407        EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
3408        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lobjc"
3409        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreVideo"
3410        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
3411        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
3412        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
3413        ;;
3414    *-nacl|*-pnacl)
3415        ARCH=nacl
3416        CheckNativeClient
3417        CheckDummyAudio
3418        CheckDummyVideo
3419        CheckInputEvents
3420        CheckPTHREAD
3421
3422        # Set up files for the timer library
3423        if test x$enable_timers = xyes; then
3424            AC_DEFINE(SDL_TIMER_UNIX)
3425            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
3426            have_timers=yes
3427        fi
3428
3429        if test x$enable_filesystem = xyes; then
3430            AC_DEFINE(SDL_FILESYSTEM_NACL, 1, [ ])
3431            SOURCES="$SOURCES $srcdir/src/filesystem/nacl/*.c"
3432            have_filesystem=yes
3433        fi
3434        ;;
3435    *-*-emscripten* )
3436        if test x$enable_video = xyes; then
3437            AC_DEFINE(SDL_VIDEO_DRIVER_EMSCRIPTEN, 1, [ ])
3438            SOURCES="$SOURCES $srcdir/src/video/emscripten/*.c"
3439            have_video=yes
3440            SUMMARY_video="${SUMMARY_video} emscripten"
3441        fi
3442
3443        if test x$enable_audio = xyes; then
3444            AC_DEFINE(SDL_AUDIO_DRIVER_EMSCRIPTEN, 1, [ ])
3445            SOURCES="$SOURCES $srcdir/src/audio/emscripten/*.c"
3446            have_audio=yes
3447            SUMMARY_audio="${SUMMARY_audio} emscripten"
3448        fi
3449
3450        CheckVisibilityHidden
3451        CheckDeclarationAfterStatement
3452        CheckDummyVideo
3453        CheckDiskAudio
3454        CheckDummyAudio
3455        CheckDLOPEN
3456        CheckClockGettime
3457        CheckEmscriptenGLES
3458
3459         # Set up files for the power library
3460        if test x$enable_power = xyes; then
3461            AC_DEFINE(SDL_POWER_EMSCRIPTEN, 1, [ ])
3462            SOURCES="$SOURCES $srcdir/src/power/emscripten/*.c"
3463            have_power=yes
3464        fi
3465
3466        # Set up files for the power library
3467        if test x$enable_joystick = xyes; then
3468            AC_DEFINE(SDL_JOYSTICK_EMSCRIPTEN, 1, [ ])
3469            SOURCES="$SOURCES $srcdir/src/joystick/emscripten/*.c"
3470            have_joystick=yes
3471        fi
3472
3473        # Set up files for the filesystem library
3474        if test x$enable_filesystem = xyes; then
3475            AC_DEFINE(SDL_FILESYSTEM_EMSCRIPTEN, 1, [ ])
3476            SOURCES="$SOURCES $srcdir/src/filesystem/emscripten/*.c"
3477            have_filesystem=yes
3478        fi
3479        # Set up files for the timer library
3480        if test x$enable_timers = xyes; then
3481            AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
3482            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
3483            have_timers=yes
3484        fi
3485        ;;
3486    *)
3487        AC_MSG_ERROR([
3488*** Unsupported host:  Please add to configure.in
3489        ])
3490        ;;
3491esac
3492
3493# Verify that we have all the platform specific files we need
3494
3495if test x$have_joystick != xyes; then
3496    if test x$enable_joystick = xyes; then
3497        AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
3498    fi
3499    SOURCES="$SOURCES $srcdir/src/joystick/dummy/*.c"
3500fi
3501if test x$have_haptic != xyes; then
3502    if test x$enable_haptic = xyes; then
3503        AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
3504    fi
3505    SOURCES="$SOURCES $srcdir/src/haptic/dummy/*.c"
3506fi
3507if test x$have_threads != xyes; then
3508    if test x$enable_threads = xyes; then
3509        AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
3510    fi
3511    SOURCES="$SOURCES $srcdir/src/thread/generic/*.c"
3512fi
3513if test x$have_timers != xyes; then
3514    if test x$enable_timers = xyes; then
3515        AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
3516    fi
3517    SOURCES="$SOURCES $srcdir/src/timer/dummy/*.c"
3518fi
3519if test x$have_filesystem != xyes; then
3520    if test x$enable_filesystem = xyes; then
3521        AC_DEFINE(SDL_FILESYSTEM_DISABLED, 1, [ ])
3522    fi
3523    SOURCES="$SOURCES $srcdir/src/filesystem/dummy/*.c"
3524fi
3525if test x$have_loadso != xyes; then
3526    if test x$enable_loadso = xyes; then
3527        AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
3528    fi
3529    SOURCES="$SOURCES $srcdir/src/loadso/dummy/*.c"
3530fi
3531if test x$SDLMAIN_SOURCES = x; then
3532    SDLMAIN_SOURCES="$srcdir/src/main/dummy/*.c"
3533fi
3534SDLTEST_SOURCES="$srcdir/src/test/*.c"
3535
3536if test x$video_wayland = xyes; then
3537    WAYLAND_CORE_PROTOCOL_SOURCE='$(gen)/wayland-protocol.c'
3538    WAYLAND_CORE_PROTOCOL_HEADER='$(gen)/wayland-client-protocol.h'
3539    WAYLAND_PROTOCOLS_UNSTABLE_SOURCES=`echo $WAYLAND_PROTOCOLS_UNSTABLE |\
3540        sed 's,[[^ ]]\+,\\$(gen)/&-protocol.c,g'`
3541    WAYLAND_PROTOCOLS_UNSTABLE_HEADERS=`echo $WAYLAND_PROTOCOLS_UNSTABLE |\
3542        sed 's,[[^ ]]\+,\\$(gen)/&-client-protocol.h,g'`
3543    GEN_SOURCES="$GEN_SOURCES $WAYLAND_CORE_PROTOCOL_SOURCE $WAYLAND_PROTOCOLS_UNSTABLE_SOURCES"
3544    GEN_HEADERS="$GEN_HEADERS $WAYLAND_CORE_PROTOCOL_HEADER $WAYLAND_PROTOCOLS_UNSTABLE_HEADERS"
3545
3546    WAYLAND_CORE_PROTOCOL_SOURCE_DEPENDS="
3547$WAYLAND_CORE_PROTOCOL_SOURCE: $WAYLAND_CORE_PROTOCOL_DIR/wayland.xml
3548	\$(SHELL) \$(auxdir)/mkinstalldirs \$(gen)
3549	\$(RUN_CMD_GEN)\$(WAYLAND_SCANNER) code \$< \$@"
3550
3551    WAYLAND_CORE_PROTOCOL_HEADER_DEPENDS="
3552$WAYLAND_CORE_PROTOCOL_HEADER: $WAYLAND_CORE_PROTOCOL_DIR/wayland.xml
3553	\$(SHELL) \$(auxdir)/mkinstalldirs \$(gen)
3554	\$(RUN_CMD_GEN)\$(WAYLAND_SCANNER) client-header \$< \$@"
3555
3556    WAYLAND_CORE_PROTOCOL_OBJECT="
3557\$(objects)/`echo $WAYLAND_CORE_PROTOCOL_SOURCE | sed 's/\$(gen)\/\(.*\).c$/\1.lo/'`: $WAYLAND_CORE_PROTOCOL_SOURCE
3558	\$(RUN_CMD_CC)\$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \$< -o \$@"
3559
3560    WAYLAND_PROTOCOLS_CLIENT_HEADER_UNSTABLE_DEPENDS=`for p in $WAYLAND_PROTOCOLS_UNSTABLE;\
3561        do echo ; echo \$p | sed\
3562        "s,^\\([[a-z\\-]]\\+\\)-unstable-\\(v[[0-9]]\+\\)\$,\\$(gen)/&-client-protocol.h: $WAYLAND_PROTOCOLS_DIR/unstable/\1/&.xml\\\\
3563	\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(gen)\\\\
3564	\\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) client-header \\$< \\$@," ; done`
3565
3566    WAYLAND_PROTOCOLS_CODE_UNSTABLE_DEPENDS=`for p in $WAYLAND_PROTOCOLS_UNSTABLE;\
3567        do echo ; echo \$p | sed\
3568        "s,^\\([[a-z\\-]]\\+\\)-unstable-\\(v[[0-9]]\+\\)\$,\\$(gen)/&-protocol.c: $WAYLAND_PROTOCOLS_DIR/unstable/\1/&.xml\\\\
3569	\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(gen)\\\\
3570	\\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) code \\$< \\$@," ; done`
3571
3572    WAYLAND_PROTOCOLS_OBJECTS_UNSTABLE=`for p in $WAYLAND_PROTOCOLS_UNSTABLE;\
3573        do echo ; echo \$p | sed\
3574        "s,^\\([[a-z\\-]]\\+\\)-unstable-\\(v[[0-9]]\+\\)\$,\\\$(objects)/&-protocol.lo: \\$(gen)/&-protocol.c \\$(gen)/&-client-protocol.h\\\\
3575	\\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@," ; done`
3576
3577    WAYLAND_PROTOCOLS_DEPENDS="
3578$WAYLAND_CORE_PROTOCOL_SOURCE_DEPENDS
3579$WAYLAND_CORE_PROTOCOL_HEADER_DEPENDS
3580$WAYLAND_CORE_PROTOCOL_OBJECT
3581$WAYLAND_PROTOCOLS_CLIENT_HEADER_UNSTABLE_DEPENDS
3582$WAYLAND_PROTOCOLS_CODE_UNSTABLE_DEPENDS
3583$WAYLAND_PROTOCOLS_OBJECTS_UNSTABLE
3584"
3585fi
3586
3587OBJECTS=`echo $SOURCES`
3588DEPENDS=`echo $SOURCES | tr ' ' '\n'`
3589for EXT in asm cc m c S; do
3590    OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'`
3591    DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\
3592\\$(objects)/\\2.lo: \\1/\\2.$EXT\\\\
3593	\\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
3594done
3595
3596GEN_OBJECTS=`echo "$GEN_SOURCES" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
3597
3598VERSION_OBJECTS=`echo $VERSION_SOURCES`
3599VERSION_DEPENDS=`echo $VERSION_SOURCES`
3600VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.o,g'`
3601VERSION_DEPENDS=`echo "$VERSION_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.rc,\\\\
3602\\$(objects)/\\2.o: \\1/\\2.rc\\\\
3603	\\$(WINDRES) \\$< \\$@,g"`
3604
3605SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
3606SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
3607SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
3608SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
3609\\$(objects)/\\2.o: \\1/\\2.c\\\\
3610	\\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
3611
3612SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES`
3613SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES`
3614SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
3615SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
3616\\$(objects)/\\2.o: \\1/\\2.c\\\\
3617	\\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
3618
3619# Set runtime shared library paths as needed
3620
3621if test "x$enable_rpath" = "xyes"; then
3622  if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = linux -o $ARCH = netbsd; then
3623    SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
3624
3625    AC_MSG_CHECKING(for linker option --enable-new-dtags)
3626    have_enable_new_dtags=no
3627    save_LDFLAGS="$LDFLAGS"
3628    LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags"
3629    AC_TRY_LINK([
3630    ],[
3631    ],[
3632    have_enable_new_dtags=yes
3633    SDL_RLD_FLAGS="$SDL_RLD_FLAGS -Wl,--enable-new-dtags"
3634    ])
3635    LDFLAGS="$save_LDFLAGS"
3636    AC_MSG_RESULT($have_enable_new_dtags)
3637  fi
3638  if test $ARCH = solaris; then
3639    SDL_RLD_FLAGS="-R\${libdir}"
3640  fi
3641else
3642  SDL_RLD_FLAGS=""
3643fi
3644
3645SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
3646
3647dnl Expand the cflags and libraries needed by apps using SDL
3648AC_SUBST(SDL_CFLAGS)
3649AC_SUBST(SDL_LIBS)
3650AC_SUBST(SDL_STATIC_LIBS)
3651AC_SUBST(SDL_RLD_FLAGS)
3652if test x$enable_shared = xyes; then
3653    ENABLE_SHARED_TRUE=
3654    ENABLE_SHARED_FALSE="#"
3655else
3656    ENABLE_SHARED_TRUE="#"
3657    ENABLE_SHARED_FALSE=
3658fi
3659if test x$enable_static = xyes; then
3660    ENABLE_STATIC_TRUE=
3661    ENABLE_STATIC_FALSE="#"
3662else
3663    ENABLE_STATIC_TRUE="#"
3664    ENABLE_STATIC_FALSE=
3665fi
3666AC_SUBST(ENABLE_SHARED_TRUE)
3667AC_SUBST(ENABLE_SHARED_FALSE)
3668AC_SUBST(ENABLE_STATIC_TRUE)
3669AC_SUBST(ENABLE_STATIC_FALSE)
3670
3671dnl Expand the sources and objects needed to build the library
3672AC_SUBST(ac_aux_dir)
3673AC_SUBST(INCLUDE)
3674AC_SUBST(OBJECTS)
3675AC_SUBST(GEN_HEADERS)
3676AC_SUBST(GEN_OBJECTS)
3677AC_SUBST(VERSION_OBJECTS)
3678AC_SUBST(SDLMAIN_OBJECTS)
3679AC_SUBST(SDLTEST_OBJECTS)
3680AC_SUBST(BUILD_CFLAGS)
3681AC_SUBST(EXTRA_CFLAGS)
3682AC_SUBST(BUILD_LDFLAGS)
3683AC_SUBST(EXTRA_LDFLAGS)
3684AC_SUBST(WINDRES)
3685AC_SUBST(WAYLAND_SCANNER)
3686
3687cat >Makefile.rules <<__EOF__
3688
3689# Build rules for objects
3690-include \$(OBJECTS:.lo=.d)
3691
3692# Special dependency for SDL.c, since it depends on SDL_revision.h
3693$srcdir/src/SDL.c: update-revision
3694$DEPENDS
3695$VERSION_DEPENDS
3696$SDLMAIN_DEPENDS
3697$SDLTEST_DEPENDS
3698$WAYLAND_PROTOCOLS_DEPENDS
3699__EOF__
3700
3701AC_CONFIG_FILES([
3702    Makefile:Makefile.in:Makefile.rules sdl2-config sdl2-config.cmake SDL2.spec sdl2.pc
3703])
3704AC_CONFIG_COMMANDS([sdl2_config],[chmod a+x sdl2-config])
3705
3706SUMMARY="SDL2 Configure Summary:\n"
3707if test x$enable_shared = xyes; then
3708    SUMMARY="${SUMMARY}Building Shared Libraries\n"
3709fi
3710if test x$enable_static = xyes; then
3711    SUMMARY="${SUMMARY}Building Static Libraries\n"
3712fi
3713SUMMARY="${SUMMARY}Enabled modules :${SUMMARY_modules}\n"
3714SUMMARY="${SUMMARY}Assembly Math   :${SUMMARY_math}\n"
3715SUMMARY="${SUMMARY}Audio drivers   :${SUMMARY_audio}\n"
3716SUMMARY="${SUMMARY}Video drivers   :${SUMMARY_video}\n"
3717if test x$have_x = xyes; then
3718    SUMMARY="${SUMMARY}X11 libraries   :${SUMMARY_video_x11}\n"
3719fi
3720SUMMARY="${SUMMARY}Input drivers   :${SUMMARY_input}\n"
3721if test x$enable_libudev = xyes; then
3722    SUMMARY="${SUMMARY}Using libudev   : YES\n"
3723else
3724    SUMMARY="${SUMMARY}Using libudev   : NO\n"
3725fi
3726if test x$have_dbus_dbus_h_hdr = xyes; then
3727    SUMMARY="${SUMMARY}Using dbus      : YES\n"
3728else
3729    SUMMARY="${SUMMARY}Using dbus      : NO\n"
3730fi
3731if test x$enable_ime = xyes; then
3732    SUMMARY="${SUMMARY}Using ime       : YES\n"
3733else
3734    SUMMARY="${SUMMARY}Using ime       : NO\n"
3735fi
3736if test x$have_ibus_ibus_h_hdr = xyes; then
3737    SUMMARY="${SUMMARY}Using ibus      : YES\n"
3738else
3739    SUMMARY="${SUMMARY}Using ibus      : NO\n"
3740fi
3741if test x$have_fcitx_frontend_h_hdr = xyes; then
3742    SUMMARY="${SUMMARY}Using fcitx     : YES\n"
3743else
3744    SUMMARY="${SUMMARY}Using fcitx     : NO\n"
3745fi
3746AC_CONFIG_COMMANDS([summary], [echo -en "$SUMMARY"], [SUMMARY="$SUMMARY"])
3747
3748AC_OUTPUT
3749