Mac and Linux SDL2 binary snapshots
Edward Rudd
2021-06-15 dec7875a6e23212021e4d9080330a42832dfe02a
source/configure.ac
@@ -1,6 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(README.txt)
AC_CONFIG_HEADER(include/SDL_config.h)
AC_INIT
AC_CONFIG_SRCDIR(README.txt)
AC_CONFIG_HEADERS(include/SDL_config.h)
AC_CONFIG_AUX_DIR(build-scripts)
AC_CONFIG_MACRO_DIR([acinclude])
@@ -20,9 +21,9 @@
#
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=0
SDL_MICRO_VERSION=12
SDL_MICRO_VERSION=14
SDL_INTERFACE_AGE=0
SDL_BINARY_AGE=12
SDL_BINARY_AGE=14
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
AC_SUBST(SDL_MAJOR_VERSION)
@@ -34,6 +35,7 @@
# libtool versioning
LT_INIT([win32-dll])
LT_LANG([Windows Resource])
LT_RELEASE=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION
LT_CURRENT=`expr $SDL_MICRO_VERSION - $SDL_INTERFACE_AGE`
@@ -50,12 +52,10 @@
dnl AC_CANONICAL_HOST
dnl Check for tools
AC_PROG_LIBTOOL
AC_PROG_CC
AC_PROG_CXX
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_CHECK_TOOL(WINDRES, [windres], [:])
PKG_PROG_PKG_CONFIG
dnl Make sure that srcdir is a full pathname
@@ -69,7 +69,17 @@
esac
dnl Set up the compiler and linker flags
INCLUDE="-I$srcdir/include -idirafter $srcdir/src/video/khronos"
INCLUDE="-I$srcdir/include"
dnl Don't use our khronos headers on QNX.
case "$host" in
    *-*-nto-qnx*)
        ;;
    *)
        INCLUDE="$INCLUDE -idirafter $srcdir/src/video/khronos"
        ;;
esac
if test x$srcdir != x.; then
    INCLUDE="-Iinclude $INCLUDE"
elif test -d .hg; then
@@ -335,10 +345,10 @@
        AC_DEFINE(HAVE_MPROTECT, 1, [ ])
        ]),
    )
    AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove wcslen wcslcpy wcslcat wcsdup wcsstr wcscmp wcsncmp strlen strlcpy strlcat _strrev _strupr _strlwr strchr strrchr strstr strtok_r itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf vsnprintf fopen64 fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname getauxval poll _Exit)
    AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove wcslen wcslcpy wcslcat wcsdup wcsstr wcscmp wcsncmp wcscasecmp _wcsicmp wcsncasecmp _wcsnicmp strlen strlcpy strlcat _strrev _strupr _strlwr strchr strrchr strstr strtok_r itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf vsnprintf fopen64 fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname getauxval elf_aux_info poll _Exit)
    AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
    AC_CHECK_FUNCS(acos acosf asin asinf atan atanf atan2 atan2f ceil ceilf copysign copysignf cos cosf exp expf fabs fabsf floor floorf fmod fmodf log logf log10 log10f pow powf scalbn scalbnf sin sinf sqrt sqrtf tan tanf)
    AC_CHECK_FUNCS(acos acosf asin asinf atan atanf atan2 atan2f ceil ceilf copysign copysignf cos cosf exp expf fabs fabsf floor floorf trunc truncf fmod fmodf log logf log10 log10f pow powf scalbn scalbnf sin sinf sqrt sqrtf tan tanf)
    AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
    AC_CHECK_FUNCS(iconv)
