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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
.DEFAULT_GOAL := all
.SUFFIXES:
.NOTPARALLEL:
SRCDIR = source
ASSETDIR = assets
EXTDIR = custom/extensions
GITDIR = vendor/git
BUILDDIR = build
CGIT_ROOT = ../..
GIT_VERSION = 2.56.0
GIT_SHA256 = 26c56c296b38c0695b26fa95f475f1d01704d2d38e73465ca30b0b2f5dc789d3
GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VERSION).tar.xz
GIT_TARBALL = git-$(GIT_VERSION).tar.xz
CGIT_VERSION = v2.9.2
CGIT_SCRIPT_NAME = cgit.cgi
CGIT_SCRIPT_PATH = /var/www/htdocs/cgit
CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH)
CGIT_CONFIG = /etc/cgitrc
CACHE_ROOT = /var/cache/cgit
prefix = /usr/local
libdir = $(prefix)/lib
filterdir = $(libdir)/cgit/filters
ASSETS = cgit.css
ASSETS += cgit.js
ASSETS += cgit.png
ASSETS += favicon.ico
ASSETS += robots.txt
FILTER_FILES = $(notdir $(wildcard $(EXTDIR)/*.lua))
INSTALL = install
-include $(GITDIR)/config.mak.uname
-include cgit.conf
export CGIT_VERSION CGIT_SCRIPT_NAME CGIT_SCRIPT_PATH
export CGIT_DATA_PATH CGIT_CONFIG CACHE_ROOT
.PHONY: all
all: cgit
GIT_BUILD_FLAGS = NO_CURL=1 NO_GETTEXT=1 NO_OPENSSL=1 NO_RUST=1 NO_TCLTK=1 prefix='$(prefix)'
export ZERO_AR_DATE = 1
.PHONY: cgit
cgit:
+@$(MAKE) -C $(GITDIR) -f $(CGIT_ROOT)/$(SRCDIR)/cgit.mk \
$(CGIT_ROOT)/$(BUILDDIR)/cgit $(EXTRA_GIT_TARGETS) $(GIT_BUILD_FLAGS)
.PHONY: cgit-nolua
cgit-nolua:
+@$(MAKE) -C $(GITDIR) -f $(CGIT_ROOT)/$(SRCDIR)/cgit.mk \
$(CGIT_ROOT)/$(BUILDDIR)/nolua/cgit NO_LUA=1 BUILDDIR=$(BUILDDIR)/nolua $(GIT_BUILD_FLAGS)
.PHONY: sparse
sparse:
+@$(MAKE) -C $(GITDIR) -f $(CGIT_ROOT)/$(SRCDIR)/cgit.mk $(GIT_BUILD_FLAGS) cgit-sparse
.PHONY: test
test: cgit-with-git
+@$(MAKE) cgit-nolua
+@$(MAKE) -C tests all
.PHONY: cgit-with-git
cgit-with-git:
+@$(MAKE) cgit EXTRA_GIT_TARGETS=all
.PHONY: install
install: all
$(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_SCRIPT_PATH)
$(INSTALL) -m 0755 $(BUILDDIR)/cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
$(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH)
$(INSTALL) -m 0644 $(addprefix $(ASSETDIR)/,$(ASSETS)) $(DESTDIR)$(CGIT_DATA_PATH)
$(INSTALL) -m 0755 -d $(DESTDIR)$(filterdir)
$(INSTALL) -m 0644 $(addprefix $(EXTDIR)/,$(FILTER_FILES)) $(DESTDIR)$(filterdir)
.PHONY: uninstall
uninstall:
$(RM) $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
$(RM) $(addprefix $(DESTDIR)$(CGIT_DATA_PATH)/,$(ASSETS))
$(RM) $(addprefix $(DESTDIR)$(filterdir)/,$(FILTER_FILES))
.PHONY: clean
clean:
$(RM) -r $(BUILDDIR)
@if test -e $(GITDIR)/config.mak.uname; then $(MAKE) -C tests clean; fi
.PHONY: cleanall
cleanall: clean
@if test -e $(GITDIR)/Makefile; then $(MAKE) -C $(GITDIR) clean; fi
.PHONY: get-git
get-git:
mkdir -p $(dir $(GITDIR))
curl -fL -o $(GIT_TARBALL) $(GIT_URL)
@if command -v sha256sum >/dev/null; then sum=sha256sum; else sum='shasum -a 256'; fi; \
echo '$(GIT_SHA256) $(GIT_TARBALL)' | $$sum -c - || { $(RM) $(GIT_TARBALL); exit 1; }
tar -xJf $(GIT_TARBALL) && rm -rf $(GITDIR) && mv git-$(GIT_VERSION) $(GITDIR)
$(RM) $(GIT_TARBALL)
.PHONY: tags
tags:
@mkdir -p $(BUILDDIR)
find $(SRCDIR) -name '*.[ch]' | xargs ctags -f $(BUILDDIR)/tags
|