RetroArch/qb/config.libs.sh

525 lines
16 KiB
Bash
Raw Normal View History

check_switch '' C99 -std=gnu99 "Cannot find C99 compatible compiler."
check_switch '' NOUNUSED -Wno-unused-result
add_define MAKEFILE NOUNUSED "$HAVE_NOUNUSED"
check_switch '' NOUNUSED_VARIABLE -Wno-unused-variable
add_define MAKEFILE NOUNUSED_VARIABLE "$HAVE_NOUNUSED_VARIABLE"
2011-08-24 14:12:38 +00:00
# There are still broken 64-bit Linux distros out there. :)
[ -z "$CROSS_COMPILE" ] && [ -d /usr/lib64 ] && add_dirs LIBRARY /usr/lib64
2011-08-24 14:12:38 +00:00
[ -z "$CROSS_COMPILE" ] && [ -d /opt/local/lib ] && add_dirs LIBRARY /opt/local/lib
2011-09-02 14:12:34 +00:00
2019-02-08 20:28:15 +00:00
[ "${GLOBAL_CONFIG_DIR:-}" ] ||
{ case "$PREFIX" in
/usr*) GLOBAL_CONFIG_DIR=/etc ;;
*) GLOBAL_CONFIG_DIR="$PREFIX"/etc ;;
esac
}
2019-02-08 20:28:15 +00:00
DYLIB=-ldl
2014-08-28 16:41:12 +00:00
CLIB=-lc
PTHREADLIB=-lpthread
SOCKETLIB=-lc
2014-10-29 00:30:12 +00:00
SOCKETHEADER=
INCLUDES='usr/include usr/local/include'
SORT='sort'
2019-02-08 20:28:15 +00:00
EXTRA_GL_LIBS=''
VC_PREFIX=''
2014-08-28 16:41:12 +00:00
2012-12-22 22:52:05 +00:00
if [ "$OS" = 'BSD' ]; then
[ -d /usr/local/include ] && add_dirs INCLUDE /usr/local/include
[ -d /usr/local/lib ] && add_dirs LIBRARY /usr/local/lib
2012-12-22 22:52:05 +00:00
DYLIB=-lc;
elif [ "$OS" = 'Haiku' ]; then
2014-08-28 16:41:12 +00:00
DYLIB=""
CLIB=-lroot
PTHREADLIB=-lroot
SOCKETLIB=-lnetwork
2017-11-27 21:22:49 +00:00
CFLAGS="$CFLAGS -D_BSD_SOURCE"
2014-08-29 19:35:56 +00:00
elif [ "$OS" = 'Win32' ]; then
SOCKETLIB=-lws2_32
2014-10-29 00:30:12 +00:00
SOCKETHEADER="#include <winsock2.h>"
2014-08-29 19:35:56 +00:00
DYLIB=
2017-01-15 15:47:27 +00:00
elif [ "$OS" = 'Cygwin' ]; then
die 1 'Error: Cygwin is not a supported platform. See https://bot.libretro.com/docs/compilation/windows/'
elif [ "$OS" = 'SunOS' ]; then
SORT='gsort'
2012-12-22 22:52:05 +00:00
fi
add_define MAKEFILE DATA_DIR "$SHARE_DIR"
add_define MAKEFILE DYLIB_LIB "$DYLIB"
2012-12-22 22:52:05 +00:00
check_lib '' SYSTEMD -lsystemd sd_get_machine_names
if [ "$HAVE_VIDEOCORE" != "no" ]; then
check_pkgconf VC_TEST bcm_host
# use fallback if pkgconfig is not available
if [ -z "$VC_TEST_LIBS" ]; then
[ -d /opt/vc/lib ] && add_dirs LIBRARY /opt/vc/lib /opt/vc/lib/GL
check_lib '' VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
else
HAVE_VIDEOCORE="$HAVE_VC_TEST"
fi
fi
if [ "$HAVE_VIDEOCORE" = 'yes' ]; then
2016-09-16 22:38:35 +00:00
HAVE_OPENGLES='auto'
VC_PREFIX='brcm'
INCLUDES="${INCLUDES} opt/vc/include"
# use fallback if pkgconfig is not available
if [ -z "$VC_TEST_LIBS" ]; then
[ -d /opt/vc/include ] && add_dirs INCLUDE /opt/vc/include
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_dirs INCLUDE /opt/vc/include/interface/vcos/pthreads
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_dirs INCLUDE /opt/vc/include/interface/vmcs_host/linux
EXTRA_GL_LIBS="-lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm"
fi
fi
if [ "$HAVE_7ZIP" = "yes" ]; then
add_dirs INCLUDE ./deps/7zip
fi
if [ "$HAVE_PRESERVE_DYLIB" = "yes" ]; then
die : 'Notice: Disabling dlclose() of shared objects for Valgrind support.'
fi
if [ "$HAVE_NEON" = "yes" ]; then
2019-01-31 20:55:07 +00:00
add_define MAKEFILE NEON_CFLAGS '-mfpu=neon -marm'
add_define MAKEFILE NEON_ASFLAGS -mfpu=neon
fi
if [ "$HAVE_FLOATHARD" = "yes" ]; then
2019-01-31 20:55:07 +00:00
add_define MAKEFILE FLOATHARD_CFLAGS -mfloat-abi=hard
fi
if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then
2019-01-31 20:55:07 +00:00
add_define MAKEFILE FLOATSOFTFP_CFLAGS -mfloat-abi=softfp
fi
if [ "$HAVE_EGL" != "no" ] && [ "$OS" != 'Win32' ]; then
# some systems have EGL libs, but no pkgconfig
# https://github.com/linux-sunxi/sunxi-mali/pull/8
check_val '' EGL "-l${VC_PREFIX}EGL $EXTRA_GL_LIBS" '' "${VC_PREFIX}egl" '' '' true
if [ "$HAVE_EGL" = "yes" ]; then
EGL_LIBS="$EGL_LIBS $EXTRA_GL_LIBS"
2014-06-17 19:01:19 +00:00
fi
fi
2019-01-30 16:34:06 +00:00
check_lib '' SSA -lass ass_library_init
2019-01-31 20:55:07 +00:00
check_lib '' SSE '-msse -msse2'
2019-01-30 16:34:06 +00:00
check_pkgconf EXYNOS libdrm_exynos
2012-06-12 20:16:16 +00:00
if [ "$LIBRETRO" ]; then
die : 'Notice: Explicit libretro used, disabling dynamic libretro loading ...'
2012-06-12 20:16:16 +00:00
HAVE_DYNAMIC='no'
2019-01-25 07:07:43 +00:00
else
LIBRETRO="-lretro"
fi
2012-06-12 20:16:16 +00:00
[ "$HAVE_DYNAMIC" = 'yes' ] || {
check_lib '' RETRO "$LIBRETRO" retro_init "$DYLIB" '' '' 'Cannot find libretro, did you forget --with-libretro="-lretro"?'
add_define MAKEFILE libretro "$LIBRETRO"
2012-06-12 20:16:16 +00:00
}
2010-12-30 01:52:02 +00:00
add_define MAKEFILE ASSETS_DIR "${ASSETS_DIR:-$SHARE_DIR}/retroarch"
add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}"
add_define MAKEFILE DOC_DIR "${DOC_DIR:-${SHARE_DIR}/doc/retroarch}"
add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}"
2017-01-20 23:23:45 +00:00
if [ "$OS" = 'DOS' ]; then
HAVE_SHADERPIPELINE=no
HAVE_LANGEXTRA=no
fi
2019-01-30 01:26:25 +00:00
check_lib '' THREADS "$PTHREADLIB" pthread_create
check_enabled THREADS THREAD_STORAGE 'Thread Local Storage' 'Threads are' false
2019-01-30 01:26:25 +00:00
check_lib '' THREAD_STORAGE "$PTHREADLIB" pthread_key_create
2014-08-29 19:35:56 +00:00
if [ "$OS" = 'Win32' ]; then
HAVE_DYLIB=yes
else
check_lib '' DYLIB "$DYLIB" dlopen
2014-08-29 19:35:56 +00:00
fi
check_lib '' NETWORKING "$SOCKETLIB" socket "" "$SOCKETHEADER"
2014-10-29 00:30:12 +00:00
2015-01-27 23:49:43 +00:00
if [ "$HAVE_NETWORKING" = 'yes' ]; then
HAVE_GETADDRINFO=auto
HAVE_SOCKET_LEGACY=no
# WinXP+ implements getaddrinfo()
if [ "$OS" = 'Win32' ]; then
HAVE_GETADDRINFO=yes
else
check_lib '' GETADDRINFO "$SOCKETLIB" getaddrinfo
if [ "$HAVE_GETADDRINFO" != 'yes' ]; then
HAVE_SOCKET_LEGACY=yes
die : 'Notice: RetroArch will use legacy socket support'
fi
fi
HAVE_NETWORK_CMD=yes
HAVE_NETWORKGAMEPAD=yes
if [ "$HAVE_MINIUPNPC" = 'no' ]; then
HAVE_BUILTINMINIUPNPC=no
fi
check_lib '' MINIUPNPC '-lminiupnpc'
2012-05-27 12:23:30 +00:00
else
die : 'Warning: All networking features have been disabled.'
2012-06-12 20:16:16 +00:00
HAVE_NETWORK_CMD='no'
HAVE_NETWORKGAMEPAD='no'
HAVE_CHEEVOS='no'
2018-05-29 04:43:30 +00:00
HAVE_DISCORD='no'
HAVE_SSL='no'
fi
check_lib '' STDIN_CMD "$CLIB" fcntl
2012-07-24 00:47:28 +00:00
if [ "$HAVE_NETWORK_CMD" = "yes" ] || [ "$HAVE_STDIN_CMD" = "yes" ]; then
HAVE_COMMAND='yes'
else
HAVE_COMMAND='no'
fi
check_lib '' GETOPT_LONG "$CLIB" getopt_long
2011-03-07 19:22:55 +00:00
2012-06-12 20:16:16 +00:00
if [ "$HAVE_DYLIB" = 'no' ] && [ "$HAVE_DYNAMIC" = 'yes' ]; then
die 1 'Error: Dynamic loading of libretro is enabled, but your platform does not appear to have dlopen(), use --disable-dynamic or --with-libretro="-lretro".'
fi
check_val '' ALSA -lasound alsa alsa '' '' false
check_lib '' CACA -lcaca
2018-07-12 20:55:08 +00:00
check_lib '' SIXEL -lsixel
check_macro AUDIOIO AUDIO_SETINFO sys/audioio.h
if [ "$HAVE_OSS" != 'no' ]; then
check_header OSS sys/soundcard.h
check_header OSS_BSD soundcard.h
check_lib '' OSS_LIB -lossaudio
fi
2011-06-16 21:20:12 +00:00
2017-06-24 01:44:00 +00:00
if [ "$OS" = 'Linux' ]; then
HAVE_TINYALSA=yes
HAVE_RPILED=yes
2017-06-24 01:44:00 +00:00
fi
2012-10-11 19:00:16 +00:00
if [ "$OS" = 'Darwin' ]; then
check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize
check_lib '' CORETEXT "-framework CoreText" CTFontCreateWithName
check_lib '' COCOA "-framework AppKit" NSApplicationMain
check_lib '' AVFOUNDATION "-framework AVFoundation"
check_lib '' CORELOCATION "-framework CoreLocation"
check_lib '' IOHIDMANAGER "-framework IOKit" IOHIDManagerCreate
check_lib '' AL "-framework OpenAL" alcOpenDevice
2017-10-22 05:30:43 +00:00
HAVE_X11=no # X11 breaks on recent OSXes even if present.
HAVE_SDL=no
2011-02-04 13:42:26 +00:00
else
check_lib '' AL -lopenal alcOpenDevice
2011-02-04 13:42:26 +00:00
fi
check_pkgconf RSOUND rsound 1.1
2011-06-25 15:15:58 +00:00
check_pkgconf ROAR libroar
check_val '' JACK -ljack '' jack 0.120.1 '' false
check_val '' PULSE -lpulse '' libpulse '' '' false
check_val '' SDL -lSDL SDL sdl 1.2.10 '' false
check_val '' SDL2 -lSDL2 SDL2 sdl2 2.0.0 '' false
2019-01-24 23:38:37 +00:00
if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then
die : 'Notice: SDL drivers will be replaced by SDL2 ones.'
HAVE_SDL=no
fi
2010-12-30 01:52:02 +00:00
check_enabled CXX DISCORD discord 'The C++ compiler is' false
check_enabled CXX QT 'Qt companion' 'The C++ compiler is' false
if [ "$HAVE_QT" != 'no' ]; then
2018-04-30 18:33:05 +00:00
check_pkgconf QT5CORE Qt5Core 5.2
check_pkgconf QT5GUI Qt5Gui 5.2
check_pkgconf QT5WIDGETS Qt5Widgets 5.2
2018-05-03 04:49:43 +00:00
check_pkgconf QT5CONCURRENT Qt5Concurrent 5.2
check_pkgconf QT5NETWORK Qt5Network 5.2
2018-04-30 18:33:05 +00:00
#check_pkgconf QT5WEBENGINE Qt5WebEngine 5.4
2019-01-17 22:35:19 +00:00
# pkg-config is needed to reliably find Qt5 libraries.
2018-04-30 18:33:05 +00:00
if [ "$HAVE_QT5CORE" = "no" ] || [ "$HAVE_QT5GUI" = "no" ] || [ "$HAVE_QT5WIDGETS" = "no" ] || [ "$HAVE_QT5CONCURRENT" = "no" ] || [ "$HAVE_QT5NETWORK" = "no" ]; then
2018-05-01 16:24:19 +00:00
die : 'Notice: Not building Qt support, required libraries were not found.'
HAVE_QT=no
2018-05-01 05:11:55 +00:00
else
HAVE_QT=yes
2018-04-30 18:33:05 +00:00
fi
check_pkgconf OPENSSL openssl 1.0.0
2018-04-30 18:33:05 +00:00
#if [ "$HAVE_QT5WEBENGINE" = "no" ]; then
# die : 'Notice: Qt5WebEngine not found, disabling web browser support.'
#fi
fi
2017-12-26 06:50:32 +00:00
if [ "$HAVE_FLAC" = 'no' ]; then
HAVE_BUILTINFLAC=no
fi
check_val '' FLAC '-lFLAC' '' flac '' '' false
if [ "$HAVE_SSL" = 'no' ]; then
HAVE_BUILTINMBEDTLS=no
fi
if [ "$HAVE_SSL" != 'no' ]; then
check_header MBEDTLS \
mbedtls/config.h \
mbedtls/certs.h \
mbedtls/debug.h \
mbedtls/platform.h \
mbedtls/net_sockets.h \
mbedtls/ssl.h \
mbedtls/ctr_drbg.h \
mbedtls/entropy.h
check_lib '' MBEDTLS -lmbedtls
check_lib '' MBEDX509 -lmbedx509
check_lib '' MBEDCRYPTO -lmbedcrypto
if [ "$HAVE_MBEDTLS" = 'no' ] ||
[ "$HAVE_MBEDX509" = 'no' ] ||
[ "$HAVE_MBEDCRYPTO" = 'no' ]; then
if [ "$HAVE_BUILTINMBEDTLS" != 'yes' ]; then
die : 'Notice: System mbedtls libraries not found, disabling SSL support.'
HAVE_SSL=no
fi
else
HAVE_SSL=yes
fi
fi
check_enabled THREADS LIBUSB libusb 'Threads are' false
check_val '' LIBUSB -lusb-1.0 libusb-1.0 libusb-1.0 1.0.13 '' false
2014-08-29 19:35:56 +00:00
if [ "$OS" = 'Win32' ]; then
check_lib '' DINPUT -ldinput8
check_lib '' D3D9 -ld3d9
check_lib '' DSOUND -ldsound
2014-08-29 19:35:56 +00:00
if [ "$HAVE_DINPUT" != 'no' ]; then
2015-04-05 18:54:46 +00:00
HAVE_XINPUT=yes
2014-08-29 19:35:56 +00:00
fi
2017-04-09 21:53:55 +00:00
HAVE_WASAPI=yes
2014-08-29 19:35:56 +00:00
HAVE_XAUDIO=yes
2018-06-04 05:48:08 +00:00
HAVE_WINMM=yes
2014-10-22 17:18:56 +00:00
else
HAVE_D3D9=no
2018-01-29 16:48:57 +00:00
HAVE_D3D10=no
HAVE_D3D11=no
HAVE_D3D12=no
2014-08-29 19:35:56 +00:00
fi
2016-09-16 22:38:35 +00:00
if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then
2012-10-14 13:54:48 +00:00
if [ "$OS" = 'Darwin' ]; then
2015-06-17 14:58:30 +00:00
check_header OPENGL "OpenGL/gl.h"
check_lib '' OPENGL "-framework OpenGL"
2014-09-16 20:45:45 +00:00
elif [ "$OS" = 'Win32' ]; then
2015-06-17 14:58:30 +00:00
check_header OPENGL "GL/gl.h"
check_lib '' OPENGL -lopengl32
2012-10-14 13:54:48 +00:00
else
2015-06-17 00:25:55 +00:00
check_header OPENGL "GL/gl.h"
check_lib '' OPENGL -lGL
2012-10-14 13:54:48 +00:00
fi
2014-09-16 21:00:12 +00:00
2015-06-17 14:58:30 +00:00
if [ "$HAVE_OPENGL" = 'yes' ]; then
if [ "$OS" = 'Darwin' ]; then
check_lib '' CG '-framework Cg' cgCreateContext
2015-06-17 14:58:30 +00:00
elif [ "$OS" = 'Win32' ]; then
check_lib cxx CG '-lcg -lcgGL' cgCreateContext
2015-06-17 14:58:30 +00:00
else
# On some distros, -lCg doesn't link against -lstdc++ it seems ...
check_lib cxx CG '-lCg -lCgGL' cgCreateContext
2015-06-17 14:58:30 +00:00
fi
2016-07-30 14:37:22 +00:00
check_pkgconf OSMESA osmesa
2015-06-17 14:58:30 +00:00
else
die : 'Notice: Ignoring Cg. Desktop OpenGL is not enabled.'
2015-06-17 14:58:30 +00:00
HAVE_CG='no'
fi
2011-11-01 17:24:43 +00:00
fi
2011-08-24 14:12:38 +00:00
2017-12-27 08:32:25 +00:00
if [ "$HAVE_ZLIB" = 'no' ]; then
HAVE_BUILTINZLIB=no
elif [ "$HAVE_BUILTINZLIB" = 'yes' ]; then
HAVE_ZLIB=yes
else
check_val '' ZLIB '-lz' '' zlib '' '' false
fi
2010-12-30 02:02:30 +00:00
check_val '' MPV -lmpv '' mpv '' '' false
2018-06-20 02:29:31 +00:00
2018-12-11 01:03:03 +00:00
check_header DRMINGW exchndl.h
check_lib '' DRMINGW -lexchndl
check_enabled THREADS FFMPEG FFmpeg 'Threads are' false
2019-01-30 01:26:25 +00:00
if [ "$HAVE_FFMPEG" != 'no' ]; then
check_val '' AVCODEC -lavcodec '' libavcodec 54 '' false
check_val '' AVFORMAT -lavformat '' libavformat 54 '' false
check_val '' AVDEVICE -lavdevice '' libavdevice '' '' false
check_val '' SWRESAMPLE -lswresample '' libswresample '' '' false
check_val '' AVRESAMPLE -lavresample '' libavresample '' '' false
check_val '' AVUTIL -lavutil '' libavutil 51 '' false
check_val '' SWSCALE -lswscale '' libswscale 2.1 '' false
2017-12-29 22:05:20 +00:00
check_header AV_CHANNEL_LAYOUT libavutil/channel_layout.h
HAVE_FFMPEG='yes'
if [ "$HAVE_AVCODEC" = 'no' ] || [ "$HAVE_SWRESAMPLE" = 'no' ] || [ "$HAVE_AVFORMAT" = 'no' ] || [ "$HAVE_AVUTIL" = 'no' ] || [ "$HAVE_SWSCALE" = 'no' ]; then
HAVE_FFMPEG='no'
die : 'Notice: FFmpeg built-in support disabled due to missing or unsuitable packages.'
2011-11-30 16:46:58 +00:00
fi
else
2012-06-12 20:16:16 +00:00
HAVE_FFMPEG='no'
fi
2014-08-29 19:35:56 +00:00
if [ "$OS" != 'Win32' ]; then
check_lib '' DYNAMIC "$DYLIB" dlopen
2014-08-29 19:35:56 +00:00
fi
2010-12-30 12:54:49 +00:00
2012-09-24 23:26:22 +00:00
if [ "$HAVE_KMS" != "no" ]; then
check_val '' GBM -lgbm '' gbm 9.0 '' false
check_val '' DRM -ldrm libdrm libdrm '' '' false
2017-12-29 22:05:20 +00:00
if [ "$HAVE_GBM" = "yes" ] && [ "$HAVE_DRM" = "yes" ] && [ "$HAVE_EGL" = "yes" ]; then
HAVE_KMS=yes
2012-09-24 23:26:22 +00:00
elif [ "$HAVE_KMS" = "yes" ]; then
die 1 'Error: Cannot find libgbm, libdrm and EGL libraries required for KMS. Compile without --enable-kms.'
2012-09-24 23:26:22 +00:00
else
HAVE_KMS=no
fi
fi
check_val '' LIBXML2 -lxml2 libxml2 libxml-2.0 '' '' false
2012-09-25 10:58:45 +00:00
if [ "$HAVE_EGL" = "yes" ]; then
2016-09-16 22:38:35 +00:00
if [ "$HAVE_OPENGLES" != "no" ]; then
if [ "$OPENGLES_LIBS" ] || [ "$OPENGLES_CFLAGS" ]; then
die : "Notice: Using custom OpenGLES CFLAGS ($OPENGLES_CFLAGS) and LDFLAGS ($OPENGLES_LIBS)."
add_define MAKEFILE OPENGLES_LIBS "$OPENGLES_LIBS"
add_define MAKEFILE OPENGLES_CFLAGS "$OPENGLES_CFLAGS"
else
check_val '' OPENGLES "-l${VC_PREFIX}GLESv2 $EXTRA_GL_LIBS" '' "${VC_PREFIX}glesv2" '' '' true
fi
fi
check_val '' VG "-l${VC_PREFIX}OpenVG $EXTRA_GL_LIBS" '' "${VC_PREFIX}vg" '' '' false
else
HAVE_VG=no
2016-09-16 22:38:35 +00:00
HAVE_OPENGLES=no
fi
check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false
check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false
check_val '' X11 -lX11 '' x11 '' '' false
check_val '' XCB -lxcb '' xcb '' '' false
check_val '' WAYLAND '-lwayland-egl -lwayland-client' '' wayland-egl 10.1.0 '' false
check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false
check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15
check_pkgconf WAYLAND_SCANNER wayland-scanner '1.15 1.12'
check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false
WIP: Fixes #2026 Screensaver suspend on Linux via Dbus One some systems (tested with Gnome 3 on Arch Linux) the current method of using `xdg-screensaver` to suspend the screensaver does not work. Instead, using DBus to issue an `Inhibit` request is recommended. The request returns a cookie that needs to be re-used to un-inhibit the screensaver later. Additionally if the DBus connection is closed the current inhibition is discarded. Thus, the DBus connection needs to stay connected for the duration of the screenshot inhibition. The code is heavily inspired from the [SDL 2.x code](http://hg.libsdl.org/SDL/file/default/src/core/linux/SDL_dbus.c#l172). I didn't call the SDL 2 code though since this it to fix the issue with the GL driver, and I assume one would want to have screensaver inhibited even when SDL 2 is not available (but GL is). I've set "WIP" because: * I haven't done C in a long time so my code is probably not great * There's a dependency on DBus which I don't know is acceptable or not * I've put my code where I could to check it works, but `x11_common` may not be the best place * The code need and "init" and "deinit" kind of method as it needs to initialise the DBus connection, and on deinit close it properly. I've used `x11_connect` and `x11_window_destroy` but they don't sound like the best choices. * I'm a bit unclear as to what happens when "suspend screensaver" is ticked on/off in the menu. This doesn't seem to call `x11_suspend_screensaver` everytime, so I'm not sure if there's a hook somewhere (as disabling screensaver suspend in the menu should cause a DBus unhinibit request to be sent). * Should I just call the SDL 2.x code (meaning that the GL driver would depend on SDL 2.x at runtime)? So, first of all are you ok with the approach, and if yes I'd gladly get feedback about the code, how to architecture it and the best place to put it. Thanks!
2016-09-08 22:18:37 +00:00
check_pkgconf DBUS dbus-1
check_val '' XEXT -lXext '' xext '' '' false
check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false
if [ "$HAVE_WAYLAND_SCANNER" = yes ] &&
2019-02-09 03:12:42 +00:00
[ "$HAVE_WAYLAND_CURSOR" = yes ] &&
[ "$HAVE_WAYLAND" = yes ]; then
./gfx/common/wayland/generate_wayland_protos.sh \
-c "$WAYLAND_SCANNER_VERSION" \
-p "$HAVE_WAYLAND_PROTOS" \
-s "$SHARE_DIR" ||
die 1 'Error: Failed generating wayland protocols.'
2018-11-17 12:01:51 +00:00
else
die : 'Notice: wayland libraries not found, disabling wayland support.'
2018-11-17 12:01:51 +00:00
HAVE_WAYLAND='no'
fi
2017-12-29 22:05:20 +00:00
if [ "$HAVE_X11" = 'no' ]; then
HAVE_XEXT=no; HAVE_XF86VM=no; HAVE_XINERAMA=no; HAVE_XSHM=no; HAVE_XRANDR=no
fi
check_lib '' XRANDR -lXrandr
check_val '' XINERAMA -lXinerama '' xinerama '' '' false
2012-09-29 08:47:55 +00:00
if [ "$HAVE_X11" = 'yes' ] && [ "$HAVE_XEXT" = 'yes' ] && [ "$HAVE_XF86VM" = 'yes' ]; then
check_val '' XVIDEO -lXv '' xv '' '' false
else
die : 'Notice: X11, Xext or xf86vm not present. Skipping X11 code paths.'
2012-09-29 08:47:55 +00:00
HAVE_X11='no'
2012-06-12 20:16:16 +00:00
HAVE_XVIDEO='no'
fi
2011-01-22 23:27:20 +00:00
check_val '' UDEV "-ludev" '' libudev '' '' false
2013-09-25 17:32:18 +00:00
2015-10-11 14:06:06 +00:00
check_header XSHM X11/Xlib.h X11/extensions/XShm.h
2014-10-04 21:04:38 +00:00
check_header PARPORT linux/parport.h
check_header PARPORT linux/ppdev.h
2017-10-27 18:04:52 +00:00
if [ "$OS" != 'Win32' ] && [ "$OS" != 'Linux' ]; then
check_lib '' STRL "$CLIB" strlcpy
fi
check_lib '' STRCASESTR "$CLIB" strcasestr
check_lib '' MMAP "$CLIB" mmap
check_enabled CXX VULKAN vulkan 'The C++ compiler is' false
check_enabled THREADS VULKAN vulkan 'Threads are' false
if [ "$HAVE_VULKAN" != "no" ] && [ "$OS" = 'Win32' ]; then
HAVE_VULKAN=yes
else
check_lib '' VULKAN -lvulkan vkCreateInstance
fi
2011-04-03 20:16:59 +00:00
check_pkgconf PYTHON 'python3 python3 python-3.7 python-3.6 python-3.5 python-3.4 python-3.3 python-3.2'
if [ "$HAVE_MENU" != 'no' ]; then
if [ "$HAVE_OPENGL" = 'no' ] && [ "$HAVE_OPENGLES" = 'no' ] && [ "$HAVE_VULKAN" = 'no' ]; then
2017-10-22 07:02:24 +00:00
if [ "$OS" = 'Win32' ]; then
HAVE_SHADERPIPELINE=no
HAVE_VULKAN=no
else
if [ "$HAVE_CACA" != 'yes' ] && [ "$HAVE_SIXEL" != 'yes' ] &&
[ "$HAVE_SDL" != 'yes' ] && [ "$HAVE_SDL2" != 'yes' ]; then
HAVE_RGUI=no
fi
2017-10-22 07:02:24 +00:00
HAVE_MATERIALUI=no
HAVE_OZONE=no
2017-10-22 07:02:24 +00:00
HAVE_XMB=no
2018-04-08 02:55:16 +00:00
HAVE_STRIPES=no
HAVE_MENU_WIDGETS=no
fi
die : 'Notice: Hardware rendering context not available.'
2017-10-22 07:02:24 +00:00
fi
fi
2012-12-09 15:28:49 +00:00
check_macro NEON __ARM_NEON__
add_define MAKEFILE OS "$OS"
2011-06-25 15:22:47 +00:00
2019-01-22 17:02:48 +00:00
if [ "$HAVE_DEBUG" = 'yes' ]; then
add_define MAKEFILE DEBUG 1
if [ "$HAVE_OPENGL" = 'yes' ] ||
2019-02-09 03:12:42 +00:00
[ "$HAVE_OPENGL1" = 'yes' ] ||
2019-01-22 17:02:48 +00:00
[ "$HAVE_OPENGLES" = 'yes' ] ||
[ "$HAVE_OPENGLES3" = 'yes' ]; then
add_define MAKEFILE GL_DEBUG 1
fi
if [ "$HAVE_VULKAN" = 'yes' ]; then
add_define MAKEFILE VULKAN_DEBUG 1
fi
fi
check_enabled ZLIB RPNG RPNG 'zlib is' false
check_enabled V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true