-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
84 lines (64 loc) · 2.04 KB
/
Makefile
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
# Copyright (C) 2023 Ethan Uppal. All rights reserved.
BUILD_DIR := build
LIB_TARGET := cevicp
MAIN_TARGET := main
TEST_TARGET := test_suite
BENCH_TARGET := bench_suite
N := 1
METHOD := vanilla
OPT := Debug
LIB_INSTALL := /usr/local/lib
HEADER_INSTALL := /usr/local/include
CMAKE_FLAGS := -DCMAKE_BUILD_TYPE=$(OPT) -DCMAKE_INSTALL_LIBDIR=$(LIB_INSTALL) -DCMAKE_INSTALL_INCLUDEDIR=$(HEADER_INSTALL) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
MAKE_FLAGS := -j $(shell nproc || sysctl -n hw.logicalcpu)
.PHONY: build_all
build_all: configure
cmake --build $(BUILD_DIR) -- $(MAKE_FLAGS)
.PHONY: configure
configure:
cmake -S . -B $(BUILD_DIR) $(CMAKE_FLAGS)
.PHONY: $(LIB_TARGET)
$(LIB_TARGET): configure
cmake --build $(BUILD_DIR) --target $(LIB_TARGET) -- $(MAKE_FLAGS)
.PHONY: $(MAIN_TARGET)
$(MAIN_TARGET): configure
cmake --build $(BUILD_DIR) --target $(MAIN_TARGET) -- $(MAKE_FLAGS)
.PHONY: $(TEST_TARGET)
$(TEST_TARGET): configure
cmake --build $(BUILD_DIR) --target $(TEST_TARGET) -- $(MAKE_FLAGS)
.PHONY: $(BENCH_TARGET)
$(BENCH_TARGET): configure
cmake --build $(BUILD_DIR) --target $(BENCH_TARGET) -- $(MAKE_FLAGS)
.PHONY: test
test: $(TEST_TARGET)
./$(BUILD_DIR)/$(TEST_TARGET)
.PHONY: view
view: $(MAIN_TARGET)
./$(BUILD_DIR)/$(MAIN_TARGET) -S ex_data/scan$(N)/first.csv -D ex_data/scan$(N)/second.csv --method $(METHOD)
.PHONY: bench
bench: $(BENCH_TARGET)
./$(BUILD_DIR)/$(BENCH_TARGET)
.PHONY: clean
clean: configure
cmake --build $(BUILD_DIR) --target clean
.PHONY: install
install: configure $(LIB_TARGET)
cmake --install $(BUILD_DIR)
.PHONY: uninstall
uninstall: configure
cmake --build $(BUILD_DIR) --target uninstall
INCLUDE_DIR := include
LIB_DIR := lib
VIS_DIR := vis
SCRIPT_DIR := script
RUN_SCRIPT := cd $(SCRIPT_DIR); uv venv; source .venv/bin/activate; uv sync; python3
.PHONY: docs
docs:
$(RUN_SCRIPT) icp_doc_builder.py ../$(LIB_DIR)/icp ../book/icp_descr/ ../book/main.md
doxygen
.PHONY: cloc
cloc:
cloc $(INCLUDE_DIR) $(LIB_DIR) $(VIS_DIR) --include-lang=c++,"c/c++ header" --by-file
.PHONY: math
math:
$(RUN_SCRIPT) icp_math.py