diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..1207cc80 --- /dev/null +++ b/Makefile @@ -0,0 +1,53 @@ +# TurboQuant Build System +# Supports: normal, debug, sanitizer builds + +CC = g++ +CFLAGS = -Wall -Wextra -O2 -std=c++11 -std=c++11 +CFLAGS_DEBUG = -Wall -Wextra -O0 -g -std=c++11 -std=c++11 +CFLAGS_ASAN = -Wall -Wextra -O1 -g -std=c++11 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer +LDFLAGS = -lm +LDFLAGS_ASAN = -lm -fsanitize=address -fsanitize=undefined + +SRCS = llama-turbo.cpp +OBJS = $(SRCS:.cpp=.o) +TEST_SRC = tests/test_polar_quant.c +TEST_BIN = test_polar_quant + +.PHONY: all clean test test-asan test-ubsan + +all: $(TEST_BIN) + +# Normal build +$(TEST_BIN): $(TEST_SRC) $(SRCS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +# Debug build +debug: $(TEST_SRC) $(SRCS) + $(CC) $(CFLAGS_DEBUG) -o $(TEST_BIN)_debug $^ $(LDFLAGS) + +# AddressSanitizer build +asan: $(TEST_SRC) $(SRCS) + $(CC) $(CFLAGS_ASAN) -o $(TEST_BIN)_asan $^ $(LDFLAGS_ASAN) + +# UBSan only build +ubsan: $(TEST_SRC) $(SRCS) + $(CC) -Wall -Wextra -O1 -g -fsanitize=undefined -fno-omit-frame-pointer \ + -o $(TEST_BIN)_ubsan $^ $(LDFLAGS) + +# Run tests +test: $(TEST_BIN) + ./$(TEST_BIN) + +# Run tests with AddressSanitizer +test-asan: asan + ./$(TEST_BIN)_asan + +# Run tests with UBSan +test-ubsan: ubsan + ./$(TEST_BIN)_ubsan + +# Run all sanitizer tests +test-sanitizers: test-asan test-ubsan + +clean: + rm -f $(TEST_BIN) $(TEST_BIN)_debug $(TEST_BIN)_asan $(TEST_BIN)_ubsan $(OBJS)