From de7bf62f864088781e68f4bfb56339cc5c3f297a Mon Sep 17 00:00:00 2001 From: orbea Date: Sun, 21 Jul 2019 15:06:20 -0700 Subject: [PATCH] qb: Enable HAVE_SLANG, HAVE_GLSLANG and HAVE_SPRIV_CROSS dynamically. May help issue https://github.com/libretro/RetroArch/issues/9160. --- qb/config.libs.sh | 7 +++++++ qb/config.params.sh | 6 +++--- qb/qb.libs.sh | 10 ++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index d492b67942..41c0e7a197 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -525,16 +525,23 @@ check_enabled SLANG GLSLANG glslang 'slang is' false check_enabled SLANG SPIRV_CROSS SPIRV-Cross 'slang is' false check_enabled SLANG OPENGL_CORE 'OpenGL core' 'slang is' false check_enabled SLANG VULKAN vulkan 'slang is' false +check_enabled SLANG METAL metal 'slang is' false check_enabled GLSLANG SLANG slang 'glslang is' false check_enabled GLSLANG SPIRV_CROSS SPIRV-Cross 'glslang is' false check_enabled GLSLANG OPENGL_CORE 'OpenGL core' 'glslang is' false check_enabled GLSLANG VULKAN vulkan 'glslang is' false +check_enabled GLSLANG METAL metal 'glslang is' false check_enabled SPIRV_CROSS SLANG slang 'SPIRV-Cross is' false check_enabled SPIRV_CROSS GLSLANG glslang 'SPIRV-Cross is' false check_enabled SPIRV_CROSS OPENGL_CORE 'OpenGL core' 'SPIRV-Cross is' false check_enabled SPIRV_CROSS VULKAN vulkan 'SPIRV-Cross is' false +check_enabled SPIRV_CROSS METAL metal 'SPIRV-Cross is' false + +check_enabled 'OPENGL_CORE METAL VULKAN' SLANG slang '' user +check_enabled 'OPENGL_CORE METAL VULKAN' GLSLANG glslang '' user +check_enabled 'OPENGL_CORE METAL VULKAN' SPIRV_CROSS SPIRV-Cross '' user check_macro NEON __ARM_NEON__ diff --git a/qb/config.params.sh b/qb/config.params.sh index 69fa3d7b4b..c918865090 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -153,11 +153,11 @@ HAVE_DRMINGW=no # DrMingw exception handler HAVE_EASTEREGG=yes # Easter egg HAVE_CDROM=auto # CD-ROM support HAVE_GLSL=yes # GLSL shaders support -HAVE_SLANG=yes # slang support +HAVE_SLANG=auto # slang support C89_SLANG=no -HAVE_GLSLANG=yes # glslang support (requires C++11) +HAVE_GLSLANG=auto # glslang support (requires C++11) C89_GLSLANG=no -HAVE_SPIRV_CROSS=yes # SPIRV-Cross support (requires C++11) +HAVE_SPIRV_CROSS=auto # SPIRV-Cross support (requires C++11) C89_SPIRV_CROSS=no HAVE_METAL=no # Metal support (macOS-only) C89_METAL=no diff --git a/qb/qb.libs.sh b/qb/qb.libs.sh index 9f5135f8ec..5a256b2857 100644 --- a/qb/qb.libs.sh +++ b/qb/qb.libs.sh @@ -52,14 +52,14 @@ check_compiler() # $2 = USER_$2 [Enabled feature] # $3 = lib # $4 = feature -# $5 = enable lib when true [checked only if non-empty] +# $5 = enable lib when true, disable errors with 'user' [checked only if non-empty] check_enabled() { setval="$(eval "printf %s \"\$HAVE_$2\"")" for val in $(printf %s "$1"); do tmpvar="$(eval "printf %s \"\$HAVE_$val\"")" if [ "$tmpvar" != 'no' ]; then - if [ "$setval" != 'no' ] && [ "${5:-}" = 'true' ]; then + if [ "$setval" != 'no' ] && match "${5:-}" true user; then eval "HAVE_$2=yes" fi return 0 @@ -71,14 +71,16 @@ check_enabled() if [ "$tmpval" != 'yes' ]; then if [ "$setval" != 'no' ]; then eval "HAVE_$2=no" - if [ "${5:-}" != 'true' ]; then + if ! match "${5:-}" true user; then die : "Notice: $4 disabled, $3 support will also be disabled." fi fi return 0 fi - die 1 "Error: $4 disabled and forced to build with $3 support." + if [ "${5:-}" != 'user' ]; then + die 1 "Error: $4 disabled and forced to build with $3 support." + fi } # check_platform: