Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
88 lines (66 loc) · 2.07 KB
/
Copy pathMakefile
File metadata and controls
88 lines (66 loc) · 2.07 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
# Compiler settings
CC = gcc
CXX = g++
CFLAGS = -Wall -Wextra -O2 -Werror
CXXFLAGS = -Wall -Wextra -O2 -Werror
# Paths
SRC_ROOT = .
LIB_DIR = $(SRC_ROOT)/stringqol
TEST_DIR = $(SRC_ROOT)/test_suite
BENCH_DIR = $(SRC_ROOT)/bench
INSTALL_DIR = /usr/local/include/stringqol
# Detect include dir: prefer local lib dir, fall back to install dir
ifeq ($(wildcard $(LIB_DIR)/stringqol.h),)
INC = -I$(INSTALL_DIR)
else
INC = -I$(LIB_DIR)
endif
.PHONY: all test bench install uninstall clean
all: test
test: $(TEST_DIR)/c_test $(TEST_DIR)/cpp_test
@echo "--- Running C tests ---"
@$(TEST_DIR)/c_test
@echo "--- Running C++ tests ---"
@$(TEST_DIR)/cpp_test
bench: $(BENCH_DIR)/bench_c $(BENCH_DIR)/bench_cpp
@$(BENCH_DIR)/bench_c
@$(BENCH_DIR)/bench_cpp
package:
@echo "--- Packaging StringQOL ---"
@echo "Running make clean"
@make clean > /dev/null
@echo "Removing $(TEST_DIR)"
@rm -rf $(TEST_DIR)
@echo "Removing $(BENCH_DIR)"
@rm -rf $(BENCH_DIR)
@echo "Removing .vscode"
@rm -rf .vscode
@echo "Removing bench.py"
@rm -f bench.py
@echo "Renaming $(LIB_DIR) to 'include'"
@mv $(LIB_DIR) include
@echo "Making directory: include/stringqol"
@mkdir -p include/stringqol
@echo "Moving all files in include/ to include/stringqol"
@mv include/*.h* include/stringqol
@echo "--- Packaging complete! ---"
$(TEST_DIR)/c_test: $(TEST_DIR)/c_test.c
$(CC) $(CFLAGS) $(INC) $< -o $@
$(TEST_DIR)/cpp_test: $(TEST_DIR)/cpp_test.cpp
$(CXX) $(CXXFLAGS) $(INC) $< -o $@
$(BENCH_DIR)/bench_c: $(BENCH_DIR)/bench_c.c
$(CC) $(CFLAGS) -O2 $(INC) $< -o $@
$(BENCH_DIR)/bench_cpp: $(BENCH_DIR)/bench_cpp.cpp
$(CXX) $(CXXFLAGS) -O2 $(INC) $< -o $@
install:
@echo "Installing stringqol to $(INSTALL_DIR)..."
@mkdir -p $(INSTALL_DIR)
@cp $(LIB_DIR)/* $(INSTALL_DIR)
@echo "Done."
uninstall:
@echo "Removing $(INSTALL_DIR)..."
@rm -rf $(INSTALL_DIR)
@echo "Done."
clean:
@rm -f $(TEST_DIR)/c_test $(TEST_DIR)/cpp_test $(TEST_DIR)/c_test.exe $(TEST_DIR)/cpp_test.exe
@rm -f $(BENCH_DIR)/bench_c $(BENCH_DIR)/bench_cpp $(TEST_DIR)/c_test.exe $(TEST_DIR)/cpp_test.exe