add timestamps to commands

This commit is contained in:
asrael 2026-04-12 14:46:29 -05:00
parent 8f9317f751
commit d914f2ea62
2 changed files with 40 additions and 25 deletions

View file

@ -25,6 +25,20 @@
export PATH := $(PATH):/usr/bin:/bin export PATH := $(PATH):/usr/bin:/bin
# -- Colors -------------------------------------------------------------------
GREEN := \033[1;38;2;184;187;38m
YELLOW := \033[1;38;2;250;189;47m
RED := \033[1;38;2;251;73;52m
CYAN := \033[1;38;2;131;165;152m
NC := \033[0m
INFO = @printf '$(GREEN)[%s INFO]$(NC) %s\n' "$$(date +%H:%M:%S)"
WARN = @printf '$(YELLOW)[%s WARN]$(NC) %s\n' "$$(date +%H:%M:%S)"
ERROR = @printf '$(RED)[%s ERROR]$(NC) %s\n' "$$(date +%H:%M:%S)"
CC_ = @printf '$(CYAN)[%s CC]$(NC) %s\n' "$$(date +%H:%M:%S)"
SHD_ = @printf '$(CYAN)[%s SHADER]$(NC) %s\n' "$$(date +%H:%M:%S)"
# -- Platform detection ------------------------------------------------------- # -- Platform detection -------------------------------------------------------
UNAME := $(shell uname) UNAME := $(shell uname)
@ -83,6 +97,7 @@ endif
ifeq ($(PLATFORM),windows) ifeq ($(PLATFORM),windows)
LIBS = -lws2_32 LIBS = -lws2_32
LDFLAGS += -Wl,/SUBSYSTEM:CONSOLE
PXL8_DEF = $(BUILDDIR)/pxl8.def PXL8_DEF = $(BUILDDIR)/pxl8.def
EXE_EXT = .exe EXE_EXT = .exe
else ifeq ($(UNAME),Darwin) else ifeq ($(UNAME),Darwin)
@ -252,31 +267,31 @@ DEPS_OK = lib/luajit/src/luajit.c lib/miniz/miniz.c lib/fennel/fennel.lua $(LINE
deps: $(DEPS_OK) deps: $(DEPS_OK)
lib/luajit/src/luajit.c: lib/luajit/src/luajit.c:
@echo "[INFO] Fetching LuaJIT" $(INFO) "Fetching LuaJIT"
@rm -rf lib/luajit @rm -rf lib/luajit
@git clone --quiet --branch v2.1 https://github.com/LuaJIT/LuaJIT.git lib/luajit @git clone --quiet --branch v2.1 https://github.com/LuaJIT/LuaJIT.git lib/luajit
lib/linenoise/linenoise.c: lib/linenoise/linenoise.c:
@mkdir -p lib/linenoise @mkdir -p lib/linenoise
@echo "[INFO] Fetching linenoise" $(INFO) "Fetching linenoise"
@curl -sL -o lib/linenoise/linenoise.c https://raw.githubusercontent.com/antirez/linenoise/master/linenoise.c @curl -sL -o lib/linenoise/linenoise.c https://raw.githubusercontent.com/antirez/linenoise/master/linenoise.c
@curl -sL -o lib/linenoise/linenoise.h https://raw.githubusercontent.com/antirez/linenoise/master/linenoise.h @curl -sL -o lib/linenoise/linenoise.h https://raw.githubusercontent.com/antirez/linenoise/master/linenoise.h
lib/linenoise-win32/linenoise.c: lib/linenoise-win32/linenoise.c:
@echo "[INFO] Fetching linenoise-win32" $(INFO) "Fetching linenoise-win32"
@rm -rf lib/linenoise-win32 @rm -rf lib/linenoise-win32
@git clone --quiet --depth 1 https://github.com/msteveb/linenoise.git lib/linenoise-win32 @git clone --quiet --depth 1 https://github.com/msteveb/linenoise.git lib/linenoise-win32
lib/miniz/miniz.c: lib/miniz/miniz.c:
@mkdir -p lib/miniz @mkdir -p lib/miniz
@echo "[INFO] Fetching miniz" $(INFO) "Fetching miniz"
@curl -sL -o /tmp/miniz.zip "https://github.com/richgel999/miniz/releases/download/3.1.0/miniz-3.1.0.zip" @curl -sL -o /tmp/miniz.zip "https://github.com/richgel999/miniz/releases/download/3.1.0/miniz-3.1.0.zip"
@unzip -qjo /tmp/miniz.zip miniz.c miniz.h -d lib/miniz/ @unzip -qjo /tmp/miniz.zip miniz.c miniz.h -d lib/miniz/
@rm -f /tmp/miniz.zip @rm -f /tmp/miniz.zip
lib/fennel/fennel.lua: lib/fennel/fennel.lua:
@mkdir -p lib/fennel @mkdir -p lib/fennel
@echo "[INFO] Fetching Fennel" $(INFO) "Fetching Fennel"
@curl -sL -o lib/fennel/fennel.lua "https://fennel-lang.org/downloads/fennel-1.6.1.lua" @curl -sL -o lib/fennel/fennel.lua "https://fennel-lang.org/downloads/fennel-1.6.1.lua"
update: update:
@ -285,23 +300,23 @@ update:
$(MAKE) deps $(MAKE) deps
vendor-sdl: vendor-sdl:
@echo "[INFO] Fetching SDL3" $(INFO) "Fetching SDL3"
@if [ -d lib/SDL/.git ]; then cd lib/SDL && git pull --quiet origin main; \ @if [ -d lib/SDL/.git ]; then cd lib/SDL && git pull --quiet origin main; \
else rm -rf lib/SDL && git clone --quiet https://github.com/libsdl-org/SDL.git lib/SDL; fi else rm -rf lib/SDL && git clone --quiet https://github.com/libsdl-org/SDL.git lib/SDL; fi
@echo "[INFO] Building SDL3" $(INFO) "Building SDL3"
@mkdir -p lib/SDL/build && cd lib/SDL/build && \ @mkdir -p lib/SDL/build && cd lib/SDL/build && \
cmake .. -DCMAKE_BUILD_TYPE=Release && \ cmake .. -DCMAKE_BUILD_TYPE=Release && \
cmake --build . --config Release --parallel $(NPROC) cmake --build . --config Release --parallel $(NPROC)
@echo "[INFO] Built SDL3" $(INFO) "Built SDL3"
# -- LuaJIT build ------------------------------------------------------------ # -- LuaJIT build ------------------------------------------------------------
luajit: $(LUAJIT_LIB) luajit: $(LUAJIT_LIB)
$(LUAJIT_LIB): lib/luajit/src/luajit.c $(LUAJIT_LIB): lib/luajit/src/luajit.c
@echo "[INFO] Building LuaJIT" $(INFO) "Building LuaJIT"
@$(LUAJIT_BUILD) @$(LUAJIT_BUILD)
@echo "[INFO] Built LuaJIT" $(INFO) "Built LuaJIT"
# -- Server (Rust) ------------------------------------------------------------ # -- Server (Rust) ------------------------------------------------------------
@ -309,7 +324,7 @@ server: $(SERVER)
$(SERVER): $(wildcard pxl8d/src/*.rs pxl8d/Cargo.toml) $(SERVER): $(wildcard pxl8d/src/*.rs pxl8d/Cargo.toml)
@mkdir -p $(BINDIR) @mkdir -p $(BINDIR)
@echo "[INFO] Building pxl8d ($(MODE) mode)" $(INFO) "Building pxl8d ($(MODE) mode)"
ifeq ($(MODE),release) ifeq ($(MODE),release)
@cd pxl8d && PATH="$$(echo $$PATH | tr ':' '\n' | grep -v '/usr/bin' | tr '\n' ':')" cargo build --release --quiet @cd pxl8d && PATH="$$(echo $$PATH | tr ':' '\n' | grep -v '/usr/bin' | tr '\n' ':')" cargo build --release --quiet
@cp pxl8d/target/release/pxl8d$(EXE_EXT) $(SERVER) @cp pxl8d/target/release/pxl8d$(EXE_EXT) $(SERVER)
@ -317,7 +332,7 @@ else
@cd pxl8d && PATH="$$(echo $$PATH | tr ':' '\n' | grep -v '/usr/bin' | tr '\n' ':')" cargo build --quiet @cd pxl8d && PATH="$$(echo $$PATH | tr ':' '\n' | grep -v '/usr/bin' | tr '\n' ':')" cargo build --quiet
@cp pxl8d/target/debug/pxl8d$(EXE_EXT) $(SERVER) @cp pxl8d/target/debug/pxl8d$(EXE_EXT) $(SERVER)
endif endif
@echo "[INFO] Built pxl8d" $(INFO) "Built pxl8d"
# -- Client (C23) ------------------------------------------------------------- # -- Client (C23) -------------------------------------------------------------
@ -325,7 +340,7 @@ client: deps $(CLIENT)
$(CLIENT): $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB) $(CLIENT): $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB)
@mkdir -p $(BINDIR) @mkdir -p $(BINDIR)
@echo "[INFO] Linking pxl8" $(INFO) "Linking pxl8"
ifeq ($(PLATFORM),windows) ifeq ($(PLATFORM),windows)
@(echo EXPORTS && llvm-nm --defined-only $(ALL_OBJS) $(SHADER_OBJS) | grep ' T pxl8_\| T SDL' | awk '{print $$3}') > $(PXL8_DEF) @(echo EXPORTS && llvm-nm --defined-only $(ALL_OBJS) $(SHADER_OBJS) | grep ' T pxl8_\| T SDL' | awk '{print $$3}') > $(PXL8_DEF)
@MSYS_NO_PATHCONV=1 $(CC) $(LDFLAGS) $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB) $(LIBS) -Wl,/DEF:$(PXL8_DEF) -o $@ @MSYS_NO_PATHCONV=1 $(CC) $(LDFLAGS) $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB) $(LIBS) -Wl,/DEF:$(PXL8_DEF) -o $@
@ -333,31 +348,31 @@ ifeq ($(PLATFORM),windows)
else else
@$(CC) $(LDFLAGS) $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB) $(LIBS) -o $@ @$(CC) $(LDFLAGS) $(ALL_OBJS) $(SHADER_OBJS) $(LUAJIT_LIB) $(LIBS) -o $@
endif endif
@echo "[INFO] Built pxl8 -> $@" $(INFO) "Built pxl8 -> $@"
# -- Compile rules ------------------------------------------------------------ # -- Compile rules ------------------------------------------------------------
# Lib sources (dep flags, no warnings) # Lib sources (dep flags, no warnings)
$(OBJDIR)/linenoise.o: $(LINENOISE_DIR)/linenoise.c | $(OBJDIR) $(OBJDIR)/linenoise.o: $(LINENOISE_DIR)/linenoise.c | $(OBJDIR)
@echo "[CC] $<" $(CC_) "$<"
@$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@ @$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@
$(OBJDIR)/stringbuf.o: $(LINENOISE_DIR)/stringbuf.c | $(OBJDIR) $(OBJDIR)/stringbuf.o: $(LINENOISE_DIR)/stringbuf.c | $(OBJDIR)
@echo "[CC] $<" $(CC_) "$<"
@$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@ @$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@
$(OBJDIR)/utf8.o: $(LINENOISE_DIR)/utf8.c | $(OBJDIR) $(OBJDIR)/utf8.o: $(LINENOISE_DIR)/utf8.c | $(OBJDIR)
@echo "[CC] $<" $(CC_) "$<"
@$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@ @$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@
$(OBJDIR)/miniz.o: lib/miniz/miniz.c | $(OBJDIR) $(OBJDIR)/miniz.o: lib/miniz/miniz.c | $(OBJDIR)
@echo "[CC] $<" $(CC_) "$<"
@$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@ @$(CC) -c $(DEP_CFLAGS) $(INCLUDES) $< -o $@
# Pattern rules for pxl8 sources by directory # Pattern rules for pxl8 sources by directory
define PXL8_COMPILE_RULE define PXL8_COMPILE_RULE
$(OBJDIR)/%.o: $(1)/%.c | $(OBJDIR) $(OBJDIR)/%.o: $(1)/%.c | $(OBJDIR)
@echo "[CC] $$<" @printf '$(CYAN)[%s CC]$(NC) %s\n' "$$$$(date +%H:%M:%S)" "$$<"
@$$(CC) -c $$(CFLAGS) $$(INCLUDES) $$< -o $$@ @$$(CC) -c $$(CFLAGS) $$(INCLUDES) $$< -o $$@
endef endef
@ -369,7 +384,7 @@ $(OBJDIR)/pxl8_script.o: $(LUA_SRCS)
# Shader objects # Shader objects
$(SHADERDIR)/obj/%.o: src/gfx/shaders/cpu/%.c | $(SHADERDIR)/obj $(SHADERDIR)/obj/%.o: src/gfx/shaders/cpu/%.c | $(SHADERDIR)/obj
@echo "[SHADER] $<" $(SHD_) "$<"
@$(CC) -c -O2 $(SHADER_INCLUDES) $< -o $@ @$(CC) -c -O2 $(SHADER_INCLUDES) $< -o $@
# -- Directory creation ------------------------------------------------------- # -- Directory creation -------------------------------------------------------
@ -414,7 +429,7 @@ install:
@mkdir -p $(HOME)/.local/bin @mkdir -p $(HOME)/.local/bin
@cp bin/release/pxl8$(EXE_EXT) $(HOME)/.local/bin/pxl8$(EXE_EXT) @cp bin/release/pxl8$(EXE_EXT) $(HOME)/.local/bin/pxl8$(EXE_EXT)
@chmod +x $(HOME)/.local/bin/pxl8$(EXE_EXT) @chmod +x $(HOME)/.local/bin/pxl8$(EXE_EXT)
@echo "[INFO] Installed pxl8 to $(HOME)/.local/bin/pxl8$(EXE_EXT)" $(INFO) "Installed pxl8 to $(HOME)/.local/bin/pxl8$(EXE_EXT)"
# -- Aseprite tools ----------------------------------------------------------- # -- Aseprite tools -----------------------------------------------------------
@ -424,8 +439,8 @@ ase:
# -- Profile (Linux) ---------------------------------------------------------- # -- Profile (Linux) ----------------------------------------------------------
profile: client profile: client
@if [ "$$(uname)" != "Linux" ]; then echo "[ERROR] Profiling requires Linux + perf"; exit 1; fi @if [ "$$(uname)" != "Linux" ]; then printf '$(RED)[ERROR]$(NC) %s\n' "Profiling requires Linux + perf"; exit 1; fi
@if ! command -v perf >/dev/null 2>&1; then echo "[ERROR] perf not found"; exit 1; fi @if ! command -v perf >/dev/null 2>&1; then printf '$(RED)[ERROR]$(NC) %s\n' "perf not found"; exit 1; fi
@if [ ! -d lib/FlameGraph ]; then \ @if [ ! -d lib/FlameGraph ]; then \
echo "[INFO] Fetching FlameGraph"; \ echo "[INFO] Fetching FlameGraph"; \
git clone --quiet https://github.com/brendangregg/FlameGraph.git lib/FlameGraph; \ git clone --quiet https://github.com/brendangregg/FlameGraph.git lib/FlameGraph; \
@ -482,7 +497,7 @@ help:
# -- compile_commands.json ---------------------------------------------------- # -- compile_commands.json ----------------------------------------------------
compile_commands.json: $(LIB_SRCS) $(PXL8_SRCS) compile_commands.json: $(LIB_SRCS) $(PXL8_SRCS)
@echo "[INFO] Generating compile_commands.json" $(INFO) "Generating compile_commands.json"
@echo '[' > $@.tmp @echo '[' > $@.tmp
@first=true; \ @first=true; \
for f in $(LIB_SRCS); do \ for f in $(LIB_SRCS); do \

View file

@ -6,7 +6,7 @@
make # Build pxl8 system make # Build pxl8 system
make install # Install pxl8 binary to ~/.local/bin make install # Install pxl8 binary to ~/.local/bin
make run # Run pxl8 demo make run # Run pxl8 demo
make run CART="game.cart --repl" # Run a specific game with a REPL make run CART="game.cart --repl" # Run a specific game with a REPL
``` ```
### Requirements ### Requirements