From 8ca8d9c977eeae0a1aafaf5f01208610e7a809e4 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 6 Oct 2024 22:56:15 +0900 Subject: [PATCH 1/2] build: Allow using a system-provided SPIRV-Cross library. Fixes: https://github.com/libretro/RetroArch/issues/17079 * Makefile.common [HAVE_BUILTINSPIRV_CROSS]: Include bundled SPIRV-Cross sources only when using the builtin option, else... [!HAVE_BUILTINSPIRV_CROSS]: Extend CXXFLAGS and LIBS. * qb/config.libs.sh (BUILTINSPIRV_CROSS): Register new check_enabled configure option, and add libraries/header checks. * qb/config.params.sh (HAVE_BUILTINSPIRV_CROSS): Register new parameter. * Makefile.wiiu (HAVE_BUILTINSPIRV_CROSS): Define to 1. --- Makefile.common | 8 ++++++++ Makefile.wiiu | 1 + qb/config.libs.sh | 22 ++++++++++++++++++++++ qb/config.params.sh | 1 + 4 files changed, 32 insertions(+) diff --git a/Makefile.common b/Makefile.common index 35b8c83c438c..770e72a128ca 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1895,6 +1895,7 @@ endif ifeq ($(HAVE_SPIRV_CROSS), 1) DEFINES += -DHAVE_SPIRV_CROSS +ifeq ($(HAVE_BUILTINSPIRV_CROSS), 1) INCLUDE_DIRS += -I$(DEPS_DIR)/SPIRV-Cross OBJ += $(DEPS_DIR)/SPIRV-Cross/spirv_cross.o OBJ += $(DEPS_DIR)/SPIRV-Cross/spirv_cfg.o @@ -1903,6 +1904,13 @@ ifeq ($(HAVE_SPIRV_CROSS), 1) OBJ += $(DEPS_DIR)/SPIRV-Cross/spirv_msl.o OBJ += $(DEPS_DIR)/SPIRV-Cross/spirv_parser.o OBJ += $(DEPS_DIR)/SPIRV-Cross/spirv_cross_parsed_ir.o +else + CXXFLAGS += $(SPIRV_CROSS_CFLAGS) + LIBS += -lspirv-cross-core \ + -lspirv-cross-glsl \ + -lspirv-cross-reflect \ + -lspirv-cross-msl +endif endif ifeq ($(WANT_WGL), 1) diff --git a/Makefile.wiiu b/Makefile.wiiu index 1c457bcf26bf..0734a92b3c8c 100644 --- a/Makefile.wiiu +++ b/Makefile.wiiu @@ -165,6 +165,7 @@ endif #WANT_IFADDRS = 1 HAVE_OVERLAY = 1 HAVE_SPIRV_CROSS = 1 + HAVE_BUILTINSPIRV_CROSS = 1 HAVE_SLANG = 1 HAVE_DSP_FILTER = 1 HAVE_VIDEO_FILTER = 1 diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 3553b997d5d7..6f67955924c1 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -662,6 +662,7 @@ check_enabled CXX GLSLANG glslang 'The C++ compiler is' false check_enabled CXX SPIRV_CROSS SPIRV-Cross 'The C++ compiler is' false check_enabled GLSLANG BUILTINGLSLANG 'builtin glslang' 'glslang is' true +check_enabled SPIRV_CROSS BUILTINSPIRV_CROSS 'builtin spirv-cross' 'spirv-cross is' true if [ "$HAVE_GLSLANG" != no ]; then check_header cxx GLSLANG \ @@ -694,6 +695,27 @@ if [ "$HAVE_GLSLANG" != no ]; then fi fi +if [ "$HAVE_SPIRV_CROSS" != no ]; then + check_lib cxx SPIRV_CROSS -lspirv-cross-core '' '' 'spirv_cross.hpp' 'spirv_cross' + check_lib cxx SPIRV_CROSS_GLSL -lspirv-cross-glsl + check_lib cxx SPIRV_CROSS_MSL -lspirv-cross-msl + check_lib cxx SPIRV_CROSS_REFLECT -lspirv-cross-reflect + if [ "$HAVE_SPIRV_CROSS" = no ] || + [ "$HAVE_SPIRV_CROSS_GLSL" = no ] || + [ "$HAVE_SPIRV_CROSS_MSL" = no ] || + [ "$HAVE_SPIRV_CROSS_REFLECT" = no ]; then + if [ "$HAVE_BUILTINSPIRV_CROSS" != yes ]; then + die : "Notice: System spirv-cross libraries not found, \ +disabling spirv-cross support" + HAVE_SPIRV_CROSS=no + else + HAVE_SPIRV_CROSS=yes + fi + else + HAVE_SPIRV_CROSS=yes + fi +fi + if [ "$HAVE_CRTSWITCHRES" != no ]; then if [ "$HAVE_CXX11" = 'no' ]; then HAVE_CRTSWITCHRES=no diff --git a/qb/config.params.sh b/qb/config.params.sh index bc6b4381c739..34f34244dadc 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -194,6 +194,7 @@ C89_GLSLANG=no HAVE_BUILTINGLSLANG=auto # Bake in glslang support C89_BUILTINGLSLANG=no HAVE_SPIRV_CROSS=auto # SPIRV-Cross support (requires C++11) +HAVE_BUILTINSPIRV_CROSS=auto # Use bundled SPIRV-Cross source C89_SPIRV_CROSS=no HAVE_METAL=no # Metal support (macOS-only) C89_METAL=no From 6f05e1c45b6dd1ef1b51271b948b9911e636e4c3 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 6 Oct 2024 23:52:48 +0900 Subject: [PATCH 2/2] qb/config.libs.sh: Extend default INCLUDES with GCC environment variables. C_INCLUDE_PATH and CPLUS_INCLUDE_PATH are consulted by GCC, so should be considered by check_libs as well. * qb/config.libs.sh (INCLUDES): Add C_INCLUDE_PATH and CPLUS_INCLUDE_PATH values to it. --- qb/config.libs.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 6f67955924c1..ecf993a64769 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -33,7 +33,10 @@ CLIB=-lc PTHREADLIB=-lpthread SOCKETLIB=-lc SOCKETHEADER= -INCLUDES='usr/include usr/local/include' +TR='tr' +INCLUDES="$(echo $C_INCLUDE_PATH | $TR ':' ' ') \ +$(echo $CPLUS_INCLUDE_PATH | $TR ':' ' ') \ +usr/include usr/local/include" SORT='sort' EXTRA_GL_LIBS='' VC_PREFIX=''