You've already forked flecs_tests
Makefile working with imgui
This commit is contained in:
45
makefile
45
makefile
@@ -1,52 +1,56 @@
|
||||
# Compiler and tools
|
||||
CC = emcc
|
||||
XXD = xxd
|
||||
FETCH = ./fetch_libs.sh
|
||||
|
||||
# Directories
|
||||
SRC_DIR = src
|
||||
LIB_DIR = lib
|
||||
SHADER_DIR = $(SRC_DIR)/shaders
|
||||
GENERATED_DIR = $(SRC_DIR)/generated
|
||||
SOKOL_DIR = ../sokol
|
||||
NUKLEAR_DIR = ../nuklear
|
||||
|
||||
# Output
|
||||
TARGET = app.html
|
||||
|
||||
# Source files
|
||||
C_SOURCES = $(SRC_DIR)/main.c
|
||||
IMGUI_SOURCES = $(LIB_DIR)/imgui/imgui/imgui.cpp \
|
||||
$(LIB_DIR)/imgui/imgui/imgui_draw.cpp \
|
||||
$(LIB_DIR)/imgui/imgui/imgui_tables.cpp \
|
||||
$(LIB_DIR)/imgui/imgui/imgui_widgets.cpp \
|
||||
$(LIB_DIR)/imgui/cimgui.cpp
|
||||
|
||||
# Dynamic shader processing
|
||||
SHADER_FILES = $(wildcard $(SHADER_DIR)/*)
|
||||
SHADER_HEADERS = $(patsubst $(SHADER_DIR)/%,$(GENERATED_DIR)/%.h,$(SHADER_FILES))
|
||||
SHADER_FILES = $(wildcard $(SHADER_DIR)/*.wgsl)
|
||||
SHADER_HEADERS = $(patsubst $(SHADER_DIR)/%.wgsl,$(GENERATED_DIR)/%.h,$(SHADER_FILES))
|
||||
|
||||
# Compiler flags
|
||||
EMCC_FLAGS = -sUSE_WEBGPU \
|
||||
-sASSERTIONS \
|
||||
EMCC_FLAGS = --use-port=emdawnwebgpu \
|
||||
-sWASM_BIGINT \
|
||||
-sALLOW_MEMORY_GROWTH \
|
||||
-msimd128 \
|
||||
-sFILESYSTEM=0
|
||||
|
||||
# Include directories
|
||||
INCLUDES = -I$(SOKOL_DIR) -I$(NUKLEAR_DIR)
|
||||
|
||||
# Shell template
|
||||
SHELL_FILE = shell.html
|
||||
|
||||
# Default target
|
||||
all: $(TARGET)
|
||||
all: $(FETCH) $(TARGET)
|
||||
|
||||
# Main build target
|
||||
$(TARGET): $(SHADER_HEADERS) $(C_SOURCES) $(SHELL_FILE)
|
||||
$(CC) $(C_SOURCES) \
|
||||
$(TARGET): $(SHADER_HEADERS) $(C_SOURCES) $(IMGUI_SOURCES) $(SHELL_FILE)
|
||||
$(CC) $(C_SOURCES) $(IMGUI_SOURCES) \
|
||||
-o $(TARGET) \
|
||||
$(EMCC_FLAGS) \
|
||||
-O3 \
|
||||
$(INCLUDES) \
|
||||
-I$(LIB_DIR)/sokol \
|
||||
-I$(LIB_DIR)/imgui \
|
||||
-I$(LIB_DIR)/imgui/imgui \
|
||||
-I$(LIB_DIR)/util \
|
||||
--shell-file=$(SHELL_FILE)
|
||||
|
||||
# Pattern rule for generating shader headers
|
||||
$(GENERATED_DIR)/%.h: $(SHADER_DIR)/% | $(GENERATED_DIR)
|
||||
# Shader header generation
|
||||
$(GENERATED_DIR)/%.h: $(SHADER_DIR)/%.wgsl | $(GENERATED_DIR)
|
||||
@echo "Generating header for $<"
|
||||
$(XXD) -i $< $@
|
||||
|
||||
@@ -54,12 +58,15 @@ $(GENERATED_DIR)/%.h: $(SHADER_DIR)/% | $(GENERATED_DIR)
|
||||
$(GENERATED_DIR):
|
||||
mkdir -p $(GENERATED_DIR)
|
||||
|
||||
debug: $(SHADER_HEADERS) $(C_SOURCES) $(SHELL_FILE)
|
||||
$(CC) $(C_SOURCES) \
|
||||
debug: $(FETCH) $(SHADER_HEADERS) $(C_SOURCES) $(IMGUI_SOURCES) $(SHELL_FILE)
|
||||
$(CC) $(C_SOURCES) $(IMGUI_SOURCES) \
|
||||
-o $(TARGET) \
|
||||
$(EMCC_FLAGS) \
|
||||
-g -gsource-map=inline \
|
||||
$(INCLUDES) \
|
||||
-I$(LIB_DIR)/sokol \
|
||||
-I$(LIB_DIR)/imgui \
|
||||
-I$(LIB_DIR)/imgui/imgui \
|
||||
-I$(LIB_DIR)/util \
|
||||
--shell-file=$(SHELL_FILE)
|
||||
|
||||
# Clean build artifacts
|
||||
@@ -79,4 +86,4 @@ list-shaders:
|
||||
@echo "$(SHADER_HEADERS)"
|
||||
|
||||
# Phony targets
|
||||
.PHONY: all clean rebuild list-shaders
|
||||
.PHONY: all clean rebuild list-shaders $(FETCH)
|
||||
Reference in New Issue
Block a user