diff options
author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-02-13 21:52:21 +0100 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-03-13 18:16:03 +0100 |
commit | f6566338ebd6559b0fbe61e1557ee735bf58dcdd (patch) | |
tree | 6c4163d0dc21dbc5225ac99733de45504ee53e12 /src/video_core/host_shaders/StringShaderHeader.cmake | |
parent | renderer_opengl: Accelerate ASTC texture decoding with a compute shader (diff) | |
download | yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar.gz yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar.bz2 yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar.lz yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar.xz yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.tar.zst yuzu-f6566338ebd6559b0fbe61e1557ee735bf58dcdd.zip |
Diffstat (limited to 'src/video_core/host_shaders/StringShaderHeader.cmake')
-rw-r--r-- | src/video_core/host_shaders/StringShaderHeader.cmake | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/video_core/host_shaders/StringShaderHeader.cmake b/src/video_core/host_shaders/StringShaderHeader.cmake index c0fc49768..1b4bc6103 100644 --- a/src/video_core/host_shaders/StringShaderHeader.cmake +++ b/src/video_core/host_shaders/StringShaderHeader.cmake @@ -6,7 +6,27 @@ get_filename_component(CONTENTS_NAME ${SOURCE_FILE} NAME) string(REPLACE "." "_" CONTENTS_NAME ${CONTENTS_NAME}) string(TOUPPER ${CONTENTS_NAME} CONTENTS_NAME) -file(READ ${SOURCE_FILE} CONTENTS) +FILE(READ ${SOURCE_FILE} line_contents) + +# Replace double quotes with single quotes, +# as double quotes will be used to wrap the lines +STRING(REGEX REPLACE "\"" "'" line_contents "${line_contents}") + +# CMake separates list elements with semicolons, but semicolons +# are used extensively in the shader code. +# Replace with a temporary marker, to be reverted later. +STRING(REGEX REPLACE ";" "{{SEMICOLON}}" line_contents "${line_contents}") + +# Make every line an individual element in the CMake list. +STRING(REGEX REPLACE "\n" ";" line_contents "${line_contents}") + +# Build the shader string, wrapping each line in double quotes. +foreach(line IN LISTS line_contents) + string(CONCAT CONTENTS "${CONTENTS}" \"${line}\\n\"\n) +endforeach() + +# Revert the original semicolons in the source. +STRING(REGEX REPLACE "{{SEMICOLON}}" ";" CONTENTS "${CONTENTS}") get_filename_component(OUTPUT_DIR ${HEADER_FILE} DIRECTORY) make_directory(${OUTPUT_DIR}) |