-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
50 lines (39 loc) · 1.39 KB
/
Makefile
File metadata and controls
50 lines (39 loc) · 1.39 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
PROJECT_SOURCE_DIR := $(PWD)
PROJECT_BUILD_DIR := /tmp/rvstd/build
CMAKE_BUILD_TYPE := Release
all: configure build test
set-project-dir:
$(eval PROJECT_SOURCE_DIR := $(patsubst %/,%, $(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
configure: set-project-dir
cmake \
-S $(PROJECT_SOURCE_DIR) \
-B $(PROJECT_BUILD_DIR) \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-DENABLE_TESTS=ON
ln -sf $(PROJECT_BUILD_DIR)/compile_commands.json $(PROJECT_SOURCE_DIR)/compile_commands.json
build: configure
cmake --build $(PROJECT_BUILD_DIR)
purge:
rm -rf $(PROJECT_BUILD_DIR)
$(MAKE) configure
test: build
ctest --test-dir $(PROJECT_BUILD_DIR) --output-on-failure
install: build
cmake --install $(PROJECT_BUILD_DIR)
local_install: build
cmake --install $(PROJECT_BUILD_DIR) --prefix ~/.local
benchmark: configure build
$(PROJECT_BUILD_DIR)/tests/rvstd_benchmarks
coverage:
cmake \
-S $(PROJECT_SOURCE_DIR) \
-B $(PROJECT_BUILD_DIR) \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_BUILD_TYPE=COVERAGE \
-DBUILD_TESTING=ON
ln -sf $(PROJECT_BUILD_DIR)/compile_commands.json $(PROJECT_SOURCE_DIR)/compile_commands.json
cmake --build $(PROJECT_BUILD_DIR)
ctest --test-dir $(PROJECT_BUILD_DIR)
gcovr $(PROJECT_BUILD_DIR) -r $(WORKSPACE) -e $(PROJECT_SOURCE_DIR)/tests --print-summary
.PHONY: all configure build test benchmark coverage install local_install purge