Makefile fix shaders target

This commit is contained in:
zorn 2023-12-07 20:39:27 +10:00
parent 2ba07513c9
commit 5db1d0bd9e
2 changed files with 51 additions and 21 deletions

View File

@ -104,8 +104,8 @@ ifeq ($(platform), unix)
fpic := -fPIC
SHARED := -shared -Wl,--version-script=$(SRC_DIR)/citra_libretro/link.T -Wl,--no-undefined
LIBS +=-lpthread -lGL -ldl
HAVE_FFMPEG = 1
HAVE_FFMPEG_STATIC = 1
#HAVE_FFMPEG = 1
#HAVE_FFMPEG_STATIC = 1
ifeq ($(HAVE_FFMPEG_STATIC), 1)
LIBS += $(EXTERNALS_DIR)/ffmpeg/libavcodec/libavcodec.a $(EXTERNALS_DIR)/ffmpeg/libavutil/libavutil.a
else
@ -356,7 +356,7 @@ DYNARMICFLAGS += -D__LIBRETRO__ $(fpic) $(DEFINES) $(DYNARMICINCFLAGS) $(INCFLAG
CXXFLAGS += -D__LIBRETRO__ $(fpic) $(DEFINES) $(INCFLAGS) $(INCFLAGS_PLATFORM)
OBJOUT = -o
LINKOUT = -o
LINKOUT = -o
ifneq (,$(findstring msvc,$(platform)))
OBJOUT = -Fo
@ -418,20 +418,39 @@ $(foreach p,$(OBJECTS),$(if $(findstring $(EXTERNALS_DIR)/dynarmic/src,$p),$p,))
clean:
rm -f $(OBJECTS) $(TARGET)
rm -rf $(SRC_DIR)/video_core/shaders
ifeq ($(HAVE_FFMPEG_STATIC), 1)
cd $(EXTERNALS_DIR)/ffmpeg && $(MAKE) clean
endif
GLSLANG := glslang
ifeq (, $(shell which $(GLSLANG)))
GLSLANG := glslangValidator
ifeq (, $(shell which $(GLSLANG)))
$(error Required program `glslang` (or `glslangValidator`) not found.)
endif
endif
shaders: $(SHADER_FILES)
mkdir -p $(SRC_DIR)/video_core/shaders
for SHADER_FILE in $^; do \
OUT_DIR=$$(dirname "$(SRC_DIR)/video_core/shaders/$$SHADER_FILE"); \
FILENAME=$$(basename "$$SHADER_FILE"); \
SHADER_NAME=$$(echo "$$FILENAME" | sed -e "s/\./_/g"); \
rm -f $(SRC_DIR)/video_core/shaders/$$FILENAME; \
echo "#pragma once" >> $(SRC_DIR)/video_core/shaders/$$FILENAME; \
echo "constexpr std::string_view $$SHADER_NAME = R\"(" >> $(SRC_DIR)/video_core/shaders/$$FILENAME; \
cat $$SHADER_FILE >> $(SRC_DIR)/video_core/shaders/$$FILENAME; \
echo ")\";" >> $(SRC_DIR)/video_core/shaders/$$FILENAME; \
SHADER_NAME=$$(echo "$$FILENAME" | sed -e 's/\./_/g'); \
OUT_FILE="$$OUT_DIR/$$SHADER_NAME"; \
if [ "$$FILENAME" = "$${FILENAME#vulkan}" ]; then \
SHADER_CONTENT=$$(cat $$SHADER_FILE | sed -e 's/"/'\''/g'); \
SHADER_CONTENT=$$(echo "$$SHADER_CONTENT" | sed -e 's/.*/"&'\\\\\\\\'n"/'); \
mkdir -p "$$OUT_DIR"; \
echo "$$SHADER_CONTENT" > $$OUT_FILE; \
cat $(SRC_DIR)/video_core/host_shaders/source_shader.h.in | sed -e "s/@CONTENTS_NAME@/$$(echo $$SHADER_NAME | tr '[a-z]' '[A-Z]')/" > $$OUT_FILE.h; \
sed -i -e "/@CONTENTS@/ { r $$OUT_FILE" -e "d }" $$OUT_FILE.h; \
rm -f $$OUT_FILE; \
fi; \
if [ "$$FILENAME" = "$${FILENAME#opengl}" ]; then \
SHADER_NAME=$${SHADER_NAME}_spv; \
$(GLSLANG) --target-env vulkan1.1 --glsl-version 450 -Dgl_VertexID=gl_VertexIndex \
--variable-name $$(echo $$SHADER_NAME | tr '[a-z]' '[A-Z]') -o $${OUT_FILE}_spv.h $$SHADER_FILE; \
fi; \
done

View File

@ -1,5 +1,6 @@
INCFLAGS := -I$(SRC_DIR) \
-I$(SRC_DIR)/video_core \
-I$(SRC_DIR)/video_core/shaders/src \
-I$(EXTERNALS_DIR) \
-I$(EXTERNALS_DIR)/dynarmic/include \
-I$(EXTERNALS_DIR)/enet/include \
@ -733,14 +734,24 @@ SOURCES_CXX += $(SRC_DIR)/citra_libretro/emu_window/libretro_window.cpp \
$(SRC_DIR)/citra_libretro/core_settings.cpp \
$(SRC_DIR)/citra_libretro/libretro_logger.cpp
SHADER_FILES += $(SRC_DIR)/video_core/renderer_opengl/depth_to_color.vert \
$(SRC_DIR)/video_core/renderer_opengl/depth_to_color.frag \
$(SRC_DIR)/video_core/renderer_opengl/ds_to_color.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/anime4k/refine.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/anime4k/x_gradient.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/anime4k/y_gradient.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/bicubic/bicubic.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/scale_force/scale_force.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/tex_coord.vert \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/xbrz/xbrz_freescale.frag \
$(SRC_DIR)/video_core/renderer_opengl/texture_filters/xbrz/xbrz_freescale.vert
SHADER_FILES += $(SRC_DIR)/video_core/host_shaders/format_reinterpreter/d24s8_to_rgba8.frag \
$(SRC_DIR)/video_core/host_shaders/format_reinterpreter/rgba4_to_rgb5a1.frag \
$(SRC_DIR)/video_core/host_shaders/format_reinterpreter/vulkan_d24s8_to_rgba8.comp \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/bicubic.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/refine.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/scale_force.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/xbrz_freescale.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/mmpx.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/x_gradient.frag \
$(SRC_DIR)/video_core/host_shaders/texture_filtering/y_gradient.frag \
$(SRC_DIR)/video_core/host_shaders/full_screen_triangle.vert \
$(SRC_DIR)/video_core/host_shaders/opengl_present.frag \
$(SRC_DIR)/video_core/host_shaders/opengl_present.vert \
$(SRC_DIR)/video_core/host_shaders/opengl_present_anaglyph.frag \
$(SRC_DIR)/video_core/host_shaders/opengl_present_interlaced.frag \
$(SRC_DIR)/video_core/host_shaders/vulkan_depth_to_buffer.comp \
$(SRC_DIR)/video_core/host_shaders/vulkan_present.frag \
$(SRC_DIR)/video_core/host_shaders/vulkan_present.vert \
$(SRC_DIR)/video_core/host_shaders/vulkan_present_anaglyph.frag \
$(SRC_DIR)/video_core/host_shaders/vulkan_present_interlaced.frag \
$(SRC_DIR)/video_core/host_shaders/vulkan_blit_depth_stencil.frag