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