Skip to content

Commit

Permalink
gitweb/Makefile: include in top-level Makefile
Browse files Browse the repository at this point in the history
Include the gitweb/Makefile in the top-level Makefile rather than
calling it as a sub-Makefile. As noted in the thread starting at at
[1] (in particular [2]) we'll pay a high cost on NOOP runs of "make"
just to figure out that we have nothing to do for "make gitweb".

The "gitweb" script also isn't maintained out-of-tree, unlike
"gitk-git" or "git-gui", which both have their own "Makefile". Other
parts of it are already integrated into our main Makefiles, e.g. the
documentation is built by Documentation/Makefile since
07ea4df (gitweb: Add gitweb(1) manpage for gitweb itself,
2011-10-16).

1. https://lore.kernel.org/git/20220525205651.825669-1-szeder.dev@gmail.com/
2. https://lore.kernel.org/git/220526.86k0a96sv2.gmgdl@evledraar.gmail.com/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
avar authored and gitster committed Jun 28, 2022
1 parent 27438ef commit affc3b7
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 85 deletions.
23 changes: 13 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -538,6 +538,7 @@ gitexecdir = libexec/git-core
mergetoolsdir = $(gitexecdir)/mergetools
sharedir = $(prefix)/share
gitwebdir = $(sharedir)/gitweb
gitwebstaticdir = $(gitwebdir)/static
perllibdir = $(sharedir)/perl5
localedir = $(sharedir)/locale
template_dir = share/git-core/templates
Expand All @@ -556,7 +557,7 @@ localedir_relative = $(patsubst $(prefix)/%,%,$(localedir))
htmldir_relative = $(patsubst $(prefix)/%,%,$(htmldir))
perllibdir_relative = $(patsubst $(prefix)/%,%,$(perllibdir))

export prefix bindir sharedir sysconfdir gitwebdir perllibdir localedir
export prefix bindir sharedir sysconfdir perllibdir localedir

# Set our default programs
CC = cc
Expand Down Expand Up @@ -2071,6 +2072,7 @@ htmldir_relative_SQ = $(subst ','\'',$(htmldir_relative))
prefix_SQ = $(subst ','\'',$(prefix))
perllibdir_relative_SQ = $(subst ','\'',$(perllibdir_relative))
gitwebdir_SQ = $(subst ','\'',$(gitwebdir))
gitwebstaticdir_SQ = $(subst ','\'',$(gitwebstaticdir))

SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
TEST_SHELL_PATH_SQ = $(subst ','\'',$(TEST_SHELL_PATH))
Expand Down Expand Up @@ -2399,10 +2401,6 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile
perllibdir:
@echo '$(perllibdir_SQ)'

.PHONY: gitweb
gitweb:
$(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) all

