| | |
| | | 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]) |
| | | |
| | |
| | | # |
| | | 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) |
| | |
| | | |
| | | # 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` |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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) |
| | |
| | | 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" |
| | |
| | | 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 |
| | | |
| | |
| | | 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) |
| | |
| | | SUMMARY_audio="${SUMMARY_audio} fusionsound" |
| | | fi |
| | | AC_MSG_RESULT($fusionsound_shared) |
| | | |
| | | |
| | | have_audio=yes |
| | | fi |
| | | fi |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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` |
| | |
| | | fi |
| | | } |
| | | |
| | | |
| | | dnl Check for Native Client stuff |
| | | CheckNativeClient() |
| | | { |
| | |
| | | SUMMARY_video="${SUMMARY_video} nacl opengles2" |
| | | ]) |
| | | } |
| | | |
| | | |
| | | CheckRPI() |
| | | { |
| | |
| | | |
| | | # 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" |
| | |
| | | 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) |
| | |
| | | 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]]]), |
| | |
| | | #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 |
| | | ],[ |
| | |
| | | fi |
| | | fi |
| | | } |
| | | |
| | | |
| | | dnl Find DirectFB |
| | | CheckDirectFB() |
| | |
| | | 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 |
| | |
| | | |
| | | 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) |
| | |
| | | #define LINUX |
| | | #define EGL_API_FB |
| | | #define MESA_EGL_NO_X11_HEADERS |
| | | #define EGL_NO_X11 |
| | | #include <EGL/egl.h> |
| | | #include <EGL/eglext.h> |
| | | ],[ |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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([ |
| | |
| | | #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 |
| | | ],[ |
| | |
| | | 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() |
| | | { |
| | |
| | | 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() |
| | | { |
| | |
| | | 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 |
| | |
| | | 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 |
| | | } |
| | |
| | | |
| | | 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, |
| | |
| | | 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 |
| | |
| | | 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" |
| | | |
| | |
| | | #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> |
| | |
| | | #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> |
| | |
| | | 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([ |
| | |
| | | #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> |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | |
| | | 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 |
| | |
| | | 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 |
| | | ;; |
| | |
| | | CheckLibUDev |
| | | CheckDBus |
| | | CheckIME |
| | | CheckInotify |
| | | CheckIBus |
| | | CheckFcitx |
| | | case $ARCH in |
| | | linux) |
| | | CheckInputKD |
| | | ;; |
| | | freebsd) |
| | | CheckInputKBIO |
| | | ;; |
| | | esac |
| | | CheckTslib |
| | | CheckUSBHID |
| | | CheckHIDAPI |
| | | CheckPTHREAD |
| | |
| | | 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 |
| | |
| | | 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" |
| | |
| | | # 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" |
| | |
| | | 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" |
| | | ;; |
| | |
| | | |
| | | # 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 |
| | |
| | | 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" |
| | |
| | | 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" |
| | |
| | | # 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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, [ ]) |
| | |
| | | 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 |
| | |
| | | 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" |
| | |
| | | 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, [ ]) |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | ]) |
| | | ;; |
| | | 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) |
| | |
| | | |
| | | # 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, [ ]) |
| | |
| | | |
| | | 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` |
| | |
| | | |
| | | # 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}" |
| | | |
| | |
| | | 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) |
| | |
| | | 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 |
| | |
| | | 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) |
| | |
| | | AC_SUBST(EXTRA_CFLAGS) |
| | | AC_SUBST(BUILD_LDFLAGS) |
| | | AC_SUBST(EXTRA_LDFLAGS) |
| | | AC_SUBST(WINDRES) |
| | | AC_SUBST(WAYLAND_SCANNER) |
| | | |
| | | cat >Makefile.rules <<__EOF__ |
| | |
| | | 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 |
| | |
| | | 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" |