Files
turboquant/Makefile

54 lines
1.3 KiB
Makefile

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