@@ -402,6 +412,7 @@
SOURCES="$SOURCES $srcdir/src/haptic/*.c"
SOURCES="$SOURCES $srcdir/src/joystick/*.c"
SOURCES="$SOURCES $srcdir/src/libm/*.c"
SOURCES="$SOURCES $srcdir/src/misc/*.c"
SOURCES="$SOURCES $srcdir/src/power/*.c"
#SOURCES="$SOURCES $srcdir/src/filesystem/*.c"
SOURCES="$SOURCES $srcdir/src/render/*.c"
@@ -412,6 +423,7 @@
SOURCES="$SOURCES $srcdir/src/timer/*.c"
SOURCES="$SOURCES $srcdir/src/video/*.c"
SOURCES="$SOURCES $srcdir/src/video/yuv2rgb/*.c"
SOURCES="$SOURCES $srcdir/src/locale/*.c"
dnl Enable/disable various subsystems of the SDL library
@@ -1217,7 +1229,7 @@
            AC_DEFINE(SDL_AUDIO_DRIVER_FUSIONSOUND, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/audio/fusionsound/*.c"
            EXTRA_CFLAGS="$EXTRA_CFLAGS $FUSIONSOUND_CFLAGS"
            AC_ARG_ENABLE(fusionsound-shared,
AS_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audio support [[default=yes]]]),
                          , enable_fusionsound_shared=yes)
@@ -1237,7 +1249,7 @@
                SUMMARY_audio="${SUMMARY_audio} fusionsound"
            fi
            AC_MSG_RESULT($fusionsound_shared)
            have_audio=yes
        fi
    fi
@@ -1307,13 +1319,13 @@
CheckARM()
{
    AC_ARG_ENABLE(arm-simd,
AC_HELP_STRING([--enable-arm-simd], [use SIMD assembly blitters on ARM [[default=yes]]]),
                  enable_arm_simd=$enableval, enable_arm_simd=yes)
AS_HELP_STRING([--enable-arm-simd], [use SIMD assembly blitters on ARM [[default=no]]]),
                  enable_arm_simd=$enableval, enable_arm_simd=no)
    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_arm_simd = xyes; then
        save_CFLAGS="$CFLAGS"
        have_arm_simd=no
        CFLAGS="-x assembler-with-cpp $CFLAGS"
        AC_MSG_CHECKING(for ARM SIMD)
        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
        .text
@@ -1328,12 +1340,11 @@
        uqadd8 r0, r0, r0
        ]])], have_arm_simd=yes)
        AC_MSG_RESULT($have_arm_simd)
        CFLAGS="$save_CFLAGS"
        if test x$have_arm_simd = xyes; then
            AC_DEFINE(SDL_ARM_SIMD_BLITTERS)
dnl            SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-simd*.c"
            AC_DEFINE(SDL_ARM_SIMD_BLITTERS, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-simd*.S"
            WARN_ABOUT_ARM_SIMD_ASM_MIT="yes"
        fi
@@ -1344,13 +1355,13 @@
CheckNEON()
{
    AC_ARG_ENABLE(arm-neon,
AC_HELP_STRING([--enable-arm-neon], [use NEON assembly blitters on ARM [[default=no]]]),
AS_HELP_STRING([--enable-arm-neon], [use NEON assembly blitters on ARM [[default=no]]]),
                  enable_arm_neon=$enableval, enable_arm_neon=no)
    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_arm_neon = xyes; then
        save_CFLAGS="$CFLAGS"
        have_arm_neon=no
        CFLAGS="-x assembler-with-cpp $CFLAGS"
        AC_MSG_CHECKING(for ARM NEON)
        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
        .text
@@ -1367,12 +1378,10 @@
        vmovn.u16 d0, q0
        ]])], have_arm_neon=yes)
        AC_MSG_RESULT($have_arm_neon)
        CFLAGS="$save_CFLAGS"
        if test x$have_arm_neon = xyes; then
            AC_DEFINE(SDL_ARM_NEON_BLITTERS)
dnl            SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-neon*.c"
            AC_DEFINE(SDL_ARM_NEON_BLITTERS, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/video/arm/pixman-arm-neon*.S"
            WARN_ABOUT_ARM_NEON_ASM_MIT="yes"
        fi
@@ -1526,7 +1535,7 @@
        video_wayland=no
        if  test x$video_opengl_egl = xyes && \
            test x$video_opengles_v2 = xyes; then
            if $PKG_CONFIG --exists wayland-client wayland-scanner wayland-protocols wayland-egl wayland-cursor egl xkbcommon ; then
            if $PKG_CONFIG --exists wayland-client wayland-scanner wayland-egl wayland-cursor egl xkbcommon ; then
                WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor xkbcommon`
                WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor xkbcommon`
                WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
@@ -1595,7 +1604,6 @@
    fi
}
dnl Check for Native Client stuff
CheckNativeClient()
{
@@ -1621,7 +1629,6 @@
        SUMMARY_video="${SUMMARY_video} nacl opengles2"
        ])
}
CheckRPI()
{
@@ -1661,7 +1668,7 @@
        # Restore the compiler flags and libraries
        CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs"
        if test x$have_video_rpi = xyes; then
            CFLAGS="$CFLAGS $RPI_CFLAGS"
            SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS"
@@ -1927,7 +1934,7 @@
XITouchClassInfo *t;
                    ],[
                    have_xinput2_multitouch=yes
                    AC_DEFINE([SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH], 1, [])
                    AC_DEFINE([SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH], 1, [ ])
                    SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch"
                    ])
                AC_MSG_RESULT($have_xinput2_multitouch)
@@ -2129,7 +2136,7 @@
CheckMETAL()
{
    AC_ARG_ENABLE(video-metal,
AC_HELP_STRING([--enable-video-metal], [include Metal support [[default=yes]]]),
AS_HELP_STRING([--enable-video-metal], [include Metal support [[default=yes]]]),
              , enable_video_metal=yes)
    AC_ARG_ENABLE(render-metal,
AS_HELP_STRING([--enable-render-metal], [enable the Metal render driver [[default=yes]]]),
@@ -2145,7 +2152,7 @@
          #import <Metal/Metal.h>
          #import <QuartzCore/CAMetalLayer.h>
          #if !TARGET_CPU_X86_64
          #if TARGET_CPU_X86
          #error Metal doesn't work on this configuration
          #endif
        ],[
@@ -2167,7 +2174,6 @@
        fi
    fi
}
dnl Find DirectFB
CheckDirectFB()
@@ -2233,8 +2239,8 @@
    if test x$enable_video = xyes -a x$enable_video_kmsdrm = xyes; then
        video_kmsdrm=no
        PKG_CHECK_MODULES([LIBDRM], [libdrm >= 2.4.46], libdrm_avail=yes, libdrm_avail=no)
        PKG_CHECK_MODULES([LIBGBM], [gbm >= 9.0.0], libgbm_avail=yes, libgbm_avail=no)
        PKG_CHECK_MODULES([LIBDRM], [libdrm >= 1.4.82], libdrm_avail=yes, libdrm_avail=no)
        PKG_CHECK_MODULES([LIBGBM], [gbm >= 11.1.0], libgbm_avail=yes, libgbm_avail=no)
        if test x$libdrm_avail = xyes -a x$libgbm_avail = xyes; then
            video_kmsdrm=yes
@@ -2247,6 +2253,7 @@
            AC_DEFINE(SDL_VIDEO_DRIVER_KMSDRM, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/video/kmsdrm/*.c"
            SOURCES="$SOURCES $srcdir/src/video/kmsdrm_legacy/*.c"
            EXTRA_CFLAGS="$EXTRA_CFLAGS $LIBDRM_CFLAGS $LIBGBM_CFLAGS"
            AC_MSG_CHECKING(for kmsdrm dynamic loading support)
@@ -2361,6 +2368,7 @@
          #define LINUX
          #define EGL_API_FB
          #define MESA_EGL_NO_X11_HEADERS
          #define EGL_NO_X11
          #include <EGL/egl.h>
          #include <EGL/eglext.h>
        ],[
@@ -2371,7 +2379,7 @@
        if test x$video_opengl_egl = xyes; then
            AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
        fi
        if test x$enable_video_opengles1 = xyes; then
            AC_MSG_CHECKING(for OpenGL ES v1 headers)
            video_opengles_v1=no
@@ -2389,7 +2397,7 @@
                SUMMARY_video="${SUMMARY_video} opengl_es1"
            fi
        fi
        if test x$enable_video_opengles2 = xyes; then
            AC_MSG_CHECKING(for OpenGL ES v2 headers)
            video_opengles_v2=no
@@ -2440,7 +2448,7 @@
            AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ])
            SUMMARY_video="${SUMMARY_video} opengl_es1"
        fi
        AC_MSG_CHECKING(for OpenGL ES v2 headers)
        video_opengles_v2=no
        AC_TRY_COMPILE([
@@ -2560,7 +2568,7 @@
                  #include <Metal/Metal.h>
                  #include <QuartzCore/CAMetalLayer.h>
                  #if !TARGET_CPU_X86_64
                  #if TARGET_CPU_X86
                  #error Vulkan doesn't work on this configuration
                  #endif
                ],[
@@ -2630,6 +2638,27 @@
    fi
}
dnl See if we can use the FreeBSD kernel kbio.h header
CheckInputKBIO()
{
    AC_MSG_CHECKING(for FreeBSD kbio.h)
    use_input_kbio=no
    AC_TRY_COMPILE([
      #include <sys/kbio.h>
      #include <sys/ioctl.h>
    ],[
       accentmap_t accTable;
        ioctl(0, KDENABIO, 1);
    ],[
    use_input_kbio=yes
    ])
    AC_MSG_RESULT($use_input_kbio)
    if test x$use_input_kbio = xyes; then
        AC_DEFINE(SDL_INPUT_FBSDKBIO, 1, [ ])
        SUMMARY_input="${SUMMARY_input} fbsdkbio"
    fi
}
dnl See if the platform offers libudev for device enumeration and hotplugging.
CheckLibUDev()
{
@@ -2686,6 +2715,28 @@
    fi
}
dnl Check inotify presense
CheckInotify()
{
    save_LIBS="$LIBS"
    case "$host" in
     *-*-freebsd*) LIBS="$LIBS -linotify"
      ;;
    esac
    AC_CHECK_HEADERS(sys/inotify.h, [have_inotify_inotify_h_hdr=yes])
    AC_CHECK_FUNCS(inotify_init, [have_inotify=yes])
    AC_CHECK_FUNCS(inotify_init1)
    if test x$have_inotify_inotify_h_hdr = xyes -a x$have_inotify = xyes; then
        AC_DEFINE(HAVE_INOTIFY, 1, [ ])
        case "$host" in
            *-*-freebsd*)
                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -linotify"
                ;;
        esac
    fi
    LIBS="$save_LIBS"
}
dnl See if the platform has libibus IME support.
CheckIBus()
{
@@ -2699,9 +2750,6 @@
        AC_CHECK_HEADER(ibus-1.0/ibus.h,
                        have_ibus_ibus_h_hdr=yes,
                        have_ibus_ibus_h_hdr=no)
        AC_CHECK_HEADER(sys/inotify.h,
                        have_inotify_inotify_h_hdr=yes,
                        have_inotify_inotify_h_hdr=no)
        CFLAGS="$save_CFLAGS"
        if test x$have_ibus_ibus_h_hdr = xyes; then
            if test x$enable_ime != xyes; then
@@ -2729,48 +2777,58 @@
AS_HELP_STRING([--enable-fcitx], [enable fcitx support [[default=yes]]]),
                  , enable_fcitx=yes)
    if test x$enable_fcitx = xyes; then
        PKG_CHECK_MODULES([FCITX], [fcitx], have_fcitx=yes, have_fcitx=no)
        CFLAGS="$CFLAGS $FCITX_CFLAGS"
        AC_CHECK_HEADER(fcitx/frontend.h,
                        have_fcitx_frontend_h_hdr=yes,
                        have_fcitx_frontend_h_hdr=no)
        CFLAGS="$save_CFLAGS"
        if test x$have_fcitx_frontend_h_hdr = xyes; then
            if test x$enable_ime != xyes; then
                AC_MSG_WARN([IME support is required for fcitx.])
                have_fcitx_frontend_h_hdr=no
            elif test x$enable_dbus != xyes; then
                AC_MSG_WARN([DBus support is required for fcitx.])
                have_fcitx_frontend_h_hdr=no
            else
                AC_DEFINE(HAVE_FCITX_FRONTEND_H, 1, [ ])
                EXTRA_CFLAGS="$EXTRA_CFLAGS $FCITX_CFLAGS"
                SOURCES="$SOURCES $srcdir/src/core/linux/SDL_fcitx.c"
            fi
        AC_MSG_CHECKING(for fcitx support)
        have_fcitx=no
        if test x$enable_ime != xyes; then
            AC_MSG_WARN([IME support is required for fcitx.])
        elif test x$have_dbus_dbus_h_hdr != xyes; then
            AC_MSG_WARN([DBus support is required for fcitx.])
        else
            have_fcitx=yes
            AC_DEFINE(HAVE_FCITX, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_fcitx.c"
        fi
        AC_MSG_RESULT($have_fcitx)
    fi
}
dnl See if we can use the Touchscreen input library
CheckTslib()
dnl Check to see if GameController framework support is desired
CheckJoystickMFI()
{
    AC_ARG_ENABLE(input-tslib,
AS_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[default=yes]]]),
                  , enable_input_tslib=yes)
    if test x$enable_input_tslib = xyes; then
        AC_MSG_CHECKING(for Touchscreen library support)
        enable_input_tslib=no
        AC_TRY_COMPILE([
          #include "tslib.h"
    AC_ARG_ENABLE(joystick-mfi,
AS_HELP_STRING([--enable-joystick-mfi], [include macOS MFI joystick support [[default=yes]]]),
              , enable_joystick_mfi=yes)
    if test x$enable_joystick_mfi = xyes; then
        save_CFLAGS="$CFLAGS"
        save_LDFLAGS="$LDFLAGS"
        dnl Work around that we don't have Objective-C support in autoconf
        CFLAGS="$CFLAGS -x objective-c -fobjc-weak"
        LDFLAGS="$LDFLAGS -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController"
        AC_MSG_CHECKING(for GameController framework)
        enable_joystick_mfi=no
        AC_TRY_LINK([
          #include <AvailabilityMacros.h>
          #include <TargetConditionals.h>
          #import <GameController/GameController.h>
        ],[
          #if MAC_OS_X_VERSION_MIN_REQUIRED < 1080
          #error GameController framework doesn't work on this configuration
          #endif
          #if TARGET_CPU_X86
          #error GameController framework doesn't work on this configuration
          #endif
        ],[
        enable_input_tslib=yes
        enable_joystick_mfi=yes
        ])
        AC_MSG_RESULT($enable_input_tslib)
        if test x$enable_input_tslib = xyes; then
            AC_DEFINE(SDL_INPUT_TSLIB, 1, [ ])
            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts"
            SUMMARY_input="${SUMMARY_input} ts"
        CFLAGS="$save_CFLAGS"
        LDFLAGS="$save_LDFLAGS"
        AC_MSG_RESULT($enable_joystick_mfi)
        if test x$enable_joystick_mfi = xyes; then
            AC_DEFINE(SDL_JOYSTICK_MFI, 1, [ ])
            EXTRA_CFLAGS="$EXTRA_CFLAGS -fobjc-weak -Wno-unused-command-line-argument"
            EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController"
        fi
    fi
}
@@ -3094,11 +3152,11 @@
    AC_CHECK_HEADER(mmdeviceapi.h, have_wasapi=yes)
    if test x$have_wasapi = xyes; then
        AC_DEFINE(HAVE_MMDEVICEAPI_H,1,[])
        AC_DEFINE(HAVE_MMDEVICEAPI_H, 1, [ ])
    fi
    AC_CHECK_HEADER(audioclient.h,,have_wasapi=no)
    if test x$have_wasapi = xyes; then
        AC_DEFINE(HAVE_AUDIOCLIENT_H,1,[])
        AC_DEFINE(HAVE_AUDIOCLIENT_H, 1, [ ])
    fi
    AC_ARG_ENABLE(wasapi,
@@ -3140,7 +3198,7 @@
CheckUSBHID()
{
    case "$host" in
        *-*-*bsd*)
        *-*-*bsd*|*-*-dragonfly*)
            if test x$enable_joystick = xyes; then
                AC_CHECK_LIB(usbhid, hid_init, have_libusbhid=yes)
                if test x$have_libusbhid = xyes; then
@@ -3152,7 +3210,7 @@
                    AC_CHECK_HEADER(libusb.h, [USB_CFLAGS="-DHAVE_LIBUSB_H"])
                    AC_CHECK_LIB(usb, hid_init, [USB_LIBS="$USB_LIBS -lusb"])
                fi
                save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS $USB_CFLAGS"
@@ -3164,8 +3222,8 @@
                  #include <usb.h>
                  #endif
                  #ifdef __DragonFly__
                  # include <bus/usb/usb.h>
                  # include <bus/usb/usbhid.h>
                  # include <bus/u4b/usb.h>
                  # include <bus/u4b/usbhid.h>
                  #else
                  # include <dev/usb/usb.h>
                  # include <dev/usb/usbhid.h>
@@ -3195,8 +3253,8 @@
                      #include <usb.h>
                      #endif
                      #ifdef __DragonFly__
                      # include <bus/usb/usb.h>
                      # include <bus/usb/usbhid.h>
                      # include <bus/u4b/usb.h>
                      # include <bus/u4b/usbhid.h>
                      #else
                      # include <dev/usb/usb.h>
                      # include <dev/usb/usbhid.h>
@@ -3218,7 +3276,7 @@
                        USB_CFLAGS="$USB_CFLAGS -DUSBHID_UCR_DATA"
                    fi
                    AC_MSG_RESULT($have_usbhid_ucr_data)
                    AC_MSG_CHECKING(for new usbhid API)
                    have_usbhid_new=no
                    AC_TRY_COMPILE([
@@ -3227,8 +3285,8 @@
                      #include <usb.h>
                      #endif
                      #ifdef __DragonFly__
                      #include <bus/usb/usb.h>
                      #include <bus/usb/usbhid.h>
                      #include <bus/u4b/usb.h>
                      #include <bus/u4b/usbhid.h>
                      #else
                      #include <dev/usb/usb.h>
                      #include <dev/usb/usbhid.h>
@@ -3280,50 +3338,54 @@
dnl Check for HIDAPI joystick drivers
CheckHIDAPI()
{
    # The hidraw support doesn't catch Xbox, PS4 and Nintendo controllers,
    # so we'll just use libusb when it's available.
    case "$host" in
        # libusb does not support iOS
        arm*-apple-darwin* | *-ios-* )
            skiplibusb=yes
            ;;
        # On the other hand, *BSD specifically uses libusb only
        *-*-*bsd* )
            onlylibusb=yes
            ;;
    esac
    AC_ARG_ENABLE(hidapi,
AS_HELP_STRING([--enable-hidapi], [use HIDAPI for low level joystick drivers [[default=no]]]),
                  , enable_hidapi=no)
AS_HELP_STRING([--enable-hidapi], [use HIDAPI for low level joystick drivers [[default=yes]]]),
                  , enable_hidapi=yes)
    AC_ARG_ENABLE(hidapi-libusb,
AS_HELP_STRING([--enable-hidapi-libusb], [use libusb for low level joystick drivers [[default=maybe]]]),
                  , enable_hidapi_libusb=maybe)
    if test x$enable_joystick = xyes -a x$enable_hidapi = xyes; then
        if test x$skiplibusb = xyes; then
            hidapi_support=yes
        else
        case "$host" in
            # libusb does not support iOS
            *-ios-* )
                enable_hidapi_libusb=no
                ;;
            # On the other hand, *BSD specifically uses libusb only
            *-*-*bsd* )
                enable_hidapi_libusb=yes
                require_hidapi_libusb=yes
                ;;
            # RAWINPUT is only available on Win32, but can be enabled if HIDAPI is
            *-*-cygwin* | *-*-mingw32*)
                enable_joystick_rawinput=yes
                ;;
        esac
        hidapi_support=yes
        if test x$enable_hidapi_libusb = xyes; then
            PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], have_libusb=yes, have_libusb=no)
            save_CFLAGS="$CFLAGS"
            CFLAGS="$save_CFLAGS $LIBUSB_CFLAGS"
            AC_CHECK_HEADER(libusb.h, have_libusb_h=yes)
            CFLAGS="$save_CFLAGS"
            if test x$have_libusb_h = xyes; then
                hidapi_support=yes
            elif test x$onlylibusb = xyes; then
            if test x$have_libusb_h = xno && test x$require_hidapi_libusb = xyes; then
                hidapi_support=no
            else
                hidapi_support=yes
            fi
        fi
        if test x$hidapi_support = xyes; then
            AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ])
            if test x$enable_joystick_rawinput = xyes; then
                AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
            fi
            EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi"
            SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c"
            SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c"
            if test x$have_libusb_h = xyes; then
                EXTRA_CFLAGS="$EXTRA_CFLAGS $LIBUSB_CFLAGS"
                if test x$onlylibusb = xyes; then
                    SOURCES="$SOURCES $srcdir/src/hidapi/libusb/hid.c"
                if test x$require_hidapi_libusb = xyes; then
                    EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LIBUSB_LIBS"
                else
                    if test x$have_loadso != xyes; then
@@ -3410,7 +3472,18 @@
    fi
}
dnl Set up the Virtual joystick driver.
CheckVirtualJoystick()
{
    AC_ARG_ENABLE(joystick-virtual,
AS_HELP_STRING([--enable-joystick-virtual], [enable virtual joystick APIs [[default=yes]]]),
                  , enable_joystick_virtual=yes)
    if test x$enable_joystick = xyes -a x$enable_joystick_virtual = xyes; then
        AC_DEFINE(SDL_JOYSTICK_VIRTUAL, 1, [ ])
        SOURCES="$SOURCES $srcdir/src/joystick/virtual/*.c"
        have_joystick_virtual=yes
    fi
}
dnl Do this on all platforms, before everything else (other things might want to override it).
CheckWarnAll
@@ -3418,6 +3491,8 @@
dnl Do this for every platform, but for some it doesn't mean anything, but better to catch it here anyhow.
CheckEventSignals
have_locale=no
dnl Set up the configuration based on the host platform!
case "$host" in
@@ -3432,11 +3507,9 @@
                EXTRA_CFLAGS="$EXTRA_CFLAGS $ANDROID_CFLAGS"
                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -ldl -lGLESv1_CM -lGLESv2 -llog -landroid"
                SDLMAIN_SOURCES="$srcdir/src/main/android/*.c"
                if test x$enable_video = xyes; then
                    SOURCES="$SOURCES $srcdir/src/core/android/*.c $srcdir/src/video/android/*.c"
                    # FIXME: confdefs? Not AC_DEFINE?
                    $as_echo "#define SDL_VIDEO_DRIVER_ANDROID 1" >>confdefs.h
                    AC_DEFINE(SDL_VIDEO_DRIVER_ANDROID, 1, [ ])
                    SUMMARY_video="${SUMMARY_video} android"
                fi
                ;;
@@ -3491,14 +3564,17 @@
        CheckLibUDev
        CheckDBus
        CheckIME
        CheckInotify
        CheckIBus
        CheckFcitx
        case $ARCH in
          linux)
              CheckInputKD
          ;;
          freebsd)
              CheckInputKBIO
          ;;
        esac
        CheckTslib
        CheckUSBHID
        CheckHIDAPI
        CheckPTHREAD
@@ -3506,6 +3582,12 @@
        CheckLinuxVersion
        CheckRPATH
        CheckVivanteVideo
        SOURCES="$SOURCES $srcdir/src/misc/unix/*.c"
        have_misc=yes
        SOURCES="$SOURCES $srcdir/src/locale/unix/*.c"
        have_locale=yes
        # Set up files for the audio library
        if test x$enable_audio = xyes; then
@@ -3548,6 +3630,14 @@
                SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
                have_joystick=yes
            ;;
            freebsd)
                if test x$use_input_events = xyes; then
                    AC_DEFINE(SDL_JOYSTICK_LINUX, 1, [ ])
                    SOURCES="$SOURCES $srcdir/src/joystick/linux/*.c"
                    SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
                    have_joystick=yes
                fi
            ;;
            android)
                AC_DEFINE(SDL_JOYSTICK_ANDROID, 1, [ ])
                SOURCES="$SOURCES $srcdir/src/joystick/android/*.c"
@@ -3559,7 +3649,7 @@
        # Set up files for the haptic library
        if test x$enable_haptic = xyes; then
          case $ARCH in
            linux)
            linux|freebsd)
                if test x$use_input_events = xyes; then
                    AC_DEFINE(SDL_HAPTIC_LINUX, 1, [ ])
                    SOURCES="$SOURCES $srcdir/src/haptic/linux/*.c"
@@ -3625,9 +3715,12 @@
        fi
        # Set up files for evdev input
        if test x$use_input_events = xyes; then
            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev*.c"
        fi
            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev.c"
            SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev_kbd.c"
            SOURCES="$SOURCES $srcdir/src/core/freebsd/SDL_evdev_kbd_freebsd.c"
        fi
        # Set up other core UNIX files
        SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev_capabilities.c"
        SOURCES="$SOURCES $srcdir/src/core/linux/SDL_threadprio.c"
        SOURCES="$SOURCES $srcdir/src/core/unix/*.c"
        ;;
@@ -3655,6 +3748,13 @@
        # Set up the core platform files
        SOURCES="$SOURCES $srcdir/src/core/windows/*.c"
        SOURCES="$SOURCES $srcdir/src/misc/windows/*.c"
        have_misc=yes
        # Use the Windows locale APIs.
        SOURCES="$SOURCES $srcdir/src/locale/windows/*.c"
        have_locale=yes
        # Set up files for the video library
        if test x$enable_video = xyes; then
@@ -3718,11 +3818,23 @@
                have_haptic=yes
            fi
        fi
        # Set up files for the sensor library
        AC_CHECK_HEADER(sensorsapi.h,have_winsensors=yes,have_winsensors=no)
        if test x$have_winsensors = xyes; then
            AC_DEFINE(HAVE_SENSORSAPI_H, 1, [ ])
        fi
        if test x$enable_sensor = xyes -a x$have_winsensors = xyes; then
            AC_DEFINE(SDL_SENSOR_WINDOWS, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/sensor/windows/*.c"
            have_sensor=yes
        fi
        # Set up files for the power library
        if test x$enable_power = xyes; then
            AC_DEFINE(SDL_POWER_WINDOWS, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/power/windows/SDL_syspower.c"
            have_power=yes
        fi
        # Set up files for the filesystem library
        if test x$enable_filesystem = xyes; then
            AC_DEFINE(SDL_FILESYSTEM_WINDOWS, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/filesystem/windows/SDL_sysfilesystem.c"
@@ -3819,6 +3931,14 @@
            SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc"
            have_filesystem=yes
        fi
        SOURCES="$SOURCES $srcdir/src/misc/haiku/*.cc"
        have_misc=yes
        # Set up files for the locale library
        SOURCES="$SOURCES $srcdir/src/locale/haiku/*.cc"
        have_locale=yes
        # The Haiku platform requires special setup.
        SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES"
        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding"
@@ -3826,7 +3946,7 @@
        #  other spins, like x86-64, use a more standard "libstdc++.so.*"
        AC_CHECK_FILE("/boot/system/lib/libstdc++.r4.so", EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lstdc++.r4", EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lstdc++")
        ;;
    arm*-apple-darwin*|*-ios-*)
    *-ios-*)
        ARCH=ios
        CheckVisibilityHidden
@@ -3838,6 +3958,13 @@
        CheckMETAL
        CheckVulkan
        CheckPTHREAD
        SOURCES="$SOURCES $srcdir/src/misc/ios/*.m"
        have_misc=yes
        # Set up files for the locale library
        SOURCES="$SOURCES $srcdir/src/locale/macosx/*.m"
        have_locale=yes
        # Set up files for the audio library
        if test x$enable_audio = xyes; then
@@ -3852,6 +3979,9 @@
            SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
            SOURCES="$SOURCES $srcdir/src/joystick/steam/*.c"
            have_joystick=yes
        else
            # Need this code for accelerometer as joystick support
            SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
        fi
        # Set up files for the haptic library
        #if test x$enable_haptic = xyes; then
@@ -3938,6 +4068,13 @@
        CheckPTHREAD
        CheckHIDAPI
        SOURCES="$SOURCES $srcdir/src/misc/macosx/*.m"
        have_misc=yes
        # Set up files for the locale library
        SOURCES="$SOURCES $srcdir/src/locale/macosx/*.m"
        have_locale=yes
        # Set up files for the audio library
        if test x$enable_audio = xyes; then
            AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ])
@@ -3950,6 +4087,8 @@
        if test x$enable_joystick = xyes; then
            AC_DEFINE(SDL_JOYSTICK_IOKIT, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c"
            SOURCES="$SOURCES $srcdir/src/joystick/iphoneos/*.m"
            CheckJoystickMFI
            have_joystick=yes
        fi
        # Set up files for the haptic library
@@ -4008,7 +4147,7 @@
            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
            have_timers=yes
        fi
        if test x$enable_filesystem = xyes; then
            AC_DEFINE(SDL_FILESYSTEM_NACL, 1, [ ])
            SOURCES="$SOURCES $srcdir/src/filesystem/nacl/*.c"
@@ -4045,7 +4184,7 @@
            SOURCES="$SOURCES $srcdir/src/power/emscripten/*.c"
            have_power=yes
        fi
        # Set up files for the power library
        if test x$enable_joystick = xyes; then
            AC_DEFINE(SDL_JOYSTICK_EMSCRIPTEN, 1, [ ])
@@ -4065,6 +4204,9 @@
            SOURCES="$SOURCES $srcdir/src/timer/unix/*.c"
            have_timers=yes
        fi
        # Set up files for the locale library
        SOURCES="$SOURCES $srcdir/src/locale/emscripten/*.c"
        have_locale=yes
        ;;
    *-*-riscos*)
        ARCH=riscos
@@ -4077,6 +4219,9 @@
        CheckOSS
        CheckPTHREAD
        CheckClockGettime
        SOURCES="$SOURCES $srcdir/src/misc/riscos/*.c"
        have_misc=yes
        # Set up files for the timer library
        if test x$enable_timers = xyes; then
@@ -4091,6 +4236,9 @@
        ])
        ;;
esac
dnl Permit use of virtual joystick APIs on any platform (subject to configure options)
CheckVirtualJoystick
# Check whether to install sdl2-config
AC_MSG_CHECKING(whether to install sdl2-config)
@@ -4110,6 +4258,12 @@
# Verify that we have all the platform specific files we need
if test x$have_misc != xyes; then
    SOURCES="$SOURCES $srcdir/src/misc/dummy/*.c"
fi
if test x$have_locale != xyes; then
    SOURCES="$SOURCES $srcdir/src/locale/dummy/*.c"
fi
if test x$have_joystick != xyes; then
    if test x$enable_joystick = xyes; then
        AC_DEFINE(SDL_JOYSTICK_DUMMY, 1, [ ])
@@ -4194,10 +4348,10 @@
VERSION_OBJECTS=`echo $VERSION_SOURCES`
VERSION_DEPENDS=`echo $VERSION_SOURCES`
VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.o,g'`
VERSION_OBJECTS=`echo "$VERSION_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.lo,g'`
VERSION_DEPENDS=`echo "$VERSION_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.rc,\\\\
\\$(objects)/\\2.o: \\1/\\2.rc \\$(objects)/.created\\\\
   \\$(WINDRES) \\$< \\$@,g"`
\\$(objects)/\\2.lo: \\1/\\2.rc \\$(objects)/.created\\\\
   \\$(RUN_CMD_RC)\\$(LIBTOOL) --mode=compile --tag=RC \\$(RC) -i \\$< -o \\$@,g"`
SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES`
SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES`
@@ -4215,7 +4369,7 @@
# Set runtime shared library paths as needed
if test "x$enable_rpath" = "xyes"; then
if test "x$enable_rpath" = "xyes" -a "x$enable_shared" = "xyes"; then
  if test $ARCH = bsdi -o $ARCH = freebsd -o $ARCH = linux -o $ARCH = netbsd; then
    SDL_RLD_FLAGS="-Wl,-rpath,\${libdir}"
@@ -4239,7 +4393,7 @@
  SDL_RLD_FLAGS=""
fi
SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS"
SDL_STATIC_LIBS="$EXTRA_LDFLAGS"
dnl Expand the cflags and libraries needed by apps using SDL
AC_SUBST(SDL_CFLAGS)
@@ -4247,9 +4401,12 @@
AC_SUBST(SDL_STATIC_LIBS)
AC_SUBST(SDL_RLD_FLAGS)
if test x$enable_shared = xyes; then
    PKG_CONFIG_LIBS_PRIV="
Libs.private:"
    ENABLE_SHARED_TRUE=
    ENABLE_SHARED_FALSE="#"
else
    PKG_CONFIG_LIBS_PRIV=
    ENABLE_SHARED_TRUE="#"
    ENABLE_SHARED_FALSE=
fi
@@ -4260,6 +4417,7 @@
    ENABLE_STATIC_TRUE="#"
    ENABLE_STATIC_FALSE=
fi
AC_SUBST(PKG_CONFIG_LIBS_PRIV)
AC_SUBST(ENABLE_SHARED_TRUE)
AC_SUBST(ENABLE_SHARED_FALSE)
AC_SUBST(ENABLE_STATIC_TRUE)
@@ -4278,7 +4436,6 @@
AC_SUBST(EXTRA_CFLAGS)
AC_SUBST(BUILD_LDFLAGS)
AC_SUBST(EXTRA_LDFLAGS)
AC_SUBST(WINDRES)
AC_SUBST(WAYLAND_SCANNER)
cat >Makefile.rules <<__EOF__
@@ -4315,6 +4472,11 @@
    SUMMARY="${SUMMARY}X11 libraries   :${SUMMARY_video_x11}\n"
fi
SUMMARY="${SUMMARY}Input drivers   :${SUMMARY_input}\n"
if test x$have_joystick_virtual = xyes; then
    SUMMARY="${SUMMARY}Enable virtual joystick APIs : YES\n"
else
    SUMMARY="${SUMMARY}Enable virtual joystick APIs : NO\n"
fi
if test x$have_samplerate_h_hdr = xyes; then
    SUMMARY="${SUMMARY}Using libsamplerate : YES\n"
else
@@ -4340,7 +4502,7 @@
else
    SUMMARY="${SUMMARY}Using ibus          : NO\n"
fi
if test x$have_fcitx_frontend_h_hdr = xyes; then
if test x$have_fcitx = xyes; then
    SUMMARY="${SUMMARY}Using fcitx         : YES\n"
else
    SUMMARY="${SUMMARY}Using fcitx         : NO\n"