configure.in
author Sam Lantinga <slouken@libsdl.org>
Thu, 01 Aug 2013 09:15:36 -0700
changeset 7563 c128ed448c30
parent 7554 4b653ef6050d
child 7573 b76d8bfe9a2f
permissions -rw-r--r--
Fixed bug 1968 - SDL_RenderCopy stretch loses proportion on viewport boundaries for 3D renderers

driedfruit

SDL_RenderCopy clips dstrect against the viewport. Then it adjusts the
srcrect by "appropriate" amount of pixels. This amount is actually
wrong, quite a lot, because of the rounding errors introduced in the "*
factor / factor" scale.

real_srcrect.x += (deltax * real_srcrect.w) / dstrect->w;
real_srcrect.w += (deltaw * real_srcrect.w) / dstrect->w;

For example:

I have a 32 x 32 srcrect and a 64 x 64 dstrect. So far the
stretching is done perfectly, by a factor of 2.

Now, consider dstrect being clipped against the viewport, so it becomes
56 x 64. Now, the factor becomes 1.75 ! The adjustment to "srcrect"
can't handle this, cause srcrect is in integers.

And thus we now have incorrect mapping, with dstrect not being in the
right proportion to srcrect.

The problem is most evident when upscaling stuff, like displaying a 8x8
texture with a zoom of 64 or more, and moving it beyond the corners of
the screen. It *looks* really really bad.

Note: RenderCopyEX does no such clipping, and is right to do so. The fix would be to remove any such clipping from RenderCopy too. And then fix the software renderer, because it has the same fault, independently of RenderCopy.

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