diff options
| author | hachem <im@hachem.wtf> | 2026-09-04 05:46:36 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-04 05:46:36 +0200 |
| commit | d3a1b908fd3b0c47da2c33c16d18ebeb00da3b97 (patch) | |
| tree | 1e8861de97ebd0c580a0cfaa4c759cf3e5be8e3b /test/Makefile | |
| parent | 9023d106c61db0be0de6460a397bbad42bbc3d96 (diff) | |
refactor: reorganize tests
Diffstat (limited to 'test/Makefile')
| -rw-r--r-- | test/Makefile | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..d8401b5 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,77 @@ +# hsdbg test workspace +# +# Targets: +# hello a trivial program, for a first launch and single-stepping +# macro_demo layered #define macros, for the macro unwrapper +# trace_demo nested calls, for the flame-chart timeline +# sample_demo plain busywork, for the sampling profiler +# memory_demo allocation waves, for the resident-memory graph +# instr_demo -finstrument-functions + the trace runtime, auto-traced + +UNAME := $(shell uname) + +CC ?= clang +CXX ?= clang++ + +CFLAGS := -g -O0 -Wall -Wextra +CXXFLAGS := -g -O0 -Wall -Wextra -std=c++23 + +OBJ := .obj +TRACE_RUNTIME := ../ext/hsdbg_trace/hsdbg_trace.c + +TARGETS := hello macro_demo trace_demo sample_demo memory_demo instr_demo + +ifeq ($(UNAME),Darwin) + DSYMUTIL := dsymutil +else + DSYMUTIL := true +endif + +all: $(TARGETS) + +$(OBJ): + mkdir -p $(OBJ) + +$(OBJ)/%.o: %.cpp | $(OBJ) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +$(OBJ)/%.o: %.c | $(OBJ) + $(CC) $(CFLAGS) -c $< -o $@ + +hello: $(OBJ)/hello.o + $(CXX) $(CXXFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +macro_demo: $(OBJ)/macro_demo.o + $(CC) $(CFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +trace_demo: $(OBJ)/trace_demo.o + $(CXX) $(CXXFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +sample_demo: $(OBJ)/sample_demo.o + $(CXX) $(CXXFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +memory_demo: $(OBJ)/memory_demo.o + $(CXX) $(CXXFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +# instr_demo.c is compiled with -finstrument-functions so every function calls +# the enter/exit hooks; the trace runtime that records them is compiled WITHOUT +# the flag (instrumenting the hooks themselves would recurse forever) +$(OBJ)/instr_demo.o: instr_demo.c | $(OBJ) + $(CC) $(CFLAGS) -finstrument-functions -c $< -o $@ + +$(OBJ)/hsdbg_trace.o: $(TRACE_RUNTIME) | $(OBJ) + $(CC) $(CFLAGS) -c $< -o $@ + +instr_demo: $(OBJ)/instr_demo.o $(OBJ)/hsdbg_trace.o + $(CC) $(CFLAGS) $^ -o $@ + $(DSYMUTIL) $@ + +clean: + rm -rf $(TARGETS) *.dSYM $(OBJ) + +.PHONY: all clean |
