1# Use add_opt to set HAVE_FOO variables the first time 2# example: add_opt FOO no 3# 4# Only needed when check_enabled ($2), check_platform, check_lib, check_pkgconf, 5# check_header, check_macro and check_switch are not used. 6 7check_switch '' C99 -std=gnu99 '' 8 9if [ "$HAVE_C99" = 'no' ]; then 10 HAVE_C99='auto' 11 check_switch '' C99 -std=c99 'Cannot find a C99 compatible compiler.' 12fi 13 14check_switch cxx CXX11 -std=c++11 '' 15check_switch '' NOUNUSED -Wno-unused-result '' 16check_switch '' NOUNUSED_VARIABLE -Wno-unused-variable '' 17 18# There are still broken 64-bit Linux distros out there. :) 19[ -z "$CROSS_COMPILE" ] && [ -d /usr/lib64 ] && add_dirs LIBRARY /usr/lib64 20 21[ -z "$CROSS_COMPILE" ] && [ -d /opt/local/lib ] && add_dirs LIBRARY /opt/local/lib 22 23[ "${GLOBAL_CONFIG_DIR:-}" ] || 24{ case "$PREFIX" in 25 /usr*) GLOBAL_CONFIG_DIR=/etc ;; 26 *) GLOBAL_CONFIG_DIR="$PREFIX"/etc ;; 27 esac 28} 29 30DYLIB=-ldl 31CLIB=-lc 32PTHREADLIB=-lpthread 33SOCKETLIB=-lc 34SOCKETHEADER= 35INCLUDES='usr/include usr/local/include' 36SORT='sort' 37EXTRA_GL_LIBS='' 38VC_PREFIX='' 39 40if [ "$OS" = 'BSD' ]; then 41 [ -d /usr/local/include ] && add_dirs INCLUDE /usr/local/include 42 [ -d /usr/local/lib ] && add_dirs LIBRARY /usr/local/lib 43 DYLIB=-lc; 44elif [ "$OS" = 'Haiku' ]; then 45 DYLIB="" 46 CLIB=-lroot 47 PTHREADLIB=-lroot 48 SOCKETLIB=-lnetwork 49 CFLAGS="$CFLAGS -D_BSD_SOURCE" 50elif [ "$OS" = 'Win32' ]; then 51 SOCKETLIB=-lws2_32 52 SOCKETHEADER="#include <winsock2.h>" 53 DYLIB= 54elif [ "$OS" = 'Cygwin' ]; then 55 die 1 'Error: Cygwin is not a supported platform. See https://bot.libretro.com/docs/compilation/windows/' 56elif [ "$OS" = 'SunOS' ]; then 57 SORT='gsort' 58fi 59 60add_define MAKEFILE DATA_DIR "$SHARE_DIR" 61add_define MAKEFILE DYLIB_LIB "$DYLIB" 62 63check_lib '' SYSTEMD -lsystemd sd_get_machine_names 64 65if [ "$HAVE_VIDEOCORE" != "no" ]; then 66 check_pkgconf VC_TEST bcm_host 67 68 # use fallback if pkgconfig is not available 69 if [ -z "$VC_TEST_LIBS" ]; then 70 [ -d /opt/vc/lib ] && add_dirs LIBRARY /opt/vc/lib /opt/vc/lib/GL 71 check_lib '' VIDEOCORE -lbcm_host bcm_host_init "-lvcos -lvchiq_arm" 72 else 73 add_opt VIDEOCORE "$HAVE_VC_TEST" 74 fi 75fi 76 77if [ "$HAVE_VIDEOCORE" = 'yes' ]; then 78 HAVE_OPENGLES='auto' 79 VC_PREFIX='brcm' 80 INCLUDES="${INCLUDES} opt/vc/include" 81 82 # use fallback if pkgconfig is not available 83 if [ -z "$VC_TEST_LIBS" ]; then 84 [ -d /opt/vc/include ] && add_dirs INCLUDE /opt/vc/include 85 [ -d /opt/vc/include/interface/vcos/pthreads ] && add_dirs INCLUDE /opt/vc/include/interface/vcos/pthreads 86 [ -d /opt/vc/include/interface/vmcs_host/linux ] && add_dirs INCLUDE /opt/vc/include/interface/vmcs_host/linux 87 EXTRA_GL_LIBS="-lbrcmEGL -lbrcmGLESv2 -lbcm_host -lvcos -lvchiq_arm" 88 fi 89fi 90 91if [ "$HAVE_7ZIP" = "yes" ]; then 92 add_dirs INCLUDE ./deps/7zip 93fi 94 95if [ "$HAVE_PRESERVE_DYLIB" = "yes" ]; then 96 die : 'Notice: Disabling dlclose() of shared objects for Valgrind support.' 97fi 98 99if [ "$HAVE_NEON" = "yes" ]; then 100 add_define MAKEFILE NEON_CFLAGS '-mfpu=neon -marm' 101 add_define MAKEFILE NEON_ASFLAGS -mfpu=neon 102fi 103 104if [ "$HAVE_FLOATHARD" = "yes" ]; then 105 add_define MAKEFILE FLOATHARD_CFLAGS -mfloat-abi=hard 106fi 107 108if [ "$HAVE_FLOATSOFTFP" = "yes" ]; then 109 add_define MAKEFILE FLOATSOFTFP_CFLAGS -mfloat-abi=softfp 110fi 111 112 113if [ "$HAVE_ANGLE" = 'yes' ]; then 114 eval "HAVE_EGL=\"yes\"" 115 add_dirs INCLUDE ./gfx/include/ANGLE 116 add_opt OPENGL no 117 add_opt OPENGLES yes 118 add_define MAKEFILE OPENGLES_LIBS "-lGLESv2" 119 120 case "$PLATFORM_NAME" in 121 MINGW32* ) 122 add_dirs LIBRARY ./pkg/windows/x86 123 ;; 124 MINGW64* ) 125 add_dirs LIBRARY ./pkg/windows/x86_64 126 ;; 127 esac 128else 129 check_header '' EGL EGL/egl.h EGL/eglext.h 130 # some systems have EGL libs, but no pkgconfig 131 # https://github.com/linux-sunxi/sunxi-mali/pull/8 132 check_val '' EGL "-l${VC_PREFIX}EGL $EXTRA_GL_LIBS" '' "${VC_PREFIX}egl" '' '' true 133fi 134 135if [ "$HAVE_EGL" = 'yes' ]; then 136 EGL_LIBS="$EGL_LIBS $EXTRA_GL_LIBS" 137fi 138 139check_lib '' SSA '-lfribidi -lass' ass_library_init 140check_lib '' SSE '-msse -msse2' 141check_pkgconf EXYNOS libdrm_exynos 142 143if [ "$LIBRETRO" ]; then 144 die : 'Notice: Explicit libretro used, disabling dynamic libretro loading ...' 145 add_opt DYNAMIC no 146else 147 LIBRETRO="-lretro" 148fi 149 150[ "$HAVE_DYNAMIC" = 'yes' ] || { 151 check_lib '' RETRO "$LIBRETRO" retro_init "$DYLIB" '' '' 'Cannot find libretro, did you forget --with-libretro="-lretro"?' 152 add_define MAKEFILE libretro "$LIBRETRO" 153} 154 155add_define MAKEFILE ASSETS_DIR "${ASSETS_DIR:-$SHARE_DIR}/retroarch" 156add_define MAKEFILE BIN_DIR "${BIN_DIR:-${PREFIX}/bin}" 157add_define MAKEFILE DOC_DIR "${DOC_DIR:-${SHARE_DIR}/doc/retroarch}" 158add_define MAKEFILE MAN_DIR "${MAN_DIR:-${SHARE_DIR}/man}" 159 160check_platform DOS SHADERPIPELINE 'Shader-based pipelines are' false 161check_platform DOS LANGEXTRA 'Extra languages are' false 162 163check_lib '' THREADS "$PTHREADLIB" pthread_create 164check_enabled THREADS THREAD_STORAGE 'Thread Local Storage' 'Threads are' false 165check_lib '' THREAD_STORAGE "$PTHREADLIB" pthread_key_create 166 167check_pkgconf LIBCHECK check 0.15 168 169if [ "$OS" = 'Linux' ]; then 170 check_header '' CDROM sys/ioctl.h scsi/sg.h 171fi 172 173check_platform 'Linux Win32' CDROM 'CD-ROM is' user 174 175if [ "$OS" = 'Win32' ]; then 176 add_opt DYLIB yes 177else 178 check_lib '' DYLIB "$DYLIB" dlopen 179fi 180 181check_lib '' NETWORKING "$SOCKETLIB" socket "" "$SOCKETHEADER" 182 183if [ "$HAVE_NETWORKING" != 'no' ]; then 184 add_opt GETADDRINFO auto 185 add_opt SOCKET_LEGACY no 186 187 # WinXP+ implements getaddrinfo() 188 if [ "$OS" = 'Win32' ]; then 189 HAVE_GETADDRINFO=yes 190 else 191 check_lib '' GETADDRINFO "$SOCKETLIB" getaddrinfo 192 if [ "$HAVE_GETADDRINFO" != 'yes' ]; then 193 HAVE_SOCKET_LEGACY=yes 194 die : 'Notice: RetroArch will use legacy socket support' 195 fi 196 fi 197 198 add_opt NETWORK_CMD yes 199else 200 add_opt NETWORK_CMD no 201fi 202 203check_enabled NETWORKING CHEEVOS cheevos 'Networking is' false 204check_enabled NETWORKING DISCORD discord 'Networking is' false 205check_enabled NETWORKING MINIUPNPC miniupnpc 'Networking is' false 206check_enabled NETWORKING SSL ssl 'Networking is' false 207check_enabled NETWORKING TRANSLATE OCR 'Networking is' false 208check_enabled NETWORKING HAVE_NETPLAYDISCOVERY 'Netplay discovery' 'Networking is' false 209 210check_enabled NETWORKING NETWORKGAMEPAD 'the networked game pad' 'Networking is' true 211check_enabled MINIUPNPC BUILTINMINIUPNPC 'builtin miniupnpc' 'miniupnpc is' true 212 213check_lib '' MINIUPNPC '-lminiupnpc' 214check_lib '' STDIN_CMD "$CLIB" fcntl 215 216if [ "$HAVE_NETWORK_CMD" = "yes" ] || [ "$HAVE_STDIN_CMD" = "yes" ]; then 217 add_opt COMMAND yes 218else 219 add_opt COMMAND no 220fi 221 222check_lib '' GETOPT_LONG "$CLIB" getopt_long 223 224if [ "$HAVE_DYLIB" = 'no' ] && [ "$HAVE_DYNAMIC" = 'yes' ]; then 225 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".' 226fi 227 228check_val '' ALSA -lasound alsa alsa '' '' false 229check_val '' CACA -lcaca '' caca '' '' false 230check_val '' SIXEL -lsixel '' libsixel 1.6.0 '' false 231 232check_macro AUDIOIO AUDIO_SETINFO sys/audioio.h 233 234if [ "$HAVE_OSS" != 'no' ]; then 235 check_header '' OSS sys/soundcard.h 236 check_header '' OSS_BSD soundcard.h 237 check_lib '' OSS_LIB -lossaudio 238fi 239 240check_platform Linux TINYALSA 'Tinyalsa is' true 241check_platform Linux RPILED 'The RPI led driver is' true 242 243check_platform Darwin METAL 'Metal is' true 244 245if [ "$OS" = 'Darwin' ]; then 246 check_lib '' COREAUDIO "-framework AudioUnit" AudioUnitInitialize 247 check_lib '' CORETEXT "-framework CoreText" CTFontCreateWithName 248 249 if [ "$HAVE_METAL" = yes ]; then 250 check_lib '' COCOA_METAL "-framework AppKit" NSApplicationMain 251 add_opt OPENGL no 252 add_opt OPENGL1 no 253 add_opt OPENGL_CORE no 254 die : 'Notice: Metal cannot coexist with OpenGL (yet), so disabling OpenGL.' 255 else 256 check_lib '' COCOA "-framework AppKit" NSApplicationMain 257 fi 258 259 check_lib '' AVFOUNDATION "-framework AVFoundation" 260 check_lib '' CORELOCATION "-framework CoreLocation" 261 check_lib '' IOHIDMANAGER "-framework IOKit" IOHIDManagerCreate 262 check_lib '' AL "-framework OpenAL" alcOpenDevice 263 HAVE_X11=no # X11 breaks on recent OSXes even if present. 264 HAVE_SDL=no 265 HAVE_SW2=no 266else 267 check_lib '' AL -lopenal alcOpenDevice 268fi 269 270check_pkgconf RSOUND rsound 1.1 271check_pkgconf ROAR libroar 1.0.12 272check_val '' JACK -ljack '' jack 0.120.1 '' false 273check_val '' PULSE -lpulse '' libpulse '' '' false 274check_val '' SDL -lSDL SDL sdl 1.2.10 '' false 275check_val '' SDL2 -lSDL2 SDL2 sdl2 2.0.0 '' false 276 277if [ "$HAVE_SDL2" = 'yes' ] && [ "$HAVE_SDL" = 'yes' ]; then 278 die : 'Notice: SDL drivers will be replaced by SDL2 ones.' 279 HAVE_SDL=no 280fi 281 282check_enabled CXX11 CXX C++ 'C++11 support is' false 283 284check_platform Haiku DISCORD 'Discord is' false 285check_enabled CXX DISCORD discord 'The C++ compiler is' false 286check_enabled CXX QT 'Qt companion' 'The C++ compiler is' false 287 288if [ "$HAVE_QT" != 'no' ]; then 289 check_pkgconf QT5CORE Qt5Core 5.2 290 check_pkgconf QT5GUI Qt5Gui 5.2 291 check_pkgconf QT5WIDGETS Qt5Widgets 5.2 292 check_pkgconf QT5CONCURRENT Qt5Concurrent 5.2 293 check_pkgconf QT5NETWORK Qt5Network 5.2 294 #check_pkgconf QT5WEBENGINE Qt5WebEngine 5.4 295 296 # pkg-config is needed to reliably find Qt5 libraries. 297 298 check_enabled QT5CORE QT Qt 'Qt5Core is' true 299 check_enabled QT5GUI QT Qt 'Qt5GUI is' true 300 check_enabled QT5WIDGETS QT Qt 'Qt5Widgets is' true 301 check_enabled QT5CONCURRENT QT Qt 'Qt5Concurrent is' true 302 check_enabled QT5NETWORK QT Qt 'Qt5Network is' true 303 #check_enabled QT5WEBENGINE QT Qt 'Qt5Webengine is' true 304 305 if [ "$HAVE_QT" != yes ]; then 306 die : 'Notice: Qt support disabled, required libraries were not found.' 307 fi 308 309 check_pkgconf OPENSSL openssl 1.0.0 310fi 311 312check_enabled FLAC BUILTINFLAC 'builtin flac' 'flac is' true 313 314check_val '' FLAC '-lFLAC' '' flac '' '' false 315 316 317check_enabled SSL SYSTEMMBEDTLS 'system mbedtls' 'ssl is' false 318check_enabled SSL BUILTINMBEDTLS 'builtin mbedtls' 'ssl is' false 319check_enabled SSL BUILTINBEARSSL 'builtin bearssl' 'ssl is' false 320 321if [ "$HAVE_SYSTEMMBEDTLS" = "auto" ]; then SYSTEMMBEDTLS_IS_AUTO=yes; else SYSTEMMBEDTLS_IS_AUTO=no; fi 322check_lib '' SYSTEMMBEDTLS '-lmbedtls -lmbedx509 -lmbedcrypto' 323check_header '' SYSTEMMBEDTLS \ 324 mbedtls/config.h \ 325 mbedtls/certs.h \ 326 mbedtls/debug.h \ 327 mbedtls/platform.h \ 328 mbedtls/net_sockets.h \ 329 mbedtls/ssl.h \ 330 mbedtls/ctr_drbg.h \ 331 mbedtls/entropy.h 332if [ "$SYSTEMMBEDTLS_IS_AUTO" = "yes" ] && [ "$HAVE_SYSTEMMBEDTLS" = "yes" ]; then HAVE_SYSTEMMBEDTLS=auto; fi 333 334SSL_BACKEND_CHOSEN=no 335if [ "$HAVE_SYSTEMMBEDTLS" = "yes" ]; then 336 if [ "$SSL_BACKEND_CHOSEN" = "yes" ]; then die 1 "Can't enable multiple SSL backends"; fi 337 SSL_BACKEND_CHOSEN=yes 338fi 339if [ "$HAVE_BUILTINMBEDTLS" = "yes" ]; then 340 if [ "$SSL_BACKEND_CHOSEN" = "yes" ]; then die 1 "Can't enable multiple SSL backends"; fi 341 SSL_BACKEND_CHOSEN=yes 342fi 343if [ "$HAVE_BUILTINBEARSSL" = "yes" ]; then 344 if [ "$SSL_BACKEND_CHOSEN" = "yes" ]; then die 1 "Can't enable multiple SSL backends"; fi 345 SSL_BACKEND_CHOSEN=yes 346fi 347if [ "$SSL_BACKEND_CHOSEN" = "no" ] && [ "$HAVE_SYSTEMMBEDTLS" = "auto" ]; then 348 HAVE_SYSTEMMBEDTLS=yes 349 SSL_BACKEND_CHOSEN=yes 350fi 351if [ "$SSL_BACKEND_CHOSEN" = "no" ] && [ "$HAVE_BUILTINMBEDTLS" = "auto" ]; then 352 HAVE_BUILTINMBEDTLS=yes 353 SSL_BACKEND_CHOSEN=yes 354fi 355if [ "$SSL_BACKEND_CHOSEN" = "no" ] && [ "$HAVE_BUILTINBEARSSL" = "auto" ]; then 356 HAVE_BUILTINBEARSSL=yes 357 SSL_BACKEND_CHOSEN=yes 358fi 359if [ "$HAVE_SYSTEMMBEDTLS" = "auto" ]; then HAVE_SYSTEMMBEDTLS=no; fi 360if [ "$HAVE_BUILTINMBEDTLS" = "auto" ]; then HAVE_BUILTINMBEDTLS=no; fi 361if [ "$HAVE_BUILTINBEARSSL" = "auto" ]; then HAVE_BUILTINBEARSSL=no; fi 362 363if [ "$HAVE_SSL" = "auto" ]; then HAVE_SSL=$SSL_BACKEND_CHOSEN; fi 364if [ "$HAVE_SSL" = "yes" ] && [ "$SSL_BACKEND_CHOSEN" = "no" ]; then die 1 "error: SSL enabled, but all backends disabled"; fi 365 366 367check_enabled THREADS LIBUSB libusb 'Threads are' false 368check_enabled HID LIBUSB libusb 'HID is' false 369check_val '' LIBUSB -lusb-1.0 libusb-1.0 libusb-1.0 1.0.13 '' false 370 371check_lib '' DINPUT -ldinput8 372check_lib '' D3D8 -ld3d8 373check_lib '' D3D9 -ld3d9 374check_lib '' DSOUND -ldsound 375 376check_enabled DINPUT XINPUT xinput 'Dinput is' true 377 378if [ "$HAVE_D3DX" != 'no' ]; then 379 check_lib '' D3DX8 -ld3dx8 380 check_lib '' D3DX9 -ld3dx9 381fi 382 383check_platform Win32 D3D10 'Direct3D 10 is' true 384check_platform Win32 D3D11 'Direct3D 11 is' true 385check_platform Win32 D3D12 'Direct3D 12 is' true 386check_platform Win32 D3DX 'Direct3DX is' true 387check_platform Win32 WASAPI 'WASAPI is' true 388check_platform Win32 XAUDIO 'XAudio is' true 389check_platform Win32 WINMM 'WinMM is' true 390 391if [ "$HAVE_BLISSBOX" != 'no' ]; then 392 if [ "$HAVE_LIBUSB" != 'no' ] || [ "$OS" = 'Win32' ]; then 393 add_opt BLISSBOX yes 394 else 395 add_opt BLISSBOX no 396 fi 397fi 398 399if [ "$HAVE_OPENGL" != 'no' ] && [ "$HAVE_OPENGLES" != 'yes' ]; then 400 if [ "$OS" = 'Darwin' ]; then 401 check_header '' OPENGL "OpenGL/gl.h" 402 check_lib '' OPENGL "-framework OpenGL" 403 elif [ "$OS" = 'Win32' ]; then 404 check_header '' OPENGL "GL/gl.h" 405 check_lib '' OPENGL -lopengl32 406 else 407 check_header '' OPENGL "GL/gl.h" 408 check_lib '' OPENGL -lGL 409 fi 410 411 if [ "$HAVE_OPENGL" = 'yes' ]; then 412 if [ "$OS" = 'Darwin' ]; then 413 check_lib '' CG '-framework Cg' cgCreateContext 414 elif [ "$OS" = 'Win32' ]; then 415 check_lib cxx CG '-lcg -lcgGL' cgCreateContext 416 else 417 # On some distros, -lCg doesn't link against -lstdc++ it seems ... 418 check_lib cxx CG '-lCg -lCgGL' cgCreateContext 419 fi 420 421 check_pkgconf OSMESA osmesa 422 fi 423else 424 add_opt OPENGL no 425fi 426 427check_enabled EGL OPENGLES OpenGLES 'EGL is' false 428check_enabled EGL OPENGLES3 OpenGLES3 'EGL is' false 429check_enabled EGL VG OpenVG 'EGL is' false 430check_enabled OPENGL CG Cg 'OpenGL is' false 431check_enabled OPENGL OSMESA osmesa 'OpenGL is' false 432check_enabled OPENGL OPENGL1 OpenGL1 'OpenGL is' false 433 434if [ "$HAVE_OPENGL" = 'no' ] && [ "$HAVE_OPENGLES3" = 'no' ]; then 435 die : 'Notice: OpenGL and OpenGLES3 are disabled. Disabling OpenGL core.' 436 HAVE_OPENGL_CORE='no' 437elif [ "$HAVE_OPENGLES" != 'no' ] && [ "$HAVE_OPENGLES3" != 'yes' ]; then 438 die : 'Notice: OpenGLES2 is enabled. Disabling the OpenGL core driver.' 439 HAVE_OPENGL_CORE='no' 440fi 441 442check_enabled 'OPENGL OPENGLES OPENGLES3' GLSL GLSL \ 443 'OpenGL and OpenGLES are' false 444 445check_enabled ZLIB BUILTINZLIB 'builtin zlib' 'zlib is' true 446 447check_val '' ZLIB '-lz' '' zlib '' '' false 448check_val '' MPV -lmpv '' mpv '' '' false 449 450check_header '' DRMINGW exchndl.h 451check_lib '' DRMINGW -lexchndl 452 453check_enabled THREADS FFMPEG FFmpeg 'Threads are' false 454 455if [ "$HAVE_FFMPEG" != 'no' ]; then 456 check_val '' AVCODEC -lavcodec '' libavcodec 57 '' false 457 check_val '' AVFORMAT -lavformat '' libavformat 57 '' false 458 check_val '' AVDEVICE -lavdevice '' libavdevice 57 '' false 459 check_val '' SWRESAMPLE -lswresample '' libswresample 2 '' false 460 check_val '' AVUTIL -lavutil '' libavutil 55 '' false 461 check_val '' SWSCALE -lswscale '' libswscale 4 '' false 462 463 check_header '' AV_CHANNEL_LAYOUT libavutil/channel_layout.h 464 465 HAVE_FFMPEG='yes' 466 if [ "$HAVE_AVCODEC" = 'no' ] || [ "$HAVE_SWRESAMPLE" = 'no' ] || [ "$HAVE_AVFORMAT" = 'no' ] || [ "$HAVE_AVUTIL" = 'no' ] || [ "$HAVE_SWSCALE" = 'no' ]; then 467 HAVE_FFMPEG='no' 468 die : 'Notice: FFmpeg built-in support disabled due to missing or unsuitable packages.' 469 fi 470else 471 HAVE_FFMPEG='no' 472fi 473 474if [ "$OS" != 'Win32' ]; then 475 check_lib '' DYNAMIC "$DYLIB" dlopen 476fi 477 478if [ "$HAVE_KMS" != "no" ]; then 479 check_val '' GBM -lgbm '' gbm 9.0 '' false 480 check_val '' DRM -ldrm libdrm libdrm '' '' false 481fi 482 483check_enabled DRM KMS KMS 'DRM is' true 484check_enabled GBM KMS KMS 'GBM is' true 485check_enabled EGL KMS KMS 'EGL is' true 486 487if [ "$HAVE_EGL" = "yes" ]; then 488 if [ "$HAVE_OPENGLES" != "no" ]; then 489 if [ "$OPENGLES_LIBS" ] || [ "$OPENGLES_CFLAGS" ]; then 490 die : "Notice: Using custom OpenGLES CFLAGS ($OPENGLES_CFLAGS) and LDFLAGS ($OPENGLES_LIBS)." 491 add_define MAKEFILE OPENGLES_LIBS "$OPENGLES_LIBS" 492 add_define MAKEFILE OPENGLES_CFLAGS "$OPENGLES_CFLAGS" 493 else 494 check_val '' OPENGLES "-l${VC_PREFIX}GLESv2 $EXTRA_GL_LIBS" '' "${VC_PREFIX}glesv2" '' '' true 495 fi 496 fi 497 check_val '' VG "-l${VC_PREFIX}OpenVG $EXTRA_GL_LIBS" '' "${VC_PREFIX}vg" '' '' false 498fi 499 500check_pkgconf DBUS dbus-1 501check_val '' UDEV "-ludev" '' libudev '' '' false 502check_val '' V4L2 -lv4l2 '' libv4l2 '' '' false 503check_val '' FREETYPE -lfreetype freetype2 freetype2 '' '' false 504check_val '' FONTCONFIG -lfontconfig fontconfig fontconfig '' '' false 505check_val '' X11 -lX11 '' x11 '' '' false 506 507if [ "$HAVE_X11" != 'no' ]; then 508 check_val '' XCB -lxcb '' xcb '' '' false 509 check_val '' XEXT -lXext '' xext '' '' false 510 check_val '' XF86VM -lXxf86vm '' xxf86vm '' '' false 511else 512 die : 'Notice: X11 not present. Skipping X11 code paths.' 513fi 514 515check_enabled X11 XINERAMA Xinerama 'Xinerama is' false 516check_enabled X11 XSHM XShm 'XShm is' false 517check_enabled X11 XRANDR Xrandr 'Xrandr is' false 518check_enabled X11 XVIDEO XVideo 'Xvideo is' false 519check_enabled XEXT XVIDEO XVideo 'Xext is' false 520check_enabled XF86VM XVIDEO XVideo 'XF86vm is' false 521 522check_val '' XVIDEO -lXv '' xv '' '' false 523check_val '' XINERAMA -lXinerama '' xinerama '' '' false 524check_lib '' XRANDR -lXrandr 525check_header '' XSHM X11/Xlib.h X11/extensions/XShm.h 526check_val '' XKBCOMMON -lxkbcommon '' xkbcommon 0.3.2 '' false 527check_val '' WAYLAND '-lwayland-egl -lwayland-client' '' wayland-egl 10.1.0 '' false 528check_val '' WAYLAND_CURSOR -lwayland-cursor '' wayland-cursor 1.12 '' false 529check_pkgconf WAYLAND_PROTOS wayland-protocols 1.15 530check_pkgconf WAYLAND_SCANNER wayland-scanner '1.15 1.12' 531 532if [ "$HAVE_WAYLAND_SCANNER" = yes ] && 533 [ "$HAVE_WAYLAND_CURSOR" = yes ] && 534 [ "$HAVE_WAYLAND" = yes ]; then 535 ./gfx/common/wayland/generate_wayland_protos.sh \ 536 -c "$WAYLAND_SCANNER_VERSION" \ 537 -p "$HAVE_WAYLAND_PROTOS" \ 538 -s "$SHARE_DIR" || 539 die 1 'Error: Failed generating wayland protocols.' 540else 541 die : 'Notice: wayland libraries not found, disabling wayland support.' 542 HAVE_WAYLAND='no' 543fi 544 545check_header '' PARPORT linux/parport.h 546check_header '' PARPORT linux/ppdev.h 547 548if [ "$OS" != 'Win32' ] && [ "$OS" != 'Linux' ]; then 549 check_lib '' STRL "$CLIB" strlcpy 550fi 551 552check_lib '' STRCASESTR "$CLIB" strcasestr 553check_lib '' MMAP "$CLIB" mmap 554 555check_enabled CXX VULKAN vulkan 'The C++ compiler is' false 556check_enabled CXX OPENGL_CORE 'OpenGL core' 'The C++ compiler is' false 557check_enabled THREADS VULKAN vulkan 'Threads are' false 558 559if [ "$HAVE_VULKAN" != "no" ] && [ "$OS" = 'Win32' ]; then 560 HAVE_VULKAN=yes 561else 562 check_lib '' VULKAN -lvulkan vkCreateInstance 563fi 564 565if [ "$HAVE_MENU" != 'no' ]; then 566 if [ "$HAVE_OPENGL" = 'no' ] && 567 [ "$HAVE_OPENGL1" = 'no' ] && 568 [ "$HAVE_OPENGLES" = 'no' ] && 569 [ "$HAVE_OPENGL_CORE" = 'no' ] && 570 [ "$HAVE_VULKAN" = 'no' ] && 571 [ "$HAVE_D3D10" = 'no' ] && 572 [ "$HAVE_D3D11" = 'no' ] && 573 [ "$HAVE_D3D12" = 'no' ] && 574 [ "$HAVE_METAL" = 'no' ]; then 575 if [ "$OS" = 'Win32' ]; then 576 HAVE_SHADERPIPELINE=no 577 HAVE_VULKAN=no 578 else 579 if [ "$HAVE_CACA" != 'yes' ] && [ "$HAVE_SIXEL" != 'yes' ] && 580 [ "$HAVE_SDL" != 'yes' ] && [ "$HAVE_SDL2" != 'yes' ]; then 581 add_opt RGUI no 582 fi 583 add_opt MATERIALUI no 584 add_opt OZONE no 585 add_opt XMB no 586 add_opt STRIPES no 587 fi 588 die : 'Notice: Hardware rendering context not available.' 589 fi 590fi 591 592if [ "$HAVE_STEAM" = 'yes' ]; then 593 add_opt ONLINE_UPDATER no 594 add_opt UPDATE_CORES no 595 die : 'Notice: Steam build enabled, disabling online updater as well.' 596fi 597 598check_enabled CXX SLANG slang 'The C++ compiler is' false 599check_enabled CXX GLSLANG glslang 'The C++ compiler is' false 600check_enabled CXX SPIRV_CROSS SPIRV-Cross 'The C++ compiler is' false 601 602check_enabled GLSLANG BUILTINGLSLANG 'builtin glslang' 'glslang is' true 603 604if [ "$HAVE_GLSLANG" != no ]; then 605 check_header cxx GLSLANG \ 606 glslang/Public/ShaderLang.h \ 607 glslang/SPIRV/GlslangToSpv.h 608 609 check_lib cxx GLSLANG -lglslang '' '-lSPIRV' 610 check_lib cxx GLSLANG_OSDEPENDENT -lOSDependent 611 check_lib cxx GLSLANG_OGLCOMPILER -lOGLCompiler 612 check_lib cxx GLSLANG_HLSL -lHLSL '' '-lglslang -lSPIRV' 613 check_lib cxx GLSLANG_SPIRV -lSPIRV 614 check_lib cxx GLSLANG_SPIRV_TOOLS_OPT -lSPIRV-Tools-opt 615 check_lib cxx GLSLANG_SPIRV_TOOLS -lSPIRV-Tools 616 617 if [ "$HAVE_GLSLANG" = no ] || 618 [ "$HAVE_GLSLANG_OSDEPENDENT" = no ] || 619 [ "$HAVE_GLSLANG_OGLCOMPILER" = no ] || 620 [ "$HAVE_GLSLANG_HLSL" = no ] || 621 [ "$HAVE_GLSLANG_SPIRV" = no ] || 622 [ "$HAVE_GLSLANG_SPIRV_TOOLS_OPT" = no ] || 623 [ "$HAVE_GLSLANG_SPIRV_TOOLS" = no ]; then 624 if [ "$HAVE_BUILTINGLSLANG" != yes ]; then 625 die : 'Notice: System glslang libraries not found, disabling glslang support.' 626 HAVE_GLSLANG=no 627 else 628 HAVE_GLSLANG=yes 629 fi 630 else 631 HAVE_GLSLANG=yes 632 fi 633fi 634 635check_enabled SLANG GLSLANG glslang 'slang is' false 636check_enabled SLANG SPIRV_CROSS SPIRV-Cross 'slang is' false 637check_enabled SLANG OPENGL_CORE 'OpenGL core' 'slang is' false 638check_enabled SLANG VULKAN vulkan 'slang is' false 639check_enabled SLANG METAL metal 'slang is' false 640 641check_enabled GLSLANG SLANG slang 'glslang is' false 642check_enabled GLSLANG SPIRV_CROSS SPIRV-Cross 'glslang is' false 643check_enabled GLSLANG OPENGL_CORE 'OpenGL core' 'glslang is' false 644check_enabled GLSLANG VULKAN vulkan 'glslang is' false 645check_enabled GLSLANG METAL metal 'glslang is' false 646 647check_enabled SPIRV_CROSS SLANG slang 'SPIRV-Cross is' false 648check_enabled SPIRV_CROSS GLSLANG glslang 'SPIRV-Cross is' false 649check_enabled SPIRV_CROSS OPENGL_CORE 'OpenGL core' 'SPIRV-Cross is' false 650check_enabled SPIRV_CROSS VULKAN vulkan 'SPIRV-Cross is' false 651check_enabled SPIRV_CROSS METAL metal 'SPIRV-Cross is' false 652 653check_enabled 'OPENGL_CORE METAL VULKAN' SLANG slang '' user 654check_enabled 'OPENGL_CORE METAL VULKAN' GLSLANG glslang '' user 655check_enabled 'OPENGL_CORE METAL VULKAN' SPIRV_CROSS SPIRV-Cross '' user 656 657check_macro NEON __ARM_NEON__ 658 659add_define MAKEFILE OS "$OS" 660 661if [ "$ARCHITECTURE_NAME" = 'Power Macintosh' ]; then 662 HAVE_LANGEXTRA='no' 663fi 664 665if [ "$HAVE_DEBUG" = 'yes' ]; then 666 add_define MAKEFILE DEBUG 1 667 if [ "$HAVE_OPENGL" = 'yes' ] || 668 [ "$HAVE_OPENGL1" = 'yes' ] || 669 [ "$HAVE_OPENGLES" = 'yes' ] || 670 [ "$HAVE_OPENGLES3" = 'yes' ]; then 671 add_define MAKEFILE GL_DEBUG 1 672 fi 673 if [ "$HAVE_VULKAN" = 'yes' ]; then 674 add_define MAKEFILE VULKAN_DEBUG 1 675 fi 676fi 677 678check_enabled 'ZLIB BUILTINZLIB' RPNG RPNG 'zlib is' false 679check_enabled V4L2 VIDEOPROCESSOR 'video processor' 'Video4linux2 is' true 680 681if [ "$HAVE_CXX11" = 'yes' ]; then 682 if [ "$OS" = 'Linux' ]; then 683 check_enabled 'VIDEOCORE X11' SR2 'CRT modeswitching' 'CRT is' true 684 else 685 check_platform Win32 SR2 'CRT modeswitching is' true 686 fi 687fi 688