gitweb: simplify gitweb.min.* generation and clean-up rules
GITWEB_CSS and GITWEB_JS are meant to be "what URI should the installed cgi script use to refer to the stylesheet and JavaScript", never "this is the name of the file we are building". Don't use them to decide what file to build minified versions in. While we are at it, lose FILES that is used only for "clean" target in a misguided way. "make clean" should try to remove all the potential build artifacts regardless of a minor configuration change. Instead of trying to remove only the build product "make clean" would have created if it were run without "clean", explicitly list the three potential build products for removal. Tested-by: Mark Rada <marada@uwaterloo.co> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano committed
Apr 15, 2010 at 08:57 UTC
8de096b6718048e84ee88e604a94b22937a0758e
1 file changed
+38
-37
gitweb/Makefile
+38
-37
@@ -80,54 +80,55 @@ endif
80
81
all:: gitweb.cgi
82
83
-FILES = gitweb.cgi
83
ifdef JSMIN
85
-FILES += gitweb.min.js
84
GITWEB_JS = gitweb.min.js
85
+all:: gitweb.min.js
86
+gitweb.min.js: gitweb.js GITWEB-BUILD-OPTIONS
87
+ $(QUIET_GEN)$(JSMIN) <$< >$@
88
endif
89
+
90
ifdef CSSMIN
89
-FILES += gitweb.min.css
91
GITWEB_CSS = gitweb.min.css
92
+all:: gitweb.min.css
93
+gitweb.min.css: gitweb.css GITWEB-BUILD-OPTIONS
94
+ $(QUIET_GEN)$(CSSMIN) <$ >$@
95
endif
92
-gitweb.cgi: gitweb.perl $(GITWEB_JS) $(GITWEB_CSS)
96
94
-gitweb.cgi:
97
+GITWEB_REPLACE = \
98
+ -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
99
+ -e 's|++GIT_BINDIR++|$(bindir)|g' \
100
+ -e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
101
+ -e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
102
+ -e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
103
+ -e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
104
+ -e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
105
+ -e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
106
+ -e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
107
+ -e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
108
+ -e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
109
+ -e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
110
+ -e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
111
+ -e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
112
+ -e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
113
+ -e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
114
+ -e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
115
+ -e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
116
+ -e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g'
117
+
118
+GITWEB-BUILD-OPTIONS: FORCE
119
+ @rm -f $@+
120
+ @echo "x" '$(PERL_PATH_SQ)' $(GITWEB_REPLACE) "$(JSMIN)|$(CSSMIN)" >$@+
121
+ @cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@
122
+
123
+gitweb.cgi: gitweb.perl GITWEB-BUILD-OPTIONS
124
$(QUIET_GEN)$(RM) $@ $@+ && \
125
sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
97
- -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
98
- -e 's|++GIT_BINDIR++|$(bindir)|g' \
99
- -e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
100
- -e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
101
- -e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
102
- -e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
103
- -e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
104
- -e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
105
- -e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
106
- -e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
107
- -e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
108
- -e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
109
- -e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
110
- -e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
111
- -e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
112
- -e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
113
- -e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
114
- -e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
115
- -e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g' \
116
- $< >$@+ && \
126
+ $(GITWEB_REPLACE) $< >$@+ && \
127
chmod +x $@+ && \
128
mv $@+ $@
129
120
-ifdef JSMIN
121
-gitweb.min.js: gitweb.js
122
- $(QUIET_GEN)$(JSMIN) <$< >$@
123
-endif # JSMIN
124
-
125
-ifdef CSSMIN
126
-gitweb.min.css: gitweb.css
127
- $(QUIET_GEN)$(CSSMIN) <$ >$@
128
-endif
129
-
130
clean:
131
- $(RM) $(FILES)
131
+ $(RM) gitweb.cgi gitweb.min.js gitweb.min.css GITWEB-BUILD-OPTIONS
132
+
133
+.PHONY: all clean .FORCE-GIT-VERSION-FILE FORCE
134
133
-.PHONY: all clean .FORCE-GIT-VERSION-FILE