2 CGIT_SCRIPT_NAME
= cgit.cgi
3 CGIT_SCRIPT_PATH
= /var
/www
/htdocs
/cgit
4 CGIT_DATA_PATH
= $(CGIT_SCRIPT_PATH
)
5 CGIT_CONFIG
= /etc
/cgitrc
6 CACHE_ROOT
= /var
/cache
/cgit
9 filterdir
= $(libdir)/cgit
/filters
10 docdir
= $(prefix)/share
/doc
/cgit
13 mandir = $(prefix)/share
/man
14 SHA1_HEADER
= <openssl
/sha.h
>
16 GIT_URL
= https
://github.com
/git
/git
/archive
/v
$(GIT_VER
).
tar.gz
18 MAN5_TXT
= $(wildcard *.5.txt
)
20 DOC_MAN5
= $(patsubst %.txt
,%,$(MAN5_TXT
))
21 DOC_HTML
= $(patsubst %.txt
,%.html
,$(MAN_TXT
))
22 DOC_PDF
= $(patsubst %.txt
,%.pdf
,$(MAN_TXT
))
24 # Define NO_STRCASESTR if you don't have strcasestr.
26 # Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1
27 # implementation (slower).
29 # Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin).
31 # Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)
32 # do not support the 'size specifiers' introduced by C99, namely ll, hh,
33 # j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).
34 # some C compilers supported these specifiers prior to C99 as an extension.
40 # Platform specific tweaks
43 uname_S
:= $(shell sh
-c
'uname -s 2>/dev/null || echo not')
44 uname_O
:= $(shell sh
-c
'uname -o 2>/dev/null || echo not')
45 uname_R
:= $(shell sh
-c
'uname -r 2>/dev/null || echo not')
47 ifeq ($(uname_O
),Cygwin
)
48 NO_STRCASESTR
= YesPlease
49 NEEDS_LIBICONV
= YesPlease
52 ifeq ($(uname_S
),$(filter $(uname_S
),FreeBSD OpenBSD
))
53 # Apparantly libiconv is installed in /usr/local on BSD
54 LDFLAGS ?
= -L
/usr
/local
/lib
55 CFLAGS ?
= -I
/usr
/local
/include
60 # Let the user override the above settings.
65 # Define a way to invoke make in subdirs quietly, shamelessly ripped
68 QUIET_SUBDIR0
= +$(MAKE
) -C
# space to separate -C and subdir
71 ifneq ($(findstring $(MAKEFLAGS
),w
),w
)
72 PRINT_DIR
= --no-print-directory
78 QUIET_CC
= @echo
' ' CC
$@
;
79 QUIET_MM
= @echo
' ' MM
$@
;
80 QUIET_SUBDIR0
= +@subdir
=
81 QUIET_SUBDIR1
= ;$(NO_SUBDIR
) echo
' ' SUBDIR
$$subdir; \
82 $(MAKE
) $(PRINT_DIR
) -C
$$subdir
83 QUIET_TAGS
= @echo
' ' TAGS
$@
;
87 # Define a pattern rule for automatic dependency building
90 $(QUIET_MM
)$(CC
) $(CFLAGS
) -MM
-MP
$< | sed
-e
's/\($*\)\.o:/\1.o $@:/g' >$@
93 # Define a pattern rule for silent object building
96 $(QUIET_CC
)$(CC
) -o
$*.o
-c
$(CFLAGS
) $<
99 EXTLIBS
= git
/libgit.a git
/xdiff
/lib.a
-lz
-lpthread
104 OBJECTS
+= configfile.o
107 OBJECTS
+= scan-tree.o
111 OBJECTS
+= ui-clone.o
112 OBJECTS
+= ui-commit.o
115 OBJECTS
+= ui-patch.o
116 OBJECTS
+= ui-plain.o
118 OBJECTS
+= ui-repolist.o
119 OBJECTS
+= ui-shared.o
120 OBJECTS
+= ui-snapshot.o
121 OBJECTS
+= ui-ssdiff.o
122 OBJECTS
+= ui-stats.o
123 OBJECTS
+= ui-summary.o
133 .PHONY
: all libgit
test install uninstall clean force-version get-git \
134 doc clean-doc install-doc install-man install-html install-pdf \
135 uninstall-doc uninstall-man uninstall-html uninstall-pdf
tags
139 VERSION
: force-version
140 @.
/gen-version.sh
"$(CGIT_VERSION)"
144 CFLAGS
+= -g
-Wall
-Igit
145 CFLAGS
+= -DSHA1_HEADER
='$(SHA1_HEADER)'
146 CFLAGS
+= -DCGIT_VERSION
='"$(CGIT_VERSION)"'
147 CFLAGS
+= -DCGIT_CONFIG
='"$(CGIT_CONFIG)"'
148 CFLAGS
+= -DCGIT_SCRIPT_NAME
='"$(CGIT_SCRIPT_NAME)"'
149 CFLAGS
+= -DCGIT_CACHE_ROOT
='"$(CACHE_ROOT)"'
151 GIT_OPTIONS
= prefix=/usr
157 CFLAGS
+= -DNO_STRCASESTR
160 CFLAGS
+= -DNO_C99_FORMAT
163 CFLAGS
+= -DNO_OPENSSL
164 GIT_OPTIONS
+= NO_OPENSSL
=1
169 cgit
: $(OBJECTS
) libgit
170 $(QUIET_CC
)$(CC
) $(CFLAGS
) $(LDFLAGS
) -o cgit
$(OBJECTS
) $(EXTLIBS
)
174 ifneq "$(MAKECMDGOALS)" "clean"
175 -include $(OBJECTS
:.o
=.d
)
179 $(QUIET_SUBDIR0
)git
$(QUIET_SUBDIR1
) NO_CURL
=1 $(GIT_OPTIONS
) libgit.a
180 $(QUIET_SUBDIR0
)git
$(QUIET_SUBDIR1
) NO_CURL
=1 $(GIT_OPTIONS
) xdiff
/lib.a
183 $(QUIET_SUBDIR0
)tests
$(QUIET_SUBDIR1
) all
186 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(CGIT_SCRIPT_PATH
)
187 $(INSTALL
) -m
0755 cgit
$(DESTDIR
)$(CGIT_SCRIPT_PATH
)/$(CGIT_SCRIPT_NAME
)
188 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(CGIT_DATA_PATH
)
189 $(INSTALL
) -m
0644 cgit.css
$(DESTDIR
)$(CGIT_DATA_PATH
)/cgit.css
190 $(INSTALL
) -m
0644 cgit.png
$(DESTDIR
)$(CGIT_DATA_PATH
)/cgit.png
191 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(filterdir
)
192 $(INSTALL
) -m
0755 filters
/* $(DESTDIR
)$(filterdir
)
194 install-doc
: install-man install-html install-pdf
197 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(mandir)/man5
198 $(INSTALL
) -m
0644 $(DOC_MAN5
) $(DESTDIR
)$(mandir)/man5
200 install-html
: doc-html
201 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(htmldir
)
202 $(INSTALL
) -m
0644 $(DOC_HTML
) $(DESTDIR
)$(htmldir
)
205 $(INSTALL
) -m
0755 -d
$(DESTDIR
)$(pdfdir
)
206 $(INSTALL
) -m
0644 $(DOC_PDF
) $(DESTDIR
)$(pdfdir
)
209 rm -f
$(DESTDIR
)$(CGIT_SCRIPT_PATH
)/$(CGIT_SCRIPT_NAME
)
210 rm -f
$(DESTDIR
)$(CGIT_DATA_PATH
)/cgit.css
211 rm -f
$(DESTDIR
)$(CGIT_DATA_PATH
)/cgit.png
213 uninstall-doc
: uninstall-man uninstall-html uninstall-pdf
216 @for i in
$(DOC_MAN5
); do \
217 rm -fv
$(DESTDIR
)$(mandir)/man5
/$$i; \
221 @for i in
$(DOC_HTML
); do \
222 rm -fv
$(DESTDIR
)$(htmldir
)/$$i; \
226 @for i in
$(DOC_PDF
); do \
227 rm -fv
$(DESTDIR
)$(pdfdir
)/$$i; \
230 doc
: doc-man doc-html doc-pdf
232 doc-man5
: $(DOC_MAN5
)
233 doc-html
: $(DOC_HTML
)
239 $(DOC_HTML
): %.html
: %.txt
240 a2x
-f xhtml
--stylesheet
=cgit-doc.css
$<
242 $(DOC_PDF
): %.pdf
: %.txt
243 a2x
-f pdf cgitrc
.5.txt
246 rm -f cgit VERSION
*.o
*.d
tags
249 rm -f cgitrc
.5 cgitrc
.5.html cgitrc
.5.pdf cgitrc
.5.xml cgitrc
.5.fo
252 curl
-L
$(GIT_URL
) |
tar -xzf
- && rm -rf git
&& mv git-
$(GIT_VER
) git
255 $(QUIET_TAGS
)find .
-name
'*.[ch]' | xargs ctags