summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorTazyFoundSoup <gardendistrict0x0@outlook.com>2026-05-22 09:43:59 +1000
committerTazyFoundSoup <gardendistrict0x0@outlook.com>2026-05-22 09:43:59 +1000
commit77aa9a3259ddfd6c64534d63424d5b0fa3010900 (patch)
tree3744ec77c3cbe164457d1e421fd4bf7dceff4c02 /Makefile
parent4d42b317f4970bd08f9b81fcc184fc015736ff58 (diff)
refactor: move benches to include directory
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile46
1 files changed, 30 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index ec46d90..f976e39 100644
--- a/Makefile
+++ b/Makefile
@@ -2,17 +2,18 @@ CC ?= gcc
AR ?= ar
OUTDIR = build
-BENCH_OUT = $(OUTDIR)/bench
LIB = libtinyff.a
-ALL_CFLAGS = -Wall -Wextra -Werror -std=c11 -Iinclude --coverage
+ALL_CFLAGS = -Wall -Wextra -Werror -std=c11 -Iinclude
DEBUG_FLAGS = -g -O0 -fno-omit-frame-pointer
RELEASE_FLAGS = -O2
SANFLAGS = -fsanitize=address,undefined -g -O1
+COVERAGE_FLAGS = -fprofile-instr-generate -fcoverage-mapping
+COVERAGE_LDFLAGS = -fprofile-instr-generate -fcoverage-mapping
+
SRC = $(shell find src -name "*.c")
-BENCH_SRC = $(shell find bench/src -name "*.c")
ifeq ($(USE_HOSTED),1)
ALL_CFLAGS += -DUSE_HOSTED -Iinclude/bridges
@@ -20,8 +21,7 @@ SRC += $(shell find src/bridges -name "*.c")
endif
ifeq ($(USE_BENCH),1)
-ALL_CFLAGS += -DUSE_BENCH -Ibench
-SRC += $(shell find bench/src -name "*.c")
+ALL_CFLAGS += -DUSE_BENCH
endif
OBJ = $(patsubst %.c,$(OUTDIR)/%.o,$(SRC))
@@ -37,7 +37,7 @@ $(OUTDIR)/%.o: %.c
$(CC) $(ALL_CFLAGS) $(CFLAGS) -c $< -o $@
clean:
- rm -rf $(OUTDIR) png_test coverage coverage.info .coverage
+ rm -rf $(OUTDIR) coverage coverage.info png_test bench_png
debug: CFLAGS = $(DEBUG_FLAGS)
debug: $(OUTDIR)/$(LIB)
@@ -51,26 +51,40 @@ asan: clean $(OUTDIR)/$(LIB)
test-png: clean
$(MAKE) USE_HOSTED=1 debug
- $(CC) $(ALL_CFLAGS) $(DEBUG_FLAGS) -DUSE_HOSTED tests/format/image/png/png_open.c -o $(OUTDIR)/png_test -L$(OUTDIR) -ltinyff && ./$(OUTDIR)/png_test
+ $(CC) $(ALL_CFLAGS) $(DEBUG_FLAGS) \
+ -DUSE_HOSTED \
+ tests/format/image/png/png_open.c \
+ -o $(OUTDIR)/png_test \
+ -L$(OUTDIR) -ltinyff
+ ./$(OUTDIR)/png_test
test: test-png
gdb: debug
gdb -x debug/.gdbinit $(OUTDIR)/$(TEST)
-bench: $(OUTDIR)/$(LIB)
- mkdir -p $(BENCH_OUT)
- $(CC) $(ALL_CFLAGS) $(RELEASE_FLAGS) $(BENCH_SRC) -o $(BENCH_OUT)/bench -L$(OUTDIR) -ltinyff
- $(BENCH_OUT)/bench
+bench: clean
+ $(MAKE) USE_HOSTED=1 USE_BENCH=1 release
+ $(CC) $(ALL_CFLAGS) $(RELEASE_FLAGS) \
+ -DUSE_HOSTED -DUSE_BENCH \
+ bench/src/format/image/png.c \
+ -o $(OUTDIR)/bench_png \
+ -L$(OUTDIR) -ltinyff
+ ./$(OUTDIR)/bench_png
coverage: clean
- $(MAKE) USE_HOSTED=1 debug
- $(CC) $(ALL_CFLAGS) $(DEBUG_FLAGS) -DUSE_HOSTED tests/format/image/png/png_open.c -o $(OUTDIR)/png_test -L$(OUTDIR) -ltinyff
+ $(MAKE) USE_HOSTED=1 CFLAGS="$(COVERAGE_FLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" debug
+
+ $(CC) $(ALL_CFLAGS) $(DEBUG_FLAGS) $(COVERAGE_FLAGS) \
+ -DUSE_HOSTED \
+ tests/format/image/png/png_open.c \
+ -o $(OUTDIR)/png_test \
+ -L$(OUTDIR) -ltinyff $(COVERAGE_LDFLAGS)
+
./$(OUTDIR)/png_test || true
+
lcov --capture --directory . --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info --ignore-errors unused
genhtml coverage.info --output-directory coverage
- lcov --list coverage.info
- @echo ""
- @echo "HTML report generated at coverage/index.html"
+
.PHONY: all clean debug release asan test test-png gdb bench coverage \ No newline at end of file