From 40d69e7e40a18865a31af2f55efcde369d36dbbb Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 20 May 2025 21:08:19 -0400 Subject: pke: serialization overhaul + embedded assets --- Makefile | 103 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 68 insertions(+), 35 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 0da6a41..9a82d8f 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,14 @@ endef define cxx-dbg-command $(CXX) -std=c++23 -c -o $@ -DDEBUG -g -O0 $(CXXFLAGS) $(INCS) $< endef +define cc-encode-binary-command +$(1): $(2) + xxd -i $$< | sed -e 's/^unsigned /const unsigned /' > $$@ +endef +define cc-pre-compile-header-command +$(1): $(2) + $(CC) -std=c2x -O3 -c $$< -o $$@ +endef FLG_PKE = -Isub/imgui -Isub/stb -Isub/cgltf -Isub/bullet3/src FLG_EDT = $(FLG_PKE) -Isrc -I/home/pikum/build/msdfgen -I/home/pikum/build/msdf-atlas-gen @@ -24,6 +32,26 @@ FLG_MPL = $(FLG_PKE) -Isrc FLG_RUN = $(FLG_PKE) -Isrc FLG_TST = $(FLG_PKE) -Isrc +FILES_BIN = \ + assets/fonts/font-mannequin.png \ + assets/fonts/font-mannequin.glyph \ + +FILES_BIN_SAFE = $(subst -,_,$(subst .,_,$(FILES_BIN))) +FILES_BIN_H = $(FILES_BIN_SAFE:%=%.h) +FILES_BIN_GCH = $(FILES_BIN_SAFE:%=%.gch) + +# I don't like foreach but this works +$(foreach f,$(FILES_BIN), \ + $(eval \ + $(call cc-encode-binary-command,$(subst -,_,$(subst .,_,$f)).h,$(f)) \ + ) \ +) +$(foreach f,$(FILES_BIN_SAFE), \ + $(eval \ + $(call cc-pre-compile-header-command,$(f).gch,$(f).h) \ + ) \ +) + DIR_OBJ=obj DIR_BIN=bin DIR_DBG=dbg @@ -48,6 +76,9 @@ default: options $(DIR_BIN)/pke-editor $(DIR_BIN)/libpke-example.a $(DIR_BIN)/pk default-dbg: options $(DIR_DBG)/pke-editor $(DIR_DBG)/libpke-example.a $(DIR_DBG)/pke-runtime ; .PHONY: prepare +prepare: config.h +prepare: config.mk +prepare: $(FILES_BIN_GCH) prepare: mkdir -p $(DIR_BIN) $(DIR_DBG) $(DIR_OBJ) $(DIR_OBJ)/shaders $(DIR_DBG)/bullet3 $(DIR_BIN)/bullet3 mkdir -p $(DIR_BIN)/bullet3 @@ -65,63 +96,64 @@ options: prepare .WAIT config.h: cp config.def.h $@ -%.h: ; - -%.hpp: ; - -$(DIR_OBJ)/%.o : config.h config.mk -$(DIR_OBJ)/%.so : config.h config.mk - -$(DIR_OBJ)/%.o : sub/imgui/%.cpp +$(DIR_OBJ)/%.o : sub/imgui/%.cpp | prepare $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/%.cpp +$(DIR_OBJ)/%.so : sub/imgui/%.cpp | prepare $(cxx-dbg-command) -Isub/imgui -$(DIR_OBJ)/%.o : sub/imgui/backends/%.cpp +$(DIR_OBJ)/%.o : sub/imgui/backends/%.cpp | prepare $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/backends/%.cpp +$(DIR_OBJ)/%.so : sub/imgui/backends/%.cpp | prepare $(cxx-dbg-command) -Isub/imgui -$(DIR_OBJ)/%.o : sub/imgui/misc/cpp/%.cpp +$(DIR_OBJ)/%.o : sub/imgui/misc/cpp/%.cpp | prepare $(cxx-bin-command) -Isub/imgui -$(DIR_OBJ)/%.so : sub/imgui/misc/cpp/%.cpp +$(DIR_OBJ)/%.so : sub/imgui/misc/cpp/%.cpp | prepare $(cxx-dbg-command) -Isub/imgui -$(DIR_OBJ)/shaders/%.vert.spv: assets/shaders/%.vert +$(DIR_OBJ)/shaders/%.vert.spv: assets/shaders/%.vert | prepare $(GLSLC) $^ -o $@ -$(DIR_OBJ)/shaders/%.frag.spv: assets/shaders/%.frag +$(DIR_OBJ)/shaders/%.frag.spv: assets/shaders/%.frag | prepare $(GLSLC) $^ -o $@ -$(DIR_OBJ)/%.o : src/%.c +$(DIR_OBJ)/%.o : src/%.c | prepare + $(cc-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/%.c | prepare + $(cc-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : embed/%.c | prepare $(cc-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/%.c +$(DIR_OBJ)/%.so : embed/%.c | prepare $(cc-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : src/vendor/tinyfiledialogs/%.c +$(DIR_OBJ)/%.o : src/vendor/tinyfiledialogs/%.c | prepare $(cc-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/vendor/tinyfiledialogs/%.c +$(DIR_OBJ)/%.so : src/vendor/tinyfiledialogs/%.c | prepare $(cc-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : tests/%.c +$(DIR_OBJ)/%.o : tests/%.c | prepare $(cc-bin-command) $(FLG_TST) -$(DIR_OBJ)/%.so : tests/%.c +$(DIR_OBJ)/%.so : tests/%.c | prepare $(cc-dbg-command) $(FLG_TST) -$(DIR_OBJ)/%.o : src/%.cpp +$(DIR_OBJ)/%.o : src/%.cpp | prepare + $(cxx-bin-command) $(FLG_PKE) +$(DIR_OBJ)/%.so : src/%.cpp | prepare + $(cxx-dbg-command) $(FLG_PKE) +$(DIR_OBJ)/%.o : embed/%.cpp | prepare $(cxx-bin-command) $(FLG_PKE) -$(DIR_OBJ)/%.so : src/%.cpp +$(DIR_OBJ)/%.so : embed/%.cpp | prepare $(cxx-dbg-command) $(FLG_PKE) -$(DIR_OBJ)/%.o : editor/%.cpp +$(DIR_OBJ)/%.o : editor/%.cpp | prepare $(cxx-bin-command) $(FLG_EDT) -$(DIR_OBJ)/%.so : editor/%.cpp +$(DIR_OBJ)/%.so : editor/%.cpp | prepare $(cxx-dbg-command) $(FLG_EDT) -$(DIR_OBJ)/%.o : example/%.cpp +$(DIR_OBJ)/%.o : example/%.cpp | prepare $(cxx-bin-command) $(FLG_MPL) -$(DIR_OBJ)/%.so : example/%.cpp +$(DIR_OBJ)/%.so : example/%.cpp | prepare $(cxx-dbg-command) $(FLG_MPL) -$(DIR_OBJ)/%.o : runtime/%.cpp +$(DIR_OBJ)/%.o : runtime/%.cpp | prepare $(cxx-bin-command) $(FLG_RUN) -$(DIR_OBJ)/%.so : runtime/%.cpp +$(DIR_OBJ)/%.so : runtime/%.cpp | prepare $(cxx-dbg-command) $(FLG_RUN) -$(DIR_OBJ)/%.o : tests/%.cpp +$(DIR_OBJ)/%.o : tests/%.cpp | prepare $(cxx-bin-command) $(FLG_TST) -$(DIR_OBJ)/%.so : tests/%.cpp +$(DIR_OBJ)/%.so : tests/%.cpp | prepare $(cxx-dbg-command) $(FLG_TST) $(DIR_BIN)/libImgui.a: $(DIR_OBJ)/imgui.o @@ -168,6 +200,7 @@ $(DIR_BIN)/libpke.a: $(DIR_OBJ)/asset-manager.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/camera.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/dynamic-array.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/ecs.o +$(DIR_BIN)/libpke.a: $(DIR_OBJ)/embedded-fonts.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/entities.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/event.o $(DIR_BIN)/libpke.a: $(DIR_OBJ)/font.o @@ -207,6 +240,7 @@ $(DIR_DBG)/libpke.a: $(DIR_OBJ)/asset-manager.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/camera.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/dynamic-array.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/ecs.so +$(DIR_DBG)/libpke.a: $(DIR_OBJ)/embedded-fonts.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/entities.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/event.so $(DIR_DBG)/libpke.a: $(DIR_OBJ)/font.so @@ -304,14 +338,13 @@ $(DIR_DBG)/pke-test: $(DIR_OBJ)/pke-test.so .PHONY: print print: - @echo $(OUT_OBJ) - @echo $(MAINS_OBJ) - @echo $(MAINS_SOBJ) + @echo $(FILES_BIN_H) + @echo $(FILES_BIN_GCH) .PHONY: clean clean: rm -rf .cache - rm -f *.o *.so *.plist config.h + rm -f *.o *.so *.plist config.h $(FILES_BIN_GCH) rm -rf $(DIR_BIN) $(DIR_OBJ) $(DIR_DBG) .PHONY: dist install uninstall -- cgit v1.2.3