2010-01-30 23:30:40 +01:00
|
|
|
# The default target of this Makefile is...
|
|
|
|
all::
|
2022-06-28 12:15:55 +02:00
|
|
|
.PHONY: all
|
2010-01-30 23:30:40 +01:00
|
|
|
|
2022-06-28 12:15:58 +02:00
|
|
|
MAK_DIR_GITWEB =
|
|
|
|
|
2010-01-30 23:30:40 +01:00
|
|
|
# Define V=1 to have a more verbose compile.
|
|
|
|
#
|
|
|
|
# Define JSMIN to point to JavaScript minifier that functions as
|
2010-05-28 08:25:49 +02:00
|
|
|
# a filter to have static/gitweb.js minified.
|
2010-01-30 23:30:40 +01:00
|
|
|
#
|
2010-04-03 02:35:05 +02:00
|
|
|
# Define CSSMIN to point to a CSS minifier in order to generate a minified
|
2010-05-28 08:25:49 +02:00
|
|
|
# version of static/gitweb.css
|
2010-04-03 02:35:05 +02:00
|
|
|
#
|
2010-01-30 23:30:40 +01:00
|
|
|
|
|
|
|
prefix ?= $(HOME)
|
|
|
|
bindir ?= $(prefix)/bin
|
2010-05-01 22:36:15 +02:00
|
|
|
gitwebdir ?= /var/www/cgi-bin
|
|
|
|
|
2010-01-30 23:30:40 +01:00
|
|
|
RM ?= rm -f
|
2010-05-01 22:36:15 +02:00
|
|
|
INSTALL ?= install
|
2010-01-30 23:30:40 +01:00
|
|
|
|
|
|
|
# default configuration for gitweb
|
|
|
|
GITWEB_CONFIG = gitweb_config.perl
|
|
|
|
GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
|
2011-07-25 00:29:18 +02:00
|
|
|
GITWEB_CONFIG_COMMON = /etc/gitweb-common.conf
|
2010-01-30 23:30:40 +01:00
|
|
|
GITWEB_HOME_LINK_STR = projects
|
|
|
|
GITWEB_SITENAME =
|
|
|
|
GITWEB_PROJECTROOT = /pub/git
|
|
|
|
GITWEB_PROJECT_MAXDEPTH = 2007
|
|
|
|
GITWEB_EXPORT_OK =
|
|
|
|
GITWEB_STRICT_EXPORT =
|
|
|
|
GITWEB_BASE_URL =
|
|
|
|
GITWEB_LIST =
|
|
|
|
GITWEB_HOMETEXT = indextext.html
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_CSS_IN = static/gitweb.css
|
|
|
|
GITWEB_CSS = $(GITWEB_CSS_IN)
|
2010-05-28 08:25:49 +02:00
|
|
|
GITWEB_LOGO = static/git-logo.png
|
|
|
|
GITWEB_FAVICON = static/git-favicon.png
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_JS_IN = static/gitweb.js
|
|
|
|
GITWEB_JS = $(GITWEB_JS_IN)
|
2011-10-21 09:09:29 +02:00
|
|
|
GITWEB_SITE_HTML_HEAD_STRING =
|
2010-01-30 23:30:40 +01:00
|
|
|
GITWEB_SITE_HEADER =
|
|
|
|
GITWEB_SITE_FOOTER =
|
2010-09-21 09:25:19 +02:00
|
|
|
HIGHLIGHT_BIN = highlight
|
2010-01-30 23:30:40 +01:00
|
|
|
|
|
|
|
# include user config
|
|
|
|
-include ../config.mak.autogen
|
|
|
|
-include ../config.mak
|
2010-09-26 15:02:24 +02:00
|
|
|
-include config.mak
|
2010-01-30 23:30:40 +01:00
|
|
|
|
|
|
|
# determine version
|
2022-06-28 12:15:55 +02:00
|
|
|
.PHONY: .FORCE-GIT-VERSION-FILE
|
2010-01-30 23:30:40 +01:00
|
|
|
../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
|
|
|
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
|
|
|
|
gitweb/Makefile: conditionally include ../GIT-VERSION-FILE
The 'clean' target is still noticeably slow on cygwin, despite the
improvements made by previous patches. For example, the second
invocation of 'make clean' below:
$ make clean >/dev/null 2>&1
$ make clean
...
make[1]: Entering directory '/home/ramsay/git/gitweb'
make[2]: Entering directory '/home/ramsay/git'
make[2]: 'GIT-VERSION-FILE' is up to date.
make[2]: Leaving directory '/home/ramsay/git'
...
$
has been timed at 10.361s on my laptop (an old core i5-4200M @ 2.50GHz,
8GB RAM, 1TB HDD).
Notice that the 'clean' target is making a nested call to the parent
Makefile to ensure that the GIT-VERSION-FILE is up-to-date. This is to
ensure that the $(GIT_VERSION) make variable is set, once that file had
been included. However, the 'clean' target does not use the $(GIT_VERSION)
variable, directly or indirectly, so it does not have any affect on what
the target removes. Therefore, the time spent on ensuring an up to date
GIT-VERSION-FILE is wasted effort.
In order to eliminate such wasted effort, use the value of the internal
$(MAKECMDGOALS) variable to only '-include ../GIT-VERSION-FILE' when the
target is not 'clean'. (This drops the time down to 8.430s, on my laptop,
giving an improvement of 18.64%).
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-08 23:34:28 +01:00
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
2010-01-30 23:30:40 +01:00
|
|
|
-include ../GIT-VERSION-FILE
|
gitweb/Makefile: conditionally include ../GIT-VERSION-FILE
The 'clean' target is still noticeably slow on cygwin, despite the
improvements made by previous patches. For example, the second
invocation of 'make clean' below:
$ make clean >/dev/null 2>&1
$ make clean
...
make[1]: Entering directory '/home/ramsay/git/gitweb'
make[2]: Entering directory '/home/ramsay/git'
make[2]: 'GIT-VERSION-FILE' is up to date.
make[2]: Leaving directory '/home/ramsay/git'
...
$
has been timed at 10.361s on my laptop (an old core i5-4200M @ 2.50GHz,
8GB RAM, 1TB HDD).
Notice that the 'clean' target is making a nested call to the parent
Makefile to ensure that the GIT-VERSION-FILE is up-to-date. This is to
ensure that the $(GIT_VERSION) make variable is set, once that file had
been included. However, the 'clean' target does not use the $(GIT_VERSION)
variable, directly or indirectly, so it does not have any affect on what
the target removes. Therefore, the time spent on ensuring an up to date
GIT-VERSION-FILE is wasted effort.
In order to eliminate such wasted effort, use the value of the internal
$(MAKECMDGOALS) variable to only '-include ../GIT-VERSION-FILE' when the
target is not 'clean'. (This drops the time down to 8.430s, on my laptop,
giving an improvement of 18.64%).
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-08 23:34:28 +01:00
|
|
|
endif
|
2010-01-30 23:30:40 +01:00
|
|
|
|
2022-06-28 12:15:56 +02:00
|
|
|
# What targets we'll add to 'all' for "make gitweb"
|
|
|
|
GITWEB_ALL =
|
|
|
|
GITWEB_ALL += gitweb.cgi
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_ALL += $(GITWEB_JS)
|
2022-06-28 12:15:56 +02:00
|
|
|
|
2010-01-30 23:30:40 +01:00
|
|
|
### Build rules
|
|
|
|
|
|
|
|
SHELL_PATH ?= $(SHELL)
|
|
|
|
PERL_PATH ?= /usr/bin/perl
|
|
|
|
|
|
|
|
# Shell quote;
|
2010-05-01 22:36:15 +02:00
|
|
|
bindir_SQ = $(subst ','\'',$(bindir))#'
|
|
|
|
gitwebdir_SQ = $(subst ','\'',$(gitwebdir))#'
|
2010-05-28 08:25:49 +02:00
|
|
|
gitwebstaticdir_SQ = $(subst ','\'',$(gitwebdir)/static)#'
|
2010-05-01 22:36:15 +02:00
|
|
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))#'
|
|
|
|
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))#'
|
|
|
|
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))#'
|
2010-01-30 23:30:40 +01:00
|
|
|
|
|
|
|
# Quiet generation (unless V=1)
|
|
|
|
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
|
|
|
QUIET_SUBDIR1 =
|
|
|
|
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
|
|
|
PRINT_DIR = --no-print-directory
|
|
|
|
else # "make -w"
|
|
|
|
NO_SUBDIR = :
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
|
|
|
ifndef V
|
|
|
|
QUIET = @
|
|
|
|
QUIET_GEN = $(QUIET)echo ' ' GEN $@;
|
|
|
|
QUIET_SUBDIR0 = +@subdir=
|
|
|
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
|
|
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
|
|
|
export V
|
|
|
|
export QUIET
|
|
|
|
export QUIET_GEN
|
|
|
|
export QUIET_SUBDIR0
|
|
|
|
export QUIET_SUBDIR1
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2022-06-28 12:15:56 +02:00
|
|
|
all:: $(GITWEB_ALL)
|
2010-01-30 23:30:40 +01:00
|
|
|
|
2010-05-01 22:36:15 +02:00
|
|
|
GITWEB_PROGRAMS = gitweb.cgi
|
|
|
|
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_JS_MIN = static/gitweb.min.js
|
2010-01-30 23:30:40 +01:00
|
|
|
ifdef JSMIN
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_JS = $(GITWEB_JS_MIN)
|
2022-06-28 12:15:58 +02:00
|
|
|
all:: $(MAK_DIR_GITWEB)$(GITWEB_JS_MIN)
|
|
|
|
$(MAK_DIR_GITWEB)$(GITWEB_JS_MIN): $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS
|
|
|
|
$(MAK_DIR_GITWEB)$(GITWEB_JS_MIN): $(MAK_DIR_GITWEB)$(GITWEB_JS_IN)
|
2010-04-15 14:57:18 +02:00
|
|
|
$(QUIET_GEN)$(JSMIN) <$< >$@
|
2010-04-03 02:35:05 +02:00
|
|
|
endif
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_FILES += $(GITWEB_JS)
|
2010-04-15 14:57:18 +02:00
|
|
|
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_CSS_MIN = static/gitweb.min.css
|
2010-04-03 02:35:05 +02:00
|
|
|
ifdef CSSMIN
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_CSS = $(GITWEB_CSS_MIN)
|
2022-06-28 12:15:58 +02:00
|
|
|
all:: $(MAK_DIR_GITWEB)$(GITWEB_CSS_MIN)
|
|
|
|
$(MAK_DIR_GITWEB)$(GITWEB_CSS_MIN): $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS
|
|
|
|
$(MAK_DIR_GITWEB)$(GITWEB_CSS_MIN): $(MAK_DIR_GITWEB)$(GITWEB_CSS_IN)
|
2010-06-18 23:01:25 +02:00
|
|
|
$(QUIET_GEN)$(CSSMIN) <$< >$@
|
2010-04-03 02:35:05 +02:00
|
|
|
endif
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_FILES += $(GITWEB_CSS)
|
2010-01-30 23:30:40 +01:00
|
|
|
|
2010-05-28 08:25:49 +02:00
|
|
|
GITWEB_FILES += static/git-logo.png static/git-favicon.png
|
2010-05-01 22:36:15 +02:00
|
|
|
|
2011-04-28 21:04:01 +02:00
|
|
|
# JavaScript files that are composed (concatenated) to form gitweb.js
|
|
|
|
#
|
|
|
|
# js/lib/common-lib.js should be always first, then js/lib/*.js,
|
|
|
|
# then the rest of files; js/gitweb.js should be last (if it exists)
|
2022-06-28 12:15:57 +02:00
|
|
|
GITWEB_JSLIB_FILES =
|
2011-04-28 21:04:01 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/lib/common-lib.js
|
2011-04-28 21:04:04 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/lib/datetime.js
|
2011-04-28 21:04:05 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/lib/cookies.js
|
2011-04-28 21:04:01 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/javascript-detection.js
|
gitweb: JavaScript ability to adjust time based on timezone
This patch is based on Kevin Cernekee's <cernekee@gmail.com>
patch series entitled "gitweb: introduce localtime feature". While
Kevin's patch changed the server side output so that the timezone
was output from gitweb itself, this has a number of drawbacks, in
particular with respect to gitweb-caching.
This patch takes the same basic goal, display the appropriate times in
a given common timezone, and implements it in JavaScript. This
requires adding / using a new class, "datetime", to be able to find
elements to be adjusted from JavaScript. Appropriate dates are
wrapped in a span with this class.
Timezone to be used can be retrieved from "gitweb_tz" cookie, though
currently there is no way to set / manipulate this cookie from gitweb;
this is left for later commit.
Valid timezones, currently, are: "utc", "local" (which means that
timezone is taken from browser), and "+/-ZZZZ" numeric timezone as in
RFC-2822. Default timezone is "local" (currently not configurable,
left for later commit).
Fallback (should JavaScript not be enabled) is to treat dates as they
have been and display them, only, in UTC.
Pages affected:
* 'summary' view, "last change" field (commit time from latest change)
* 'log' view, author time
* 'commit' and 'commitdiff' views, author/committer time
* 'tag' view, tagger time
Based-on-code-from: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: John 'Warthog9' Hawley <warthog9@eaglescrag.net>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-04-28 21:04:09 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/adjust-timezone.js
|
2011-04-28 21:04:01 +02:00
|
|
|
GITWEB_JSLIB_FILES += static/js/blame_incremental.js
|
|
|
|
|
|
|
|
|
2010-04-15 14:57:18 +02:00
|
|
|
GITWEB_REPLACE = \
|
|
|
|
-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
|
|
|
|
-e 's|++GIT_BINDIR++|$(bindir)|g' \
|
|
|
|
-e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
|
|
|
|
-e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
|
2011-07-25 00:29:18 +02:00
|
|
|
-e 's|++GITWEB_CONFIG_COMMON++|$(GITWEB_CONFIG_COMMON)|g' \
|
2010-04-15 14:57:18 +02:00
|
|
|
-e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
|
|
|
|
-e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
|
|
|
|
-e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
|
|
|
|
-e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
|
|
|
|
-e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
|
|
|
|
-e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
|
|
|
|
-e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
|
|
|
|
-e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
|
|
|
|
-e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
|
|
|
|
-e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
|
|
|
|
-e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
|
|
|
|
-e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
|
|
|
|
-e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
|
2011-10-21 09:09:29 +02:00
|
|
|
-e 's|++GITWEB_SITE_HTML_HEAD_STRING++|$(GITWEB_SITE_HTML_HEAD_STRING)|g' \
|
2010-04-15 14:57:18 +02:00
|
|
|
-e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
|
2010-09-21 09:25:19 +02:00
|
|
|
-e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g' \
|
|
|
|
-e 's|++HIGHLIGHT_BIN++|$(HIGHLIGHT_BIN)|g'
|
2010-04-15 14:57:18 +02:00
|
|
|
|
2022-06-28 12:15:55 +02:00
|
|
|
.PHONY: FORCE
|
2022-06-28 12:15:58 +02:00
|
|
|
$(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS: FORCE
|
2010-04-15 14:57:18 +02:00
|
|
|
@rm -f $@+
|
|
|
|
@echo "x" '$(PERL_PATH_SQ)' $(GITWEB_REPLACE) "$(JSMIN)|$(CSSMIN)" >$@+
|
|
|
|
@cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@
|
|
|
|
|
2022-06-28 12:15:58 +02:00
|
|
|
$(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS
|
|
|
|
$(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)gitweb.perl
|
2010-01-30 23:30:40 +01:00
|
|
|
$(QUIET_GEN)$(RM) $@ $@+ && \
|
|
|
|
sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
|
2010-04-15 14:57:18 +02:00
|
|
|
$(GITWEB_REPLACE) $< >$@+ && \
|
2010-01-30 23:30:40 +01:00
|
|
|
chmod +x $@+ && \
|
|
|
|
mv $@+ $@
|
|
|
|
|
2022-06-28 12:15:58 +02:00
|
|
|
$(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES))
|
2011-04-28 21:04:01 +02:00
|
|
|
$(QUIET_GEN)$(RM) $@ $@+ && \
|
|
|
|
cat $^ >$@+ && \
|
|
|
|
mv $@+ $@
|
|
|
|
|
2010-05-01 22:36:15 +02:00
|
|
|
### Installation rules
|
|
|
|
|
2022-06-28 12:15:55 +02:00
|
|
|
.PHONY: install
|
2010-05-01 22:36:15 +02:00
|
|
|
install: all
|
|
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)'
|
2022-06-28 12:15:58 +02:00
|
|
|
$(INSTALL) -m 755 $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_PROGRAMS)) \
|
|
|
|
'$(DESTDIR_SQ)$(gitwebdir_SQ)'
|
2010-05-28 08:25:49 +02:00
|
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
|
2022-06-28 12:15:58 +02:00
|
|
|
$(INSTALL) -m 644 $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_FILES)) \
|
|
|
|
'$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
|
2010-05-01 22:36:15 +02:00
|
|
|
|
|
|
|
### Cleaning rules
|
|
|
|
|
2022-06-28 12:15:55 +02:00
|
|
|
.PHONY: clean
|
2010-01-30 23:30:40 +01:00
|
|
|
clean:
|
2022-06-28 12:15:58 +02:00
|
|
|
$(RM) $(addprefix $(MAK_DIR_GITWEB),gitweb.cgi $(GITWEB_JS_IN) \
|
2022-06-28 12:15:57 +02:00
|
|
|
$(GITWEB_JS_MIN) $(GITWEB_CSS_MIN) \
|
2022-06-28 12:15:58 +02:00
|
|
|
GITWEB-BUILD-OPTIONS)
|