From 88d9b6502839c6dc152a7912cf518670e26879b5 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Mon, 30 Jun 2025 13:07:42 +0200 Subject: [PATCH] updated build configuration --- .ecode/project_build.json | 10 +++++----- resources/shaders/Makefile | 33 ++++++++++++++++++++++++++++++ scripts/compile_shaders.sh | 41 -------------------------------------- 3 files changed, 38 insertions(+), 46 deletions(-) create mode 100644 resources/shaders/Makefile delete mode 100755 scripts/compile_shaders.sh diff --git a/.ecode/project_build.json b/.ecode/project_build.json index 3e67462..593ac60 100644 --- a/.ecode/project_build.json +++ b/.ecode/project_build.json @@ -2,12 +2,12 @@ "Debug": { "build": [ { - "args": "", - "command": "scripts/compile_shaders.sh", + "args": "-C resources/shaders", + "command": "make", "working_dir": "" }, { - "args": "clean-run -g", + "args": "build -g", "command": "c3c", "working_dir": "" } @@ -15,8 +15,8 @@ "build_types": [], "clean": [ { - "args": "", - "command": "rm build/ugui", + "args": "clean", + "command": "c3c", "working_dir": "" } ], diff --git a/resources/shaders/Makefile b/resources/shaders/Makefile new file mode 100644 index 0000000..cdc4a01 --- /dev/null +++ b/resources/shaders/Makefile @@ -0,0 +1,33 @@ +SOURCE_DIR := ./source +COMPILED_DIR := ./compiled + +SOURCE_FILES := $(wildcard $(SOURCE_DIR)/*.glsl) + +COMPILED_FILES := $(patsubst $(SOURCE_DIR)/%.glsl,$(COMPILED_DIR)/%.spv,$(SOURCE_FILES)) + +all: $(COMPILED_FILES) + @echo "Compiling shaders from $(SOURCE_DIR) -> $(COMPILED_DIR)" + +$(COMPILED_DIR)/%.spv: $(SOURCE_DIR)/%.glsl + @mkdir -p $(COMPILED_DIR) + @stage=$$(basename $< .glsl | cut -d. -f2); \ + if [ "$$stage" = "frag" ] || [ "$$stage" = "vert" ]; then \ + echo "$$stage $(notdir $<) > $(notdir $@)"; \ + glslc -O0 -g -fshader-stage=$$stage $< -o $@; \ + else \ + echo "Skipping $<: unsupported stage $$stage"; \ + fi + +$(COMPILED_DIR): + mkdir -p $(COMPILED_DIR) + +.PHONY: clean +clean: + rm -rf $(COMPILED_DIR) + +.PHONY: tree +tree: + tree $(COMPILED_DIR) + +.PHONY: compile_all +compile_all: clean all tree diff --git a/scripts/compile_shaders.sh b/scripts/compile_shaders.sh deleted file mode 100755 index 336cdf1..0000000 --- a/scripts/compile_shaders.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -source_directory="./resources/shaders/source" -compiled_directory="./resources/shaders/compiled" -#vulkan_version="1.0" - -mkdir -p "$compiled_directory" -rm -f "$compiled_directory"/* - -echo "Compiling from $source_directory -> $compiled_directory" - -for file in "$source_directory"/*; do - [ -f "$file" ] || continue # Skip non-files - filename=$(basename "$file") - - # Extract filename parts using POSIX parameter expansion - shader_language="${filename##*.}" - stage_part="${filename%.*}" # Remove extension - base_name="${stage_part%.*}" # Remove stage - stage="${stage_part#"$base_name"}" - stage="${stage#.}" # Remove leading dot - - # Skip if not in base.stage.glsl format - [ "$shader_language" = "glsl" ] && [ -n "$base_name" ] && [ -n "$stage" ] || continue - - # Handle HLSL rejection - if [ "$shader_language" != "glsl" ]; then - echo "Error: Only GLSL shaders are supported" >&2 - exit 1 - fi - - # Compile based on shader stage - case "$stage" in - frag|vert) - echo "$stage $filename > $base_name.$stage.spv" - glslc -O0 -g -fshader-stage="$stage" "$file" -o "$compiled_directory/$base_name.$stage.spv" - ;; - esac -done - -tree "$compiled_directory" \ No newline at end of file