git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES
$(QUIET_GEN)$(cmd_munge_script) && \
chmod +x $@+ && \
Expand Down Expand Up @@ -3036,6 +3034,15 @@ coccicheck-pending: $(addsuffix .patch,$(wildcard contrib/coccinelle/*.pending.c

.PHONY: coccicheck coccicheck-pending

# "Sub"-Makefiles, not really because they can't be run stand-alone,
# only there to contain directory-specific rules and variables
## gitweb/Makefile inclusion:
MAK_DIR_GITWEB = gitweb/
include gitweb/Makefile

.PHONY: gitweb
gitweb: $(MAK_DIR_GITWEB_ALL)

### Installation rules

ifneq ($(filter /%,$(firstword $(template_dir))),)
Expand Down Expand Up @@ -3108,7 +3115,6 @@ ifndef NO_PERL
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perllibdir_SQ)'
(cd perl/build/lib && $(TAR) cf - .) | \
(cd '$(DESTDIR_SQ)$(perllibdir_SQ)' && umask 022 && $(TAR) xof -)
$(MAKE) -C gitweb install
endif
ifndef NO_TCLTK
$(MAKE) -C gitk-git install
Expand Down Expand Up @@ -3163,10 +3169,8 @@ endif
cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; } \
done

.PHONY: install-gitweb install-doc install-man install-man-perl install-html install-info install-pdf
.PHONY: install-doc install-man install-man-perl install-html install-info install-pdf
.PHONY: quick-install-doc quick-install-man quick-install-html
install-gitweb:
$(MAKE) -C gitweb install

install-doc: install-man-perl
$(MAKE) -C Documentation install
Expand Down Expand Up @@ -3310,7 +3314,6 @@ clean: profile-clean coverage-clean cocciclean
$(MAKE) -C Documentation/ clean
$(RM) Documentation/GIT-EXCLUDED-PROGRAMS
ifndef NO_PERL
$(MAKE) -C gitweb clean
$(RM) -r perl/build/
endif
$(MAKE) -C templates/ clean
Expand Down
91 changes: 16 additions & 75 deletions gitweb/Makefile
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
# The default target of this Makefile is...
all::
.PHONY: all

MAK_DIR_GITWEB =
ifndef MAK_DIR_GITWEB
$(error do not run gitweb/Makefile stand-alone anymore. The "gitweb" and \
"install-gitweb" targets now live in the top-level Makefile)
endif

# Define V=1 to have a more verbose compile.
#
# Define JSMIN to point to JavaScript minifier that functions as
# a filter to have static/gitweb.js minified.
#
# Define CSSMIN to point to a CSS minifier in order to generate a minified
# version of static/gitweb.css
#

prefix ?= $(HOME)
bindir ?= $(prefix)/bin
gitwebdir ?= /var/www/cgi-bin

RM ?= rm -f
INSTALL ?= install

# default configuration for gitweb
GITWEB_CONFIG = gitweb_config.perl
GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
Expand All @@ -44,71 +34,19 @@ GITWEB_SITE_HEADER =
GITWEB_SITE_FOOTER =
HIGHLIGHT_BIN = highlight

# include user config
-include ../config.mak.autogen
-include ../config.mak
-include config.mak

# determine version
.PHONY: .FORCE-GIT-VERSION-FILE
../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE

ifneq ($(MAKECMDGOALS),clean)
-include ../GIT-VERSION-FILE
endif

# What targets we'll add to 'all' for "make gitweb"
GITWEB_ALL =
GITWEB_ALL += gitweb.cgi
GITWEB_ALL += $(GITWEB_JS)

### Build rules

SHELL_PATH ?= $(SHELL)
PERL_PATH ?= /usr/bin/perl

# Shell quote;
bindir_SQ = $(subst ','\'',$(bindir))#'
gitwebdir_SQ = $(subst ','\'',$(gitwebdir))#'
gitwebstaticdir_SQ = $(subst ','\'',$(gitwebdir)/static)#'
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))#'
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))#'
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))#'

# 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

all:: $(GITWEB_ALL)
MAK_DIR_GITWEB_ALL = $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_ALL))

GITWEB_PROGRAMS = gitweb.cgi

GITWEB_JS_MIN = static/gitweb.min.js
ifdef JSMIN
GITWEB_JS = $(GITWEB_JS_MIN)
all:: $(MAK_DIR_GITWEB)$(GITWEB_JS_MIN)
GITWEB_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)
$(QUIET_GEN)$(JSMIN) <$< >$@
Expand All @@ -118,7 +56,7 @@ GITWEB_FILES += $(GITWEB_JS)
GITWEB_CSS_MIN = static/gitweb.min.css
ifdef CSSMIN
GITWEB_CSS = $(GITWEB_CSS_MIN)
all:: $(MAK_DIR_GITWEB)$(GITWEB_CSS_MIN)
GITWEB_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)
$(QUIET_GEN)$(CSSMIN) <$< >$@
Expand Down Expand Up @@ -185,19 +123,22 @@ $(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_

### Installation rules

.PHONY: install
install: all
.PHONY: install-gitweb
install-gitweb: $(MAK_DIR_GITWEB_ALL)
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)'
$(INSTALL) -m 755 $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_PROGRAMS)) \
'$(DESTDIR_SQ)$(gitwebdir_SQ)'
$(INSTALL) -m 755 $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_PROGRAMS)) '$(DESTDIR_SQ)$(gitwebdir_SQ)'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
$(INSTALL) -m 644 $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_FILES)) \
'$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
ifndef NO_PERL
install: install-gitweb
endif

### Cleaning rules

.PHONY: clean
clean:
.PHONY: gitweb-clean
gitweb-clean:
$(RM) $(addprefix $(MAK_DIR_GITWEB),gitweb.cgi $(GITWEB_JS_IN) \
$(GITWEB_JS_MIN) $(GITWEB_CSS_MIN) \
GITWEB-BUILD-OPTIONS)
clean: gitweb-clean

0 comments on commit affc3b7

Please sign in to comment.