RetroArch/qb/config.libs.sh

453 lines
13 KiB
Bash
Raw Normal View History

2012-06-12 20:16:16 +00:00
check_switch_c C99 -std=gnu99 "Cannot find C99 compatible compiler."
2010-12-30 01:52:02 +00:00
check_switch_c NOUNUSED -Wno-unused-result
2012-06-12 20:16:16 +00:00
add_define_make NOUNUSED "$HAVE_NOUNUSED"
2013-03-16 11:24:53 +00:00
check_switch_c NOUNUSED_VARIABLE -Wno-unused-variable
add_define_make 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_library_dirs /usr/lib64
2011-08-24 14:12:38 +00:00
[ -z "$CROSS_COMPILE" ] && [ -d /opt/local/lib ] && add_library_dirs /opt/local/lib
2011-09-02 14:12:34 +00:00
2014-08-28 16:41:12 +00:00
DYLIB=-ldl;
CLIB=-lc
PTHREADLIB=-lpthread
SOCKETLIB=-lc
2014-10-29 00:30:12 +00:00
SOCKETHEADER=
2014-08-28 16:41:12 +00:00
2012-12-22 22:52:05 +00:00
if [ "$OS" = 'BSD' ]; then
DYLIB=-lc;
elif [ "$OS" = 'Haiku' ]; then
2014-08-28 16:41:12 +00:00
DYLIB=""
CLIB=-lroot
PTHREADLIB=-lroot
SOCKETLIB=-lnetwork
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=
2012-12-22 22:52:05 +00:00
fi
add_define_make DYLIB_LIB "$DYLIB"
2012-10-11 19:00:16 +00:00
[ "$OS" = 'Darwin' ] && HAVE_X11=no # X11 breaks on recent OSXes even if present.
2011-09-02 14:12:34 +00:00
[ -d /opt/vc/lib ] && add_library_dirs /opt/vc/lib
2014-07-24 19:24:34 +00:00
check_lib VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm"
2016-04-25 13:16:06 +00:00
check_lib SYSTEMD -lsystemd sd_get_machine_names
if [ "$HAVE_VIDEOCORE" = 'yes' ]; then
[ -d /opt/vc/include ] && add_include_dirs /opt/vc/include
[ -d /opt/vc/include/interface/vcos/pthreads ] && add_include_dirs /opt/vc/include/interface/vcos/pthreads
2013-01-26 11:53:30 +00:00
[ -d /opt/vc/include/interface/vmcs_host/linux ] && add_include_dirs /opt/vc/include/interface/vmcs_host/linux
HAVE_GLES='auto'
2014-07-24 19:24:34 +00:00
EXTRA_GL_LIBS="-lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
fi
if [ "$HAVE_NEON" = "yes" ]; then
CFLAGS="$CFLAGS -mfpu=neon -marm"
CXXFLAGS="$CXXFLAGS -mfpu=neon -marm"
ASFLAGS="$ASFLAGS -mfpu=neon"
fi
if [ "$HAVE_7ZIP" = "yes" ]; then
add_include_dirs ./decompress/7zip/
fi
if [ "$HAVE_PRESERVE_DYLIB" = "yes" ]; then
2015-01-27 23:50:55 +00:00
echo "Notice: Disabling dlclose() of shared objects for Valgrind support."
add_define_make HAVE_PRESERVE_DYLIB "1"
fi
if [ "$HAVE_FLOATHARD" = "yes" ]; then
CFLAGS="$CFLAGS -mfloat-abi=hard"
CXXFLAGS="$CXXFLAGS -mfloat-abi=hard"
ASFLAGS="$ASFLAGS -mfloat-abi=hard"
fi
if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then
CFLAGS="$CFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
ASFLAGS="$ASFLAGS -mfloat-abi=softfp"
fi
if [ "$HAVE_NEON" = "yes" ]; then
CFLAGS="$CFLAGS -mfpu=neon -marm"
CXXFLAGS="$CXXFLAGS -mfpu=neon -marm"
ASFLAGS="$ASFLAGS -mfpu=neon"
fi
if [ "$HAVE_FLOATHARD" = "yes" ]; then
CFLAGS="$CFLAGS -mfloat-abi=hard"
CXXFLAGS="$CXXFLAGS -mfloat-abi=hard"
ASFLAGS="$ASFLAGS -mfloat-abi=hard"
fi
if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then
CFLAGS="$CFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
ASFLAGS="$ASFLAGS -mfloat-abi=softfp"
fi
if [ "$HAVE_SSE" = "yes" ]; then
CFLAGS="$CFLAGS -msse -msse2"
CXXFLAGS="$CXXFLAGS -msse -msse2"
fi
if [ "$HAVE_EGL" != "no" ]; then
check_pkgconf EGL egl
# some systems have EGL libs, but no pkgconfig
if [ "$HAVE_EGL" = "no" ]; then
HAVE_EGL=auto && check_lib EGL "-lEGL $EXTRA_GL_LIBS"
[ "$HAVE_EGL" = "yes" ] && EGL_LIBS=-lEGL
2014-06-17 19:01:19 +00:00
else
EGL_LIBS="$EGL_LIBS $EXTRA_GL_LIBS"
2014-06-17 19:01:19 +00:00
fi
fi
2016-03-03 17:17:48 +00:00
if [ "HAVE_SSA" != "no" ]; then
check_lib SSA -lass ass_library_init
fi
if [ "$HAVE_EXYNOS" != "no" ]; then
check_pkgconf EXYNOS libdrm_exynos
check_pkgconf DRM libdrm
fi
if [ "$HAVE_DISPMANX" != "no" ]; then
PKG_CONF_USED="$PKG_CONF_USED DISPMANX"
fi
2012-06-12 20:16:16 +00:00
if [ "$LIBRETRO" ]; then
2015-01-27 23:50:55 +00:00
echo "Notice: Explicit libretro used, disabling dynamic libretro loading ..."
2012-06-12 20:16:16 +00:00
HAVE_DYNAMIC='no'
else LIBRETRO="-lretro"
fi
2012-06-12 20:16:16 +00:00
[ "$HAVE_DYNAMIC" = 'yes' ] || {
check_lib_cxx RETRO "$LIBRETRO" retro_init "$DYLIB" "Cannot find libretro."
add_define_make libretro "$LIBRETRO"
}
2010-12-30 01:52:02 +00:00
if [ "$MAN_DIR" ]; then
add_define_make MAN_DIR "$MAN_DIR"
else
add_define_make MAN_DIR "${PREFIX}/share/man/man1"
fi
2014-08-29 19:35:56 +00:00
if [ "$OS" = 'Win32' ]; then
HAVE_THREADS=yes
HAVE_DYLIB=yes
else
check_lib THREADS "$PTHREADLIB" pthread_create
check_lib DYLIB "$DYLIB" dlopen
fi
2015-01-27 23:49:43 +00:00
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
echo "Notice: RetroArch will use legacy socket support"
fi
fi
HAVE_NETWORK_CMD=yes
2015-11-25 17:53:19 +00:00
HAVE_NETWORK_GAMEPAD=yes
[ "$HAVE_NETPLAY" != 'no' ] && HAVE_NETPLAY='yes'
2012-05-27 12:23:30 +00:00
else
2015-01-27 23:50:55 +00:00
echo "Warning: All networking features have been disabled."
2012-06-12 20:16:16 +00:00
HAVE_NETWORK_CMD='no'
HAVE_NETPLAY='no'
2015-11-25 17:53:19 +00:00
HAVE_NETWORK_GAMEPAD='no'
fi
2014-08-28 16:41:12 +00:00
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
2014-08-28 16:41:12 +00:00
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
2015-01-27 23:50:55 +00:00
echo "Error: Dynamic loading of libretro is enabled, but your platform does not appear to have dlopen(), use --disable-dynamic or --with-libretro=\"-lretro\"".
exit 1
fi
2011-06-25 15:15:58 +00:00
check_pkgconf ALSA alsa
2010-12-30 01:52:02 +00:00
check_header OSS sys/soundcard.h
2011-06-16 21:20:12 +00:00
check_header OSS_BSD soundcard.h
check_lib OSS_LIB -lossaudio
2012-10-11 19:00:16 +00:00
if [ "$OS" = 'Darwin' ]; then
2011-02-04 13:42:26 +00:00
check_lib AL "-framework OpenAL" alcOpenDevice
HAVE_SDL=no
2011-02-04 13:42:26 +00:00
else
check_lib AL -lopenal alcOpenDevice
fi
check_pkgconf RSOUND rsound 1.1
2011-06-25 15:15:58 +00:00
check_pkgconf ROAR libroar
2011-03-13 17:09:27 +00:00
check_pkgconf JACK jack 0.120.1
2011-01-29 00:15:09 +00:00
check_pkgconf PULSE libpulse
2010-12-30 01:52:02 +00:00
2015-04-20 09:33:32 +00:00
if [ "$OS" = 'Darwin' ]; then
2011-08-08 15:27:52 +00:00
check_lib COREAUDIO "-framework AudioUnit" AudioUnitInitialize
2015-04-19 22:13:02 +00:00
check_lib CORETEXT "-framework CoreText" CTFontCreateWithName
2015-04-19 22:38:55 +00:00
check_lib COCOA "-framework AppKit" NSApplicationMain
2015-04-20 09:33:32 +00:00
check_lib AVFOUNDATION "-framework AVFoundation"
check_lib CORELOCATION "-framework CoreLocation"
check_lib IOHIDMANAGER "-framework IOKit" IOHIDManagerCreate
2015-04-20 09:33:32 +00:00
fi
2015-04-19 22:38:55 +00:00
check_pkgconf SDL sdl 1.2.10
check_pkgconf SDL2 sdl2 2.0.0
2010-12-30 01:52:02 +00:00
if [ "$HAVE_SDL2" = 'yes' ]; then
if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then
2015-01-27 23:50:55 +00:00
echo "Notice: SDL drivers will be replaced by SDL2 ones."
2014-08-10 16:35:18 +00:00
HAVE_SDL=no
elif [ "$HAVE_SDL2" = 'no' ]; then
2015-01-27 23:50:55 +00:00
echo "Warning: SDL2 not found, skipping."
2014-08-10 16:35:18 +00:00
HAVE_SDL2=no
fi
fi
2015-05-17 22:30:16 +00:00
check_pkgconf LIBUSB libusb-1.0 1.0.16
2014-08-29 19:35:56 +00:00
if [ "$OS" = 'Win32' ]; then
check_lib DINPUT -ldinput8
check_lib D3D9 -ld3d9
check_lib DSOUND -ldsound
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
HAVE_XAUDIO=yes
2014-10-22 17:18:56 +00:00
else
HAVE_D3D9=no
2014-08-29 19:35:56 +00:00
fi
if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_GLES" != '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"
2015-06-17 14:58:30 +00:00
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
[ "$HAVE_CG" = 'yes' ] && CG_LIBS='-framework Cg'
elif [ "$OS" = 'Win32' ]; then
check_lib_cxx CG -lcg cgCreateContext
[ "$HAVE_CG" = 'yes' ] && CG_LIBS='-lcg -lcgGL'
else
# On some distros, -lCg doesn't link against -lstdc++ it seems ...
check_lib_cxx CG -lCg cgCreateContext
[ "$HAVE_CG" = 'yes' ] && CG_LIBS='-lCg -lCgGL'
fi
# fix undefined variables
PKG_CONF_USED="$PKG_CONF_USED CG"
else
echo "Notice: Ignoring Cg. Desktop OpenGL is not enabled."
HAVE_CG='no'
fi
2011-11-01 17:24:43 +00:00
fi
2011-08-24 14:12:38 +00:00
if [ "$OS" = 'Darwin' ]; then
2015-04-19 23:58:03 +00:00
check_lib ZLIB "-lz"
else
check_pkgconf ZLIB zlib
fi
2010-12-30 02:02:30 +00:00
2012-06-12 20:16:16 +00:00
if [ "$HAVE_THREADS" != 'no' ]; then
if [ "$HAVE_FFMPEG" != 'no' ]; then
check_pkgconf AVCODEC libavcodec 54
check_pkgconf AVFORMAT libavformat 54
check_pkgconf SWRESAMPLE libswresample
check_pkgconf AVUTIL libavutil 51
check_pkgconf SWSCALE libswscale 2.1
check_header AV_CHANNEL_LAYOUT libavutil/channel_layout.h
2015-04-19 13:46:42 +00:00
HAVE_FFMPEG='yes'
if [ "$HAVE_AVCODEC" = 'no' ] || [ "$HAVE_SWRESAMPLE" = 'no' ] || [ "$HAVE_AVFORMAT" = 'no' ] || [ "$HAVE_AVUTIL" = 'no' ] || [ "$HAVE_SWSCALE" = 'no' ]; then
2015-04-19 13:46:42 +00:00
HAVE_FFMPEG='no'
echo "Notice: FFmpeg recording disabled due to missing or unsuitable packages."
fi
2011-11-30 16:46:58 +00:00
fi
else
2015-01-27 23:50:55 +00:00
echo "Notice: Not building with threading support. Will skip FFmpeg."
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
fi
2010-12-30 12:54:49 +00:00
2012-09-24 23:26:22 +00:00
if [ "$HAVE_KMS" != "no" ]; then
2012-10-13 19:44:25 +00:00
check_pkgconf GBM gbm 9.0
2012-09-25 10:58:45 +00:00
check_pkgconf DRM libdrm
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
2015-01-27 23:50:55 +00:00
echo "Error: Cannot find libgbm, libdrm and EGL libraries required for KMS. Compile without --enable-kms."
2012-09-24 23:26:22 +00:00
exit 1
else
HAVE_KMS=no
fi
fi
check_pkgconf LIBXML2 libxml-2.0
2012-09-25 10:58:45 +00:00
if [ "$HAVE_EGL" = "yes" ]; then
if [ "$HAVE_GLES" != "no" ]; then
if [ "$GLES_LIBS" ] || [ "$GLES_CFLAGS" ]; then
2015-01-27 23:50:55 +00:00
echo "Notice: Using custom OpenGLES CFLAGS ($GLES_CFLAGS) and LDFLAGS ($GLES_LIBS)."
add_define_make GLES_LIBS "$GLES_LIBS"
add_define_make GLES_CFLAGS "$GLES_CFLAGS"
else
HAVE_GLES=auto check_pkgconf GLES glesv2
[ "$HAVE_GLES" = "no" ] && HAVE_GLES=auto check_lib GLES "-lGLESv2 $EXTRA_GL_LIBS" && add_define_make GLES_LIBS "-lGLESv2 $EXTRA_GL_LIBS"
fi
fi
if [ "$HAVE_VG" != "no" ]; then
check_pkgconf VG vg
if [ "$HAVE_VG" = "no" ]; then
HAVE_VG=auto check_lib VG "-lOpenVG $EXTRA_GL_LIBS"
[ "$HAVE_VG" = "yes" ] && VG_LIBS=-lOpenVG
fi
fi
else
HAVE_VG=no
HAVE_GLES=no
fi
check_pkgconf V4L2 libv4l2
if [ "$OS" = 'Darwin' ]; then
check_lib FBO "-framework OpenGL" glFramebufferTexture2D
2014-08-29 19:35:56 +00:00
elif [ "$OS" = 'Win32' ]; then
HAVE_FBO=yes
else
if [ "$HAVE_GLES" = "yes" ]; then
[ $HAVE_FBO != "no" ] && HAVE_FBO=yes
else
check_lib FBO -lGL glFramebufferTexture2D
fi
fi
2011-01-22 23:27:20 +00:00
check_pkgconf FREETYPE freetype2
check_pkgconf X11 x11
2016-02-19 14:08:23 +00:00
check_pkgconf XCB xcb
[ "$HAVE_X11" = "no" ] && HAVE_XEXT=no && HAVE_XF86VM=no && HAVE_XINERAMA=no && HAVE_XSHM=no
2012-09-28 21:43:58 +00:00
check_pkgconf WAYLAND wayland-egl
2014-05-22 14:53:33 +00:00
check_pkgconf XKBCOMMON xkbcommon 0.3.2
check_pkgconf XEXT xext
2012-09-29 08:47:55 +00:00
check_pkgconf XF86VM xxf86vm
2012-10-12 17:05:29 +00:00
check_pkgconf XINERAMA xinerama
2012-09-29 08:47:55 +00:00
if [ "$HAVE_X11" = 'yes' ] && [ "$HAVE_XEXT" = 'yes' ] && [ "$HAVE_XF86VM" = 'yes' ]; then
check_pkgconf XVIDEO xv
else
2015-01-27 23:50:55 +00:00
echo "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
2014-06-24 18:16:31 +00:00
if [ "$HAVE_UDEV" != "no" ]; then
check_pkgconf UDEV libudev
if [ "$HAVE_UDEV" = "no" ]; then
HAVE_UDEV=auto && check_lib UDEV "-ludev"
[ "$HAVE_UDEV" = "yes" ] && UDEV_LIBS=-ludev
fi
fi
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
if [ "$OS" != 'Win32' ]; then
check_lib STRL "$CLIB" strlcpy
fi
2014-08-28 16:41:12 +00:00
check_lib STRCASESTR "$CLIB" strcasestr
check_lib MMAP "$CLIB" mmap
2016-05-16 08:08:10 +00:00
check_lib VULKAN -lvulkan vkCreateInstance
2011-04-03 20:16:59 +00:00
if [ "$HAVE_VULKAN" != 'no' ] && [ ! -e deps/glslang/glslang/README.md ]; then
echo "Warning: glslang submodule not loaded, can't use Vulkan."
echo "To fix, use: git submodule init && git submodule update"
HAVE_VULKAN=no
fi
if [ "$HAVE_VULKAN" != 'no' ] && [ ! -e deps/SPIRV-Cross/README.md ]; then
echo "Warning: SPIRV-Cross submodule not loaded, can't use Vulkan."
echo "To fix, use: git submodule init && git submodule update"
HAVE_VULKAN=no
fi
check_pkgconf PYTHON python3
if [ "$HAVE_MATERIALUI" != 'no' ] || [ "$HAVE_XMB" != 'no' ] || [ "$HAVE_ZARCH" != 'no' ]; then
if [ "$HAVE_RGUI" = 'no' ]; then
HAVE_MATERIALUI=no
HAVE_XMB=no
HAVE_ZARCH=no
echo "Notice: RGUI not available, MaterialUI, XMB and ZARCH will also be disabled."
elif [ "$HAVE_OPENGL" = 'no' ] && [ "$HAVE_GLES" = 'no' ] && [ "$HAVE_VULKAN" = 'no' ]; then
HAVE_MATERIALUI=no
HAVE_XMB=no
HAVE_ZARCH=no
echo "Notice: Hardware rendering context not available, XMB, MaterialUI and ZARCH will also be disabled."
fi
fi
2016-05-11 19:22:45 +00:00
2012-12-09 15:28:49 +00:00
check_macro NEON __ARM_NEON__
2012-06-12 20:16:16 +00:00
add_define_make OS "$OS"
2011-06-25 15:22:47 +00:00
2016-05-11 19:22:45 +00:00
if [ "$HAVE_ZLIB" = 'no' ] && [ "HAVE_RPNG" != 'no' ]; then
HAVE_RPNG=no
echo "Notice: zlib is not available, RPNG will also be disabled."
fi
if [ "$HAVE_THREADS" = 'no' ] && [ "HAVE_CHEEVOS" != 'no' ]; then
HAVE_CHEEVOS=no
echo "Notice: Threads are not available, Cheevos will also be disabled."
fi
if [ "$HAVE_THREADS" = 'no' ] && [ "HAVE_LIBUSB" != 'no' ]; then
HAVE_LIBUSB=no
echo "Notice: Threads are not available, libusb will also be disabled."
fi
# Creates config.mk and config.h.
add_define_make GLOBAL_CONFIG_DIR "$GLOBAL_CONFIG_DIR"
2015-10-11 14:29:07 +00:00
VARS=$(eval set | grep ^HAVE_ | sed s/=.*// | sed s/^HAVE_//)
2010-12-30 01:52:02 +00:00
create_config_make config.mk $VARS
2012-06-17 11:11:12 +00:00
create_config_header config.h $VARS