configure.in
author Ryan C. Gordon <icculus@icculus.org>
Sun, 07 Jul 2013 02:04:19 -0400
changeset 7366 38c6f26bb010
parent 7307 5d6b7b9432d3
child 7367 d6eabafa8776
permissions -rw-r--r--
Disk audio target was using this->hidden->mixlen before we set it.
     1 dnl Process this file with autoconf to produce a configure script.
     2 AC_INIT(README.txt)
     3 AC_CONFIG_HEADER(include/SDL_config.h)
     4 AC_CONFIG_AUX_DIR(build-scripts)
     5 AC_CONFIG_MACRO_DIR([acinclude])
     6 
     7 dnl Save the CFLAGS to see whether they were passed in or generated
     8 orig_CFLAGS="$CFLAGS"
     9 
    10 dnl 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 #
    21 SDL_MAJOR_VERSION=2
    22 SDL_MINOR_VERSION=0
    23 SDL_MICRO_VERSION=0
    24 SDL_INTERFACE_AGE=0
    25 SDL_BINARY_AGE=0
    26 SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
    27 
    28 AC_SUBST(SDL_MAJOR_VERSION)
    29 AC_SUBST(SDL_MINOR_VERSION)
    30 AC_SUBST(SDL_MICRO_VERSION)
    31 AC_SUBST(SDL_INTERFACE_AGE)
    32 AC_SUBST(SDL_BINARY_AGE)
    33 AC_SUBST(SDL_VERSION)
    34 
    35 # libtool versioning
    36 LT_INIT([win32-dll])
    37 
    38 LT_RELEASE=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION
    39 LT_CURRENT=`expr $SDL_MICRO_VERSION - $SDL_INTERFACE_AGE`
    40 LT_REVISION=$SDL_INTERFACE_AGE
    41 LT_AGE=`expr $SDL_BINARY_AGE - $SDL_INTERFACE_AGE`
    42 m4_pattern_allow([^LT_])
    43 
    44 AC_SUBST(LT_RELEASE)
    45 AC_SUBST(LT_CURRENT)
    46 AC_SUBST(LT_REVISION)
    47 AC_SUBST(LT_AGE)
    48 
    49 dnl Detect the canonical build and host environments
    50 dnl AC_CANONICAL_HOST
    51 
    52 dnl Check for tools
    53 AC_PROG_LIBTOOL
    54 AC_PROG_CC
    55 AC_PROG_CXX
    56 AC_PROG_INSTALL
    57 AC_PROG_MAKE_SET
    58 AC_CHECK_TOOL(WINDRES, [windres], [:])
    59 
    60 dnl Set up the compiler and linker flags
    61 INCLUDE="-I$srcdir/include"
    62 if test x$srcdir != x.; then
    63     INCLUDE="-Iinclude $INCLUDE"
    64 elif test -d .hg; then
    65     AC_MSG_ERROR([
    66 *** When building from Mercurial you should configure and build in a
    67     separate directory so you don't clobber SDL_config.h, SDL_revision.h
    68 ])
    69 fi
    70 case "$host" in
    71     *-*-cygwin*)
    72         # We build SDL on cygwin without the UNIX emulation layer
    73         BASE_CFLAGS="-I/usr/include/mingw -mno-cygwin"
    74         BASE_LDFLAGS="-mno-cygwin"
    75         ;;
    76     *)
    77         BASE_CFLAGS=""
    78         BASE_LDFLAGS=""
    79         ;;
    80 esac
    81 # Uncomment the following line if you want to force SDL and applications
    82 # built with it to be compiled for a particular architecture.
    83 #AX_GCC_ARCHFLAG([no], [BASE_CFLAGS="$BASE_CFLAGS $ax_cv_gcc_archflag]")
    84 BUILD_CFLAGS="$CFLAGS $CPPFLAGS -DUSING_GENERATED_CONFIG_H"
    85 # The default optimization for SDL is -O3 (Bug #31)
    86 if test "x$orig_CFLAGS" = x; then
    87     BUILD_CFLAGS=`echo $BUILD_CFLAGS | sed 's/-O2/-O3/'`
    88 fi
    89 EXTRA_CFLAGS="$INCLUDE $BASE_CFLAGS"
    90 BUILD_LDFLAGS="$LDFLAGS"
    91 EXTRA_LDFLAGS="$BASE_LDFLAGS"
    92 ## These are common directories to find software packages
    93 #for path in /usr/freeware /usr/pkg /usr/X11R6 /usr/local; do
    94 #    if test -d $path/include; then
    95 #        EXTRA_CFLAGS="$EXTRA_CFLAGS -I$path/include"
    96 #    fi
    97 #    if test -d $path/lib; then
    98 #        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L$path/lib"
    99 #    fi
   100 #done
   101 SDL_CFLAGS="$BASE_CFLAGS"
   102 SDL_LIBS="-lSDL2 $BASE_LDFLAGS"
   103 CPPFLAGS="$CPPFLAGS $EXTRA_CFLAGS"
   104 CFLAGS="$CFLAGS $EXTRA_CFLAGS"
   105 LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
   106 
   107 dnl set this to use on systems that use lib64 instead of lib
   108 base_libdir=`echo \${libdir} | sed 's/.*\/\(.*\)/\1/; q'`
   109 
   110 dnl Function to find a library in the compiler search path
   111 find_lib()
   112 {
   113     gcc_bin_path=[`$CC -print-search-dirs 2>/dev/null | fgrep programs: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
   114     gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
   115     env_lib_path=[`echo $LIBS $LDFLAGS $* | sed 's/-L[ ]*//g'`]
   116     if test "$cross_compiling" = yes; then
   117         host_lib_path=""
   118     else
   119         host_lib_path="/usr/$base_libdir /usr/local/$base_libdir"
   120     fi
   121     for path in $gcc_bin_path $gcc_lib_path $env_lib_path $host_lib_path; do
   122         lib=[`ls -- $path/$1 2>/dev/null | sed -e '/\.so\..*\./d' -e 's,.*/,,' | sort | tail -1`]
   123         if test x$lib != x; then
   124             echo $lib
   125             return
   126         fi
   127     done
   128 }
   129 
   130 dnl Check for compiler characteristics
   131 AC_C_CONST
   132 AC_C_INLINE
   133 AC_C_VOLATILE
   134 
   135 dnl See whether we want assertions for debugging/sanity checking SDL itself.
   136 AC_ARG_ENABLE(assertions,
   137 AC_HELP_STRING([--enable-assertions],
   138                [Enable internal sanity checks (auto/disabled/release/enabled/paranoid) [[default=auto]]]),
   139               , enable_assertions=auto)
   140 case "$enable_assertions" in
   141     auto) # Use optimization settings to determine assertion level
   142         ;;
   143     disabled)
   144         AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 0, [ ])
   145         ;;
   146     release)
   147         AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 1, [ ])
   148         ;;
   149     enabled)
   150         AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 2, [ ])
   151         ;;
   152     paranoid)
   153         AC_DEFINE(SDL_DEFAULT_ASSERT_LEVEL, 3, [ ])
   154         ;;
   155     *)
   156         AC_MSG_ERROR([*** unknown assertion level. stop.])
   157         ;;
   158 esac
   159 
   160 dnl See whether we can use gcc style dependency tracking
   161 AC_ARG_ENABLE(dependency-tracking,
   162 AC_HELP_STRING([--enable-dependency-tracking],
   163                [Use gcc -MMD -MT dependency tracking [[default=yes]]]),
   164               , enable_dependency_tracking=yes)
   165 if test x$enable_dependency_tracking = xyes; then
   166     have_gcc_mmd_mt=no
   167     AC_MSG_CHECKING(for GCC -MMD -MT option)
   168     AC_TRY_COMPILE([
   169     #if !defined(__GNUC__) || __GNUC__ < 3
   170     #error Dependency tracking requires GCC 3.0 or newer
   171     #endif
   172     ],[
   173     ],[
   174     have_gcc_mmd_mt=yes
   175     ])
   176     AC_MSG_RESULT($have_gcc_mmd_mt)
   177 
   178     if test x$have_gcc_mmd_mt = xyes; then
   179         DEPENDENCY_TRACKING_OPTIONS="-MMD -MT \$@"
   180     fi
   181 fi
   182 
   183 # Actually this doesn't work on OpenBSD and BeOS
   184 #AC_MSG_CHECKING(for linker option --no-undefined)
   185 #have_no_undefined=no
   186 #save_LDFLAGS="$LDFLAGS"
   187 #LDFLAGS="$LDFLAGS -Wl,--no-undefined"
   188 #AC_TRY_LINK([
   189 #],[
   190 #],[
   191 #have_no_undefined=yes
   192 #EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined"
   193 #])
   194 #LDFLAGS="$save_LDFLAGS"
   195 #AC_MSG_RESULT($have_no_undefined)
   196 
   197 dnl See whether we are allowed to use the system C library
   198 AC_ARG_ENABLE(libc,
   199 AC_HELP_STRING([--enable-libc], [Use the system C library [[default=yes]]]),
   200               , enable_libc=yes)
   201 if test x$enable_libc = xyes; then
   202     AC_DEFINE(HAVE_LIBC, 1, [ ])
   203 
   204     dnl Check for C library headers
   205     AC_HEADER_STDC
   206     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)
   207 
   208     dnl Check for typedefs, structures, etc.
   209     AC_TYPE_SIZE_T
   210 
   211     dnl Check for defines
   212     AC_CHECK_DEFINE(M_PI, math.h)
   213 
   214     dnl Checks for library functions.
   215     case "$host" in
   216     *-*-cygwin* | *-*-mingw32*)
   217         ;;
   218     *)
   219         AC_FUNC_ALLOCA
   220         ;;
   221     esac
   222 
   223     AC_FUNC_MEMCMP
   224     if test x$ac_cv_func_memcmp_working = xyes; then
   225         AC_DEFINE(HAVE_MEMCMP, 1, [ ])
   226     fi
   227     AC_FUNC_STRTOD
   228     if test x$ac_cv_func_strtod = xyes; then
   229         AC_DEFINE(HAVE_STRTOD, 1, [ ])
   230     fi
   231     AC_CHECK_FUNC(mprotect,
   232         AC_TRY_COMPILE([
   233           #include <sys/types.h>
   234           #include <sys/mman.h>
   235         ],[
   236         ],[
   237         AC_DEFINE(HAVE_MPROTECT, 1, [ ])
   238         ]),
   239     )
   240     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 sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname)
   241 
   242     AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
   243     AC_CHECK_FUNCS(atan atan2 ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt)
   244 
   245     AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
   246     AC_CHECK_FUNCS(iconv)
   247 
   248     AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE(HAVE_SA_SIGACTION)], ,[#include <signal.h>])
   249 fi
   250 
   251 AC_CHECK_SIZEOF(void*)
   252 
   253 dnl See whether we can use gcc atomic operations on this architecture
   254 AC_ARG_ENABLE(gcc-atomics,
   255 AC_HELP_STRING([--enable-gcc-atomics],
   256                [Use gcc builtin atomics [[default=yes]]]),
   257               , enable_gcc_atomics=yes)
   258 if test x$enable_gcc_atomics = xyes; then
   259     have_gcc_atomics=no
   260     AC_MSG_CHECKING(for GCC builtin atomic operations)
   261     AC_TRY_LINK([
   262     ],[
   263     int a;
   264     void *x, *y, *z;
   265     __sync_lock_test_and_set(&a, 4);
   266     __sync_lock_test_and_set(&x, y);
   267     __sync_fetch_and_add(&a, 1);
   268     __sync_bool_compare_and_swap(&a, 5, 10);
   269     __sync_bool_compare_and_swap(&x, y, z);
   270     ],[
   271     have_gcc_atomics=yes
   272     ])
   273     AC_MSG_RESULT($have_gcc_atomics)
   274 
   275     if test x$have_gcc_atomics = xyes; then
   276         AC_DEFINE(HAVE_GCC_ATOMICS, 1, [ ])
   277     else
   278         # See if we have the minimum operation needed for GCC atomics
   279         AC_TRY_LINK([
   280         ],[
   281         int a;
   282         __sync_lock_test_and_set(&a, 1);
   283         __sync_lock_release(&a);
   284         ],[
   285         have_gcc_sync_lock_test_and_set=yes
   286         ])
   287         if test x$have_gcc_sync_lock_test_and_set = xyes; then
   288             AC_DEFINE(HAVE_GCC_SYNC_LOCK_TEST_AND_SET, 1, [ ])
   289         fi
   290     fi
   291 fi
   292 
   293 # Standard C sources
   294 SOURCES="$SOURCES $srcdir/src/*.c"
   295 SOURCES="$SOURCES $srcdir/src/atomic/*.c"
   296 SOURCES="$SOURCES $srcdir/src/audio/*.c"
   297 SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c"
   298 SOURCES="$SOURCES $srcdir/src/events/*.c"
   299 SOURCES="$SOURCES $srcdir/src/file/*.c"
   300 SOURCES="$SOURCES $srcdir/src/haptic/*.c"
   301 SOURCES="$SOURCES $srcdir/src/joystick/*.c"
   302 SOURCES="$SOURCES $srcdir/src/libm/*.c"
   303 SOURCES="$SOURCES $srcdir/src/power/*.c"
   304 SOURCES="$SOURCES $srcdir/src/render/*.c"
   305 SOURCES="$SOURCES $srcdir/src/render/*/*.c"
   306 SOURCES="$SOURCES $srcdir/src/stdlib/*.c"
   307 SOURCES="$SOURCES $srcdir/src/thread/*.c"
   308 SOURCES="$SOURCES $srcdir/src/timer/*.c"
   309 SOURCES="$SOURCES $srcdir/src/video/*.c"
   310 
   311 dnl Enable/disable various subsystems of the SDL library
   312 
   313 AC_ARG_ENABLE(atomic,
   314 AC_HELP_STRING([--enable-atomic], [Enable the atomic operations subsystem [[default=yes]]]),
   315               , enable_atomic=yes)
   316 if test x$enable_atomic != xyes; then
   317     AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ])
   318 fi
   319 AC_ARG_ENABLE(audio,
   320 AC_HELP_STRING([--enable-audio], [Enable the audio subsystem [[default=yes]]]),
   321               , enable_audio=yes)
   322 if test x$enable_audio != xyes; then
   323     AC_DEFINE(SDL_AUDIO_DISABLED, 1, [ ])
   324 fi
   325 AC_ARG_ENABLE(video,
   326 AC_HELP_STRING([--enable-video], [Enable the video subsystem [[default=yes]]]),
   327               , enable_video=yes)
   328 if test x$enable_video != xyes; then
   329     AC_DEFINE(SDL_VIDEO_DISABLED, 1, [ ])
   330 fi
   331 AC_ARG_ENABLE(render,
   332 AC_HELP_STRING([--enable-render], [Enable the render subsystem [[default=yes]]]),
   333               , enable_render=yes)
   334 if test x$enable_render != xyes; then
   335     AC_DEFINE(SDL_RENDER_DISABLED, 1, [ ])
   336 fi
   337 AC_ARG_ENABLE(events,
   338 AC_HELP_STRING([--enable-events], [Enable the events subsystem [[default=yes]]]),
   339               , enable_events=yes)
   340 if test x$enable_events != xyes; then
   341     AC_DEFINE(SDL_EVENTS_DISABLED, 1, [ ])
   342 fi
   343 AC_ARG_ENABLE(joystick,
   344 AC_HELP_STRING([--enable-joystick], [Enable the joystick subsystem [[default=yes]]]),
   345               , enable_joystick=yes)
   346 if test x$enable_joystick != xyes; then
   347     AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
   348 fi
   349 AC_ARG_ENABLE(haptic,
   350 AC_HELP_STRING([--enable-haptic], [Enable the haptic (force feedback) subsystem [[default=yes]]]),
   351               , enable_haptic=yes)
   352 if test x$enable_haptic != xyes; then
   353     AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
   354 fi
   355 AC_ARG_ENABLE(power,
   356 AC_HELP_STRING([--enable-power], [Enable the power subsystem [[default=yes]]]),
   357               , enable_power=yes)
   358 if test x$enable_power != xyes; then
   359     AC_DEFINE(SDL_POWER_DISABLED, 1, [ ])
   360 fi
   361 AC_ARG_ENABLE(threads,
   362 AC_HELP_STRING([--enable-threads], [Enable the threading subsystem [[default=yes]]]),
   363               , enable_threads=yes)
   364 if test x$enable_threads != xyes; then
   365     AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
   366 fi
   367 AC_ARG_ENABLE(timers,
   368 AC_HELP_STRING([--enable-timers], [Enable the timer subsystem [[default=yes]]]),
   369               , enable_timers=yes)
   370 if test x$enable_timers != xyes; then
   371     AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
   372 fi
   373 AC_ARG_ENABLE(file,
   374 AC_HELP_STRING([--enable-file], [Enable the file subsystem [[default=yes]]]),
   375               , enable_file=yes)
   376 if test x$enable_file != xyes; then
   377     AC_DEFINE(SDL_FILE_DISABLED, 1, [ ])
   378 fi
   379 AC_ARG_ENABLE(loadso,
   380 AC_HELP_STRING([--enable-loadso], [Enable the shared object loading subsystem [[default=yes]]]),
   381               , enable_loadso=yes)
   382 if test x$enable_loadso != xyes; then
   383     AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
   384 fi
   385 AC_ARG_ENABLE(cpuinfo,
   386 AC_HELP_STRING([--enable-cpuinfo], [Enable the cpuinfo subsystem [[default=yes]]]),
   387               , enable_cpuinfo=yes)
   388 if test x$enable_cpuinfo != xyes; then
   389     AC_DEFINE(SDL_CPUINFO_DISABLED, 1, [ ])
   390 fi
   391 AC_ARG_ENABLE(atomic,
   392 AC_HELP_STRING([--enable-atomic], [Enable the atomic operations [[default=yes]]]),
   393               , enable_atomic=yes)
   394 if test x$enable_atomic != xyes; then
   395     AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ])
   396 fi
   397 AC_ARG_ENABLE(assembly,
   398 AC_HELP_STRING([--enable-assembly], [Enable assembly routines [[default=yes]]]),
   399               , enable_assembly=yes)
   400 if test x$enable_assembly = xyes; then
   401     AC_DEFINE(SDL_ASSEMBLY_ROUTINES, 1, [ ])
   402 
   403     # Make sure that we don't generate floating point code that would
   404     # cause illegal instruction exceptions on older processors
   405     case "$host" in
   406         *-*-darwin*)
   407             # Don't need to worry about Apple hardware, it's all SSE capable
   408             default_ssemath=yes
   409             ;;
   410         *64-*-*)
   411             # x86 64-bit architectures all have SSE instructions
   412             default_ssemath=yes
   413             ;;
   414         *)
   415             default_ssemath=no
   416             ;;
   417     esac
   418     AC_ARG_ENABLE(ssemath,
   419 AC_HELP_STRING([--enable-ssemath], [Allow GCC to use SSE floating point math [[default=no]]]),
   420                   , enable_ssemath=$default_ssemath)
   421     if test x$enable_ssemath = xno; then
   422         if test x$have_gcc_sse = xyes -o x$have_gcc_sse2 = xyes; then
   423             EXTRA_CFLAGS="$EXTRA_CFLAGS -mfpmath=387"
   424         fi
   425     fi
   426 
   427     dnl Check for various instruction support
   428     AC_ARG_ENABLE(mmx,
   429 AC_HELP_STRING([--enable-mmx], [use MMX assembly routines [[default=yes]]]),
   430                   , enable_mmx=yes)
   431     if test x$enable_mmx = xyes; then
   432         save_CFLAGS="$CFLAGS"
   433         have_gcc_mmx=no
   434         AC_MSG_CHECKING(for GCC -mmmx option)
   435         mmx_CFLAGS="-mmmx"
   436         CFLAGS="$save_CFLAGS $mmx_CFLAGS"
   437 
   438         AC_TRY_COMPILE([
   439         #ifdef __MINGW32__
   440         #include <_mingw.h>
   441         #ifdef __MINGW64_VERSION_MAJOR
   442         #include <intrin.h>
   443         #else
   444         #include <mmintrin.h>
   445         #endif
   446         #else
   447         #include <mmintrin.h>
   448         #endif
   449         #ifndef __MMX__
   450         #error Assembler CPP flag not enabled
   451         #endif
   452         ],[
   453         ],[
   454         have_gcc_mmx=yes
   455         ])
   456         AC_MSG_RESULT($have_gcc_mmx)
   457         CFLAGS="$save_CFLAGS"
   458 
   459         if test x$have_gcc_mmx = xyes; then
   460             EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS"
   461         fi
   462     fi
   463 
   464     AC_ARG_ENABLE(3dnow,
   465 AC_HELP_STRING([--enable-3dnow], [use 3DNow! assembly routines [[default=yes]]]),
   466                   , enable_3dnow=yes)
   467     if test x$enable_3dnow = xyes; then
   468         save_CFLAGS="$CFLAGS"
   469         have_gcc_3dnow=no
   470         AC_MSG_CHECKING(for GCC -m3dnow option)
   471         amd3dnow_CFLAGS="-m3dnow"
   472         CFLAGS="$save_CFLAGS $amd3dnow_CFLAGS"
   473 
   474         AC_TRY_LINK([
   475         #include <mm3dnow.h>
   476         #ifndef __3dNOW__
   477         #error Assembler CPP flag not enabled
   478         #endif
   479         ],[
   480         void *p = 0;
   481         _m_prefetch(p);
   482         ],[
   483         have_gcc_3dnow=yes
   484         ])
   485         AC_MSG_RESULT($have_gcc_3dnow)
   486         CFLAGS="$save_CFLAGS"
   487 
   488         if test x$have_gcc_3dnow = xyes; then
   489             EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS"
   490         fi
   491     fi
   492 
   493     AC_ARG_ENABLE(sse,
   494 AC_HELP_STRING([--enable-sse], [use SSE assembly routines [[default=yes]]]),
   495                   , enable_sse=yes)
   496     if test x$enable_sse = xyes; then
   497         save_CFLAGS="$CFLAGS"
   498         have_gcc_sse=no
   499         AC_MSG_CHECKING(for GCC -msse option)
   500         sse_CFLAGS="-msse"
   501         CFLAGS="$save_CFLAGS $sse_CFLAGS"
   502 
   503         AC_TRY_COMPILE([
   504         #ifdef __MINGW32__
   505         #include <_mingw.h>
   506         #ifdef __MINGW64_VERSION_MAJOR
   507         #include <intrin.h>
   508         #else
   509         #include <xmmintrin.h>
   510         #endif
   511         #else
   512         #include <xmmintrin.h>
   513         #endif
   514         #ifndef __SSE__
   515         #error Assembler CPP flag not enabled
   516         #endif
   517         ],[
   518         ],[
   519         have_gcc_sse=yes
   520         ])
   521         AC_MSG_RESULT($have_gcc_sse)
   522         CFLAGS="$save_CFLAGS"
   523 
   524         if test x$have_gcc_sse = xyes; then
   525             EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS"
   526         fi
   527     fi
   528 
   529     AC_ARG_ENABLE(sse2,
   530 AC_HELP_STRING([--enable-sse2], [use SSE2 assembly routines [[default=no]]]),
   531                   , enable_sse2=$default_ssemath)
   532     if test x$enable_sse2 = xyes; then
   533         save_CFLAGS="$CFLAGS"
   534         have_gcc_sse2=no
   535         AC_MSG_CHECKING(for GCC -msse2 option)
   536         sse2_CFLAGS="-msse2"
   537         CFLAGS="$save_CFLAGS $sse2_CFLAGS"
   538 
   539         AC_TRY_COMPILE([
   540         #ifdef __MINGW32__
   541         #include <_mingw.h>
   542         #ifdef __MINGW64_VERSION_MAJOR
   543         #include <intrin.h>
   544         #else
   545         #include <emmintrin.h>
   546         #endif
   547         #else
   548         #include <emmintrin.h>
   549         #endif
   550         #ifndef __SSE2__
   551         #error Assembler CPP flag not enabled
   552         #endif
   553         ],[
   554         ],[
   555         have_gcc_sse2=yes
   556         ])
   557         AC_MSG_RESULT($have_gcc_sse2)
   558         CFLAGS="$save_CFLAGS"
   559 
   560         if test x$have_gcc_sse2 = xyes; then
   561             EXTRA_CFLAGS="$EXTRA_CFLAGS $sse2_CFLAGS"
   562         fi
   563     fi
   564 
   565     AC_ARG_ENABLE(altivec,
   566 AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes]]]),
   567                   , enable_altivec=yes)
   568     if test x$enable_altivec = xyes; then
   569         save_CFLAGS="$CFLAGS"
   570         have_gcc_altivec=no
   571         have_altivec_h_hdr=no
   572         altivec_CFLAGS="-maltivec"
   573         CFLAGS="$save_CFLAGS $altivec_CFLAGS"
   574 
   575         AC_MSG_CHECKING(for Altivec with GCC altivec.h and -maltivec option)
   576         AC_TRY_COMPILE([
   577         #include <altivec.h>
   578         vector unsigned int vzero() {
   579             return vec_splat_u32(0);
   580         }
   581         ],[
   582         ],[
   583         have_gcc_altivec=yes
   584         have_altivec_h_hdr=yes
   585         ])
   586         AC_MSG_RESULT($have_gcc_altivec)
   587 
   588         if test x$have_gcc_altivec = xno; then
   589             AC_MSG_CHECKING(for Altivec with GCC -maltivec option)
   590             AC_TRY_COMPILE([
   591             vector unsigned int vzero() {
   592                 return vec_splat_u32(0);
   593             }
   594             ],[
   595             ],[
   596             have_gcc_altivec=yes
   597             ])
   598             AC_MSG_RESULT($have_gcc_altivec)
   599         fi
   600 
   601         if test x$have_gcc_altivec = xno; then
   602             AC_MSG_CHECKING(for Altivec with GCC altivec.h and -faltivec option)
   603             altivec_CFLAGS="-faltivec"
   604             CFLAGS="$save_CFLAGS $altivec_CFLAGS"
   605             AC_TRY_COMPILE([
   606             #include <altivec.h>
   607             vector unsigned int vzero() {
   608                 return vec_splat_u32(0);
   609             }
   610             ],[
   611             ],[
   612             have_gcc_altivec=yes
   613             have_altivec_h_hdr=yes
   614             ])
   615             AC_MSG_RESULT($have_gcc_altivec)
   616         fi
   617 
   618         if test x$have_gcc_altivec = xno; then
   619             AC_MSG_CHECKING(for Altivec with GCC -faltivec option)
   620             AC_TRY_COMPILE([
   621             vector unsigned int vzero() {
   622                 return vec_splat_u32(0);
   623             }
   624             ],[
   625             ],[
   626             have_gcc_altivec=yes
   627             ])
   628             AC_MSG_RESULT($have_gcc_altivec)
   629         fi
   630         CFLAGS="$save_CFLAGS"
   631 
   632         if test x$have_gcc_altivec = xyes; then
   633             AC_DEFINE(SDL_ALTIVEC_BLITTERS, 1, [ ])
   634             if test x$have_altivec_h_hdr = xyes; then
   635               AC_DEFINE(HAVE_ALTIVEC_H, 1, [ ])
   636             fi
   637             EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
   638         fi
   639     fi
   640 fi
   641 
   642 dnl See if the OSS audio interface is supported
   643 CheckOSS()
   644 {
   645     AC_ARG_ENABLE(oss,
   646 AC_HELP_STRING([--enable-oss], [support the OSS audio API [[default=yes]]]),
   647                   , enable_oss=yes)
   648     if test x$enable_audio = xyes -a x$enable_oss = xyes; then
   649         AC_MSG_CHECKING(for OSS audio support)
   650         have_oss=no
   651         if test x$have_oss != xyes; then
   652             AC_TRY_COMPILE([
   653               #include <sys/soundcard.h>
   654             ],[
   655               int arg = SNDCTL_DSP_SETFRAGMENT;
   656             ],[
   657             have_oss=yes
   658             ])
   659         fi
   660         if test x$have_oss != xyes; then
   661             AC_TRY_COMPILE([
   662               #include <soundcard.h>
   663             ],[
   664               int arg = SNDCTL_DSP_SETFRAGMENT;
   665             ],[
   666             have_oss=yes
   667             AC_DEFINE(SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H, 1, [ ])
   668             ])
   669         fi
   670         AC_MSG_RESULT($have_oss)
   671         if test x$have_oss = xyes; then
   672             AC_DEFINE(SDL_AUDIO_DRIVER_OSS, 1, [ ])
   673             SOURCES="$SOURCES $srcdir/src/audio/dsp/*.c"
   674             have_audio=yes
   675 
   676             # We may need to link with ossaudio emulation library
   677             case "$host" in
   678                 *-*-openbsd*|*-*-netbsd*)
   679                     EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lossaudio";;
   680             esac
   681         fi
   682     fi
   683 }
   684 
   685 dnl See if the ALSA audio interface is supported
   686 CheckALSA()
   687 {
   688     AC_ARG_ENABLE(alsa,
   689 AC_HELP_STRING([--enable-alsa], [support the ALSA audio API [[default=yes]]]),
   690                   , enable_alsa=yes)
   691     if test x$enable_audio = xyes -a x$enable_alsa = xyes; then
   692         AM_PATH_ALSA(0.9.0, have_alsa=yes, have_alsa=no)
   693         # Restore all flags from before the ALSA detection runs
   694         CFLAGS="$alsa_save_CFLAGS"
   695         LDFLAGS="$alsa_save_LDFLAGS"
   696         LIBS="$alsa_save_LIBS"
   697         if test x$have_alsa = xyes; then
   698             AC_ARG_ENABLE(alsa-shared,
   699 AC_HELP_STRING([--enable-alsa-shared], [dynamically load ALSA audio support [[default=yes]]]),
   700                           , enable_alsa_shared=yes)
   701             alsa_lib=[`find_lib "libasound.so.*" "$ALSA_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   702 
   703             AC_DEFINE(SDL_AUDIO_DRIVER_ALSA, 1, [ ])
   704             SOURCES="$SOURCES $srcdir/src/audio/alsa/*.c"
   705             EXTRA_CFLAGS="$EXTRA_CFLAGS $ALSA_CFLAGS"
   706             if test x$have_loadso != xyes && \
   707                test x$enable_alsa_shared = xyes; then
   708                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ALSA loading])
   709             fi
   710             if test x$have_loadso = xyes && \
   711                test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then
   712                 echo "-- dynamic libasound -> $alsa_lib"
   713                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ALSA_DYNAMIC, "$alsa_lib", [ ])
   714             else
   715                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS"
   716             fi
   717             have_audio=yes
   718         fi
   719     fi
   720 }
   721 
   722 dnl Find the ESD includes and libraries
   723 CheckESD()
   724 {
   725     AC_ARG_ENABLE(esd,
   726 AC_HELP_STRING([--enable-esd], [support the Enlightened Sound Daemon [[default=yes]]]),
   727                   , enable_esd=yes)
   728     if test x$enable_audio = xyes -a x$enable_esd = xyes; then
   729         AM_PATH_ESD(0.2.8, have_esd=yes, have_esd=no)
   730         if test x$have_esd = xyes; then
   731             AC_ARG_ENABLE(esd-shared,
   732 AC_HELP_STRING([--enable-esd-shared], [dynamically load ESD audio support [[default=yes]]]),
   733                           , enable_esd_shared=yes)
   734             esd_lib=[`find_lib "libesd.so.*" "$ESD_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   735 
   736             AC_DEFINE(SDL_AUDIO_DRIVER_ESD, 1, [ ])
   737             SOURCES="$SOURCES $srcdir/src/audio/esd/*.c"
   738             EXTRA_CFLAGS="$EXTRA_CFLAGS $ESD_CFLAGS"
   739             if test x$have_loadso != xyes && \
   740                test x$enable_esd_shared = xyes; then
   741                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ESD loading])
   742             fi
   743             if test x$have_loadso = xyes && \
   744                test x$enable_esd_shared = xyes && test x$esd_lib != x; then
   745                 echo "-- dynamic libesd -> $esd_lib"
   746                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ESD_DYNAMIC, "$esd_lib", [ ])
   747             else
   748                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS"
   749             fi
   750             have_audio=yes
   751         fi
   752     fi
   753 }
   754 
   755 dnl Find PulseAudio
   756 CheckPulseAudio()
   757 {
   758     AC_ARG_ENABLE(pulseaudio,
   759 AC_HELP_STRING([--enable-pulseaudio], [use PulseAudio [[default=yes]]]),
   760                   , enable_pulseaudio=yes)
   761     if test x$enable_audio = xyes -a x$enable_pulseaudio = xyes; then
   762         audio_pulseaudio=no
   763 
   764         PULSEAUDIO_REQUIRED_VERSION=0.9
   765 
   766         AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
   767         AC_MSG_CHECKING(for PulseAudio $PULSEAUDIO_REQUIRED_VERSION support)
   768         if test x$PKG_CONFIG != xno; then
   769         if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $PULSEAUDIO_REQUIRED_VERSION libpulse-simple; then
   770                 PULSEAUDIO_CFLAGS=`$PKG_CONFIG --cflags libpulse-simple`
   771                 PULSEAUDIO_LIBS=`$PKG_CONFIG --libs libpulse-simple`
   772                 audio_pulseaudio=yes
   773             fi
   774         fi
   775         AC_MSG_RESULT($audio_pulseaudio)
   776 
   777         if test x$audio_pulseaudio = xyes; then
   778             AC_ARG_ENABLE(pulseaudio-shared,
   779 AC_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio support [[default=yes]]]),
   780                           , enable_pulseaudio_shared=yes)
   781             pulseaudio_lib=[`find_lib "libpulse-simple.so.*" "$PULSEAUDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   782 
   783             AC_DEFINE(SDL_AUDIO_DRIVER_PULSEAUDIO, 1, [ ])
   784             SOURCES="$SOURCES $srcdir/src/audio/pulseaudio/*.c"
   785             EXTRA_CFLAGS="$EXTRA_CFLAGS $PULSEAUDIO_CFLAGS"
   786             if test x$have_loadso != xyes && \
   787                test x$enable_pulseaudio_shared = xyes; then
   788                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic PulseAudio loading])
   789             fi
   790             if test x$have_loadso = xyes && \
   791                test x$enable_pulseaudio_shared = xyes && test x$pulseaudio_lib != x; then
   792                 echo "-- dynamic libpulse-simple -> $pulseaudio_lib"
   793                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC, "$pulseaudio_lib", [ ])
   794 
   795                 case "$host" in
   796                     # On Solaris, pulseaudio must be linked deferred explicitly
   797                     # to prevent undefined symbol failures.
   798                     *-*-solaris*)
   799                         PULSEAUDIO_LIBS=`echo $PULSEAUDIO_LIBS | sed 's/\-l/-Wl,-l/g'`
   800                         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-zdeferred $PULSEAUDIO_LIBS -Wl,-znodeferred"
   801                 esac
   802             else
   803                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSEAUDIO_LIBS"
   804             fi
   805             have_audio=yes
   806         fi
   807     fi
   808 }
   809 
   810 CheckARTSC()
   811 {
   812     AC_ARG_ENABLE(arts,
   813 AC_HELP_STRING([--enable-arts], [support the Analog Real Time Synthesizer [[default=yes]]]),
   814                   , enable_arts=yes)
   815     if test x$enable_audio = xyes -a x$enable_arts = xyes; then
   816         AC_PATH_PROG(ARTSCONFIG, artsc-config)
   817         if test x$ARTSCONFIG = x -o x$ARTSCONFIG = x'"$ARTSCONFIG"'; then
   818             : # arts isn't installed
   819         else
   820             ARTS_CFLAGS=`$ARTSCONFIG --cflags`
   821             ARTS_LIBS=`$ARTSCONFIG --libs`
   822             AC_MSG_CHECKING(for aRts development environment)
   823             audio_arts=no
   824             save_CFLAGS="$CFLAGS"
   825             CFLAGS="$CFLAGS $ARTS_CFLAGS"
   826             AC_TRY_COMPILE([
   827              #include <artsc.h>
   828             ],[
   829              arts_stream_t stream;
   830             ],[
   831             audio_arts=yes
   832             ])
   833             CFLAGS="$save_CFLAGS"
   834             AC_MSG_RESULT($audio_arts)
   835             if test x$audio_arts = xyes; then
   836                 AC_ARG_ENABLE(arts-shared,
   837 AC_HELP_STRING([--enable-arts-shared], [dynamically load aRts audio support [[default=yes]]]),
   838                               , enable_arts_shared=yes)
   839                 arts_lib=[`find_lib "libartsc.so.*" "$ARTS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   840 
   841                 AC_DEFINE(SDL_AUDIO_DRIVER_ARTS, 1, [ ])
   842                 SOURCES="$SOURCES $srcdir/src/audio/arts/*.c"
   843                 EXTRA_CFLAGS="$EXTRA_CFLAGS $ARTS_CFLAGS"
   844                 if test x$have_loadso != xyes && \
   845                    test x$enable_arts_shared = xyes; then
   846                     AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic ARTS loading])
   847                 fi
   848                 if test x$have_loadso = xyes && \
   849                    test x$enable_arts_shared = xyes && test x$arts_lib != x; then
   850                     echo "-- dynamic libartsc -> $arts_lib"
   851                     AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ARTS_DYNAMIC, "$arts_lib", [ ])
   852                 else
   853                     EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS"
   854                 fi
   855                 have_audio=yes
   856             fi
   857         fi
   858     fi
   859 }
   860 
   861 dnl See if the NAS audio interface is supported
   862 CheckNAS()
   863 {
   864     AC_ARG_ENABLE(nas,
   865 AC_HELP_STRING([--enable-nas], [support the NAS audio API [[default=yes]]]),
   866                   , enable_nas=yes)
   867     if test x$enable_audio = xyes -a x$enable_nas = xyes; then
   868         AC_CHECK_HEADER(audio/audiolib.h, have_nas_hdr=yes)
   869         AC_CHECK_LIB(audio, AuOpenServer, have_nas_lib=yes)
   870 
   871         AC_MSG_CHECKING(for NAS audio support)
   872         have_nas=no
   873 
   874         if test x$have_nas_hdr = xyes -a x$have_nas_lib = xyes; then
   875             have_nas=yes
   876             NAS_LIBS="-laudio"
   877 
   878         elif test -r /usr/X11R6/include/audio/audiolib.h; then
   879             have_nas=yes
   880             NAS_CFLAGS="-I/usr/X11R6/include/"
   881             NAS_LIBS="-L/usr/X11R6/lib -laudio -lXt"
   882 
   883         fi
   884 
   885         AC_MSG_RESULT($have_nas)
   886 
   887         if test x$have_nas = xyes; then
   888             AC_ARG_ENABLE(nas-shared,
   889 AC_HELP_STRING([--enable-nas-shared], [dynamically load NAS audio support [[default=yes]]]),
   890                           , enable_nas_shared=yes)
   891             nas_lib=[`find_lib "libaudio.so.*" "$NAS_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   892 
   893             if test x$have_loadso != xyes && \
   894                test x$enable_nas_shared = xyes; then
   895                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic NAS loading])
   896             fi
   897             if test x$have_loadso = xyes && \
   898                test x$enable_nas_shared = xyes && test x$nas_lib != x; then
   899                 echo "-- dynamic libaudio -> $nas_lib"
   900                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_NAS_DYNAMIC, "$nas_lib", [ ])
   901             else
   902                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS"
   903             fi
   904 
   905             AC_DEFINE(SDL_AUDIO_DRIVER_NAS, 1, [ ])
   906             SOURCES="$SOURCES $srcdir/src/audio/nas/*.c"
   907             EXTRA_CFLAGS="$EXTRA_CFLAGS $NAS_CFLAGS"
   908             have_audio=yes
   909         fi
   910     fi
   911 }
   912 
   913 dnl rcg07142001 See if the user wants the disk writer audio driver...
   914 CheckDiskAudio()
   915 {
   916     AC_ARG_ENABLE(diskaudio,
   917 AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [[default=yes]]]),
   918                   , enable_diskaudio=yes)
   919     if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then
   920         AC_DEFINE(SDL_AUDIO_DRIVER_DISK, 1, [ ])
   921         SOURCES="$SOURCES $srcdir/src/audio/disk/*.c"
   922     fi
   923 }
   924 
   925 dnl rcg03142006 See if the user wants the dummy audio driver...
   926 CheckDummyAudio()
   927 {
   928     AC_ARG_ENABLE(dummyaudio,
   929 AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [[default=yes]]]),
   930                   , enable_dummyaudio=yes)
   931     if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then
   932         AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ])
   933         SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
   934     fi
   935 }
   936 
   937 dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
   938 dnl  Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
   939 CheckVisibilityHidden()
   940 {
   941     AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
   942     have_gcc_fvisibility=no
   943 
   944     visibility_CFLAGS="-fvisibility=hidden"
   945     save_CFLAGS="$CFLAGS"
   946     CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
   947     AC_TRY_COMPILE([
   948     #if !defined(__GNUC__) || __GNUC__ < 4
   949     #error SDL only uses visibility attributes in GCC 4 or newer
   950     #endif
   951     ],[
   952     ],[
   953     have_gcc_fvisibility=yes
   954     ])
   955     AC_MSG_RESULT($have_gcc_fvisibility)
   956     CFLAGS="$save_CFLAGS"
   957 
   958     if test x$have_gcc_fvisibility = xyes; then
   959         EXTRA_CFLAGS="$EXTRA_CFLAGS $visibility_CFLAGS"
   960     fi
   961 }
   962 
   963 dnl See if GCC's -mpreferred-stack-boundary is supported.
   964 dnl  Reference: http://bugzilla.libsdl.org/show_bug.cgi?id=1296
   965 CheckStackBoundary()
   966 {
   967     AC_MSG_CHECKING(for GCC -mpreferred-stack-boundary option)
   968     have_gcc_preferred_stack_boundary=no
   969 
   970     save_CFLAGS="$CFLAGS"
   971     CFLAGS="$save_CFLAGS -mpreferred-stack-boundary=2"
   972     AC_TRY_COMPILE([
   973     int x = 0;
   974     ],[
   975     ],[
   976     have_gcc_preferred_stack_boundary=yes
   977     ])
   978     AC_MSG_RESULT($have_gcc_preferred_stack_boundary)
   979     CFLAGS="$save_CFLAGS"
   980 
   981     if test x$have_gcc_preferred_stack_boundary = xyes; then
   982         EXTRA_CFLAGS="$EXTRA_CFLAGS -mpreferred-stack-boundary=2"
   983     fi
   984 }
   985 
   986 
   987 dnl See if GCC's -Wall is supported.
   988 CheckWarnAll()
   989 {
   990     AC_MSG_CHECKING(for GCC -Wall option)
   991     have_gcc_Wall=no
   992 
   993     save_CFLAGS="$CFLAGS"
   994     CFLAGS="$save_CFLAGS -Wall"
   995     AC_TRY_COMPILE([
   996     int x = 0;
   997     ],[
   998     ],[
   999     have_gcc_Wall=yes
  1000     ])
  1001     AC_MSG_RESULT($have_gcc_Wall)
  1002     CFLAGS="$save_CFLAGS"
  1003 
  1004     if test x$have_gcc_Wall = xyes; then
  1005         EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
  1006 
  1007         dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
  1008         AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
  1009         need_gcc_Wno_multichar=no
  1010         case "$host" in
  1011             *-*-beos* | *-*-haiku*)
  1012                 need_gcc_Wno_multichar=yes
  1013                 ;;
  1014         esac
  1015         AC_MSG_RESULT($need_gcc_Wno_multichar)
  1016         if test x$need_gcc_Wno_multichar = xyes; then
  1017             EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-multichar"
  1018         fi
  1019     fi
  1020 }
  1021 
  1022 
  1023 dnl Find the X11 include and library directories
  1024 CheckX11()
  1025 {
  1026 
  1027 
  1028     AC_ARG_ENABLE(video-x11,
  1029 AC_HELP_STRING([--enable-video-x11], [use X11 video driver [[default=yes]]]),
  1030                   , enable_video_x11=yes)
  1031     if test x$enable_video = xyes -a x$enable_video_x11 = xyes; then
  1032         case "$host" in
  1033             *-*-darwin*)
  1034                 # This isn't necessary for X11, but fixes GLX detection
  1035                 if test "x$x_includes" = xNONE && \
  1036                    test "x$x_libraries" = xNONE && \
  1037                    test -d /usr/X11R6/include && \
  1038                    test -d /usr/X11R6/lib; then
  1039                     x_includes="/usr/X11R6/include"
  1040                     x_libraries="/usr/X11R6/lib"
  1041                 fi
  1042                 ;;
  1043         esac
  1044         AC_PATH_X
  1045         AC_PATH_XTRA
  1046         if test x$have_x = xyes; then
  1047             # Only allow dynamically loaded X11 if the X11 function pointers
  1048             # will not end up in the global namespace, which causes problems
  1049             # with other libraries calling X11 functions.
  1050             x11_symbols_private=$have_gcc_fvisibility
  1051 
  1052             AC_ARG_ENABLE(x11-shared,
  1053 AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=maybe]]]),
  1054                           , enable_x11_shared=maybe)
  1055 
  1056             case "$host" in
  1057                 *-*-darwin*)
  1058                     x11_symbols_private=yes
  1059                     x11_lib='/usr/X11R6/lib/libX11.6.dylib'
  1060                     x11ext_lib='/usr/X11R6/lib/libXext.6.dylib'
  1061                     xcursor_lib='/usr/X11R6/lib/libXcursor.1.dylib'
  1062                     xinerama_lib='/usr/X11R6/lib/libXinerama.1.dylib'
  1063                     xinput_lib='/usr/X11R6/lib/libXi.6.dylib'
  1064                     xrandr_lib='/usr/X11R6/lib/libXrandr.2.dylib'
  1065                     xrender_lib='/usr/X11R6/lib/libXrender.1.dylib'
  1066                     xss_lib='/usr/X11R6/lib/libXss.1.dylib'
  1067                     xvidmode_lib='/usr/X11R6/lib/libXxf86vm.1.dylib'
  1068                     ;;
  1069                 *-*-openbsd*)
  1070                     x11_lib='libX11.so'
  1071                     x11ext_lib='libXext.so'
  1072                     xcursor_lib='libXcursor.so'
  1073                     xinerama_lib='libXinerama.so'
  1074                     xinput_lib='libXi.so'
  1075                     xrandr_lib='libXrandr.so'
  1076                     xrender_lib='libXrender.so'
  1077                     xss_lib='libXss.so'
  1078                     xvidmode_lib='libXxf86vm.so'
  1079                     ;;
  1080                 *)
  1081                     x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1082                     x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1083                     xcursor_lib=[`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1084                     xinerama_lib=[`find_lib "libXinerama.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1085                     xinput_lib=[`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1086                     xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1087                     xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1088                     xss_lib=[`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1089                     xvidmode_lib=[`find_lib "libXxf86vm.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1090                     ;;
  1091             esac
  1092 
  1093             if test x$ac_cv_func_shmat != xyes; then
  1094                 X_CFLAGS="$X_CFLAGS -DNO_SHARED_MEMORY"
  1095             fi
  1096             CFLAGS="$CFLAGS $X_CFLAGS"
  1097             LDFLAGS="$LDFLAGS $X_LIBS"
  1098 
  1099             AC_DEFINE(SDL_VIDEO_DRIVER_X11, 1, [ ])
  1100             SOURCES="$SOURCES $srcdir/src/video/x11/*.c"
  1101             EXTRA_CFLAGS="$EXTRA_CFLAGS $X_CFLAGS"
  1102 
  1103             if test x$enable_x11_shared = xmaybe; then
  1104                 enable_x11_shared=$x11_symbols_private
  1105             fi
  1106             if test x$have_loadso != xyes && \
  1107                test x$enable_x11_shared = xyes; then
  1108                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading])
  1109                 enable_x11_shared=no
  1110             fi
  1111             if test x$x11_symbols_private != xyes && \
  1112                test x$enable_x11_shared = xyes; then
  1113                 AC_MSG_WARN([You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading])
  1114                 enable_x11_shared=no
  1115             fi
  1116 
  1117             if test x$have_loadso = xyes && \
  1118                test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then
  1119                 echo "-- dynamic libX11 -> $x11_lib"
  1120                 echo "-- dynamic libX11ext -> $x11ext_lib"
  1121                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib", [ ])
  1122                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib", [ ])
  1123             else
  1124                 enable_x11_shared=no
  1125                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext"
  1126             fi
  1127             have_video=yes
  1128 
  1129             AC_MSG_CHECKING(for const parameter to XextAddDisplay)
  1130             have_const_param_XextAddDisplay=no
  1131             AC_TRY_COMPILE([
  1132               #include <X11/Xlib.h>
  1133               #include <X11/Xproto.h>
  1134               #include <X11/extensions/Xext.h>
  1135               #include <X11/extensions/extutil.h>
  1136               extern XExtDisplayInfo* XextAddDisplay(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f);
  1137             ],[
  1138             ],[
  1139             have_const_param_XextAddDisplay=yes
  1140             AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY)
  1141             ])
  1142             AC_MSG_RESULT($have_const_param_XextAddDisplay)
  1143 
  1144             AC_MSG_CHECKING(for const parameter to _XData32)
  1145 	    have_const_param_xdata32=no
  1146 	    AC_TRY_COMPILE([
  1147 	      #include <X11/Xlibint.h>
  1148 	      extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len);
  1149 	    ],[
  1150 	    ],[
  1151 	    have_const_param_xdata32=yes
  1152 	    AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32)
  1153 	    ])
  1154 	    AC_MSG_RESULT($have_const_param_xdata32)
  1155 
  1156             dnl AC_CHECK_LIB(X11, XGetEventData, AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS, 1, [Have XGenericEvent]))
  1157             AC_MSG_CHECKING([for XGenericEvent])
  1158             have_XGenericEvent=no
  1159             AC_TRY_COMPILE([
  1160               	#include <X11/Xlib.h>
  1161             ],[
  1162 Display *display;
  1163 XEvent event;
  1164 XGenericEventCookie *cookie = &event.xcookie;
  1165 XNextEvent(display, &event);
  1166 XGetEventData(display, cookie);
  1167 XFreeEventData(display, cookie);
  1168             ],[
  1169                 have_XGenericEvent=yes
  1170                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS)
  1171             ])
  1172             AC_MSG_RESULT($have_XGenericEvent)
  1173 
  1174             AC_CHECK_LIB(X11, XkbKeycodeToKeysym, AC_DEFINE(SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM, 1, [Have XkbKeycodeToKeysym]))
  1175 
  1176             AC_ARG_ENABLE(video-x11-xcursor,
  1177 AC_HELP_STRING([--enable-video-x11-xcursor], [enable X11 Xcursor support [[default=yes]]]),
  1178                             , enable_video_x11_xcursor=yes)
  1179             if test x$enable_video_x11_xcursor = xyes; then
  1180                 definitely_enable_video_x11_xcursor=no
  1181                 AC_CHECK_HEADER(X11/Xcursor/Xcursor.h,
  1182                                 have_xcursor_h_hdr=yes,
  1183                                 have_xcursor_h_hdr=no,
  1184                                 [#include <X11/Xlib.h>
  1185                                 ])
  1186                 if test x$have_xcursor_h_hdr = xyes; then
  1187                     if test x$enable_x11_shared = xyes && test x$xcursor_lib != x ; then
  1188                         echo "-- dynamic libXcursor -> $xcursor_lib"
  1189                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR, "$xcursor_lib", [ ])
  1190                         definitely_enable_video_x11_xcursor=yes
  1191                     else
  1192                         AC_CHECK_LIB(Xcursor, XcursorImageCreate, have_xcursor_lib=yes)
  1193                         if test x$have_xcursor_lib = xyes ; then
  1194                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXcursor"
  1195                             definitely_enable_video_x11_xcursor=yes
  1196                         fi
  1197                     fi
  1198                 fi
  1199             fi
  1200             if test x$definitely_enable_video_x11_xcursor = xyes; then
  1201                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XCURSOR, 1, [ ])
  1202             fi
  1203             AC_ARG_ENABLE(video-x11-xinerama,
  1204 AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[default=yes]]]),
  1205                             , enable_video_x11_xinerama=yes)
  1206             if test x$enable_video_x11_xinerama = xyes; then
  1207                 definitely_enable_video_x11_xinerama=no
  1208                 AC_CHECK_HEADER(X11/extensions/Xinerama.h,
  1209                                 have_xinerama_h_hdr=yes,
  1210                                 have_xinerama_h_hdr=no,
  1211                                 [#include <X11/Xlib.h>
  1212                                 ])
  1213                 if test x$have_xinerama_h_hdr = xyes; then
  1214                     if test x$enable_x11_shared = xyes && test x$xinerama_lib != x ; then
  1215                         echo "-- dynamic libXinerama -> $xinerama_lib"
  1216                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA, "$xinerama_lib", [ ])
  1217                         definitely_enable_video_x11_xinerama=yes
  1218                     else
  1219                         AC_CHECK_LIB(Xinerama, XineramaQueryExtension, have_xinerama_lib=yes)
  1220                         if test x$have_xinerama_lib = xyes ; then
  1221                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXinerama"
  1222                             definitely_enable_video_x11_xinerama=yes
  1223                         fi
  1224                     fi
  1225                 fi
  1226             fi
  1227             if test x$definitely_enable_video_x11_xinerama = xyes; then
  1228                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA, 1, [ ])
  1229             fi
  1230             AC_ARG_ENABLE(video-x11-xinput,
  1231 AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [[default=yes]]]),
  1232                             , enable_video_x11_xinput=yes)
  1233             if test x$enable_video_x11_xinput = xyes; then
  1234                 definitely_enable_video_x11_xinput=no
  1235                 AC_CHECK_HEADER(X11/extensions/XInput2.h,
  1236                                 have_xinput_h_hdr=yes,
  1237                                 have_xinput_h_hdr=no,
  1238                                 [#include <X11/Xlib.h>
  1239                                 ])
  1240                 if test x$have_xinput_h_hdr = xyes; then
  1241                     if test x$enable_x11_shared = xyes && test x$xinput_lib != x ; then
  1242                         echo "-- dynamic libXi -> $xinput_lib"
  1243                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2, "$xinput_lib", [ ])
  1244                         definitely_enable_video_x11_xinput=yes
  1245                     else
  1246                         AC_CHECK_LIB(Xi, XOpenDevice, have_xinput_lib=yes)
  1247                         if test x$have_xinput_lib = xyes ; then
  1248                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXi"
  1249                             definitely_enable_video_x11_xinput=yes
  1250                         fi
  1251                     fi
  1252                 fi
  1253             fi
  1254             if test x$definitely_enable_video_x11_xinput = xyes; then
  1255                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2, 1, [ ])
  1256                 AC_MSG_CHECKING(for xinput2 multitouch)
  1257             	have_xinput2_multitouch=no
  1258             	AC_TRY_COMPILE([
  1259               		#include <X11/Xlib.h>
  1260              		#include <X11/Xproto.h>
  1261 			#include <X11/extensions/XInput2.h>
  1262             	],[
  1263 int event_type = XI_TouchBegin;
  1264 XITouchClassInfo *t;
  1265 Status 
  1266 XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f)
  1267 {
  1268     return (Status)0;
  1269 }
  1270             	],[
  1271             	have_xinput2_multitouch=yes
  1272             	AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH)
  1273             	])
  1274             	AC_MSG_RESULT($have_xinput2_multitouch)
  1275             fi
  1276             AC_ARG_ENABLE(video-x11-xrandr,
  1277 AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [[default=yes]]]),
  1278                             , enable_video_x11_xrandr=yes)
  1279             if test x$enable_video_x11_xrandr = xyes; then
  1280                 definitely_enable_video_x11_xrandr=no
  1281                 AC_CHECK_HEADER(X11/extensions/Xrandr.h,
  1282                                 have_xrandr_h_hdr=yes,
  1283                                 have_xrandr_h_hdr=no,
  1284                                 [#include <X11/Xlib.h>
  1285                                 ])
  1286                 if test x$have_xrandr_h_hdr = xyes; then
  1287                     if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
  1288                         echo "-- dynamic libXrandr -> $xrandr_lib"
  1289                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib", [ ])
  1290                         definitely_enable_video_x11_xrandr=yes
  1291                     else
  1292                         AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
  1293                         if test x$have_xrandr_lib = xyes ; then
  1294                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr"
  1295                             definitely_enable_video_x11_xrandr=yes
  1296                         fi
  1297                     fi
  1298                 fi
  1299             fi
  1300             if test x$definitely_enable_video_x11_xrandr = xyes; then
  1301                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR, 1, [ ])
  1302             fi
  1303             AC_ARG_ENABLE(video-x11-scrnsaver,
  1304 AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension [[default=yes]]]),
  1305                             , enable_video_x11_scrnsaver=yes)
  1306             if test x$enable_video_x11_scrnsaver = xyes; then
  1307                 AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
  1308                                 have_scrnsaver_h_hdr=yes,
  1309                                 have_scrnsaver_h_hdr=no,
  1310                                 [#include <X11/Xlib.h>
  1311                                 ])
  1312                 if test x$have_scrnsaver_h_hdr = xyes; then
  1313                     if test x$enable_x11_shared = xyes && test x$xss_lib != x ; then
  1314                         echo "-- dynamic libXss -> $xss_lib"
  1315                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS, "$xss_lib", [ ])
  1316                         definitely_enable_video_x11_scrnsaver=yes
  1317                     else
  1318                         AC_CHECK_LIB(Xss, XScreenSaverSuspend, have_xss_lib=yes)
  1319                         if test x$have_xss_lib = xyes ; then
  1320                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXss"
  1321                             definitely_enable_video_x11_scrnsaver=yes
  1322                         fi
  1323                     fi
  1324                 fi
  1325             fi
  1326             if test x$definitely_enable_video_x11_scrnsaver = xyes; then
  1327                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSCRNSAVER, 1, [ ])
  1328             fi
  1329             AC_ARG_ENABLE(video-x11-xshape,
  1330 AC_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [[default=yes]]]),
  1331                             , enable_video_x11_xshape=yes)
  1332             if test x$enable_video_x11_xshape = xyes; then
  1333                 AC_CHECK_HEADER(X11/extensions/shape.h,
  1334                                 have_shape_h_hdr=yes,
  1335                                 have_shape_h_hdr=no,
  1336                                 [#include <X11/Xlib.h>
  1337                                 ])
  1338                 if test x$have_shape_h_hdr = xyes; then
  1339                     AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSHAPE, 1, [ ])
  1340                 fi
  1341             fi
  1342             AC_ARG_ENABLE(video-x11-vm,
  1343 AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[default=yes]]]),
  1344                             , enable_video_x11_vm=yes)
  1345             if test x$enable_video_x11_vm = xyes; then
  1346                 definitely_enable_video_x11_vm=no
  1347                 AC_CHECK_HEADER(X11/extensions/xf86vmode.h,
  1348                                 have_vm_h_hdr=yes,
  1349                                 have_vm_h_hdr=no,
  1350                                 [#include <X11/Xlib.h>
  1351                                 ])
  1352                 if test x$have_vm_h_hdr = xyes; then
  1353                     if test x$enable_x11_shared = xyes && test x$xvidmode_lib != x ; then
  1354                         echo "-- dynamic libXxf86vm -> $xvidmode_lib"
  1355                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE, "$xvidmode_lib", [ ])
  1356                         definitely_enable_video_x11_vm=yes
  1357                     else
  1358                         AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, have_vm_lib=yes)
  1359                         if test x$have_vm_lib = xyes ; then
  1360                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXxf86vm"
  1361                             definitely_enable_video_x11_vm=yes
  1362                         fi
  1363                     fi
  1364                 fi
  1365             fi
  1366             if test x$definitely_enable_video_x11_vm = xyes; then
  1367                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XVIDMODE, 1, [ ])
  1368             fi
  1369         fi
  1370     fi
  1371 }
  1372 
  1373 dnl Set up the BWindow video driver if enabled
  1374 CheckBWINDOW()
  1375 {
  1376     if test x$enable_video = xyes; then
  1377         AC_DEFINE(SDL_VIDEO_DRIVER_BWINDOW, 1, [ ])
  1378         SOURCES="$SOURCES $srcdir/src/video/bwindow/*.cc"
  1379         have_video=yes
  1380     fi
  1381 }
  1382 
  1383 dnl Set up the Cocoa video driver for Mac OS X (but not Darwin)
  1384 CheckCOCOA()
  1385 {
  1386     AC_ARG_ENABLE(video-cocoa,
  1387 AC_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [[default=yes]]]),
  1388                   , enable_video_cocoa=yes)
  1389     if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
  1390         save_CFLAGS="$CFLAGS"
  1391         dnl work around that we don't have Objective-C support in autoconf
  1392         CFLAGS="$CFLAGS -x objective-c"
  1393         AC_MSG_CHECKING(for Cocoa framework)
  1394         have_cocoa=no
  1395         AC_TRY_COMPILE([
  1396           #import <Cocoa/Cocoa.h>
  1397         ],[
  1398         ],[
  1399         have_cocoa=yes
  1400         ])
  1401         AC_MSG_RESULT($have_cocoa)
  1402         CFLAGS="$save_CFLAGS"
  1403         if test x$have_cocoa = xyes; then
  1404             AC_DEFINE(SDL_VIDEO_DRIVER_COCOA, 1, [ ])
  1405             SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m"
  1406             have_video=yes
  1407         fi
  1408     fi
  1409 }
  1410 
  1411 dnl Find DirectFB
  1412 CheckDirectFB()
  1413 {
  1414     AC_ARG_ENABLE(video-directfb,
  1415 AC_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [[default=no]]]),
  1416                   , enable_video_directfb=no)
  1417     if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
  1418         video_directfb=no
  1419 
  1420         DIRECTFB_REQUIRED_VERSION=1.0.0
  1421         AC_PATH_PROGS(DIRECTFBCONFIG, directfb-config, no, [$prefix/bin:$PATH])
  1422         if test x$DIRECTFBCONFIG = xno; then
  1423             AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1424             if test x$PKG_CONFIG != xno; then
  1425                 if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb; then
  1426                     DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags directfb`
  1427                     DIRECTFB_LIBS=`$PKG_CONFIG --libs directfb`
  1428                     DIRECTFB_PREFIX=`$PKG_CONFIG --variable=prefix directfb`
  1429                     video_directfb=yes
  1430                 fi
  1431             fi
  1432         else
  1433             set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'`
  1434             NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
  1435             set -- `$DIRECTFBCONFIG --version | sed 's/\./ /g'`
  1436             HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
  1437             if test $HAVE_VERSION -ge $NEED_VERSION; then
  1438                 DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags`
  1439                 DIRECTFB_LIBS=`$DIRECTFBCONFIG --libs`
  1440                 DIRECTFB_PREFIX=`$DIRECTFBCONFIG --prefix`
  1441                 video_directfb=yes
  1442             fi
  1443         fi
  1444         if test x$video_directfb = xyes; then
  1445             # SuSE 11.1 installs directfb-config without directfb-devel
  1446             save_CPPFLAGS="$CPPFLAGS"
  1447             CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
  1448             AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
  1449             CPPFLAGS="$save_CPPFLAGS"
  1450             video_directfb=$have_directfb_hdr
  1451         fi
  1452         AC_MSG_CHECKING(for DirectFB $DIRECTFB_REQUIRED_VERSION support)
  1453         AC_MSG_RESULT($video_directfb)
  1454 
  1455         if test x$video_directfb = xyes; then
  1456             AC_ARG_ENABLE(directfb-shared,
  1457 AC_HELP_STRING([--enable-directfb-shared], [dynamically load directfb support [[default=yes]]]),
  1458                               , enable_directfb_shared=yes)
  1459 
  1460             AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB, 1, [ ])
  1461             AC_DEFINE(SDL_VIDEO_RENDER_DIRECTFB, 1, [ ])
  1462             SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
  1463             EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
  1464 
  1465             AC_MSG_CHECKING(for directfb dynamic loading support)
  1466             directfb_shared=no
  1467             directfb_lib=[`find_lib "libdirectfb.so.*" "$DIRECTFB_LIBS"`]
  1468             # | sed 's/.*\/\(.*\)/\1/; q'`]
  1469 AC_MSG_WARN("directfb $directfb_lib")
  1470             if test x$have_loadso != xyes && \
  1471                test x$enable_directfb_shared = xyes; then
  1472                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic directfb loading])
  1473             fi
  1474             if test x$have_loadso = xyes && \
  1475                test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
  1476                 directfb_shared=yes
  1477                 echo "-- $directfb_lib_spec -> $directfb_lib"
  1478                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ])
  1479             else
  1480                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
  1481             fi
  1482             AC_MSG_RESULT($directfb_shared)
  1483             have_video=yes
  1484         fi
  1485     fi
  1486 }
  1487 
  1488 dnl Find FusionSound
  1489 CheckFusionSound()
  1490 {
  1491     AC_ARG_ENABLE(fusionsound,
  1492 AC_HELP_STRING([--enable-fusionsound], [use FusionSound audio driver [[default=no]]]),
  1493                   , enable_fusionsound=no)
  1494     if test x$enable_audio = xyes -a x$enable_fusionsound = xyes; then
  1495         fusionsound=no
  1496 
  1497         FUSIONSOUND_REQUIRED_VERSION=1.1.1
  1498 
  1499         AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1500         AC_MSG_CHECKING(for FusionSound $FUSIONSOUND_REQUIRED_VERSION support)
  1501         if test x$PKG_CONFIG != xno; then
  1502             if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $FUSIONSOUND_REQUIRED_VERSION fusionsound; then
  1503                 FUSIONSOUND_CFLAGS=`$PKG_CONFIG --cflags fusionsound`
  1504                 FUSIONSOUND_LIBS=`$PKG_CONFIG --libs fusionsound`
  1505                 fusionsound=yes
  1506             fi
  1507         fi
  1508         AC_MSG_RESULT($fusionsound)
  1509 
  1510         if test x$fusionsound = xyes; then
  1511             AC_DEFINE(SDL_AUDIO_DRIVER_FUSIONSOUND, 1, [ ])
  1512             SOURCES="$SOURCES $srcdir/src/audio/fusionsound/*.c"
  1513             EXTRA_CFLAGS="$EXTRA_CFLAGS $FUSIONSOUND_CFLAGS"
  1514             
  1515             AC_ARG_ENABLE(fusionsound-shared,
  1516 AC_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audio support [[default=yes]]]),
  1517                           , enable_fusionsound_shared=yes)
  1518             fusionsound_shared=no
  1519             AC_MSG_CHECKING(for FusionSound dynamic loading support)
  1520             if test x$have_loadso != xyes && \
  1521                test x$enable_fusionsound_shared = xyes; then
  1522                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic fusionsound loading])
  1523             fi
  1524             if test x$have_loadso = xyes && \
  1525                test x$enable_fusionsound_shared = xyes; then
  1526                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC, "libfusionsound.so", [ ])
  1527                 fusionsound_shared=yes
  1528             else
  1529                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS"
  1530             fi
  1531             AC_MSG_RESULT($fusionsound_shared)
  1532             
  1533             have_audio=yes
  1534         fi
  1535     fi
  1536 }
  1537 
  1538 dnl rcg04172001 Set up the Null video driver.
  1539 CheckDummyVideo()
  1540 {
  1541     AC_ARG_ENABLE(video-dummy,
  1542 AC_HELP_STRING([--enable-video-dummy], [use dummy video driver [[default=yes]]]),
  1543                   , enable_video_dummy=yes)
  1544     if test x$enable_video_dummy = xyes; then
  1545         AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ])
  1546         SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
  1547         have_video=yes
  1548     fi
  1549 }
  1550 
  1551 dnl Check to see if OpenGL support is desired
  1552 AC_ARG_ENABLE(video-opengl,
  1553 AC_HELP_STRING([--enable-video-opengl], [include OpenGL support [[default=yes]]]),
  1554               , enable_video_opengl=yes)
  1555 
  1556 dnl Find OpenGL
  1557 CheckOpenGLX11()
  1558 {
  1559     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1560         AC_MSG_CHECKING(for OpenGL (GLX) support)
  1561         video_opengl=no
  1562         AC_TRY_COMPILE([
  1563          #include <GL/gl.h>
  1564          #include <GL/glx.h>
  1565         ],[
  1566         ],[
  1567         video_opengl=yes
  1568         ])
  1569         AC_MSG_RESULT($video_opengl)
  1570         if test x$video_opengl = xyes; then
  1571             AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1572             AC_DEFINE(SDL_VIDEO_OPENGL_GLX, 1, [ ])
  1573             AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1574         fi
  1575     fi
  1576 }
  1577 
  1578 dnl Check to see if OpenGL ES support is desired
  1579 AC_ARG_ENABLE(video-opengles,
  1580 AC_HELP_STRING([--enable-video-opengles], [include OpenGL ES support [[default=yes]]]),
  1581               , enable_video_opengles=yes)
  1582 
  1583 dnl Find OpenGL ES
  1584 CheckOpenGLESX11()
  1585 {
  1586     if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  1587         AC_MSG_CHECKING(for OpenGL ES (EGL) support)
  1588         video_opengles=no
  1589         AC_TRY_COMPILE([
  1590          #include <EGL/egl.h>
  1591         ],[
  1592         ],[
  1593         video_opengles=yes
  1594         ])
  1595         AC_MSG_RESULT($video_opengles)
  1596         if test x$video_opengles = xyes; then
  1597             AC_MSG_CHECKING(for OpenGL ES v1 headers)
  1598             video_opengles_v1=no
  1599             AC_TRY_COMPILE([
  1600              #include <GLES/gl.h>
  1601              #include <GLES/glext.h>
  1602             ],[
  1603             ],[
  1604             video_opengles_v1=yes
  1605             ])
  1606             AC_MSG_RESULT($video_opengles_v1)
  1607             if test x$video_opengles_v1 = xyes; then
  1608                 AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ])
  1609                 AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ])
  1610             fi
  1611             AC_MSG_CHECKING(for OpenGL ES v2 headers)
  1612             video_opengles_v2=no
  1613             AC_TRY_COMPILE([
  1614              #include <GLES2/gl2.h>
  1615              #include <GLES2/gl2ext.h>
  1616             ],[
  1617             ],[
  1618             video_opengles_v2=yes
  1619             ])
  1620             AC_MSG_RESULT($video_opengles_v2)
  1621             if test x$video_opengles_v2 = xyes; then
  1622                 AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  1623                 AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  1624             fi
  1625         fi
  1626     fi
  1627 }
  1628 
  1629 dnl Check for Windows OpenGL
  1630 CheckWINDOWSGL()
  1631 {
  1632     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1633         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1634         AC_DEFINE(SDL_VIDEO_OPENGL_WGL, 1, [ ])
  1635         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1636     fi
  1637 }
  1638 
  1639 dnl Check for BeOS OpenGL
  1640 CheckBeGL()
  1641 {
  1642     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1643         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1644         AC_DEFINE(SDL_VIDEO_OPENGL_BGL, 1, [ ])
  1645         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1646         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
  1647     fi
  1648 }
  1649 
  1650 dnl Check for MacOS OpenGL
  1651 CheckMacGL()
  1652 {
  1653     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1654         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1655         AC_DEFINE(SDL_VIDEO_OPENGL_CGL, 1, [ ])
  1656         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1657         case "$host" in
  1658             *-*-darwin*)
  1659                 if test x$enable_video_cocoa = xyes; then
  1660                     EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGL"
  1661                 fi
  1662         esac
  1663     fi
  1664 }
  1665 
  1666 dnl See if we can use the new unified event interface in Linux 2.4
  1667 CheckInputEvents()
  1668 {
  1669     dnl Check for Linux 2.4 unified input event interface support
  1670         AC_MSG_CHECKING(for Linux 2.4 unified input interface)
  1671         use_input_events=no
  1672         AC_TRY_COMPILE([
  1673           #include <linux/input.h>
  1674         ],[
  1675           #ifndef EVIOCGNAME
  1676           #error EVIOCGNAME() ioctl not available
  1677           #endif
  1678         ],[
  1679         use_input_events=yes
  1680         ])
  1681         AC_MSG_RESULT($use_input_events)
  1682         if test x$use_input_events = xyes; then
  1683             AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
  1684         fi
  1685 }
  1686 
  1687 dnl See if the platform offers libudev for device enumeration and hotplugging.
  1688 CheckLibUDev()
  1689 {
  1690     AC_ARG_ENABLE(libudev,
  1691 AC_HELP_STRING([--enable-libudev], [enable libudev support [[default=yes]]]),
  1692                         , enable_libudev=yes)
  1693     if test x$enable_libudev = xyes; then
  1694         AC_CHECK_HEADER(libudev.h,
  1695                         have_libudev_h_hdr=yes,
  1696                         have_libudev_h_hdr=no)
  1697         if test x$have_libudev_h_hdr = xyes; then
  1698             AC_DEFINE(HAVE_LIBUDEV_H, 1, [ ])
  1699         fi
  1700     fi
  1701 }
  1702 
  1703 dnl See if the platform offers libdbus for various IPC techniques.
  1704 CheckDBus()
  1705 {
  1706     AC_ARG_ENABLE(dbus,
  1707 AC_HELP_STRING([--enable-dbus], [enable D-Bus support [[default=yes]]]),
  1708                         , enable_dbus=yes)
  1709     if test x$enable_dbus = xyes; then
  1710         AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1711         if test x$PKG_CONFIG != xno; then
  1712             DBUS_CFLAGS=`$PKG_CONFIG --cflags dbus-1`
  1713             save_CFLAGS="$CFLAGS"
  1714             CFLAGS="$save_CFLAGS $DBUS_CFLAGS"
  1715             AC_CHECK_HEADER(dbus/dbus.h,
  1716                             have_dbus_dbus_h_hdr=yes,
  1717                             have_dbus_dbus_h_hdr=no)
  1718             CFLAGS="$save_CFLAGS"
  1719             if test x$have_dbus_dbus_h_hdr = xyes; then
  1720                 AC_DEFINE(HAVE_DBUS_DBUS_H, 1, [ ])
  1721                 EXTRA_CFLAGS="$EXTRA_CFLAGS $DBUS_CFLAGS"
  1722             fi
  1723         fi
  1724     fi
  1725 }
  1726 
  1727 dnl See if we can use the Touchscreen input library
  1728 CheckTslib()
  1729 {
  1730     AC_ARG_ENABLE(input-tslib,
  1731 AC_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[default=yes]]]),
  1732                   , enable_input_tslib=yes)
  1733     if test x$enable_input_tslib = xyes; then
  1734         AC_MSG_CHECKING(for Touchscreen library support)
  1735         enable_input_tslib=no
  1736         AC_TRY_COMPILE([
  1737           #include "tslib.h"
  1738         ],[
  1739         ],[
  1740         enable_input_tslib=yes
  1741         ])
  1742         AC_MSG_RESULT($enable_input_tslib)
  1743         if test x$enable_input_tslib = xyes; then
  1744             AC_DEFINE(SDL_INPUT_TSLIB, 1, [ ])
  1745             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts"
  1746         fi
  1747     fi
  1748 }
  1749 
  1750 dnl See what type of thread model to use on Linux and Solaris
  1751 CheckPTHREAD()
  1752 {
  1753     dnl Check for pthread support
  1754     AC_ARG_ENABLE(pthreads,
  1755 AC_HELP_STRING([--enable-pthreads], [use POSIX threads for multi-threading [[default=yes]]]),
  1756                   , enable_pthreads=yes)
  1757     dnl This is used on Linux for glibc binary compatibility (Doh!)
  1758     AC_ARG_ENABLE(pthread-sem,
  1759 AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]),
  1760                   , enable_pthread_sem=yes)
  1761     case "$host" in
  1762         *-*-linux*|*-*-uclinux*)
  1763             pthread_cflags="-D_REENTRANT"
  1764             pthread_lib="-lpthread"
  1765             ;;
  1766         *-*-bsdi*)
  1767             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1768             pthread_lib=""
  1769             ;;
  1770         *-*-darwin*)
  1771             pthread_cflags="-D_THREAD_SAFE"
  1772 # causes Carbon.p complaints?
  1773 #            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1774             ;;
  1775         *-*-freebsd*|*-*-dragonfly*)
  1776             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1777             pthread_lib="-pthread"
  1778             ;;
  1779         *-*-netbsd*)
  1780             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1781             pthread_lib="-lpthread"
  1782             ;;
  1783         *-*-openbsd*)
  1784             pthread_cflags="-D_REENTRANT"
  1785             pthread_lib="-pthread"
  1786             ;;
  1787         *-*-solaris2.9)
  1788             # From Solaris 9+, posix4's preferred name is rt.
  1789             pthread_cflags="-D_REENTRANT"
  1790             pthread_lib="-lpthread -lrt"
  1791             ;;
  1792         *-*-solaris2.10)
  1793             # Solaris 10+ merged pthread into libc.
  1794             pthread_cflags="-D_REENTRANT"
  1795             pthread_lib="-lrt"
  1796             ;;
  1797         *-*-solaris*)
  1798             # Solaris 11+ merged rt into libc.
  1799             pthread_cflags="-D_REENTRANT"
  1800             pthread_lib=""
  1801             ;;
  1802         *-*-sysv5*)
  1803             pthread_cflags="-D_REENTRANT -Kthread"
  1804             pthread_lib=""
  1805             ;;
  1806         *-*-aix*)
  1807             pthread_cflags="-D_REENTRANT -mthreads"
  1808             pthread_lib="-lpthread"
  1809             ;;
  1810         *-*-hpux11*)
  1811             pthread_cflags="-D_REENTRANT"
  1812             pthread_lib="-L/usr/lib -lpthread"
  1813             ;;
  1814         *)
  1815             pthread_cflags="-D_REENTRANT"
  1816             pthread_lib="-lpthread"
  1817             ;;
  1818     esac
  1819     if test x$enable_threads = xyes -a x$enable_pthreads = xyes; then
  1820         # Save the original compiler flags and libraries
  1821         ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  1822         # Add the pthread compiler flags and libraries
  1823         CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  1824         # Check to see if we have pthread support on this system
  1825         AC_MSG_CHECKING(for pthreads)
  1826         use_pthreads=no
  1827         AC_TRY_LINK([
  1828          #include <pthread.h>
  1829         ],[
  1830          pthread_attr_t type;
  1831          pthread_attr_init(&type);
  1832         ],[
  1833         use_pthreads=yes
  1834         ])
  1835         AC_MSG_RESULT($use_pthreads)
  1836         # Restore the compiler flags and libraries
  1837         CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  1838 
  1839         # Do futher testing if we have pthread support...
  1840         if test x$use_pthreads = xyes; then
  1841             AC_DEFINE(SDL_THREAD_PTHREAD, 1, [ ])
  1842             EXTRA_CFLAGS="$EXTRA_CFLAGS $pthread_cflags"
  1843             EXTRA_LDFLAGS="$EXTRA_LDFLAGS $pthread_lib"
  1844             SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags"
  1845             SDL_LIBS="$SDL_LIBS $pthread_lib"
  1846 
  1847             # Save the original compiler flags and libraries
  1848             ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  1849             # Add the pthread compiler flags and libraries
  1850             CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  1851 
  1852             # Check to see if recursive mutexes are available
  1853             AC_MSG_CHECKING(for recursive mutexes)
  1854             has_recursive_mutexes=no
  1855             if test x$has_recursive_mutexes = xno; then
  1856                 AC_TRY_COMPILE([
  1857                   #include <pthread.h>
  1858                 ],[
  1859                   pthread_mutexattr_t attr;
  1860                   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  1861                 ],[
  1862                 has_recursive_mutexes=yes
  1863                 AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX, 1, [ ])
  1864                 ])
  1865             fi
  1866             if test x$has_recursive_mutexes = xno; then
  1867                 AC_TRY_COMPILE([
  1868                   #include <pthread.h>
  1869                 ],[
  1870                   pthread_mutexattr_t attr;
  1871                   pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
  1872                 ],[
  1873                 has_recursive_mutexes=yes
  1874                 AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP, 1, [ ])
  1875                 ])
  1876             fi
  1877             AC_MSG_RESULT($has_recursive_mutexes)
  1878 
  1879             # Check to see if pthread semaphore support is missing
  1880             if test x$enable_pthread_sem = xyes; then
  1881                 AC_MSG_CHECKING(for pthread semaphores)
  1882                 have_pthread_sem=no
  1883                 AC_TRY_COMPILE([
  1884                   #include <pthread.h>
  1885                   #include <semaphore.h>
  1886                 ],[
  1887                 ],[
  1888                 have_pthread_sem=yes
  1889                 ])
  1890                 AC_MSG_RESULT($have_pthread_sem)
  1891             fi
  1892             if test x$have_pthread_sem = xyes; then
  1893                 AC_MSG_CHECKING(for sem_timedwait)
  1894                 have_sem_timedwait=no
  1895                 AC_TRY_LINK([
  1896                   #include <pthread.h>
  1897                   #include <semaphore.h>
  1898                 ],[
  1899                   sem_timedwait(NULL, NULL);
  1900                 ],[
  1901                 have_sem_timedwait=yes
  1902                 AC_DEFINE(HAVE_SEM_TIMEDWAIT)
  1903                 ])
  1904                 AC_MSG_RESULT($have_sem_timedwait)
  1905             fi
  1906 
  1907             AC_MSG_CHECKING(for pthread_spin_trylock)
  1908             AC_TRY_LINK_FUNC(pthread_spin_trylock, [
  1909               has_pthread_spin_trylock=yes
  1910               AC_DEFINE(HAVE_PTHREAD_SPINLOCK, 1, [ ])
  1911             ],[
  1912               has_pthread_spin_trylock=no
  1913             ])
  1914             AC_MSG_RESULT($has_pthread_spin_trylock)
  1915 
  1916             AC_CHECK_HEADER(pthread_np.h, have_pthread_np_h=yes, have_pthread_np_h=no, [ #include <pthread.h> ])
  1917             if test x$have_pthread_np_h = xyes; then
  1918                 AC_DEFINE(HAVE_PTHREAD_NP_H, 1, [ ])
  1919             fi
  1920 
  1921             # Check to see if pthread naming is available
  1922             AC_MSG_CHECKING(for pthread_setname_np)
  1923             AC_TRY_LINK_FUNC(pthread_setname_np, [
  1924               has_pthread_setname_np=yes
  1925               AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [ ])
  1926             ],[
  1927               has_pthread_setname_np=no
  1928             ])
  1929             AC_MSG_RESULT($has_pthread_setname_np)
  1930 
  1931             AC_MSG_CHECKING(for pthread_set_name_np)
  1932             AC_TRY_LINK_FUNC(pthread_set_name_np, [
  1933               has_pthread_set_name_np=yes
  1934               AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [ ])
  1935             ],[
  1936               has_pthread_set_name_np=no
  1937             ])
  1938             AC_MSG_RESULT($has_pthread_set_name_np)
  1939 
  1940             # Restore the compiler flags and libraries
  1941             CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  1942 
  1943             # Basic thread creation functions
  1944             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c"
  1945 
  1946             # Semaphores
  1947             # We can fake these with mutexes and condition variables if necessary
  1948             if test x$have_pthread_sem = xyes; then
  1949                 SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syssem.c"
  1950             else
  1951                 SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
  1952             fi
  1953 
  1954             # Mutexes
  1955             # We can fake these with semaphores if necessary
  1956             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_sysmutex.c"
  1957 
  1958             # Condition variables
  1959             # We can fake these with semaphores and mutexes if necessary
  1960             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syscond.c"
  1961 
  1962             have_threads=yes
  1963         fi
  1964     fi
  1965 }
  1966 
  1967 dnl Determine whether the compiler can produce Windows executables
  1968 CheckWINDOWS()
  1969 {
  1970     AC_MSG_CHECKING(Windows compiler)
  1971     have_win32_gcc=no
  1972     AC_TRY_COMPILE([
  1973      #include <windows.h>
  1974     ],[
  1975     ],[
  1976     have_win32_gcc=yes
  1977     ])
  1978     AC_MSG_RESULT($have_win32_gcc)
  1979     if test x$have_win32_gcc != xyes; then
  1980        AC_MSG_ERROR([
  1981 *** Your compiler ($CC) does not produce Windows executables!
  1982        ])
  1983     fi
  1984 
  1985     AC_MSG_CHECKING(Windows CE)
  1986     have_wince=no
  1987     AC_TRY_COMPILE([
  1988 #if !defined(_WIN32_WCE) && !defined(__MINGW32CE__)
  1989 #error This is not Windows CE
  1990 #endif
  1991     ],[
  1992     ],[
  1993     have_wince=yes
  1994        AC_MSG_ERROR([
  1995 *** Sorry, Windows CE is no longer supported.
  1996        ])
  1997     ])
  1998     AC_MSG_RESULT($have_wince)
  1999 
  2000     # This fixes Windows stack alignment with newer GCC
  2001     CheckStackBoundary
  2002 }
  2003 
  2004 dnl Find the DirectX includes and libraries
  2005 CheckDIRECTX()
  2006 {
  2007     AC_ARG_ENABLE(directx,
  2008 AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[default=yes]]]),
  2009                   , enable_directx=yes)
  2010     if test x$enable_directx = xyes; then
  2011         AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
  2012         AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
  2013         AC_CHECK_HEADER(dsound.h, have_dsound=yes)
  2014         AC_CHECK_HEADER(dinput.h, have_dinput=yes)
  2015         AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes)
  2016 
  2017         # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers.
  2018         # FIXME:  ...so force it off for now.
  2019         case "$host" in
  2020             *-*-cygwin*)
  2021             have_dinput=false
  2022             ;;
  2023         esac
  2024     fi
  2025 }
  2026 
  2027 dnl Check for the dlfcn.h interface for dynamically loading objects
  2028 CheckDLOPEN()
  2029 {
  2030     AC_ARG_ENABLE(sdl-dlopen,
  2031 AC_HELP_STRING([--enable-sdl-dlopen], [use dlopen for shared object loading [[default=yes]]]),
  2032                   , enable_sdl_dlopen=yes)
  2033     if test x$enable_sdl_dlopen = xyes; then
  2034         AC_MSG_CHECKING(for dlopen)
  2035         have_dlopen=no
  2036         AC_TRY_COMPILE([
  2037          #include <dlfcn.h>
  2038         ],[
  2039          #if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED <= 1020
  2040          #error Use dlcompat for Mac OS X 10.2 compatibility
  2041          #endif
  2042         ],[
  2043         have_dlopen=yes
  2044         ])
  2045         AC_MSG_RESULT($have_dlopen)
  2046 
  2047         if test x$have_dlopen = xyes; then
  2048             AC_CHECK_LIB(c, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS",
  2049                AC_CHECK_LIB(dl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl",
  2050                   AC_CHECK_LIB(ltdl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lltdl")))
  2051             AC_DEFINE(SDL_LOADSO_DLOPEN, 1, [ ])
  2052             SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
  2053             have_loadso=yes
  2054         fi
  2055     fi
  2056 }
  2057 
  2058 dnl Check for the usbhid(3) library on *BSD
  2059 CheckUSBHID()
  2060 {
  2061     if test x$enable_joystick = xyes; then
  2062         AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
  2063         if test x$have_libusbhid = xyes; then
  2064             AC_CHECK_HEADER(usbhid.h, [USB_CFLAGS="-DHAVE_USBHID_H"])
  2065             AC_CHECK_HEADER(libusbhid.h, [USB_CFLAGS="-DHAVE_LIBUSBHID_H"])
  2066             USB_LIBS="$USB_LIBS -lusbhid"
  2067         else
  2068             AC_CHECK_HEADER(usb.h, [USB_CFLAGS="-DHAVE_USB_H"])
  2069             AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
  2070             AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
  2071         fi
  2072             
  2073         save_CFLAGS="$CFLAGS"
  2074         CFLAGS="$CFLAGS $USB_CFLAGS"
  2075 
  2076         AC_MSG_CHECKING(for usbhid)
  2077         have_usbhid=no
  2078         AC_TRY_COMPILE([
  2079           #include <sys/types.h>
  2080           #if defined(HAVE_USB_H)
  2081           #include <usb.h>
  2082           #endif
  2083           #ifdef __DragonFly__
  2084           # include <bus/usb/usb.h>
  2085           # include <bus/usb/usbhid.h>
  2086           #else
  2087           # include <dev/usb/usb.h>
  2088           # include <dev/usb/usbhid.h>
  2089           #endif
  2090           #if defined(HAVE_USBHID_H)
  2091           #include <usbhid.h>
  2092           #elif defined(HAVE_LIBUSB_H)
  2093           #include <libusb.h>
  2094           #elif defined(HAVE_LIBUSBHID_H)
  2095           #include <libusbhid.h>
  2096           #endif
  2097         ],[
  2098           struct report_desc *repdesc;
  2099           struct usb_ctl_report *repbuf;
  2100           hid_kind_t hidkind;
  2101         ],[
  2102         have_usbhid=yes
  2103         ])
  2104         AC_MSG_RESULT($have_usbhid)
  2105 
  2106         if test x$have_usbhid = xyes; then
  2107             AC_MSG_CHECKING(for ucr_data member of usb_ctl_report)
  2108             have_usbhid_ucr_data=no
  2109             AC_TRY_COMPILE([
  2110               #include <sys/types.h>
  2111               #if defined(HAVE_USB_H)
  2112               #include <usb.h>
  2113               #endif
  2114               #ifdef __DragonFly__
  2115               # include <bus/usb/usb.h>
  2116               # include <bus/usb/usbhid.h>
  2117               #else
  2118               # include <dev/usb/usb.h>
  2119               # include <dev/usb/usbhid.h>
  2120               #endif
  2121               #if defined(HAVE_USBHID_H)
  2122               #include <usbhid.h>
  2123               #elif defined(HAVE_LIBUSB_H)
  2124               #include <libusb.h>
  2125               #elif defined(HAVE_LIBUSBHID_H)
  2126               #include <libusbhid.h>
  2127               #endif
  2128             ],[
  2129               struct usb_ctl_report buf;
  2130               if (buf.ucr_data) { }
  2131             ],[
  2132             have_usbhid_ucr_data=yes
  2133             ])
  2134             if test x$have_usbhid_ucr_data = xyes; then
  2135                 USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
  2136             fi
  2137             AC_MSG_RESULT($have_usbhid_ucr_data)
  2138             
  2139             AC_MSG_CHECKING(for new usbhid API)
  2140             have_usbhid_new=no
  2141             AC_TRY_COMPILE([
  2142               #include <sys/types.h>
  2143               #if defined(HAVE_USB_H)
  2144               #include <usb.h>
  2145               #endif
  2146               #ifdef __DragonFly__
  2147               #include <bus/usb/usb.h>
  2148               #include <bus/usb/usbhid.h>
  2149               #else
  2150               #include <dev/usb/usb.h>
  2151               #include <dev/usb/usbhid.h>
  2152               #endif
  2153               #if defined(HAVE_USBHID_H)
  2154               #include <usbhid.h>
  2155               #elif defined(HAVE_LIBUSB_H)
  2156               #include <libusb.h>
  2157               #elif defined(HAVE_LIBUSBHID_H)
  2158               #include <libusbhid.h>
  2159               #endif
  2160             ],[
  2161               report_desc_t d;
  2162               hid_start_parse(d, 1, 1);
  2163             ],[
  2164             have_usbhid_new=yes
  2165             ])
  2166             if test x$have_usbhid_new = xyes; then
  2167                 USB_CFLAGS="$USB_CFLAGS -DUSBHID_NEW"
  2168             fi
  2169             AC_MSG_RESULT($have_usbhid_new)
  2170 
  2171             AC_MSG_CHECKING(for struct joystick in machine/joystick.h)
  2172             have_machine_joystick=no
  2173             AC_TRY_COMPILE([
  2174               #include <machine/joystick.h>
  2175             ],[
  2176               struct joystick t;
  2177             ],[
  2178             have_machine_joystick=yes
  2179             ])
  2180             if test x$have_machine_joystick = xyes; then
  2181                 AC_DEFINE(SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H, 1, [ ])
  2182             fi
  2183             AC_MSG_RESULT($have_machine_joystick)
  2184 
  2185             AC_DEFINE(SDL_JOYSTICK_USBHID, 1, [ ])
  2186             SOURCES="$SOURCES $srcdir/src/joystick/bsd/*.c"
  2187             EXTRA_CFLAGS="$EXTRA_CFLAGS $USB_CFLAGS"
  2188             EXTRA_LDFLAGS="$EXTRA_LDFLAGS $USB_LIBS"
  2189             have_joystick=yes
  2190         fi
  2191         CFLAGS="$save_CFLAGS"
  2192     fi
  2193 }
  2194 
  2195 dnl Check for clock_gettime()
  2196 CheckClockGettime()
  2197 {
  2198     AC_ARG_ENABLE(clock_gettime,
  2199 AC_HELP_STRING([--enable-clock_gettime], [use clock_gettime() instead of gettimeofday() on UNIX [[default=yes]]]),
  2200                   , enable_clock_gettime=yes)
  2201     if test x$enable_clock_gettime = xyes; then
  2202         AC_CHECK_LIB(rt, clock_gettime, have_clock_gettime=yes)
  2203         if test x$have_clock_gettime = xyes; then
  2204             AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  2205             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lrt"
  2206         else
  2207             AC_CHECK_LIB(c, clock_gettime, have_clock_gettime=yes)
  2208             if test x$have_clock_gettime = xyes; then
  2209                AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  2210                EXTRA_LDFLAGS="$EXTRA_LDFLAGS"
  2211             fi
  2212         fi
  2213     fi
  2214 }
  2215 
  2216 dnl Check for a valid linux/version.h
  2217 CheckLinuxVersion()
  2218 {
  2219     AC_CHECK_HEADER(linux/version.h, have_linux_version_h=yes)
  2220     if test x$have_linux_version_h = xyes; then
  2221         EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_LINUX_VERSION_H"
  2222     fi
  2223 }
  2224 
  2225 dnl Check if we want to use RPATH
  2226 CheckRPATH()
  2227 {
  2228     AC_ARG_ENABLE(rpath,
  2229 AC_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [[default=yes]]]),
  2230                   , enable_rpath=yes)
  2231 }
  2232 
  2233 dnl Set up the configuration based on the host platform!
  2234 case "$host" in
  2235     *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*)
  2236         case "$host" in
  2237             *-*-linux*)         ARCH=linux ;;
  2238             *-*-uclinux*)       ARCH=linux ;;
  2239             *-*-kfreebsd*-gnu)  ARCH=kfreebsd-gnu ;;
  2240             *-*-knetbsd*-gnu)   ARCH=knetbsd-gnu ;;
  2241             *-*-kopenbsd*-gnu)  ARCH=kopenbsd-gnu ;;
  2242             *-*-gnu*)           ARCH=gnu ;; # must be last of the gnu variants
  2243             *-*-bsdi*)          ARCH=bsdi ;;
  2244             *-*-freebsd*)       ARCH=freebsd ;;
  2245             *-*-dragonfly*)     ARCH=freebsd ;;
  2246             *-*-netbsd*)        ARCH=netbsd ;;
  2247             *-*-openbsd*)       ARCH=openbsd ;;
  2248             *-*-sysv5*)         ARCH=sysv5 ;;
  2249             *-*-solaris*)       ARCH=solaris ;;
  2250             *-*-hpux*)          ARCH=hpux ;;
  2251             *-*-aix*)           ARCH=aix ;;
  2252             *-*-minix*)         ARCH=minix ;;
  2253         esac
  2254         CheckVisibilityHidden
  2255         CheckDummyVideo
  2256         CheckDiskAudio
  2257         CheckDummyAudio
  2258         CheckDLOPEN
  2259         CheckOSS
  2260         CheckALSA
  2261         CheckPulseAudio
  2262         CheckARTSC
  2263         CheckESD
  2264         CheckNAS
  2265         CheckX11
  2266         CheckDirectFB
  2267         CheckFusionSound
  2268         CheckOpenGLX11
  2269         CheckOpenGLESX11
  2270         CheckLibUDev
  2271         CheckDBus
  2272         CheckInputEvents
  2273         CheckTslib
  2274         CheckUSBHID
  2275         CheckPTHREAD
  2276         CheckClockGettime
  2277         CheckLinuxVersion
  2278         CheckRPATH
  2279         # Set up files for the audio library
  2280         if test x$enable_audio = xyes; then
  2281           case $ARCH in
  2282             sysv5|solaris|hpux)
  2283                 AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
  2284                 SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
  2285                 have_audio=yes
  2286             ;;
  2287             netbsd|openbsd)
  2288                 AC_DEFINE(SDL_AUDIO_DRIVER_BSD, 1, [ ])
  2289                 SOURCES="$SOURCES $srcdir/src/audio/bsd/*.c"
  2290                 have_audio=yes
  2291             ;;
  2292             aix)
  2293                 AC_DEFINE(SDL_AUDIO_DRIVER_PAUDIO, 1, [ ])
  2294                 SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c"
  2295                 have_audio=yes
  2296             ;;
  2297           esac
  2298         fi
  2299         # Set up files for the joystick library
  2300         if test x$enable_joystick = xyes; then
  2301           case $ARCH in
  2302             linux)
  2303                 AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
  2304                 SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
  2305                 have_joystick=yes
  2306             ;;
  2307           esac
  2308         fi
  2309         # Set up files for the haptic library
  2310         if test x$enable_haptic = xyes; then
  2311            if test x$use_input_events = xyes; then
  2312              case $ARCH in
  2313                linux)
  2314                    AC_DEFINE(SDL_HAPTIC_LINUX, 1, [ ])
  2315                    SOURCES="$SOURCES $srcdir/src/haptic/linux/*.c"
  2316                    have_haptic=yes
  2317                ;;
  2318              esac
  2319            fi
  2320         fi
  2321         # Set up files for the power library
  2322         if test x$enable_power = xyes; then
  2323              case $ARCH in
  2324                linux)
  2325                    AC_DEFINE(SDL_POWER_LINUX, 1, [ ])
  2326                    SOURCES="$SOURCES $srcdir/src/power/linux/*.c"
  2327                    have_power=yes
  2328                ;;
  2329              esac
  2330         fi
  2331         # Set up files for the timer library
  2332         if test x$enable_timers = xyes; then
  2333             AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  2334             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2335             have_timers=yes
  2336         fi
  2337         ;;
  2338     *-*-cygwin* | *-*-mingw32*)
  2339         ARCH=win32
  2340         if test "$build" != "$host"; then # cross-compiling
  2341             # Default cross-compile location
  2342             ac_default_prefix=/usr/local/cross-tools/$host
  2343         else
  2344             # Look for the location of the tools and install there
  2345             if test "$BUILD_PREFIX" != ""; then
  2346                 ac_default_prefix=$BUILD_PREFIX
  2347             fi
  2348         fi
  2349         CheckDummyVideo
  2350         CheckDiskAudio
  2351         CheckDummyAudio
  2352         CheckWINDOWS
  2353         CheckWINDOWSGL
  2354         CheckDIRECTX
  2355 
  2356         # Set up the core platform files
  2357         SOURCES="$SOURCES $srcdir/src/core/windows/*.c"
  2358 
  2359         # Set up files for the video library
  2360         if test x$enable_video = xyes; then
  2361             AC_DEFINE(SDL_VIDEO_DRIVER_WINDOWS, 1, [ ])
  2362             SOURCES="$SOURCES $srcdir/src/video/windows/*.c"
  2363             have_video=yes
  2364             AC_ARG_ENABLE(render-d3d,
  2365 AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[default=yes]]]),
  2366                                 , enable_render_d3d=yes)
  2367             if test x$enable_render_d3d = xyes -a x$have_d3d = xyes; then
  2368                 AC_DEFINE(SDL_VIDEO_RENDER_D3D, 1, [ ])
  2369             fi
  2370         fi
  2371         # Set up files for the audio library
  2372         if test x$enable_audio = xyes; then
  2373             AC_DEFINE(SDL_AUDIO_DRIVER_WINMM, 1, [ ])
  2374             SOURCES="$SOURCES $srcdir/src/audio/winmm/*.c"
  2375             if test x$have_dsound = xyes; then
  2376                 AC_DEFINE(SDL_AUDIO_DRIVER_DSOUND, 1, [ ])
  2377                 SOURCES="$SOURCES $srcdir/src/audio/directsound/*.c"
  2378             fi
  2379             if test x$have_xaudio2 = xyes; then
  2380                 AC_DEFINE(SDL_AUDIO_DRIVER_XAUDIO2, 1, [ ])
  2381                 SOURCES="$SOURCES $srcdir/src/audio/xaudio2/*.c"
  2382             fi
  2383             have_audio=yes
  2384         fi
  2385         # Set up files for the joystick library
  2386         if test x$enable_joystick = xyes; then
  2387             if test x$have_dinput = xyes; then
  2388                 AC_DEFINE(SDL_JOYSTICK_DINPUT, 1, [ ])
  2389                 SOURCES="$SOURCES $srcdir/src/joystick/windows/SDL_dxjoystick.c"
  2390                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldinput8 -ldxguid -ldxerr8"
  2391             else
  2392                 AC_DEFINE(SDL_JOYSTICK_WINMM, 1, [ ])
  2393                 SOURCES="$SOURCES $srcdir/src/joystick/windows/SDL_mmjoystick.c"
  2394             fi
  2395             have_joystick=yes
  2396         fi
  2397         if test x$enable_haptic = xyes; then
  2398             if test x$have_dinput = xyes; then
  2399                 AC_DEFINE(SDL_HAPTIC_DINPUT, 1, [ ])
  2400                 SOURCES="$SOURCES $srcdir/src/haptic/windows/SDL_syshaptic.c"
  2401                 have_haptic=yes
  2402             fi
  2403         fi
  2404         if test x$enable_power = xyes; then
  2405             AC_DEFINE(SDL_POWER_WINDOWS, 1, [ ])
  2406             SOURCES="$SOURCES $srcdir/src/power/windows/SDL_syspower.c"
  2407             have_power=yes
  2408         fi
  2409         # Set up files for the thread library
  2410         if test x$enable_threads = xyes; then
  2411             AC_DEFINE(SDL_THREAD_WINDOWS, 1, [ ])
  2412             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_sysmutex.c"
  2413             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_syssem.c"
  2414             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_systhread.c"
  2415             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  2416             have_threads=yes
  2417         fi
  2418         # Set up files for the timer library
  2419         if test x$enable_timers = xyes; then
  2420             AC_DEFINE(SDL_TIMER_WINDOWS, 1, [ ])
  2421             SOURCES="$SOURCES $srcdir/src/timer/windows/*.c"
  2422             have_timers=yes
  2423         fi
  2424         # Set up files for the shared object loading library
  2425         if test x$enable_loadso = xyes; then
  2426             AC_DEFINE(SDL_LOADSO_WINDOWS, 1, [ ])
  2427             SOURCES="$SOURCES $srcdir/src/loadso/windows/*.c"
  2428             have_loadso=yes
  2429         fi
  2430         # Set up the system libraries we need
  2431         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc"
  2432         # The Windows platform requires special setup
  2433         VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
  2434         SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
  2435         SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
  2436         SDL_LIBS="-lmingw32 -lSDL2main $SDL_LIBS -mwindows"
  2437         ;;
  2438     *-*-beos* | *-*-haiku*)
  2439         ARCH=beos
  2440         ac_default_prefix=/boot/common
  2441         CheckDummyVideo
  2442         CheckDiskAudio
  2443         CheckDummyAudio
  2444         CheckBWINDOW
  2445         CheckBeGL
  2446         # Set up files for the audio library
  2447         if test x$enable_audio = xyes; then
  2448             AC_DEFINE(SDL_AUDIO_DRIVER_BEOSAUDIO, 1, [ ])
  2449             SOURCES="$SOURCES $srcdir/src/audio/baudio/*.cc"
  2450             have_audio=yes
  2451         fi
  2452         # Set up files for the joystick library
  2453         if test x$enable_joystick = xyes; then
  2454             AC_DEFINE(SDL_JOYSTICK_BEOS, 1, [ ])
  2455             SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc"
  2456             have_joystick=yes
  2457         fi
  2458         # Set up files for the thread library
  2459         if test x$enable_threads = xyes; then
  2460             AC_DEFINE(SDL_THREAD_BEOS, 1, [ ])
  2461             SOURCES="$SOURCES $srcdir/src/thread/beos/*.c"
  2462             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c"
  2463             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  2464             have_threads=yes
  2465         fi
  2466         # Set up files for the timer library
  2467         if test x$enable_timers = xyes; then
  2468             AC_DEFINE(SDL_TIMER_BEOS, 1, [ ])
  2469             SOURCES="$SOURCES $srcdir/src/timer/beos/*.c"
  2470             have_timers=yes
  2471         fi
  2472         # Set up files for the shared object loading library
  2473         if test x$enable_loadso = xyes; then
  2474             AC_DEFINE(SDL_LOADSO_BEOS, 1, [ ])
  2475             SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c"
  2476             have_loadso=yes
  2477         fi
  2478         # Set up files for the system power library
  2479         if test x$enable_power = xyes; then
  2480             AC_DEFINE(SDL_POWER_BEOS, 1, [ ])
  2481             SOURCES="$SOURCES $srcdir/src/power/beos/*.c"
  2482             have_power=yes
  2483         fi
  2484         # The BeOS platform requires special setup.
  2485         SOURCES="$srcdir/src/main/beos/*.cc $SOURCES"
  2486         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
  2487         ;;
  2488     arm*-apple-darwin*)
  2489         # iOS - We are not writing anything to confdefs.h because you have to replace
  2490         # SDL_config.h for SDL_config_iphoneos.h anyway
  2491         ARCH=ios
  2492 
  2493         CheckVisibilityHidden
  2494         CheckDummyVideo
  2495         CheckDiskAudio
  2496         CheckDummyAudio
  2497         CheckDLOPEN
  2498         CheckCOCOA
  2499         CheckPTHREAD
  2500 
  2501 
  2502         # Set up files for the audio library
  2503         if test x$enable_audio = xyes; then
  2504             SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.c"
  2505             have_audio=yes
  2506         fi
  2507         # Set up files for the joystick library
  2508         if test x$enable_joystick = xyes; then
  2509             SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
  2510             have_joystick=yes
  2511         fi
  2512         # Set up files for the haptic library
  2513         #if test x$enable_haptic = xyes; then
  2514         #    SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  2515         #    have_haptic=yes
  2516         #    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  2517         #fi
  2518         # Set up files for the power library
  2519         if test x$enable_power = xyes; then
  2520             SOURCES="$SOURCES $srcdir/src/power/uikit/*.m"
  2521             have_power=yes
  2522         fi
  2523         # Set up files for the timer library
  2524         if test x$enable_timers = xyes; then
  2525             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2526             have_timers=yes
  2527         fi
  2528         # Set up additional files for the file library
  2529         if test x$enable_file = xyes; then
  2530             SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  2531         fi
  2532         # The iOS platform requires special setup.
  2533         SOURCES="$SOURCES $srcdir/src/video/uikit/*.m"
  2534         SOURCES="$SOURCES $srcdir/src/video/uikit/*.c"
  2535         EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
  2536         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm -liconv -lobjc"
  2537         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Foundation"
  2538         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,UIKit"
  2539         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGLES"
  2540         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore"
  2541         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio"
  2542         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox"
  2543         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreGraphics"
  2544         ;;
  2545     *-*-darwin* )
  2546         # This could be either full "Mac OS X", or plain "Darwin" which is
  2547         # just the OS X kernel sans upper layers like Carbon and Cocoa.
  2548         # Next line is broken, and a few files below require Mac OS X (full)
  2549         ARCH=macosx
  2550 
  2551         # Mac OS X builds with both the Carbon and OSX APIs at the moment
  2552         EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_CARBON"
  2553         EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"
  2554 
  2555         CheckVisibilityHidden
  2556         CheckDummyVideo
  2557         CheckDiskAudio
  2558         CheckDummyAudio
  2559         CheckDLOPEN
  2560         CheckCOCOA
  2561         CheckX11
  2562         CheckMacGL
  2563         CheckOpenGLX11
  2564         CheckPTHREAD
  2565 
  2566         # Good optimization on Mac OS X, yes...
  2567         EXTRA_CFLAGS="$EXTRA_CFLAGS -falign-loops=16"
  2568 
  2569         # Need this or things might misbuild on a G3.
  2570         EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL"
  2571 
  2572         # Set up files for the audio library
  2573         if test x$enable_audio = xyes; then
  2574             AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
  2575             SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.c"
  2576             have_audio=yes
  2577         fi
  2578         # Set up files for the joystick library
  2579         if test x$enable_joystick = xyes; then
  2580             AC_DEFINE(SDL_JOYSTICK_IOKIT, 1, [ ])
  2581             SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
  2582             have_joystick=yes
  2583         fi
  2584         # Set up files for the haptic library
  2585         if test x$enable_haptic = xyes; then
  2586             AC_DEFINE(SDL_HAPTIC_IOKIT, 1, [ ])
  2587             SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  2588             have_haptic=yes
  2589             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  2590         fi
  2591         # Set up files for the power library
  2592         if test x$enable_power = xyes; then
  2593             AC_DEFINE(SDL_POWER_MACOSX, 1, [ ])
  2594             SOURCES="$SOURCES $srcdir/src/power/macosx/*.c"
  2595             have_power=yes
  2596         fi
  2597         # Set up files for the timer library
  2598         if test x$enable_timers = xyes; then
  2599             AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  2600             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2601             have_timers=yes
  2602         fi
  2603         # Set up additional files for the file library
  2604         if test x$enable_file = xyes; then
  2605             SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  2606         fi
  2607         # The Mac OS X platform requires special setup.
  2608         EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
  2609         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lobjc"
  2610         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
  2611         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
  2612         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
  2613         # If audio is used, add the AudioUnit framework
  2614         if test x$enable_audio = xyes; then
  2615             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit"
  2616         fi
  2617         ;;
  2618     *)
  2619         AC_MSG_ERROR([
  2620 *** Unsupported host:  Please add to configure.in
  2621         ])
  2622         ;;
  2623 esac
  2624 
  2625 dnl Do this on all platforms, after everything else.
  2626 CheckWarnAll
  2627 
  2628 # Verify that we have all the platform specific files we need
  2629 
  2630 if test x$have_joystick != xyes; then
  2631     if test x$enable_joystick = xyes; then
  2632         AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
  2633     fi
  2634     SOURCES="$SOURCES $srcdir/src/joystick/dummy/*.c"
  2635 fi
  2636 if test x$have_haptic != xyes; then
  2637     if test x$enable_haptic = xyes; then
  2638         AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
  2639     fi
  2640     SOURCES="$SOURCES $srcdir/src/haptic/dummy/*.c"
  2641 fi
  2642 if test x$have_threads != xyes; then
  2643     if test x$enable_threads = xyes; then
  2644         AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
  2645     fi
  2646     SOURCES="$SOURCES $srcdir/src/thread/generic/*.c"
  2647 fi
  2648 if test x$have_timers != xyes; then
  2649     if test x$enable_timers = xyes; then
  2650         AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
  2651     fi
  2652     SOURCES="$SOURCES $srcdir/src/timer/dummy/*.c"
  2653 fi
  2654 if test x$have_loadso != xyes; then
  2655     if test x$enable_loadso = xyes; then
  2656         AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
  2657     fi
  2658     SOURCES="$SOURCES $srcdir/src/loadso/dummy/*.c"
  2659 fi
  2660 if test x$SDLMAIN_SOURCES = x; then
  2661     SDLMAIN_SOURCES="$srcdir/src/main/dummy/*.c"
  2662 fi
  2663 SDLTEST_SOURCES="$srcdir/src/test/*.c"
  2664 
  2665 OBJECTS=`echo $SOURCES`
  2666 DEPENDS=`echo $SOURCES | tr ' ' '\n'`
  2667 for EXT in asm cc m c S; do
  2668     OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'`
  2669     DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\
  2670 \\$(objects)/\\2.lo: \\1/\\2.$EXT\\\\
  2671 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2672 done
  2673 
  2674 VERSION_OBJECTS=`echo $VERSION_SOURCES`
  2675 VERSION_DEPENDS=`echo $VERSION_SOURCES`
  2676 VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.o,g'`
  2677 VERSION_DEPENDS=`echo "$VERSION_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.rc,\\\\
  2678 \\$(objects)/\\2.o: \\1/\\2.rc\\\\
  2679 	\\$(WINDRES) \\$< \\$@,g"`
  2680 
  2681 SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
  2682 SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
  2683 SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
  2684 SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  2685 \\$(objects)/\\2.o: \\1/\\2.c\\\\
  2686 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2687 
  2688 SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES`
  2689 SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES`
  2690 SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
  2691 SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  2692 \\$(objects)/\\2.o: \\1/\\2.c\\\\
  2693 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2694 
  2695 # Set runtime shared library paths as needed
  2696 
  2697 if test "x$enable_rpath" = "xyes"; then
  2698   if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = linux -o $ARCH = netbsd; then
  2699     SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
  2700   fi
  2701   if test $ARCH = solaris; then
  2702     SDL_RLD_FLAGS="-R\${libdir}"
  2703   fi
  2704 else
  2705   SDL_RLD_FLAGS=""
  2706 fi
  2707 
  2708 SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
  2709 
  2710 dnl Expand the cflags and libraries needed by apps using SDL
  2711 AC_SUBST(SDL_CFLAGS)
  2712 AC_SUBST(SDL_LIBS)
  2713 AC_SUBST(SDL_STATIC_LIBS)
  2714 AC_SUBST(SDL_RLD_FLAGS)
  2715 if test x$enable_shared = xyes; then
  2716     ENABLE_SHARED_TRUE=
  2717     ENABLE_SHARED_FALSE="#"
  2718 else
  2719     ENABLE_SHARED_TRUE="#"
  2720     ENABLE_SHARED_FALSE=
  2721 fi
  2722 if test x$enable_static = xyes; then
  2723     ENABLE_STATIC_TRUE=
  2724     ENABLE_STATIC_FALSE="#"
  2725 else
  2726     ENABLE_STATIC_TRUE="#"
  2727     ENABLE_STATIC_FALSE=
  2728 fi
  2729 AC_SUBST(ENABLE_SHARED_TRUE)
  2730 AC_SUBST(ENABLE_SHARED_FALSE)
  2731 AC_SUBST(ENABLE_STATIC_TRUE)
  2732 AC_SUBST(ENABLE_STATIC_FALSE)
  2733 
  2734 dnl Expand the sources and objects needed to build the library
  2735 AC_SUBST(ac_aux_dir)
  2736 AC_SUBST(INCLUDE)
  2737 AC_SUBST(OBJECTS)
  2738 AC_SUBST(VERSION_OBJECTS)
  2739 AC_SUBST(SDLMAIN_OBJECTS)
  2740 AC_SUBST(SDLTEST_OBJECTS)
  2741 AC_SUBST(BUILD_CFLAGS)
  2742 AC_SUBST(EXTRA_CFLAGS)
  2743 AC_SUBST(BUILD_LDFLAGS)
  2744 AC_SUBST(EXTRA_LDFLAGS)
  2745 AC_SUBST(WINDRES)
  2746 
  2747 cat >Makefile.rules <<__EOF__
  2748 
  2749 # Build rules for objects
  2750 -include \$(OBJECTS:.lo=.d)
  2751 
  2752 # Special dependency for SDL.c, since it depends on SDL_revision.h
  2753 $srcdir/src/SDL.c: update-revision
  2754 $DEPENDS
  2755 $VERSION_DEPENDS
  2756 $SDLMAIN_DEPENDS
  2757 $SDLTEST_DEPENDS
  2758 __EOF__
  2759 
  2760 AC_CONFIG_FILES([
  2761     Makefile:Makefile.in:Makefile.rules sdl2-config SDL2.spec sdl2.pc
  2762 ])
  2763 AC_OUTPUT
  2764 chmod a+x sdl2-config