-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
103 lines (88 loc) · 2.45 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
BINARY = git-mirrorer
CFLAGS = -Wall -Wextra
LDFLAGS = -lxxhash -lgit2 -lyaml
STRIP ?= strip
ifdef DEBUGGING
CFLAGS += -O1 -DDEBUGGING -g -fsanitize=address
else
CFLAGS += -O3
endif
ifndef VERSION
VERSION=$(shell ./scripts/version.sh)
endif
ifdef BUILD_DEPS
LDFLAGS += -Llib
else
LDFLAGS +=
endif
all: ${BINARY}
XXHASH_VER = 0.8.2
XXHASH_DIR = deps/xxhash-${XXHASH_VER}
XXHASH_LIB = libxxhash.so.${XXHASH_VER}
XXHASH_LNK = lib/libxxhash.so
XXHASH_SRC = lib/${XXHASH_LIB}
XXHASH_BLD = ${XXHASH_DIR}/${XXHASH_LIB}
${XXHASH_BLD}: | prepare_deps
make -C ${XXHASH_DIR} DISPATCH=1 ${XXHASH_LIB}
${XXHASH_SRC}: ${XXHASH_BLD} | mkdirs
install -m 755 $< $@
${XXHASH_LNK}: ${XXHASH_SRC} | mkdirs
ln -s ${XXHASH_LIB} lib/libxxhash.so.0
ln -s ${XXHASH_LIB} $@
YAML_DIR = deps/yaml-0.2.5
YAML_LIB = libyaml-0.so.2.0.9
YAML_LNK = lib/libyaml.so
YAML_SRC = lib/${YAML_LIB}
YAML_BLD = ${YAML_DIR}/src/.libs/${YAML_LIB}
${YAML_BLD}: | prepare_deps
cd ${YAML_DIR} && \
./configure --prefix=/usr
make -C ${YAML_DIR}
${YAML_SRC}: ${YAML_BLD} | mkdirs
install -m 755 $< $@
${YAML_LNK}: ${YAML_SRC} | mkdirs
ln -s ${YAML_LIB} lib/libyaml-0.so.2
ln -s ${YAML_LIB} $@
GIT2_DIR = deps/libgit2-1.7.1
GIT2_LIB = libgit2.so.1.7.0
GIT2_LNK = lib/libgit2.so
GIT2_SRC = lib/${GIT2_LIB}
GIT2_BLD = ${GIT2_DIR}-build/${GIT2_LIB}
${GIT2_BLD}: | prepare_deps
cmake -S ${GIT2_DIR} \
-B ${GIT2_DIR}-build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DREGEX_BACKEND=pcre2 \
-DUSE_HTTP_PARSER=system \
-DUSE_SSH=ON \
-Wno-dev
cmake --build ${GIT2_DIR}-build --verbose
${GIT2_SRC}: ${GIT2_BLD} | mkdirs
install -m 755 $< $@
${GIT2_LNK}: ${GIT2_SRC}
ln -s ${GIT2_LIB} lib/libgit2.so.1.7
ln -s ${GIT2_LIB} $@
DEP_LNKS = ${XXHASH_LNK} ${YAML_LNK} ${GIT2_LNK}
mkdirs:
mkdir -p lib
prepare_deps:
./scripts/prepare_deps.sh
ifdef BUILD_DEPS
CFLAGS += -I${GIT2_DIR}/include -I${XXHASH_DIR} -I${YAML_DIR}/include
${BINARY}: ${BINARY}.c ${DEP_LNKS}
else
${BINARY}: ${BINARY}.c
endif
${CC} -o $@ -DVERSION=\"${VERSION}\" ${CFLAGS} ${LDFLAGS} $^
ifndef DEBUGGING
$(STRIP) $@
endif
install:
install -DTm755 ${BINARY} ${DESTDIR}/usr/bin/${BINARY}
install -DTm644 systemd/${BINARY}.service ${DESTDIR}/usr/lib/systemd/system/${BINARY}.service
install -DTm644 systemd/${BINARY}.timer ${DESTDIR}/usr/lib/systemd/system/${BINARY}.timer
install -DTm644 systemd/${BINARY}.sysusers ${DESTDIR}/usr/lib/sysusers.d/${BINARY}.conf
.PHONY: clean all prepare_deps mkdirs install
clean:
rm -f ${BINARY}