-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
39 lines (28 loc) · 1.13 KB
/
Copy pathMakefile
File metadata and controls
39 lines (28 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CXX ?= g++
CPPFLAGS := -Iinclude
COMMON_FLAGS := -std=c++17 -Wall -Wextra -Wpedantic -Wconversion -Wshadow
RELEASE_FLAGS := -O2 -DNDEBUG
DEBUG_FLAGS := -O0 -g3
SANITIZER_FLAGS := -fsanitize=address,undefined -fno-omit-frame-pointer
BUILD_DIR := build
ENGINE := $(BUILD_DIR)/matching_engine
TEST_BIN := $(BUILD_DIR)/order_book_tests
SANITIZER_TEST_BIN := $(BUILD_DIR)/order_book_tests_sanitize
ENGINE_SOURCES := src/main.cpp src/OrderBook.cpp
TEST_SOURCES := tests/OrderBookTests.cpp src/OrderBook.cpp
.PHONY: all test sanitize clean
all: $(ENGINE)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(ENGINE): $(ENGINE_SOURCES) | $(BUILD_DIR)
$(CXX) $(CPPFLAGS) $(COMMON_FLAGS) $(RELEASE_FLAGS) $(ENGINE_SOURCES) -o $(ENGINE)
$(TEST_BIN): $(TEST_SOURCES) | $(BUILD_DIR)
$(CXX) $(CPPFLAGS) $(COMMON_FLAGS) $(DEBUG_FLAGS) $(TEST_SOURCES) -o $(TEST_BIN)
test: $(TEST_BIN)
./$(TEST_BIN)
$(SANITIZER_TEST_BIN): $(TEST_SOURCES) | $(BUILD_DIR)
$(CXX) $(CPPFLAGS) $(COMMON_FLAGS) $(DEBUG_FLAGS) $(SANITIZER_FLAGS) $(TEST_SOURCES) -o $(SANITIZER_TEST_BIN)
sanitize: $(SANITIZER_TEST_BIN)
ASAN_OPTIONS=detect_leaks=1 ./$(SANITIZER_TEST_BIN)
clean:
rm -rf $(BUILD_DIR)