1# a minimal build of third party libraries for static linking
2
3third_party_dir = $(CURDIR)/thirdparty
4src_dir = $(third_party_dir)/src
5
6glog: build ?= cmake-build
7build ?= build
8
9third_party_libs = capnproto glog gtest leveldb marisa opencc yaml-cpp
10
11.PHONY: all clean-src $(third_party_libs)
12
13all: $(third_party_libs)
14
15# note: this won't clean output files under include/, lib/ and bin/.
16clean-src:
17	rm -r $(src_dir)/capnproto/build || true
18	rm -r $(src_dir)/glog/cmake-build || true
19	rm -r $(src_dir)/googletest/build || true
20	rm -r $(src_dir)/leveldb/build || true
21	rm -r $(src_dir)/marisa-trie/build || true
22	rm -r $(src_dir)/opencc/build || true
23	rm -r $(src_dir)/yaml-cpp/build || true
24
25capnproto:
26	cd $(src_dir)/capnproto; \
27	cmake . -B$(build) \
28	-DBUILD_SHARED_LIBS:BOOL=OFF \
29	-DBUILD_TESTING:BOOL=OFF \
30	-DCMAKE_BUILD_TYPE:STRING="Release" \
31	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
32	&& cmake --build $(build) --target install
33
34glog:
35	cd $(src_dir)/glog; \
36	cmake . -B$(build) \
37	-DBUILD_TESTING:BOOL=OFF \
38	-DWITH_GFLAGS:BOOL=OFF \
39	-DCMAKE_BUILD_TYPE:STRING="Release" \
40	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
41	&& cmake --build $(build) --target install
42
43gtest:
44	cd $(src_dir)/googletest; \
45	cmake . -B$(build) \
46	-DBUILD_GMOCK:BOOL=OFF \
47	-DCMAKE_BUILD_TYPE:STRING="Release" \
48	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
49	&& cmake --build $(build) --target install
50
51leveldb:
52	cd $(src_dir)/leveldb; \
53	cmake . -B$(build) \
54	-DLEVELDB_BUILD_BENCHMARKS:BOOL=OFF \
55	-DLEVELDB_BUILD_TESTS:BOOL=OFF \
56	-DCMAKE_BUILD_TYPE:STRING="Release" \
57	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
58	&& cmake --build $(build) --target install
59
60marisa:
61	cd $(src_dir)/marisa-trie; \
62	cmake $(src_dir) -B$(build) \
63	-DCMAKE_BUILD_TYPE:STRING="Release" \
64	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
65	&& cmake --build $(build) --target install
66
67opencc:
68	cd $(src_dir)/opencc; \
69	cmake . -B$(build) \
70	-DBUILD_SHARED_LIBS:BOOL=OFF \
71	-DCMAKE_BUILD_TYPE:STRING="Release" \
72	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
73	&& cmake --build $(build) --target install
74
75yaml-cpp:
76	cd $(src_dir)/yaml-cpp; \
77	cmake . -B$(build) \
78	-DYAML_CPP_BUILD_CONTRIB:BOOL=OFF \
79	-DYAML_CPP_BUILD_TESTS:BOOL=OFF \
80	-DYAML_CPP_BUILD_TOOLS:BOOL=OFF \
81	-DCMAKE_BUILD_TYPE:STRING="Release" \
82	-DCMAKE_INSTALL_PREFIX:PATH="$(third_party_dir)" \
83	&& cmake --build $(build) --target install
84