configure.in
author Ryan C. Gordon <icculus@icculus.org>
Sun, 07 Jul 2013 02:03:07 -0400
changeset 7367 d6eabafa8776
parent 7307 5d6b7b9432d3
child 7379 b27c778a2bdb
permissions -rw-r--r--
Added an SDL2 OpenBSD sndio(7) audio target.
     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 See if the sndio audio interface is supported
   914 CheckSNDIO()
   915 {
   916     AC_ARG_ENABLE(sndio,
   917 AC_HELP_STRING([--enable-sndio], [support the sndio audio API [[default=yes]]]),
   918                   , enable_sndio=yes)
   919     if test x$enable_audio = xyes -a x$enable_sndio = xyes; then
   920         AC_CHECK_HEADER(sndio.h, have_sndio_hdr=yes)
   921         AC_CHECK_LIB(sndio, sio_open, have_sndio_lib=yes)
   922 
   923         AC_MSG_CHECKING(for sndio audio support)
   924         have_sndio=no
   925 
   926         if test x$have_sndio_hdr = xyes -a x$have_sndio_lib = xyes; then
   927             have_sndio=yes
   928             SNDIO_LIBS="-lsndio"
   929         fi
   930 
   931         AC_MSG_RESULT($have_sndio)
   932 
   933         if test x$have_sndio = xyes; then
   934             AC_ARG_ENABLE(sndio-shared,
   935 AC_HELP_STRING([--enable-sndio-shared], [dynamically load sndio audio support [[default=yes]]]),
   936                           , enable_sndio_shared=yes)
   937             sndio_lib=[`find_lib "libsndio.so.*" "$SNDIO_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
   938 
   939             if test x$have_loadso != xyes && \
   940                test x$enable_sndio_shared = xyes; then
   941                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic sndio loading])
   942             fi
   943             if test x$have_loadso = xyes && \
   944                test x$enable_sndio_shared = xyes && test x$sndio_lib != x; then
   945                 echo "-- dynamic libsndio -> $sndio_lib"
   946                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC, "$sndio_lib", [ ])
   947             else
   948                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS"
   949             fi
   950 
   951             AC_DEFINE(SDL_AUDIO_DRIVER_SNDIO, 1, [ ])
   952             SOURCES="$SOURCES $srcdir/src/audio/sndio/*.c"
   953             EXTRA_CFLAGS="$EXTRA_CFLAGS $SNDIO_CFLAGS"
   954             have_audio=yes
   955         fi
   956     fi
   957 }
   958 
   959 dnl rcg07142001 See if the user wants the disk writer audio driver...
   960 CheckDiskAudio()
   961 {
   962     AC_ARG_ENABLE(diskaudio,
   963 AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [[default=yes]]]),
   964                   , enable_diskaudio=yes)
   965     if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then
   966         AC_DEFINE(SDL_AUDIO_DRIVER_DISK, 1, [ ])
   967         SOURCES="$SOURCES $srcdir/src/audio/disk/*.c"
   968     fi
   969 }
   970 
   971 dnl rcg03142006 See if the user wants the dummy audio driver...
   972 CheckDummyAudio()
   973 {
   974     AC_ARG_ENABLE(dummyaudio,
   975 AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [[default=yes]]]),
   976                   , enable_dummyaudio=yes)
   977     if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then
   978         AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ])
   979         SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c"
   980     fi
   981 }
   982 
   983 dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
   984 dnl  Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
   985 CheckVisibilityHidden()
   986 {
   987     AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
   988     have_gcc_fvisibility=no
   989 
   990     visibility_CFLAGS="-fvisibility=hidden"
   991     save_CFLAGS="$CFLAGS"
   992     CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
   993     AC_TRY_COMPILE([
   994     #if !defined(__GNUC__) || __GNUC__ < 4
   995     #error SDL only uses visibility attributes in GCC 4 or newer
   996     #endif
   997     ],[
   998     ],[
   999     have_gcc_fvisibility=yes
  1000     ])
  1001     AC_MSG_RESULT($have_gcc_fvisibility)
  1002     CFLAGS="$save_CFLAGS"
  1003 
  1004     if test x$have_gcc_fvisibility = xyes; then
  1005         EXTRA_CFLAGS="$EXTRA_CFLAGS $visibility_CFLAGS"
  1006     fi
  1007 }
  1008 
  1009 dnl See if GCC's -mpreferred-stack-boundary is supported.
  1010 dnl  Reference: http://bugzilla.libsdl.org/show_bug.cgi?id=1296
  1011 CheckStackBoundary()
  1012 {
  1013     AC_MSG_CHECKING(for GCC -mpreferred-stack-boundary option)
  1014     have_gcc_preferred_stack_boundary=no
  1015 
  1016     save_CFLAGS="$CFLAGS"
  1017     CFLAGS="$save_CFLAGS -mpreferred-stack-boundary=2"
  1018     AC_TRY_COMPILE([
  1019     int x = 0;
  1020     ],[
  1021     ],[
  1022     have_gcc_preferred_stack_boundary=yes
  1023     ])
  1024     AC_MSG_RESULT($have_gcc_preferred_stack_boundary)
  1025     CFLAGS="$save_CFLAGS"
  1026 
  1027     if test x$have_gcc_preferred_stack_boundary = xyes; then
  1028         EXTRA_CFLAGS="$EXTRA_CFLAGS -mpreferred-stack-boundary=2"
  1029     fi
  1030 }
  1031 
  1032 
  1033 dnl See if GCC's -Wall is supported.
  1034 CheckWarnAll()
  1035 {
  1036     AC_MSG_CHECKING(for GCC -Wall option)
  1037     have_gcc_Wall=no
  1038 
  1039     save_CFLAGS="$CFLAGS"
  1040     CFLAGS="$save_CFLAGS -Wall"
  1041     AC_TRY_COMPILE([
  1042     int x = 0;
  1043     ],[
  1044     ],[
  1045     have_gcc_Wall=yes
  1046     ])
  1047     AC_MSG_RESULT($have_gcc_Wall)
  1048     CFLAGS="$save_CFLAGS"
  1049 
  1050     if test x$have_gcc_Wall = xyes; then
  1051         EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
  1052 
  1053         dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
  1054         AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
  1055         need_gcc_Wno_multichar=no
  1056         case "$host" in
  1057             *-*-beos* | *-*-haiku*)
  1058                 need_gcc_Wno_multichar=yes
  1059                 ;;
  1060         esac
  1061         AC_MSG_RESULT($need_gcc_Wno_multichar)
  1062         if test x$need_gcc_Wno_multichar = xyes; then
  1063             EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-multichar"
  1064         fi
  1065     fi
  1066 }
  1067 
  1068 
  1069 dnl Find the X11 include and library directories
  1070 CheckX11()
  1071 {
  1072 
  1073 
  1074     AC_ARG_ENABLE(video-x11,
  1075 AC_HELP_STRING([--enable-video-x11], [use X11 video driver [[default=yes]]]),
  1076                   , enable_video_x11=yes)
  1077     if test x$enable_video = xyes -a x$enable_video_x11 = xyes; then
  1078         case "$host" in
  1079             *-*-darwin*)
  1080                 # This isn't necessary for X11, but fixes GLX detection
  1081                 if test "x$x_includes" = xNONE && \
  1082                    test "x$x_libraries" = xNONE && \
  1083                    test -d /usr/X11R6/include && \
  1084                    test -d /usr/X11R6/lib; then
  1085                     x_includes="/usr/X11R6/include"
  1086                     x_libraries="/usr/X11R6/lib"
  1087                 fi
  1088                 ;;
  1089         esac
  1090         AC_PATH_X
  1091         AC_PATH_XTRA
  1092         if test x$have_x = xyes; then
  1093             # Only allow dynamically loaded X11 if the X11 function pointers
  1094             # will not end up in the global namespace, which causes problems
  1095             # with other libraries calling X11 functions.
  1096             x11_symbols_private=$have_gcc_fvisibility
  1097 
  1098             AC_ARG_ENABLE(x11-shared,
  1099 AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=maybe]]]),
  1100                           , enable_x11_shared=maybe)
  1101 
  1102             case "$host" in
  1103                 *-*-darwin*)
  1104                     x11_symbols_private=yes
  1105                     x11_lib='/usr/X11R6/lib/libX11.6.dylib'
  1106                     x11ext_lib='/usr/X11R6/lib/libXext.6.dylib'
  1107                     xcursor_lib='/usr/X11R6/lib/libXcursor.1.dylib'
  1108                     xinerama_lib='/usr/X11R6/lib/libXinerama.1.dylib'
  1109                     xinput_lib='/usr/X11R6/lib/libXi.6.dylib'
  1110                     xrandr_lib='/usr/X11R6/lib/libXrandr.2.dylib'
  1111                     xrender_lib='/usr/X11R6/lib/libXrender.1.dylib'
  1112                     xss_lib='/usr/X11R6/lib/libXss.1.dylib'
  1113                     xvidmode_lib='/usr/X11R6/lib/libXxf86vm.1.dylib'
  1114                     ;;
  1115                 *-*-openbsd*)
  1116                     x11_lib='libX11.so'
  1117                     x11ext_lib='libXext.so'
  1118                     xcursor_lib='libXcursor.so'
  1119                     xinerama_lib='libXinerama.so'
  1120                     xinput_lib='libXi.so'
  1121                     xrandr_lib='libXrandr.so'
  1122                     xrender_lib='libXrender.so'
  1123                     xss_lib='libXss.so'
  1124                     xvidmode_lib='libXxf86vm.so'
  1125                     ;;
  1126                 *)
  1127                     x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1128                     x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1129                     xcursor_lib=[`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1130                     xinerama_lib=[`find_lib "libXinerama.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1131                     xinput_lib=[`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1132                     xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1133                     xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1134                     xss_lib=[`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1135                     xvidmode_lib=[`find_lib "libXxf86vm.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
  1136                     ;;
  1137             esac
  1138 
  1139             if test x$ac_cv_func_shmat != xyes; then
  1140                 X_CFLAGS="$X_CFLAGS -DNO_SHARED_MEMORY"
  1141             fi
  1142             CFLAGS="$CFLAGS $X_CFLAGS"
  1143             LDFLAGS="$LDFLAGS $X_LIBS"
  1144 
  1145             AC_DEFINE(SDL_VIDEO_DRIVER_X11, 1, [ ])
  1146             SOURCES="$SOURCES $srcdir/src/video/x11/*.c"
  1147             EXTRA_CFLAGS="$EXTRA_CFLAGS $X_CFLAGS"
  1148 
  1149             if test x$enable_x11_shared = xmaybe; then
  1150                 enable_x11_shared=$x11_symbols_private
  1151             fi
  1152             if test x$have_loadso != xyes && \
  1153                test x$enable_x11_shared = xyes; then
  1154                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading])
  1155                 enable_x11_shared=no
  1156             fi
  1157             if test x$x11_symbols_private != xyes && \
  1158                test x$enable_x11_shared = xyes; then
  1159                 AC_MSG_WARN([You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading])
  1160                 enable_x11_shared=no
  1161             fi
  1162 
  1163             if test x$have_loadso = xyes && \
  1164                test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then
  1165                 echo "-- dynamic libX11 -> $x11_lib"
  1166                 echo "-- dynamic libX11ext -> $x11ext_lib"
  1167                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib", [ ])
  1168                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib", [ ])
  1169             else
  1170                 enable_x11_shared=no
  1171                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext"
  1172             fi
  1173             have_video=yes
  1174 
  1175             AC_MSG_CHECKING(for const parameter to XextAddDisplay)
  1176             have_const_param_XextAddDisplay=no
  1177             AC_TRY_COMPILE([
  1178               #include <X11/Xlib.h>
  1179               #include <X11/Xproto.h>
  1180               #include <X11/extensions/Xext.h>
  1181               #include <X11/extensions/extutil.h>
  1182               extern XExtDisplayInfo* XextAddDisplay(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f);
  1183             ],[
  1184             ],[
  1185             have_const_param_XextAddDisplay=yes
  1186             AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY)
  1187             ])
  1188             AC_MSG_RESULT($have_const_param_XextAddDisplay)
  1189 
  1190             AC_MSG_CHECKING(for const parameter to _XData32)
  1191 	    have_const_param_xdata32=no
  1192 	    AC_TRY_COMPILE([
  1193 	      #include <X11/Xlibint.h>
  1194 	      extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len);
  1195 	    ],[
  1196 	    ],[
  1197 	    have_const_param_xdata32=yes
  1198 	    AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32)
  1199 	    ])
  1200 	    AC_MSG_RESULT($have_const_param_xdata32)
  1201 
  1202             dnl AC_CHECK_LIB(X11, XGetEventData, AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS, 1, [Have XGenericEvent]))
  1203             AC_MSG_CHECKING([for XGenericEvent])
  1204             have_XGenericEvent=no
  1205             AC_TRY_COMPILE([
  1206               	#include <X11/Xlib.h>
  1207             ],[
  1208 Display *display;
  1209 XEvent event;
  1210 XGenericEventCookie *cookie = &event.xcookie;
  1211 XNextEvent(display, &event);
  1212 XGetEventData(display, cookie);
  1213 XFreeEventData(display, cookie);
  1214             ],[
  1215                 have_XGenericEvent=yes
  1216                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS)
  1217             ])
  1218             AC_MSG_RESULT($have_XGenericEvent)
  1219 
  1220             AC_CHECK_LIB(X11, XkbKeycodeToKeysym, AC_DEFINE(SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM, 1, [Have XkbKeycodeToKeysym]))
  1221 
  1222             AC_ARG_ENABLE(video-x11-xcursor,
  1223 AC_HELP_STRING([--enable-video-x11-xcursor], [enable X11 Xcursor support [[default=yes]]]),
  1224                             , enable_video_x11_xcursor=yes)
  1225             if test x$enable_video_x11_xcursor = xyes; then
  1226                 definitely_enable_video_x11_xcursor=no
  1227                 AC_CHECK_HEADER(X11/Xcursor/Xcursor.h,
  1228                                 have_xcursor_h_hdr=yes,
  1229                                 have_xcursor_h_hdr=no,
  1230                                 [#include <X11/Xlib.h>
  1231                                 ])
  1232                 if test x$have_xcursor_h_hdr = xyes; then
  1233                     if test x$enable_x11_shared = xyes && test x$xcursor_lib != x ; then
  1234                         echo "-- dynamic libXcursor -> $xcursor_lib"
  1235                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR, "$xcursor_lib", [ ])
  1236                         definitely_enable_video_x11_xcursor=yes
  1237                     else
  1238                         AC_CHECK_LIB(Xcursor, XcursorImageCreate, have_xcursor_lib=yes)
  1239                         if test x$have_xcursor_lib = xyes ; then
  1240                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXcursor"
  1241                             definitely_enable_video_x11_xcursor=yes
  1242                         fi
  1243                     fi
  1244                 fi
  1245             fi
  1246             if test x$definitely_enable_video_x11_xcursor = xyes; then
  1247                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XCURSOR, 1, [ ])
  1248             fi
  1249             AC_ARG_ENABLE(video-x11-xinerama,
  1250 AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[default=yes]]]),
  1251                             , enable_video_x11_xinerama=yes)
  1252             if test x$enable_video_x11_xinerama = xyes; then
  1253                 definitely_enable_video_x11_xinerama=no
  1254                 AC_CHECK_HEADER(X11/extensions/Xinerama.h,
  1255                                 have_xinerama_h_hdr=yes,
  1256                                 have_xinerama_h_hdr=no,
  1257                                 [#include <X11/Xlib.h>
  1258                                 ])
  1259                 if test x$have_xinerama_h_hdr = xyes; then
  1260                     if test x$enable_x11_shared = xyes && test x$xinerama_lib != x ; then
  1261                         echo "-- dynamic libXinerama -> $xinerama_lib"
  1262                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA, "$xinerama_lib", [ ])
  1263                         definitely_enable_video_x11_xinerama=yes
  1264                     else
  1265                         AC_CHECK_LIB(Xinerama, XineramaQueryExtension, have_xinerama_lib=yes)
  1266                         if test x$have_xinerama_lib = xyes ; then
  1267                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXinerama"
  1268                             definitely_enable_video_x11_xinerama=yes
  1269                         fi
  1270                     fi
  1271                 fi
  1272             fi
  1273             if test x$definitely_enable_video_x11_xinerama = xyes; then
  1274                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA, 1, [ ])
  1275             fi
  1276             AC_ARG_ENABLE(video-x11-xinput,
  1277 AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [[default=yes]]]),
  1278                             , enable_video_x11_xinput=yes)
  1279             if test x$enable_video_x11_xinput = xyes; then
  1280                 definitely_enable_video_x11_xinput=no
  1281                 AC_CHECK_HEADER(X11/extensions/XInput2.h,
  1282                                 have_xinput_h_hdr=yes,
  1283                                 have_xinput_h_hdr=no,
  1284                                 [#include <X11/Xlib.h>
  1285                                 ])
  1286                 if test x$have_xinput_h_hdr = xyes; then
  1287                     if test x$enable_x11_shared = xyes && test x$xinput_lib != x ; then
  1288                         echo "-- dynamic libXi -> $xinput_lib"
  1289                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2, "$xinput_lib", [ ])
  1290                         definitely_enable_video_x11_xinput=yes
  1291                     else
  1292                         AC_CHECK_LIB(Xi, XOpenDevice, have_xinput_lib=yes)
  1293                         if test x$have_xinput_lib = xyes ; then
  1294                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXi"
  1295                             definitely_enable_video_x11_xinput=yes
  1296                         fi
  1297                     fi
  1298                 fi
  1299             fi
  1300             if test x$definitely_enable_video_x11_xinput = xyes; then
  1301                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2, 1, [ ])
  1302                 AC_MSG_CHECKING(for xinput2 multitouch)
  1303             	have_xinput2_multitouch=no
  1304             	AC_TRY_COMPILE([
  1305               		#include <X11/Xlib.h>
  1306              		#include <X11/Xproto.h>
  1307 			#include <X11/extensions/XInput2.h>
  1308             	],[
  1309 int event_type = XI_TouchBegin;
  1310 XITouchClassInfo *t;
  1311 Status 
  1312 XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f)
  1313 {
  1314     return (Status)0;
  1315 }
  1316             	],[
  1317             	have_xinput2_multitouch=yes
  1318             	AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH)
  1319             	])
  1320             	AC_MSG_RESULT($have_xinput2_multitouch)
  1321             fi
  1322             AC_ARG_ENABLE(video-x11-xrandr,
  1323 AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [[default=yes]]]),
  1324                             , enable_video_x11_xrandr=yes)
  1325             if test x$enable_video_x11_xrandr = xyes; then
  1326                 definitely_enable_video_x11_xrandr=no
  1327                 AC_CHECK_HEADER(X11/extensions/Xrandr.h,
  1328                                 have_xrandr_h_hdr=yes,
  1329                                 have_xrandr_h_hdr=no,
  1330                                 [#include <X11/Xlib.h>
  1331                                 ])
  1332                 if test x$have_xrandr_h_hdr = xyes; then
  1333                     if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
  1334                         echo "-- dynamic libXrandr -> $xrandr_lib"
  1335                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib", [ ])
  1336                         definitely_enable_video_x11_xrandr=yes
  1337                     else
  1338                         AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
  1339                         if test x$have_xrandr_lib = xyes ; then
  1340                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr"
  1341                             definitely_enable_video_x11_xrandr=yes
  1342                         fi
  1343                     fi
  1344                 fi
  1345             fi
  1346             if test x$definitely_enable_video_x11_xrandr = xyes; then
  1347                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR, 1, [ ])
  1348             fi
  1349             AC_ARG_ENABLE(video-x11-scrnsaver,
  1350 AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension [[default=yes]]]),
  1351                             , enable_video_x11_scrnsaver=yes)
  1352             if test x$enable_video_x11_scrnsaver = xyes; then
  1353                 AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
  1354                                 have_scrnsaver_h_hdr=yes,
  1355                                 have_scrnsaver_h_hdr=no,
  1356                                 [#include <X11/Xlib.h>
  1357                                 ])
  1358                 if test x$have_scrnsaver_h_hdr = xyes; then
  1359                     if test x$enable_x11_shared = xyes && test x$xss_lib != x ; then
  1360                         echo "-- dynamic libXss -> $xss_lib"
  1361                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS, "$xss_lib", [ ])
  1362                         definitely_enable_video_x11_scrnsaver=yes
  1363                     else
  1364                         AC_CHECK_LIB(Xss, XScreenSaverSuspend, have_xss_lib=yes)
  1365                         if test x$have_xss_lib = xyes ; then
  1366                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXss"
  1367                             definitely_enable_video_x11_scrnsaver=yes
  1368                         fi
  1369                     fi
  1370                 fi
  1371             fi
  1372             if test x$definitely_enable_video_x11_scrnsaver = xyes; then
  1373                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSCRNSAVER, 1, [ ])
  1374             fi
  1375             AC_ARG_ENABLE(video-x11-xshape,
  1376 AC_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [[default=yes]]]),
  1377                             , enable_video_x11_xshape=yes)
  1378             if test x$enable_video_x11_xshape = xyes; then
  1379                 AC_CHECK_HEADER(X11/extensions/shape.h,
  1380                                 have_shape_h_hdr=yes,
  1381                                 have_shape_h_hdr=no,
  1382                                 [#include <X11/Xlib.h>
  1383                                 ])
  1384                 if test x$have_shape_h_hdr = xyes; then
  1385                     AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSHAPE, 1, [ ])
  1386                 fi
  1387             fi
  1388             AC_ARG_ENABLE(video-x11-vm,
  1389 AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[default=yes]]]),
  1390                             , enable_video_x11_vm=yes)
  1391             if test x$enable_video_x11_vm = xyes; then
  1392                 definitely_enable_video_x11_vm=no
  1393                 AC_CHECK_HEADER(X11/extensions/xf86vmode.h,
  1394                                 have_vm_h_hdr=yes,
  1395                                 have_vm_h_hdr=no,
  1396                                 [#include <X11/Xlib.h>
  1397                                 ])
  1398                 if test x$have_vm_h_hdr = xyes; then
  1399                     if test x$enable_x11_shared = xyes && test x$xvidmode_lib != x ; then
  1400                         echo "-- dynamic libXxf86vm -> $xvidmode_lib"
  1401                         AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE, "$xvidmode_lib", [ ])
  1402                         definitely_enable_video_x11_vm=yes
  1403                     else
  1404                         AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, have_vm_lib=yes)
  1405                         if test x$have_vm_lib = xyes ; then
  1406                             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXxf86vm"
  1407                             definitely_enable_video_x11_vm=yes
  1408                         fi
  1409                     fi
  1410                 fi
  1411             fi
  1412             if test x$definitely_enable_video_x11_vm = xyes; then
  1413                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XVIDMODE, 1, [ ])
  1414             fi
  1415         fi
  1416     fi
  1417 }
  1418 
  1419 dnl Set up the BWindow video driver if enabled
  1420 CheckBWINDOW()
  1421 {
  1422     if test x$enable_video = xyes; then
  1423         AC_DEFINE(SDL_VIDEO_DRIVER_BWINDOW, 1, [ ])
  1424         SOURCES="$SOURCES $srcdir/src/video/bwindow/*.cc"
  1425         have_video=yes
  1426     fi
  1427 }
  1428 
  1429 dnl Set up the Cocoa video driver for Mac OS X (but not Darwin)
  1430 CheckCOCOA()
  1431 {
  1432     AC_ARG_ENABLE(video-cocoa,
  1433 AC_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [[default=yes]]]),
  1434                   , enable_video_cocoa=yes)
  1435     if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then
  1436         save_CFLAGS="$CFLAGS"
  1437         dnl work around that we don't have Objective-C support in autoconf
  1438         CFLAGS="$CFLAGS -x objective-c"
  1439         AC_MSG_CHECKING(for Cocoa framework)
  1440         have_cocoa=no
  1441         AC_TRY_COMPILE([
  1442           #import <Cocoa/Cocoa.h>
  1443         ],[
  1444         ],[
  1445         have_cocoa=yes
  1446         ])
  1447         AC_MSG_RESULT($have_cocoa)
  1448         CFLAGS="$save_CFLAGS"
  1449         if test x$have_cocoa = xyes; then
  1450             AC_DEFINE(SDL_VIDEO_DRIVER_COCOA, 1, [ ])
  1451             SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m"
  1452             have_video=yes
  1453         fi
  1454     fi
  1455 }
  1456 
  1457 dnl Find DirectFB
  1458 CheckDirectFB()
  1459 {
  1460     AC_ARG_ENABLE(video-directfb,
  1461 AC_HELP_STRING([--enable-video-directfb], [use DirectFB video driver [[default=no]]]),
  1462                   , enable_video_directfb=no)
  1463     if test x$enable_video = xyes -a x$enable_video_directfb = xyes; then
  1464         video_directfb=no
  1465 
  1466         DIRECTFB_REQUIRED_VERSION=1.0.0
  1467         AC_PATH_PROGS(DIRECTFBCONFIG, directfb-config, no, [$prefix/bin:$PATH])
  1468         if test x$DIRECTFBCONFIG = xno; then
  1469             AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1470             if test x$PKG_CONFIG != xno; then
  1471                 if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb; then
  1472                     DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags directfb`
  1473                     DIRECTFB_LIBS=`$PKG_CONFIG --libs directfb`
  1474                     DIRECTFB_PREFIX=`$PKG_CONFIG --variable=prefix directfb`
  1475                     video_directfb=yes
  1476                 fi
  1477             fi
  1478         else
  1479             set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'`
  1480             NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
  1481             set -- `$DIRECTFBCONFIG --version | sed 's/\./ /g'`
  1482             HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3`
  1483             if test $HAVE_VERSION -ge $NEED_VERSION; then
  1484                 DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags`
  1485                 DIRECTFB_LIBS=`$DIRECTFBCONFIG --libs`
  1486                 DIRECTFB_PREFIX=`$DIRECTFBCONFIG --prefix`
  1487                 video_directfb=yes
  1488             fi
  1489         fi
  1490         if test x$video_directfb = xyes; then
  1491             # SuSE 11.1 installs directfb-config without directfb-devel
  1492             save_CPPFLAGS="$CPPFLAGS"
  1493             CPPFLAGS="$CPPFLAGS $DIRECTFB_CFLAGS"
  1494             AC_CHECK_HEADER(directfb.h, have_directfb_hdr=yes, have_directfb_hdr=no)
  1495             CPPFLAGS="$save_CPPFLAGS"
  1496             video_directfb=$have_directfb_hdr
  1497         fi
  1498         AC_MSG_CHECKING(for DirectFB $DIRECTFB_REQUIRED_VERSION support)
  1499         AC_MSG_RESULT($video_directfb)
  1500 
  1501         if test x$video_directfb = xyes; then
  1502             AC_ARG_ENABLE(directfb-shared,
  1503 AC_HELP_STRING([--enable-directfb-shared], [dynamically load directfb support [[default=yes]]]),
  1504                               , enable_directfb_shared=yes)
  1505 
  1506             AC_DEFINE(SDL_VIDEO_DRIVER_DIRECTFB, 1, [ ])
  1507             AC_DEFINE(SDL_VIDEO_RENDER_DIRECTFB, 1, [ ])
  1508             SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
  1509             EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
  1510 
  1511             AC_MSG_CHECKING(for directfb dynamic loading support)
  1512             directfb_shared=no
  1513             directfb_lib=[`find_lib "libdirectfb.so.*" "$DIRECTFB_LIBS"`]
  1514             # | sed 's/.*\/\(.*\)/\1/; q'`]
  1515 AC_MSG_WARN("directfb $directfb_lib")
  1516             if test x$have_loadso != xyes && \
  1517                test x$enable_directfb_shared = xyes; then
  1518                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic directfb loading])
  1519             fi
  1520             if test x$have_loadso = xyes && \
  1521                test x$enable_directfb_shared = xyes && test x$directfb_lib != x; then
  1522                 directfb_shared=yes
  1523                 echo "-- $directfb_lib_spec -> $directfb_lib"
  1524                 AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ])
  1525             else
  1526                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS"
  1527             fi
  1528             AC_MSG_RESULT($directfb_shared)
  1529             have_video=yes
  1530         fi
  1531     fi
  1532 }
  1533 
  1534 dnl Find FusionSound
  1535 CheckFusionSound()
  1536 {
  1537     AC_ARG_ENABLE(fusionsound,
  1538 AC_HELP_STRING([--enable-fusionsound], [use FusionSound audio driver [[default=no]]]),
  1539                   , enable_fusionsound=no)
  1540     if test x$enable_audio = xyes -a x$enable_fusionsound = xyes; then
  1541         fusionsound=no
  1542 
  1543         FUSIONSOUND_REQUIRED_VERSION=1.1.1
  1544 
  1545         AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1546         AC_MSG_CHECKING(for FusionSound $FUSIONSOUND_REQUIRED_VERSION support)
  1547         if test x$PKG_CONFIG != xno; then
  1548             if $PKG_CONFIG --atleast-pkgconfig-version 0.7 && $PKG_CONFIG --atleast-version $FUSIONSOUND_REQUIRED_VERSION fusionsound; then
  1549                 FUSIONSOUND_CFLAGS=`$PKG_CONFIG --cflags fusionsound`
  1550                 FUSIONSOUND_LIBS=`$PKG_CONFIG --libs fusionsound`
  1551                 fusionsound=yes
  1552             fi
  1553         fi
  1554         AC_MSG_RESULT($fusionsound)
  1555 
  1556         if test x$fusionsound = xyes; then
  1557             AC_DEFINE(SDL_AUDIO_DRIVER_FUSIONSOUND, 1, [ ])
  1558             SOURCES="$SOURCES $srcdir/src/audio/fusionsound/*.c"
  1559             EXTRA_CFLAGS="$EXTRA_CFLAGS $FUSIONSOUND_CFLAGS"
  1560             
  1561             AC_ARG_ENABLE(fusionsound-shared,
  1562 AC_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audio support [[default=yes]]]),
  1563                           , enable_fusionsound_shared=yes)
  1564             fusionsound_shared=no
  1565             AC_MSG_CHECKING(for FusionSound dynamic loading support)
  1566             if test x$have_loadso != xyes && \
  1567                test x$enable_fusionsound_shared = xyes; then
  1568                 AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic fusionsound loading])
  1569             fi
  1570             if test x$have_loadso = xyes && \
  1571                test x$enable_fusionsound_shared = xyes; then
  1572                 AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC, "libfusionsound.so", [ ])
  1573                 fusionsound_shared=yes
  1574             else
  1575                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS"
  1576             fi
  1577             AC_MSG_RESULT($fusionsound_shared)
  1578             
  1579             have_audio=yes
  1580         fi
  1581     fi
  1582 }
  1583 
  1584 dnl rcg04172001 Set up the Null video driver.
  1585 CheckDummyVideo()
  1586 {
  1587     AC_ARG_ENABLE(video-dummy,
  1588 AC_HELP_STRING([--enable-video-dummy], [use dummy video driver [[default=yes]]]),
  1589                   , enable_video_dummy=yes)
  1590     if test x$enable_video_dummy = xyes; then
  1591         AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ])
  1592         SOURCES="$SOURCES $srcdir/src/video/dummy/*.c"
  1593         have_video=yes
  1594     fi
  1595 }
  1596 
  1597 dnl Check to see if OpenGL support is desired
  1598 AC_ARG_ENABLE(video-opengl,
  1599 AC_HELP_STRING([--enable-video-opengl], [include OpenGL support [[default=yes]]]),
  1600               , enable_video_opengl=yes)
  1601 
  1602 dnl Find OpenGL
  1603 CheckOpenGLX11()
  1604 {
  1605     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1606         AC_MSG_CHECKING(for OpenGL (GLX) support)
  1607         video_opengl=no
  1608         AC_TRY_COMPILE([
  1609          #include <GL/gl.h>
  1610          #include <GL/glx.h>
  1611         ],[
  1612         ],[
  1613         video_opengl=yes
  1614         ])
  1615         AC_MSG_RESULT($video_opengl)
  1616         if test x$video_opengl = xyes; then
  1617             AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1618             AC_DEFINE(SDL_VIDEO_OPENGL_GLX, 1, [ ])
  1619             AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1620         fi
  1621     fi
  1622 }
  1623 
  1624 dnl Check to see if OpenGL ES support is desired
  1625 AC_ARG_ENABLE(video-opengles,
  1626 AC_HELP_STRING([--enable-video-opengles], [include OpenGL ES support [[default=yes]]]),
  1627               , enable_video_opengles=yes)
  1628 
  1629 dnl Find OpenGL ES
  1630 CheckOpenGLESX11()
  1631 {
  1632     if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then
  1633         AC_MSG_CHECKING(for OpenGL ES (EGL) support)
  1634         video_opengles=no
  1635         AC_TRY_COMPILE([
  1636          #include <EGL/egl.h>
  1637         ],[
  1638         ],[
  1639         video_opengles=yes
  1640         ])
  1641         AC_MSG_RESULT($video_opengles)
  1642         if test x$video_opengles = xyes; then
  1643             AC_MSG_CHECKING(for OpenGL ES v1 headers)
  1644             video_opengles_v1=no
  1645             AC_TRY_COMPILE([
  1646              #include <GLES/gl.h>
  1647              #include <GLES/glext.h>
  1648             ],[
  1649             ],[
  1650             video_opengles_v1=yes
  1651             ])
  1652             AC_MSG_RESULT($video_opengles_v1)
  1653             if test x$video_opengles_v1 = xyes; then
  1654                 AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ])
  1655                 AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ])
  1656             fi
  1657             AC_MSG_CHECKING(for OpenGL ES v2 headers)
  1658             video_opengles_v2=no
  1659             AC_TRY_COMPILE([
  1660              #include <GLES2/gl2.h>
  1661              #include <GLES2/gl2ext.h>
  1662             ],[
  1663             ],[
  1664             video_opengles_v2=yes
  1665             ])
  1666             AC_MSG_RESULT($video_opengles_v2)
  1667             if test x$video_opengles_v2 = xyes; then
  1668                 AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ])
  1669                 AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ])
  1670             fi
  1671         fi
  1672     fi
  1673 }
  1674 
  1675 dnl Check for Windows OpenGL
  1676 CheckWINDOWSGL()
  1677 {
  1678     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1679         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1680         AC_DEFINE(SDL_VIDEO_OPENGL_WGL, 1, [ ])
  1681         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1682     fi
  1683 }
  1684 
  1685 dnl Check for BeOS OpenGL
  1686 CheckBeGL()
  1687 {
  1688     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1689         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1690         AC_DEFINE(SDL_VIDEO_OPENGL_BGL, 1, [ ])
  1691         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1692         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL"
  1693     fi
  1694 }
  1695 
  1696 dnl Check for MacOS OpenGL
  1697 CheckMacGL()
  1698 {
  1699     if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then
  1700         AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ])
  1701         AC_DEFINE(SDL_VIDEO_OPENGL_CGL, 1, [ ])
  1702         AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ])
  1703         case "$host" in
  1704             *-*-darwin*)
  1705                 if test x$enable_video_cocoa = xyes; then
  1706                     EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGL"
  1707                 fi
  1708         esac
  1709     fi
  1710 }
  1711 
  1712 dnl See if we can use the new unified event interface in Linux 2.4
  1713 CheckInputEvents()
  1714 {
  1715     dnl Check for Linux 2.4 unified input event interface support
  1716         AC_MSG_CHECKING(for Linux 2.4 unified input interface)
  1717         use_input_events=no
  1718         AC_TRY_COMPILE([
  1719           #include <linux/input.h>
  1720         ],[
  1721           #ifndef EVIOCGNAME
  1722           #error EVIOCGNAME() ioctl not available
  1723           #endif
  1724         ],[
  1725         use_input_events=yes
  1726         ])
  1727         AC_MSG_RESULT($use_input_events)
  1728         if test x$use_input_events = xyes; then
  1729             AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ])
  1730         fi
  1731 }
  1732 
  1733 dnl See if the platform offers libudev for device enumeration and hotplugging.
  1734 CheckLibUDev()
  1735 {
  1736     AC_ARG_ENABLE(libudev,
  1737 AC_HELP_STRING([--enable-libudev], [enable libudev support [[default=yes]]]),
  1738                         , enable_libudev=yes)
  1739     if test x$enable_libudev = xyes; then
  1740         AC_CHECK_HEADER(libudev.h,
  1741                         have_libudev_h_hdr=yes,
  1742                         have_libudev_h_hdr=no)
  1743         if test x$have_libudev_h_hdr = xyes; then
  1744             AC_DEFINE(HAVE_LIBUDEV_H, 1, [ ])
  1745         fi
  1746     fi
  1747 }
  1748 
  1749 dnl See if the platform offers libdbus for various IPC techniques.
  1750 CheckDBus()
  1751 {
  1752     AC_ARG_ENABLE(dbus,
  1753 AC_HELP_STRING([--enable-dbus], [enable D-Bus support [[default=yes]]]),
  1754                         , enable_dbus=yes)
  1755     if test x$enable_dbus = xyes; then
  1756         AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
  1757         if test x$PKG_CONFIG != xno; then
  1758             DBUS_CFLAGS=`$PKG_CONFIG --cflags dbus-1`
  1759             save_CFLAGS="$CFLAGS"
  1760             CFLAGS="$save_CFLAGS $DBUS_CFLAGS"
  1761             AC_CHECK_HEADER(dbus/dbus.h,
  1762                             have_dbus_dbus_h_hdr=yes,
  1763                             have_dbus_dbus_h_hdr=no)
  1764             CFLAGS="$save_CFLAGS"
  1765             if test x$have_dbus_dbus_h_hdr = xyes; then
  1766                 AC_DEFINE(HAVE_DBUS_DBUS_H, 1, [ ])
  1767                 EXTRA_CFLAGS="$EXTRA_CFLAGS $DBUS_CFLAGS"
  1768             fi
  1769         fi
  1770     fi
  1771 }
  1772 
  1773 dnl See if we can use the Touchscreen input library
  1774 CheckTslib()
  1775 {
  1776     AC_ARG_ENABLE(input-tslib,
  1777 AC_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[default=yes]]]),
  1778                   , enable_input_tslib=yes)
  1779     if test x$enable_input_tslib = xyes; then
  1780         AC_MSG_CHECKING(for Touchscreen library support)
  1781         enable_input_tslib=no
  1782         AC_TRY_COMPILE([
  1783           #include "tslib.h"
  1784         ],[
  1785         ],[
  1786         enable_input_tslib=yes
  1787         ])
  1788         AC_MSG_RESULT($enable_input_tslib)
  1789         if test x$enable_input_tslib = xyes; then
  1790             AC_DEFINE(SDL_INPUT_TSLIB, 1, [ ])
  1791             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts"
  1792         fi
  1793     fi
  1794 }
  1795 
  1796 dnl See what type of thread model to use on Linux and Solaris
  1797 CheckPTHREAD()
  1798 {
  1799     dnl Check for pthread support
  1800     AC_ARG_ENABLE(pthreads,
  1801 AC_HELP_STRING([--enable-pthreads], [use POSIX threads for multi-threading [[default=yes]]]),
  1802                   , enable_pthreads=yes)
  1803     dnl This is used on Linux for glibc binary compatibility (Doh!)
  1804     AC_ARG_ENABLE(pthread-sem,
  1805 AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]),
  1806                   , enable_pthread_sem=yes)
  1807     case "$host" in
  1808         *-*-linux*|*-*-uclinux*)
  1809             pthread_cflags="-D_REENTRANT"
  1810             pthread_lib="-lpthread"
  1811             ;;
  1812         *-*-bsdi*)
  1813             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1814             pthread_lib=""
  1815             ;;
  1816         *-*-darwin*)
  1817             pthread_cflags="-D_THREAD_SAFE"
  1818 # causes Carbon.p complaints?
  1819 #            pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1820             ;;
  1821         *-*-freebsd*|*-*-dragonfly*)
  1822             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1823             pthread_lib="-pthread"
  1824             ;;
  1825         *-*-netbsd*)
  1826             pthread_cflags="-D_REENTRANT -D_THREAD_SAFE"
  1827             pthread_lib="-lpthread"
  1828             ;;
  1829         *-*-openbsd*)
  1830             pthread_cflags="-D_REENTRANT"
  1831             pthread_lib="-pthread"
  1832             ;;
  1833         *-*-solaris2.9)
  1834             # From Solaris 9+, posix4's preferred name is rt.
  1835             pthread_cflags="-D_REENTRANT"
  1836             pthread_lib="-lpthread -lrt"
  1837             ;;
  1838         *-*-solaris2.10)
  1839             # Solaris 10+ merged pthread into libc.
  1840             pthread_cflags="-D_REENTRANT"
  1841             pthread_lib="-lrt"
  1842             ;;
  1843         *-*-solaris*)
  1844             # Solaris 11+ merged rt into libc.
  1845             pthread_cflags="-D_REENTRANT"
  1846             pthread_lib=""
  1847             ;;
  1848         *-*-sysv5*)
  1849             pthread_cflags="-D_REENTRANT -Kthread"
  1850             pthread_lib=""
  1851             ;;
  1852         *-*-aix*)
  1853             pthread_cflags="-D_REENTRANT -mthreads"
  1854             pthread_lib="-lpthread"
  1855             ;;
  1856         *-*-hpux11*)
  1857             pthread_cflags="-D_REENTRANT"
  1858             pthread_lib="-L/usr/lib -lpthread"
  1859             ;;
  1860         *)
  1861             pthread_cflags="-D_REENTRANT"
  1862             pthread_lib="-lpthread"
  1863             ;;
  1864     esac
  1865     if test x$enable_threads = xyes -a x$enable_pthreads = xyes; then
  1866         # Save the original compiler flags and libraries
  1867         ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  1868         # Add the pthread compiler flags and libraries
  1869         CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  1870         # Check to see if we have pthread support on this system
  1871         AC_MSG_CHECKING(for pthreads)
  1872         use_pthreads=no
  1873         AC_TRY_LINK([
  1874          #include <pthread.h>
  1875         ],[
  1876          pthread_attr_t type;
  1877          pthread_attr_init(&type);
  1878         ],[
  1879         use_pthreads=yes
  1880         ])
  1881         AC_MSG_RESULT($use_pthreads)
  1882         # Restore the compiler flags and libraries
  1883         CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  1884 
  1885         # Do futher testing if we have pthread support...
  1886         if test x$use_pthreads = xyes; then
  1887             AC_DEFINE(SDL_THREAD_PTHREAD, 1, [ ])
  1888             EXTRA_CFLAGS="$EXTRA_CFLAGS $pthread_cflags"
  1889             EXTRA_LDFLAGS="$EXTRA_LDFLAGS $pthread_lib"
  1890             SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags"
  1891             SDL_LIBS="$SDL_LIBS $pthread_lib"
  1892 
  1893             # Save the original compiler flags and libraries
  1894             ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS"
  1895             # Add the pthread compiler flags and libraries
  1896             CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib"
  1897 
  1898             # Check to see if recursive mutexes are available
  1899             AC_MSG_CHECKING(for recursive mutexes)
  1900             has_recursive_mutexes=no
  1901             if test x$has_recursive_mutexes = xno; then
  1902                 AC_TRY_COMPILE([
  1903                   #include <pthread.h>
  1904                 ],[
  1905                   pthread_mutexattr_t attr;
  1906                   pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
  1907                 ],[
  1908                 has_recursive_mutexes=yes
  1909                 AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX, 1, [ ])
  1910                 ])
  1911             fi
  1912             if test x$has_recursive_mutexes = xno; then
  1913                 AC_TRY_COMPILE([
  1914                   #include <pthread.h>
  1915                 ],[
  1916                   pthread_mutexattr_t attr;
  1917                   pthread_mutexattr_setkind_np(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
  1918                 ],[
  1919                 has_recursive_mutexes=yes
  1920                 AC_DEFINE(SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP, 1, [ ])
  1921                 ])
  1922             fi
  1923             AC_MSG_RESULT($has_recursive_mutexes)
  1924 
  1925             # Check to see if pthread semaphore support is missing
  1926             if test x$enable_pthread_sem = xyes; then
  1927                 AC_MSG_CHECKING(for pthread semaphores)
  1928                 have_pthread_sem=no
  1929                 AC_TRY_COMPILE([
  1930                   #include <pthread.h>
  1931                   #include <semaphore.h>
  1932                 ],[
  1933                 ],[
  1934                 have_pthread_sem=yes
  1935                 ])
  1936                 AC_MSG_RESULT($have_pthread_sem)
  1937             fi
  1938             if test x$have_pthread_sem = xyes; then
  1939                 AC_MSG_CHECKING(for sem_timedwait)
  1940                 have_sem_timedwait=no
  1941                 AC_TRY_LINK([
  1942                   #include <pthread.h>
  1943                   #include <semaphore.h>
  1944                 ],[
  1945                   sem_timedwait(NULL, NULL);
  1946                 ],[
  1947                 have_sem_timedwait=yes
  1948                 AC_DEFINE(HAVE_SEM_TIMEDWAIT)
  1949                 ])
  1950                 AC_MSG_RESULT($have_sem_timedwait)
  1951             fi
  1952 
  1953             AC_MSG_CHECKING(for pthread_spin_trylock)
  1954             AC_TRY_LINK_FUNC(pthread_spin_trylock, [
  1955               has_pthread_spin_trylock=yes
  1956               AC_DEFINE(HAVE_PTHREAD_SPINLOCK, 1, [ ])
  1957             ],[
  1958               has_pthread_spin_trylock=no
  1959             ])
  1960             AC_MSG_RESULT($has_pthread_spin_trylock)
  1961 
  1962             AC_CHECK_HEADER(pthread_np.h, have_pthread_np_h=yes, have_pthread_np_h=no, [ #include <pthread.h> ])
  1963             if test x$have_pthread_np_h = xyes; then
  1964                 AC_DEFINE(HAVE_PTHREAD_NP_H, 1, [ ])
  1965             fi
  1966 
  1967             # Check to see if pthread naming is available
  1968             AC_MSG_CHECKING(for pthread_setname_np)
  1969             AC_TRY_LINK_FUNC(pthread_setname_np, [
  1970               has_pthread_setname_np=yes
  1971               AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [ ])
  1972             ],[
  1973               has_pthread_setname_np=no
  1974             ])
  1975             AC_MSG_RESULT($has_pthread_setname_np)
  1976 
  1977             AC_MSG_CHECKING(for pthread_set_name_np)
  1978             AC_TRY_LINK_FUNC(pthread_set_name_np, [
  1979               has_pthread_set_name_np=yes
  1980               AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [ ])
  1981             ],[
  1982               has_pthread_set_name_np=no
  1983             ])
  1984             AC_MSG_RESULT($has_pthread_set_name_np)
  1985 
  1986             # Restore the compiler flags and libraries
  1987             CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
  1988 
  1989             # Basic thread creation functions
  1990             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c"
  1991 
  1992             # Semaphores
  1993             # We can fake these with mutexes and condition variables if necessary
  1994             if test x$have_pthread_sem = xyes; then
  1995                 SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syssem.c"
  1996             else
  1997                 SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syssem.c"
  1998             fi
  1999 
  2000             # Mutexes
  2001             # We can fake these with semaphores if necessary
  2002             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_sysmutex.c"
  2003 
  2004             # Condition variables
  2005             # We can fake these with semaphores and mutexes if necessary
  2006             SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_syscond.c"
  2007 
  2008             have_threads=yes
  2009         fi
  2010     fi
  2011 }
  2012 
  2013 dnl Determine whether the compiler can produce Windows executables
  2014 CheckWINDOWS()
  2015 {
  2016     AC_MSG_CHECKING(Windows compiler)
  2017     have_win32_gcc=no
  2018     AC_TRY_COMPILE([
  2019      #include <windows.h>
  2020     ],[
  2021     ],[
  2022     have_win32_gcc=yes
  2023     ])
  2024     AC_MSG_RESULT($have_win32_gcc)
  2025     if test x$have_win32_gcc != xyes; then
  2026        AC_MSG_ERROR([
  2027 *** Your compiler ($CC) does not produce Windows executables!
  2028        ])
  2029     fi
  2030 
  2031     AC_MSG_CHECKING(Windows CE)
  2032     have_wince=no
  2033     AC_TRY_COMPILE([
  2034 #if !defined(_WIN32_WCE) && !defined(__MINGW32CE__)
  2035 #error This is not Windows CE
  2036 #endif
  2037     ],[
  2038     ],[
  2039     have_wince=yes
  2040        AC_MSG_ERROR([
  2041 *** Sorry, Windows CE is no longer supported.
  2042        ])
  2043     ])
  2044     AC_MSG_RESULT($have_wince)
  2045 
  2046     # This fixes Windows stack alignment with newer GCC
  2047     CheckStackBoundary
  2048 }
  2049 
  2050 dnl Find the DirectX includes and libraries
  2051 CheckDIRECTX()
  2052 {
  2053     AC_ARG_ENABLE(directx,
  2054 AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[default=yes]]]),
  2055                   , enable_directx=yes)
  2056     if test x$enable_directx = xyes; then
  2057         AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
  2058         AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
  2059         AC_CHECK_HEADER(dsound.h, have_dsound=yes)
  2060         AC_CHECK_HEADER(dinput.h, have_dinput=yes)
  2061         AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes)
  2062 
  2063         # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers.
  2064         # FIXME:  ...so force it off for now.
  2065         case "$host" in
  2066             *-*-cygwin*)
  2067             have_dinput=false
  2068             ;;
  2069         esac
  2070     fi
  2071 }
  2072 
  2073 dnl Check for the dlfcn.h interface for dynamically loading objects
  2074 CheckDLOPEN()
  2075 {
  2076     AC_ARG_ENABLE(sdl-dlopen,
  2077 AC_HELP_STRING([--enable-sdl-dlopen], [use dlopen for shared object loading [[default=yes]]]),
  2078                   , enable_sdl_dlopen=yes)
  2079     if test x$enable_sdl_dlopen = xyes; then
  2080         AC_MSG_CHECKING(for dlopen)
  2081         have_dlopen=no
  2082         AC_TRY_COMPILE([
  2083          #include <dlfcn.h>
  2084         ],[
  2085          #if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && MAC_OS_X_VERSION_MIN_REQUIRED <= 1020
  2086          #error Use dlcompat for Mac OS X 10.2 compatibility
  2087          #endif
  2088         ],[
  2089         have_dlopen=yes
  2090         ])
  2091         AC_MSG_RESULT($have_dlopen)
  2092 
  2093         if test x$have_dlopen = xyes; then
  2094             AC_CHECK_LIB(c, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS",
  2095                AC_CHECK_LIB(dl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl",
  2096                   AC_CHECK_LIB(ltdl, dlopen, EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lltdl")))
  2097             AC_DEFINE(SDL_LOADSO_DLOPEN, 1, [ ])
  2098             SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
  2099             have_loadso=yes
  2100         fi
  2101     fi
  2102 }
  2103 
  2104 dnl Check for the usbhid(3) library on *BSD
  2105 CheckUSBHID()
  2106 {
  2107     if test x$enable_joystick = xyes; then
  2108         AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
  2109         if test x$have_libusbhid = xyes; then
  2110             AC_CHECK_HEADER(usbhid.h, [USB_CFLAGS="-DHAVE_USBHID_H"])
  2111             AC_CHECK_HEADER(libusbhid.h, [USB_CFLAGS="-DHAVE_LIBUSBHID_H"])
  2112             USB_LIBS="$USB_LIBS -lusbhid"
  2113         else
  2114             AC_CHECK_HEADER(usb.h, [USB_CFLAGS="-DHAVE_USB_H"])
  2115             AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
  2116             AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
  2117         fi
  2118             
  2119         save_CFLAGS="$CFLAGS"
  2120         CFLAGS="$CFLAGS $USB_CFLAGS"
  2121 
  2122         AC_MSG_CHECKING(for usbhid)
  2123         have_usbhid=no
  2124         AC_TRY_COMPILE([
  2125           #include <sys/types.h>
  2126           #if defined(HAVE_USB_H)
  2127           #include <usb.h>
  2128           #endif
  2129           #ifdef __DragonFly__
  2130           # include <bus/usb/usb.h>
  2131           # include <bus/usb/usbhid.h>
  2132           #else
  2133           # include <dev/usb/usb.h>
  2134           # include <dev/usb/usbhid.h>
  2135           #endif
  2136           #if defined(HAVE_USBHID_H)
  2137           #include <usbhid.h>
  2138           #elif defined(HAVE_LIBUSB_H)
  2139           #include <libusb.h>
  2140           #elif defined(HAVE_LIBUSBHID_H)
  2141           #include <libusbhid.h>
  2142           #endif
  2143         ],[
  2144           struct report_desc *repdesc;
  2145           struct usb_ctl_report *repbuf;
  2146           hid_kind_t hidkind;
  2147         ],[
  2148         have_usbhid=yes
  2149         ])
  2150         AC_MSG_RESULT($have_usbhid)
  2151 
  2152         if test x$have_usbhid = xyes; then
  2153             AC_MSG_CHECKING(for ucr_data member of usb_ctl_report)
  2154             have_usbhid_ucr_data=no
  2155             AC_TRY_COMPILE([
  2156               #include <sys/types.h>
  2157               #if defined(HAVE_USB_H)
  2158               #include <usb.h>
  2159               #endif
  2160               #ifdef __DragonFly__
  2161               # include <bus/usb/usb.h>
  2162               # include <bus/usb/usbhid.h>
  2163               #else
  2164               # include <dev/usb/usb.h>
  2165               # include <dev/usb/usbhid.h>
  2166               #endif
  2167               #if defined(HAVE_USBHID_H)
  2168               #include <usbhid.h>
  2169               #elif defined(HAVE_LIBUSB_H)
  2170               #include <libusb.h>
  2171               #elif defined(HAVE_LIBUSBHID_H)
  2172               #include <libusbhid.h>
  2173               #endif
  2174             ],[
  2175               struct usb_ctl_report buf;
  2176               if (buf.ucr_data) { }
  2177             ],[
  2178             have_usbhid_ucr_data=yes
  2179             ])
  2180             if test x$have_usbhid_ucr_data = xyes; then
  2181                 USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
  2182             fi
  2183             AC_MSG_RESULT($have_usbhid_ucr_data)
  2184             
  2185             AC_MSG_CHECKING(for new usbhid API)
  2186             have_usbhid_new=no
  2187             AC_TRY_COMPILE([
  2188               #include <sys/types.h>
  2189               #if defined(HAVE_USB_H)
  2190               #include <usb.h>
  2191               #endif
  2192               #ifdef __DragonFly__
  2193               #include <bus/usb/usb.h>
  2194               #include <bus/usb/usbhid.h>
  2195               #else
  2196               #include <dev/usb/usb.h>
  2197               #include <dev/usb/usbhid.h>
  2198               #endif
  2199               #if defined(HAVE_USBHID_H)
  2200               #include <usbhid.h>
  2201               #elif defined(HAVE_LIBUSB_H)
  2202               #include <libusb.h>
  2203               #elif defined(HAVE_LIBUSBHID_H)
  2204               #include <libusbhid.h>
  2205               #endif
  2206             ],[
  2207               report_desc_t d;
  2208               hid_start_parse(d, 1, 1);
  2209             ],[
  2210             have_usbhid_new=yes
  2211             ])
  2212             if test x$have_usbhid_new = xyes; then
  2213                 USB_CFLAGS="$USB_CFLAGS -DUSBHID_NEW"
  2214             fi
  2215             AC_MSG_RESULT($have_usbhid_new)
  2216 
  2217             AC_MSG_CHECKING(for struct joystick in machine/joystick.h)
  2218             have_machine_joystick=no
  2219             AC_TRY_COMPILE([
  2220               #include <machine/joystick.h>
  2221             ],[
  2222               struct joystick t;
  2223             ],[
  2224             have_machine_joystick=yes
  2225             ])
  2226             if test x$have_machine_joystick = xyes; then
  2227                 AC_DEFINE(SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H, 1, [ ])
  2228             fi
  2229             AC_MSG_RESULT($have_machine_joystick)
  2230 
  2231             AC_DEFINE(SDL_JOYSTICK_USBHID, 1, [ ])
  2232             SOURCES="$SOURCES $srcdir/src/joystick/bsd/*.c"
  2233             EXTRA_CFLAGS="$EXTRA_CFLAGS $USB_CFLAGS"
  2234             EXTRA_LDFLAGS="$EXTRA_LDFLAGS $USB_LIBS"
  2235             have_joystick=yes
  2236         fi
  2237         CFLAGS="$save_CFLAGS"
  2238     fi
  2239 }
  2240 
  2241 dnl Check for clock_gettime()
  2242 CheckClockGettime()
  2243 {
  2244     AC_ARG_ENABLE(clock_gettime,
  2245 AC_HELP_STRING([--enable-clock_gettime], [use clock_gettime() instead of gettimeofday() on UNIX [[default=yes]]]),
  2246                   , enable_clock_gettime=yes)
  2247     if test x$enable_clock_gettime = xyes; then
  2248         AC_CHECK_LIB(rt, clock_gettime, have_clock_gettime=yes)
  2249         if test x$have_clock_gettime = xyes; then
  2250             AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  2251             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lrt"
  2252         else
  2253             AC_CHECK_LIB(c, clock_gettime, have_clock_gettime=yes)
  2254             if test x$have_clock_gettime = xyes; then
  2255                AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [ ])
  2256                EXTRA_LDFLAGS="$EXTRA_LDFLAGS"
  2257             fi
  2258         fi
  2259     fi
  2260 }
  2261 
  2262 dnl Check for a valid linux/version.h
  2263 CheckLinuxVersion()
  2264 {
  2265     AC_CHECK_HEADER(linux/version.h, have_linux_version_h=yes)
  2266     if test x$have_linux_version_h = xyes; then
  2267         EXTRA_CFLAGS="$EXTRA_CFLAGS -DHAVE_LINUX_VERSION_H"
  2268     fi
  2269 }
  2270 
  2271 dnl Check if we want to use RPATH
  2272 CheckRPATH()
  2273 {
  2274     AC_ARG_ENABLE(rpath,
  2275 AC_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [[default=yes]]]),
  2276                   , enable_rpath=yes)
  2277 }
  2278 
  2279 dnl Set up the configuration based on the host platform!
  2280 case "$host" in
  2281     *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*)
  2282         case "$host" in
  2283             *-*-linux*)         ARCH=linux ;;
  2284             *-*-uclinux*)       ARCH=linux ;;
  2285             *-*-kfreebsd*-gnu)  ARCH=kfreebsd-gnu ;;
  2286             *-*-knetbsd*-gnu)   ARCH=knetbsd-gnu ;;
  2287             *-*-kopenbsd*-gnu)  ARCH=kopenbsd-gnu ;;
  2288             *-*-gnu*)           ARCH=gnu ;; # must be last of the gnu variants
  2289             *-*-bsdi*)          ARCH=bsdi ;;
  2290             *-*-freebsd*)       ARCH=freebsd ;;
  2291             *-*-dragonfly*)     ARCH=freebsd ;;
  2292             *-*-netbsd*)        ARCH=netbsd ;;
  2293             *-*-openbsd*)       ARCH=openbsd ;;
  2294             *-*-sysv5*)         ARCH=sysv5 ;;
  2295             *-*-solaris*)       ARCH=solaris ;;
  2296             *-*-hpux*)          ARCH=hpux ;;
  2297             *-*-aix*)           ARCH=aix ;;
  2298             *-*-minix*)         ARCH=minix ;;
  2299         esac
  2300         CheckVisibilityHidden
  2301         CheckDummyVideo
  2302         CheckDiskAudio
  2303         CheckDummyAudio
  2304         CheckDLOPEN
  2305         CheckOSS
  2306         CheckALSA
  2307         CheckPulseAudio
  2308         CheckARTSC
  2309         CheckESD
  2310         CheckNAS
  2311         CheckSNDIO
  2312         CheckX11
  2313         CheckDirectFB
  2314         CheckFusionSound
  2315         CheckOpenGLX11
  2316         CheckOpenGLESX11
  2317         CheckLibUDev
  2318         CheckDBus
  2319         CheckInputEvents
  2320         CheckTslib
  2321         CheckUSBHID
  2322         CheckPTHREAD
  2323         CheckClockGettime
  2324         CheckLinuxVersion
  2325         CheckRPATH
  2326         # Set up files for the audio library
  2327         if test x$enable_audio = xyes; then
  2328           case $ARCH in
  2329             sysv5|solaris|hpux)
  2330                 AC_DEFINE(SDL_AUDIO_DRIVER_SUNAUDIO, 1, [ ])
  2331                 SOURCES="$SOURCES $srcdir/src/audio/sun/*.c"
  2332                 have_audio=yes
  2333             ;;
  2334             netbsd|openbsd)
  2335                 AC_DEFINE(SDL_AUDIO_DRIVER_BSD, 1, [ ])
  2336                 SOURCES="$SOURCES $srcdir/src/audio/bsd/*.c"
  2337                 have_audio=yes
  2338             ;;
  2339             aix)
  2340                 AC_DEFINE(SDL_AUDIO_DRIVER_PAUDIO, 1, [ ])
  2341                 SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c"
  2342                 have_audio=yes
  2343             ;;
  2344           esac
  2345         fi
  2346         # Set up files for the joystick library
  2347         if test x$enable_joystick = xyes; then
  2348           case $ARCH in
  2349             linux)
  2350                 AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
  2351                 SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
  2352                 have_joystick=yes
  2353             ;;
  2354           esac
  2355         fi
  2356         # Set up files for the haptic library
  2357         if test x$enable_haptic = xyes; then
  2358            if test x$use_input_events = xyes; then
  2359              case $ARCH in
  2360                linux)
  2361                    AC_DEFINE(SDL_HAPTIC_LINUX, 1, [ ])
  2362                    SOURCES="$SOURCES $srcdir/src/haptic/linux/*.c"
  2363                    have_haptic=yes
  2364                ;;
  2365              esac
  2366            fi
  2367         fi
  2368         # Set up files for the power library
  2369         if test x$enable_power = xyes; then
  2370              case $ARCH in
  2371                linux)
  2372                    AC_DEFINE(SDL_POWER_LINUX, 1, [ ])
  2373                    SOURCES="$SOURCES $srcdir/src/power/linux/*.c"
  2374                    have_power=yes
  2375                ;;
  2376              esac
  2377         fi
  2378         # Set up files for the timer library
  2379         if test x$enable_timers = xyes; then
  2380             AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  2381             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2382             have_timers=yes
  2383         fi
  2384         ;;
  2385     *-*-cygwin* | *-*-mingw32*)
  2386         ARCH=win32
  2387         if test "$build" != "$host"; then # cross-compiling
  2388             # Default cross-compile location
  2389             ac_default_prefix=/usr/local/cross-tools/$host
  2390         else
  2391             # Look for the location of the tools and install there
  2392             if test "$BUILD_PREFIX" != ""; then
  2393                 ac_default_prefix=$BUILD_PREFIX
  2394             fi
  2395         fi
  2396         CheckDummyVideo
  2397         CheckDiskAudio
  2398         CheckDummyAudio
  2399         CheckWINDOWS
  2400         CheckWINDOWSGL
  2401         CheckDIRECTX
  2402 
  2403         # Set up the core platform files
  2404         SOURCES="$SOURCES $srcdir/src/core/windows/*.c"
  2405 
  2406         # Set up files for the video library
  2407         if test x$enable_video = xyes; then
  2408             AC_DEFINE(SDL_VIDEO_DRIVER_WINDOWS, 1, [ ])
  2409             SOURCES="$SOURCES $srcdir/src/video/windows/*.c"
  2410             have_video=yes
  2411             AC_ARG_ENABLE(render-d3d,
  2412 AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[default=yes]]]),
  2413                                 , enable_render_d3d=yes)
  2414             if test x$enable_render_d3d = xyes -a x$have_d3d = xyes; then
  2415                 AC_DEFINE(SDL_VIDEO_RENDER_D3D, 1, [ ])
  2416             fi
  2417         fi
  2418         # Set up files for the audio library
  2419         if test x$enable_audio = xyes; then
  2420             AC_DEFINE(SDL_AUDIO_DRIVER_WINMM, 1, [ ])
  2421             SOURCES="$SOURCES $srcdir/src/audio/winmm/*.c"
  2422             if test x$have_dsound = xyes; then
  2423                 AC_DEFINE(SDL_AUDIO_DRIVER_DSOUND, 1, [ ])
  2424                 SOURCES="$SOURCES $srcdir/src/audio/directsound/*.c"
  2425             fi
  2426             if test x$have_xaudio2 = xyes; then
  2427                 AC_DEFINE(SDL_AUDIO_DRIVER_XAUDIO2, 1, [ ])
  2428                 SOURCES="$SOURCES $srcdir/src/audio/xaudio2/*.c"
  2429             fi
  2430             have_audio=yes
  2431         fi
  2432         # Set up files for the joystick library
  2433         if test x$enable_joystick = xyes; then
  2434             if test x$have_dinput = xyes; then
  2435                 AC_DEFINE(SDL_JOYSTICK_DINPUT, 1, [ ])
  2436                 SOURCES="$SOURCES $srcdir/src/joystick/windows/SDL_dxjoystick.c"
  2437                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldinput8 -ldxguid -ldxerr8"
  2438             else
  2439                 AC_DEFINE(SDL_JOYSTICK_WINMM, 1, [ ])
  2440                 SOURCES="$SOURCES $srcdir/src/joystick/windows/SDL_mmjoystick.c"
  2441             fi
  2442             have_joystick=yes
  2443         fi
  2444         if test x$enable_haptic = xyes; then
  2445             if test x$have_dinput = xyes; then
  2446                 AC_DEFINE(SDL_HAPTIC_DINPUT, 1, [ ])
  2447                 SOURCES="$SOURCES $srcdir/src/haptic/windows/SDL_syshaptic.c"
  2448                 have_haptic=yes
  2449             fi
  2450         fi
  2451         if test x$enable_power = xyes; then
  2452             AC_DEFINE(SDL_POWER_WINDOWS, 1, [ ])
  2453             SOURCES="$SOURCES $srcdir/src/power/windows/SDL_syspower.c"
  2454             have_power=yes
  2455         fi
  2456         # Set up files for the thread library
  2457         if test x$enable_threads = xyes; then
  2458             AC_DEFINE(SDL_THREAD_WINDOWS, 1, [ ])
  2459             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_sysmutex.c"
  2460             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_syssem.c"
  2461             SOURCES="$SOURCES $srcdir/src/thread/windows/SDL_systhread.c"
  2462             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  2463             have_threads=yes
  2464         fi
  2465         # Set up files for the timer library
  2466         if test x$enable_timers = xyes; then
  2467             AC_DEFINE(SDL_TIMER_WINDOWS, 1, [ ])
  2468             SOURCES="$SOURCES $srcdir/src/timer/windows/*.c"
  2469             have_timers=yes
  2470         fi
  2471         # Set up files for the shared object loading library
  2472         if test x$enable_loadso = xyes; then
  2473             AC_DEFINE(SDL_LOADSO_WINDOWS, 1, [ ])
  2474             SOURCES="$SOURCES $srcdir/src/loadso/windows/*.c"
  2475             have_loadso=yes
  2476         fi
  2477         # Set up the system libraries we need
  2478         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc"
  2479         # The Windows platform requires special setup
  2480         VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
  2481         SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
  2482         SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
  2483         SDL_LIBS="-lmingw32 -lSDL2main $SDL_LIBS -mwindows"
  2484         ;;
  2485     *-*-beos* | *-*-haiku*)
  2486         ARCH=beos
  2487         ac_default_prefix=/boot/common
  2488         CheckDummyVideo
  2489         CheckDiskAudio
  2490         CheckDummyAudio
  2491         CheckBWINDOW
  2492         CheckBeGL
  2493         # Set up files for the audio library
  2494         if test x$enable_audio = xyes; then
  2495             AC_DEFINE(SDL_AUDIO_DRIVER_BEOSAUDIO, 1, [ ])
  2496             SOURCES="$SOURCES $srcdir/src/audio/baudio/*.cc"
  2497             have_audio=yes
  2498         fi
  2499         # Set up files for the joystick library
  2500         if test x$enable_joystick = xyes; then
  2501             AC_DEFINE(SDL_JOYSTICK_BEOS, 1, [ ])
  2502             SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc"
  2503             have_joystick=yes
  2504         fi
  2505         # Set up files for the thread library
  2506         if test x$enable_threads = xyes; then
  2507             AC_DEFINE(SDL_THREAD_BEOS, 1, [ ])
  2508             SOURCES="$SOURCES $srcdir/src/thread/beos/*.c"
  2509             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c"
  2510             SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c"
  2511             have_threads=yes
  2512         fi
  2513         # Set up files for the timer library
  2514         if test x$enable_timers = xyes; then
  2515             AC_DEFINE(SDL_TIMER_BEOS, 1, [ ])
  2516             SOURCES="$SOURCES $srcdir/src/timer/beos/*.c"
  2517             have_timers=yes
  2518         fi
  2519         # Set up files for the shared object loading library
  2520         if test x$enable_loadso = xyes; then
  2521             AC_DEFINE(SDL_LOADSO_BEOS, 1, [ ])
  2522             SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c"
  2523             have_loadso=yes
  2524         fi
  2525         # Set up files for the system power library
  2526         if test x$enable_power = xyes; then
  2527             AC_DEFINE(SDL_POWER_BEOS, 1, [ ])
  2528             SOURCES="$SOURCES $srcdir/src/power/beos/*.c"
  2529             have_power=yes
  2530         fi
  2531         # The BeOS platform requires special setup.
  2532         SOURCES="$srcdir/src/main/beos/*.cc $SOURCES"
  2533         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
  2534         ;;
  2535     arm*-apple-darwin*)
  2536         # iOS - We are not writing anything to confdefs.h because you have to replace
  2537         # SDL_config.h for SDL_config_iphoneos.h anyway
  2538         ARCH=ios
  2539 
  2540         CheckVisibilityHidden
  2541         CheckDummyVideo
  2542         CheckDiskAudio
  2543         CheckDummyAudio
  2544         CheckDLOPEN
  2545         CheckCOCOA
  2546         CheckPTHREAD
  2547 
  2548 
  2549         # Set up files for the audio library
  2550         if test x$enable_audio = xyes; then
  2551             SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.c"
  2552             have_audio=yes
  2553         fi
  2554         # Set up files for the joystick library
  2555         if test x$enable_joystick = xyes; then
  2556             SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
  2557             have_joystick=yes
  2558         fi
  2559         # Set up files for the haptic library
  2560         #if test x$enable_haptic = xyes; then
  2561         #    SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  2562         #    have_haptic=yes
  2563         #    EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  2564         #fi
  2565         # Set up files for the power library
  2566         if test x$enable_power = xyes; then
  2567             SOURCES="$SOURCES $srcdir/src/power/uikit/*.m"
  2568             have_power=yes
  2569         fi
  2570         # Set up files for the timer library
  2571         if test x$enable_timers = xyes; then
  2572             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2573             have_timers=yes
  2574         fi
  2575         # Set up additional files for the file library
  2576         if test x$enable_file = xyes; then
  2577             SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  2578         fi
  2579         # The iOS platform requires special setup.
  2580         SOURCES="$SOURCES $srcdir/src/video/uikit/*.m"
  2581         SOURCES="$SOURCES $srcdir/src/video/uikit/*.c"
  2582         EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
  2583         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm -liconv -lobjc"
  2584         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Foundation"
  2585         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,UIKit"
  2586         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGLES"
  2587         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore"
  2588         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio"
  2589         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox"
  2590         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreGraphics"
  2591         ;;
  2592     *-*-darwin* )
  2593         # This could be either full "Mac OS X", or plain "Darwin" which is
  2594         # just the OS X kernel sans upper layers like Carbon and Cocoa.
  2595         # Next line is broken, and a few files below require Mac OS X (full)
  2596         ARCH=macosx
  2597 
  2598         # Mac OS X builds with both the Carbon and OSX APIs at the moment
  2599         EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_CARBON"
  2600         EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"
  2601 
  2602         CheckVisibilityHidden
  2603         CheckDummyVideo
  2604         CheckDiskAudio
  2605         CheckDummyAudio
  2606         CheckDLOPEN
  2607         CheckCOCOA
  2608         CheckX11
  2609         CheckMacGL
  2610         CheckOpenGLX11
  2611         CheckPTHREAD
  2612 
  2613         # Good optimization on Mac OS X, yes...
  2614         EXTRA_CFLAGS="$EXTRA_CFLAGS -falign-loops=16"
  2615 
  2616         # Need this or things might misbuild on a G3.
  2617         EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL"
  2618 
  2619         # Set up files for the audio library
  2620         if test x$enable_audio = xyes; then
  2621             AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
  2622             SOURCES="$SOURCES $srcdir/src/audio/coreaudio/*.c"
  2623             have_audio=yes
  2624         fi
  2625         # Set up files for the joystick library
  2626         if test x$enable_joystick = xyes; then
  2627             AC_DEFINE(SDL_JOYSTICK_IOKIT, 1, [ ])
  2628             SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
  2629             have_joystick=yes
  2630         fi
  2631         # Set up files for the haptic library
  2632         if test x$enable_haptic = xyes; then
  2633             AC_DEFINE(SDL_HAPTIC_IOKIT, 1, [ ])
  2634             SOURCES="$SOURCES $srcdir/src/haptic/darwin/*.c"
  2635             have_haptic=yes
  2636             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,ForceFeedback"
  2637         fi
  2638         # Set up files for the power library
  2639         if test x$enable_power = xyes; then
  2640             AC_DEFINE(SDL_POWER_MACOSX, 1, [ ])
  2641             SOURCES="$SOURCES $srcdir/src/power/macosx/*.c"
  2642             have_power=yes
  2643         fi
  2644         # Set up files for the timer library
  2645         if test x$enable_timers = xyes; then
  2646             AC_DEFINE(SDL_TIMER_UNIX, 1, [ ])
  2647             SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
  2648             have_timers=yes
  2649         fi
  2650         # Set up additional files for the file library
  2651         if test x$enable_file = xyes; then
  2652             SOURCES="$SOURCES $srcdir/src/file/cocoa/*.m"
  2653         fi
  2654         # The Mac OS X platform requires special setup.
  2655         EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings"
  2656         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lobjc"
  2657         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
  2658         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
  2659         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
  2660         # If audio is used, add the AudioUnit framework
  2661         if test x$enable_audio = xyes; then
  2662             EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit"
  2663         fi
  2664         ;;
  2665     *)
  2666         AC_MSG_ERROR([
  2667 *** Unsupported host:  Please add to configure.in
  2668         ])
  2669         ;;
  2670 esac
  2671 
  2672 dnl Do this on all platforms, after everything else.
  2673 CheckWarnAll
  2674 
  2675 # Verify that we have all the platform specific files we need
  2676 
  2677 if test x$have_joystick != xyes; then
  2678     if test x$enable_joystick = xyes; then
  2679         AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ])
  2680     fi
  2681     SOURCES="$SOURCES $srcdir/src/joystick/dummy/*.c"
  2682 fi
  2683 if test x$have_haptic != xyes; then
  2684     if test x$enable_haptic = xyes; then
  2685         AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ])
  2686     fi
  2687     SOURCES="$SOURCES $srcdir/src/haptic/dummy/*.c"
  2688 fi
  2689 if test x$have_threads != xyes; then
  2690     if test x$enable_threads = xyes; then
  2691         AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ])
  2692     fi
  2693     SOURCES="$SOURCES $srcdir/src/thread/generic/*.c"
  2694 fi
  2695 if test x$have_timers != xyes; then
  2696     if test x$enable_timers = xyes; then
  2697         AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ])
  2698     fi
  2699     SOURCES="$SOURCES $srcdir/src/timer/dummy/*.c"
  2700 fi
  2701 if test x$have_loadso != xyes; then
  2702     if test x$enable_loadso = xyes; then
  2703         AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ])
  2704     fi
  2705     SOURCES="$SOURCES $srcdir/src/loadso/dummy/*.c"
  2706 fi
  2707 if test x$SDLMAIN_SOURCES = x; then
  2708     SDLMAIN_SOURCES="$srcdir/src/main/dummy/*.c"
  2709 fi
  2710 SDLTEST_SOURCES="$srcdir/src/test/*.c"
  2711 
  2712 OBJECTS=`echo $SOURCES`
  2713 DEPENDS=`echo $SOURCES | tr ' ' '\n'`
  2714 for EXT in asm cc m c S; do
  2715     OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'`
  2716     DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\
  2717 \\$(objects)/\\2.lo: \\1/\\2.$EXT\\\\
  2718 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2719 done
  2720 
  2721 VERSION_OBJECTS=`echo $VERSION_SOURCES`
  2722 VERSION_DEPENDS=`echo $VERSION_SOURCES`
  2723 VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.o,g'`
  2724 VERSION_DEPENDS=`echo "$VERSION_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.rc,\\\\
  2725 \\$(objects)/\\2.o: \\1/\\2.rc\\\\
  2726 	\\$(WINDRES) \\$< \\$@,g"`
  2727 
  2728 SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
  2729 SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
  2730 SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
  2731 SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  2732 \\$(objects)/\\2.o: \\1/\\2.c\\\\
  2733 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2734 
  2735 SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES`
  2736 SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES`
  2737 SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'`
  2738 SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\
  2739 \\$(objects)/\\2.o: \\1/\\2.c\\\\
  2740 	\\$(LIBTOOL) --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"`
  2741 
  2742 # Set runtime shared library paths as needed
  2743 
  2744 if test "x$enable_rpath" = "xyes"; then
  2745   if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = linux -o $ARCH = netbsd; then
  2746     SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
  2747   fi
  2748   if test $ARCH = solaris; then
  2749     SDL_RLD_FLAGS="-R\${libdir}"
  2750   fi
  2751 else
  2752   SDL_RLD_FLAGS=""
  2753 fi
  2754 
  2755 SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
  2756 
  2757 dnl Expand the cflags and libraries needed by apps using SDL
  2758 AC_SUBST(SDL_CFLAGS)
  2759 AC_SUBST(SDL_LIBS)
  2760 AC_SUBST(SDL_STATIC_LIBS)
  2761 AC_SUBST(SDL_RLD_FLAGS)
  2762 if test x$enable_shared = xyes; then
  2763     ENABLE_SHARED_TRUE=
  2764     ENABLE_SHARED_FALSE="#"
  2765 else
  2766     ENABLE_SHARED_TRUE="#"
  2767     ENABLE_SHARED_FALSE=
  2768 fi
  2769 if test x$enable_static = xyes; then
  2770     ENABLE_STATIC_TRUE=
  2771     ENABLE_STATIC_FALSE="#"
  2772 else
  2773     ENABLE_STATIC_TRUE="#"
  2774     ENABLE_STATIC_FALSE=
  2775 fi
  2776 AC_SUBST(ENABLE_SHARED_TRUE)
  2777 AC_SUBST(ENABLE_SHARED_FALSE)
  2778 AC_SUBST(ENABLE_STATIC_TRUE)
  2779 AC_SUBST(ENABLE_STATIC_FALSE)
  2780 
  2781 dnl Expand the sources and objects needed to build the library
  2782 AC_SUBST(ac_aux_dir)
  2783 AC_SUBST(INCLUDE)
  2784 AC_SUBST(OBJECTS)
  2785 AC_SUBST(VERSION_OBJECTS)
  2786 AC_SUBST(SDLMAIN_OBJECTS)
  2787 AC_SUBST(SDLTEST_OBJECTS)
  2788 AC_SUBST(BUILD_CFLAGS)
  2789 AC_SUBST(EXTRA_CFLAGS)
  2790 AC_SUBST(BUILD_LDFLAGS)
  2791 AC_SUBST(EXTRA_LDFLAGS)
  2792 AC_SUBST(WINDRES)
  2793 
  2794 cat >Makefile.rules <<__EOF__
  2795 
  2796 # Build rules for objects
  2797 -include \$(OBJECTS:.lo=.d)
  2798 
  2799 # Special dependency for SDL.c, since it depends on SDL_revision.h
  2800 $srcdir/src/SDL.c: update-revision
  2801 $DEPENDS
  2802 $VERSION_DEPENDS
  2803 $SDLMAIN_DEPENDS
  2804 $SDLTEST_DEPENDS
  2805 __EOF__
  2806 
  2807 AC_CONFIG_FILES([
  2808     Makefile:Makefile.in:Makefile.rules sdl2-config SDL2.spec sdl2.pc
  2809 ])
  2810 AC_OUTPUT
  2811 chmod a+x sdl2-config