forked from OpenChannelSSD/liblightnvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
146 lines (116 loc) · 3.29 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
BUILD_TYPE?=Release
BUILD_DIR?=build
INSTALL_PREFIX?=/usr/local
NVM_LIBRARY_SHARED?=ON
NVM_TESTS?=OFF
NVM_CLI?=ON
#
# Traditional build commands / make interface
#
default: make
.PHONY: debug
debug:
$(eval BUILD_TYPE := Debug)
.PHONY: cmake_check
cmake_check:
@cmake --version || (echo "\n** Please install 'cmake' **\n" && exit 1)
.PHONY: configure
configure: cmake_check
mkdir -p $(BUILD_DIR)
cd $(BUILD_DIR) && cmake \
-DNVM_LIBRARY_SHARED=$(NVM_LIBRARY_SHARED) \
-DTESTS=$(NVM_TESTS) \
-DCLI=$(NVM_CLI) \
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
-DCMAKE_INSTALL_PREFIX:PATH=$(INSTALL_PREFIX) \
-G "Unix Makefiles" ../
@echo "Modify build configuration in '$(BUILD_DIR)'"
.PHONY: make
make: configure
cd $(BUILD_DIR) && make
.PHONY: install
install:
cd $(BUILD_DIR) && make install
.PHONY: make-pkg
make-pkg: configure
cd $(BUILD_DIR) && make package
.PHONY: install-pkg
install-pkg:
sudo dpkg -i $(BUILD_DIR)/*.deb
.PHONY: uninstall-pkg
uninstall-pkg:
sudo apt-get --yes remove liblightnvm-* || true
.PHONY: clean
clean:
rm -fr $(BUILD_DIR) || true
rm -f tags || true
all: clean default install
.PHONY: dev_opts
dev_opts:
$(eval NVM_TESTS := ON)
$(eval NVM_CLI := ON)
$(eval NVM_LIBRARY_SHARED := ON)
# Uinstall packages, clean build, builds lib, cli, tests, pkg and installs
.PHONY: dev
dev: uninstall-pkg clean dev_opts make-pkg install-pkg
.PHONY: tags
tags:
ctags * -R .
cscope -b `find . -name '*.c'` `find . -name '*.h'`
#
# Experimental section
#
.PHONY: doxy
doxy:
@mkdir -p $(BUILD_DIR)/doc/doxy
doxygen doc/doxy.cfg
.PHONY: doxy-view
doxy-view:
xdg-open $(BUILD_DIR)/doc/doxy/html/index.html
.PHONY: sphinx
sphinx:
@mkdir -p $(BUILD_DIR)/doc/sphinx/html
@mkdir -p $(BUILD_DIR)/doc/sphinx/pdf
sphinx-build -b html -c doc -E doc/src $(BUILD_DIR)/doc/sphinx/html
.PHONY: sphinx-view
sphinx-view:
xdg-open $(BUILD_DIR)/doc/sphinx/html/index.html
.PHONY: doc-gen-capi
doc-gen-capi:
python doc/gen/capi.py doc/src/capi/ --header include/liblightnvm.h
.PHONY: doc-gen-misc
doc-gen-qs:
cd doc/src/quick_start && python ../../gen/cli.py ./
.PHONY: doc-gen-cli
doc-gen-cli:
python doc/gen/cli.py doc/src/cli/
.PHONY: doc-gen-tut
doc-gen-tut:
python doc/gen/cli.py doc/src/tutorial/
.PHONY: doc-gen-cmds
doc-gen-cmds: doc-gen-qs doc-gen-cli doc-gen-tut
.PHONY: doc
doc: doxy sphinx
.PHONY: doc-view-html
doc-view-html:
xdg-open $(BUILD_DIR)/doc/sphinx/html/index.html
.PHONY: doc-view-html-tutorial
doc-view-html-tutorial:
xdg-open $(BUILD_DIR)/doc/sphinx/html/tutorial/index.html
#.PHONY: doc-view-pdf
#doc-view-pdf:
# xdg-open $(BUILD_DIR)/doc/sphinx/pdf/liblightnvm.pdf
.PHONY: doc-publish
doc-publish:
rm -rf $(BUILD_DIR)/ghpages
mkdir -p $(BUILD_DIR)/ghpages
git clone -b gh-pages [email protected]:OpenChannelSSD/liblightnvm.git --single-branch $(BUILD_DIR)/ghpages
cd $(BUILD_DIR)/ghpages && git rm -rf --ignore-unmatch .
cp -r $(BUILD_DIR)/doc/sphinx/html/. $(BUILD_DIR)/ghpages/
touch $(BUILD_DIR)/ghpages/.nojekyll
cd $(BUILD_DIR)/ghpages && git config user.name "Mr. Robot"
cd $(BUILD_DIR)/ghpages && git config user.email "[email protected]"
cd $(BUILD_DIR)/ghpages && git add .
cd $(BUILD_DIR)/ghpages && git commit -m "Autogen docs for `git rev-parse --short HEAD`."
cd $(BUILD_DIR)/ghpages && git push origin --delete gh-pages
cd $(BUILD_DIR)/ghpages && git push origin gh-pages