# 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)