-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.new
More file actions
93 lines (73 loc) · 2.94 KB
/
Makefile.new
File metadata and controls
93 lines (73 loc) · 2.94 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -g -O2
CPPFLAGS = -I./include -I./third_party/googletest/googletest/include
PROJECT_ROOT = .
SRC_DIR = $(PROJECT_ROOT)/src/sql_parser
INCLUDE_DIR = $(PROJECT_ROOT)/include/sql_parser
TEST_DIR = $(PROJECT_ROOT)/tests
# Library sources
LIB_SRCS = $(SRC_DIR)/arena.cpp $(SRC_DIR)/parser.cpp
LIB_OBJS = $(LIB_SRCS:.cpp=.o)
LIB_TARGET = $(PROJECT_ROOT)/libsqlparser.a
# Google Test library
GTEST_DIR = $(PROJECT_ROOT)/third_party/googletest/googletest
GTEST_SRC = $(GTEST_DIR)/src/gtest-all.cc
GTEST_OBJ = $(GTEST_DIR)/src/gtest-all.o
GTEST_CPPFLAGS = -I$(GTEST_DIR)/include -I$(GTEST_DIR)
# Test sources
TEST_SRCS = $(TEST_DIR)/test_main.cpp \
$(TEST_DIR)/test_arena.cpp \
$(TEST_DIR)/test_tokenizer.cpp \
$(TEST_DIR)/test_classifier.cpp \
$(TEST_DIR)/test_expression.cpp \
$(TEST_DIR)/test_set.cpp \
$(TEST_DIR)/test_select.cpp \
$(TEST_DIR)/test_emitter.cpp \
$(TEST_DIR)/test_stmt_cache.cpp \
$(TEST_DIR)/test_insert.cpp \
$(TEST_DIR)/test_update.cpp \
$(TEST_DIR)/test_delete.cpp \
$(TEST_DIR)/test_compound.cpp \
$(TEST_DIR)/test_digest.cpp
TEST_OBJS = $(TEST_SRCS:.cpp=.o)
TEST_TARGET = $(PROJECT_ROOT)/run_tests
# Google Benchmark
GBENCH_DIR = $(PROJECT_ROOT)/third_party/benchmark
GBENCH_SRCS = $(filter-out $(GBENCH_DIR)/src/benchmark_main.cc, $(wildcard $(GBENCH_DIR)/src/*.cc))
GBENCH_OBJS = $(GBENCH_SRCS:.cc=.o)
GBENCH_CPPFLAGS = -I$(GBENCH_DIR)/include -I$(GBENCH_DIR)/src -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK
BENCH_DIR = $(PROJECT_ROOT)/bench
BENCH_SRCS = $(BENCH_DIR)/bench_main.cpp $(BENCH_DIR)/bench_parser.cpp
BENCH_OBJS = $(BENCH_SRCS:.cpp=.o)
BENCH_TARGET = $(PROJECT_ROOT)/run_bench
.PHONY: all lib test bench clean
all: lib test
lib: $(LIB_TARGET)
$(LIB_TARGET): $(LIB_OBJS)
ar rcs $@ $^
@echo "Built $@"
$(SRC_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
# Google Test object
$(GTEST_OBJ): $(GTEST_SRC)
$(CXX) $(CXXFLAGS) $(GTEST_CPPFLAGS) -c $< -o $@
# Test objects
$(TEST_DIR)/%.o: $(TEST_DIR)/%.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(GTEST_CPPFLAGS) -c $< -o $@
test: $(TEST_TARGET)
./$(TEST_TARGET)
$(TEST_TARGET): $(TEST_OBJS) $(GTEST_OBJ) $(LIB_TARGET)
$(CXX) $(CXXFLAGS) -o $@ $(TEST_OBJS) $(GTEST_OBJ) -L$(PROJECT_ROOT) -lsqlparser -lpthread
# Benchmark objects
$(GBENCH_DIR)/src/%.o: $(GBENCH_DIR)/src/%.cc
$(CXX) $(CXXFLAGS) $(GBENCH_CPPFLAGS) -c $< -o $@
$(BENCH_DIR)/%.o: $(BENCH_DIR)/%.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(GBENCH_CPPFLAGS) -c $< -o $@
bench: $(BENCH_TARGET)
./$(BENCH_TARGET) --benchmark_format=console
$(BENCH_TARGET): $(BENCH_OBJS) $(GBENCH_OBJS) $(LIB_TARGET)
$(CXX) $(CXXFLAGS) -o $@ $(BENCH_OBJS) $(GBENCH_OBJS) -L$(PROJECT_ROOT) -lsqlparser -lpthread
clean:
rm -f $(LIB_OBJS) $(LIB_TARGET) $(TEST_OBJS) $(GTEST_OBJ) $(TEST_TARGET)
rm -f $(BENCH_OBJS) $(GBENCH_OBJS) $(BENCH_TARGET)
@echo "Cleaned."