Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit 04e95f6

Browse files
authored
Merge pull request #467 from amroamroamro/patch-makefile
Patch 1: makefile + fixes
2 parents 9c3730f + 574b462 commit 04e95f6

19 files changed

+419
-399
lines changed

.gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
*.tstamp
22
*~
3-
distrib/google-code-prettify
4-
distrib/prettify-small.tar
3+
/google-code-prettify/

Makefile

+105-109
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,116 @@
1-
SHELL := /bin/bash
1+
#!/usr/bin/make -f
2+
3+
# ============================================================================
4+
# google-code-prettify Makefile
5+
# ============================================================================
6+
#
7+
# Requirements:
8+
# - Make: runs this makefile
9+
# - Shell: runs various core utils as part of the build
10+
# (touch, mkdir, cp, rm, wc, grep, zip)
11+
# - Perl: runs js_include.pl script which combines/generates JS source files,
12+
# also to run some regex search-and-replace
13+
# - Java: runs Closure Compiler and YUI Compressor
14+
# - Node.js: runs lang-handler-aliases.js script which generates language
15+
# aliases from loader/lang-*.js extensions
16+
#
17+
# ============================================================================
218

3-
CLOSURE_COMPILER=java -jar tools/closure-compiler/compiler.jar \
4-
--warning_level VERBOSE \
5-
--language_in ECMASCRIPT5 \
6-
--compilation_level ADVANCED_OPTIMIZATIONS \
7-
--charset US-ASCII
819
# Don't specify --charset=UTF-8. If we do, then non-ascii codepoints
920
# that do not correspond to line terminators are converted
1021
# to UTF-8 sequences instead of being emitted as ASCII.
1122
# This makes the resulting JavaScript less portable.
23+
CLOSURE_COMPILER=java -jar tools/closure-compiler/compiler.jar \
24+
--warning_level VERBOSE \
25+
--language_in ECMASCRIPT5 \
26+
--compilation_level ADVANCED_OPTIMIZATIONS \
27+
--charset US-ASCII
1228

1329
YUI_COMPRESSOR=java -jar tools/yui-compressor/yuicompressor-2.4.8.jar \
14-
--charset UTF-8
15-
16-
TAR_ROOT=distrib/google-code-prettify
17-
18-
all: distrib loader
30+
--charset UTF-8
31+
32+
RE_TOKENS='s/\bPR\.PR_ATTRIB_NAME\b/"atn"/g; \
33+
s/\bPR\.PR_ATTRIB_VALUE\b/"atv"/g; \
34+
s/\bPR\.PR_COMMENT\b/"com"/g; \
35+
s/\bPR\.PR_DECLARATION\b/"dec"/g; \
36+
s/\bPR\.PR_KEYWORD\b/"kwd"/g; \
37+
s/\bPR\.PR_LITERAL\b/"lit"/g; \
38+
s/\bPR\.PR_PLAIN\b/"pln"/g; \
39+
s/\bPR\.PR_PUNCTUATION\b/"pun"/g; \
40+
s/\bPR\.PR_STRING\b/"str"/g; \
41+
s/\bPR\.PR_TAG\b/"tag"/g; \
42+
s/\bPR\.PR_TYPE\b/"typ"/g;'
43+
44+
# targets
45+
OUT_DIR := loader/ loader/skins/ distrib/
46+
JS_FILES := loader/prettify.js loader/run_prettify.js
47+
LANG_FILES := $(subst src/, loader/, $(wildcard src/lang-*.js))
48+
STYLE_FILES := $(subst src/, loader/, $(wildcard src/*.css))
49+
SKIN_FILES := $(subst styles/, loader/skins/, $(wildcard styles/*.css))
50+
TARGETS := $(JS_FILES) $(LANG_FILES) $(STYLE_FILES) $(SKIN_FILES)
51+
52+
.PHONY: all clean
53+
54+
all: $(TARGETS) lang-aliases.tstamp distrib/prettify-small.zip
1955

2056
clean:
21-
rm -rf distrib.tstamp distrib loader.tstamp src/prettify.js src/run_prettify.js
22-
23-
src/prettify.js: js-modules/*.js js-modules/*.pl
24-
@if [ -e "$@" ]; then chmod +w "$@"; fi
25-
@perl js-modules/js_include.pl "$$(basename $@)" > "$@"
26-
@if [ -e "$@" ]; then chmod -w "$@"; fi
27-
28-
src/run_prettify.js: js-modules/*.js js-modules/*.pl
29-
@if [ -e "$@" ]; then chmod +w "$@"; fi
30-
@perl js-modules/js_include.pl "$$(basename $@)" > "$@"
31-
@if [ -e "$@" ]; then chmod -w "$@"; fi
32-
33-
distrib: distrib.tstamp distrib/prettify-small.tgz distrib/prettify-small.zip distrib/prettify-small.tar.bz2
34-
@wc -c distrib/prettify-small.{tar.bz2,tgz,zip} \
35-
| grep -v total
36-
37-
distrib.tstamp: src/prettify.js src/run_prettify.js src/*.js src/*.css
38-
@echo Compiling
39-
@mkdir -p $(TAR_ROOT)
40-
@for f in src/*.css; do \
41-
$(YUI_COMPRESSOR) --type css $$f \
42-
> $(TAR_ROOT)/$$(basename $$f); \
43-
wc -c $$f $(TAR_ROOT)/$$(basename $$f) \
44-
| grep -v total; \
45-
done
46-
@$(CLOSURE_COMPILER) --js src/prettify.js \
47-
--externs tools/closure-compiler/amd-externs.js \
48-
--define IN_GLOBAL_SCOPE=true \
49-
--output_wrapper='!function(){%output%}()' \
50-
> $(TAR_ROOT)/prettify.js
51-
@wc -c src/prettify.js $(TAR_ROOT)/prettify.js \
52-
| grep -v total
53-
@$(CLOSURE_COMPILER) --js src/run_prettify.js \
54-
--externs tools/closure-compiler/amd-externs.js \
55-
--define IN_GLOBAL_SCOPE=false \
56-
--output_wrapper='!function(){%output%}()' \
57-
> $(TAR_ROOT)/run_prettify.js
58-
@wc -c src/run_prettify.js $(TAR_ROOT)/run_prettify.js \
59-
| grep -v total
60-
@for f in src/lang*.js; do \
61-
if [ $$f -nt $(TAR_ROOT)/$$(basename $$f) ]; then \
62-
$(CLOSURE_COMPILER) --js $$f --externs js-modules/externs.js \
63-
| perl -pe 's/\bPR\.PR_ATTRIB_NAME\b/"atn"/g; \
64-
s/\bPR\.PR_ATTRIB_VALUE\b/"atv"/g; \
65-
s/\bPR\.PR_COMMENT\b/"com"/g; \
66-
s/\bPR\.PR_DECLARATION\b/"dec"/g; \
67-
s/\bPR\.PR_KEYWORD\b/"kwd"/g; \
68-
s/\bPR\.PR_LITERAL\b/"lit"/g; \
69-
s/\bPR\.PR_PLAIN\b/"pln"/g; \
70-
s/\bPR\.PR_PUNCTUATION\b/"pun"/g; \
71-
s/\bPR\.PR_STRING\b/"str"/g; \
72-
s/\bPR\.PR_TAG\b/"tag"/g; \
73-
s/\bPR\.PR_TYPE\b/"typ"/g;' \
74-
> $(TAR_ROOT)/$$(basename $$f); \
75-
wc -c $$f $(TAR_ROOT)/$$(basename $$f) \
76-
| grep -v total; \
77-
fi \
78-
done
79-
@touch distrib.tstamp
80-
81-
lang-aliases : lang-aliases.tstamp
82-
lang-aliases.tstamp : distrib.tstamp
83-
tools/lang-handler-aliases.sh \
84-
distrib/google-code-prettify \
85-
| perl -ne 'system("cp $$1 $$2") if m/^(\S+) (\S+)$$/ && ! -e $$2' \
57+
rm -rf *.tstamp src/prettify.js src/run_prettify.js $(OUT_DIR)
58+
59+
# (order-only prerequisite to make sure output directories exist)
60+
$(TARGETS): | $(OUT_DIR)
61+
62+
$(OUT_DIR):
63+
mkdir -p $(OUT_DIR)
64+
65+
# JS_FILES
66+
src/prettify.js src/run_prettify.js: js-modules/*.js js-modules/*.pl
67+
@perl js-modules/js_include.pl $(notdir $@) > $@
68+
69+
# JS_FILES
70+
loader/prettify.js: src/prettify.js
71+
@$(CLOSURE_COMPILER) --js $< \
72+
--externs tools/closure-compiler/amd-externs.js \
73+
--define IN_GLOBAL_SCOPE=true \
74+
--output_wrapper='!function(){%output%}()' \
75+
--js_output_file $@
76+
@wc -c $< $@ | grep -v total
77+
78+
# JS_FILES
79+
loader/run_prettify.js: src/run_prettify.js
80+
@$(CLOSURE_COMPILER) --js $< \
81+
--externs tools/closure-compiler/amd-externs.js \
82+
--define IN_GLOBAL_SCOPE=false \
83+
--output_wrapper='!function(){%output%}()' \
84+
--js_output_file $@
85+
@wc -c $< $@ | grep -v total
86+
87+
# LANG_FILES
88+
loader/lang-%.js: src/lang-%.js
89+
@$(CLOSURE_COMPILER) --js $< \
90+
--externs js-modules/externs.js \
91+
| perl -pe $(RE_TOKENS) \
92+
> $@
93+
@wc -c $< $@ | grep -v total
94+
95+
# STYLE_FILES
96+
loader/%.css: src/%.css
97+
@$(YUI_COMPRESSOR) --type css $< > $@
98+
@wc -c $< $@ | grep -v total
99+
100+
# SKIN_FILES
101+
loader/skins/%.css: styles/%.css
102+
@$(YUI_COMPRESSOR) --type css $< > $@
103+
@wc -c $< $@ | grep -v total
104+
105+
# aliases
106+
lang-aliases.tstamp: $(LANG_FILES)
107+
@node tools/lang-handler-aliases.js \
86108
&& touch lang-aliases.tstamp
87109

88-
loader : loader.tstamp lang-aliases.tstamp styles/*.css
89-
90-
loader.tstamp : distrib.tstamp
91-
@cp distrib/google-code-prettify/*.{css,js} loader/ \
92-
&& for f in styles/*.css; do \
93-
$(YUI_COMPRESSOR) --type css $$f \
94-
> loader/skins/$$(basename $$f); \
95-
wc -c $$f loader/skins/$$(basename $$f) \
96-
| grep -v total; \
97-
done \
98-
&& touch loader.tstamp
99-
100-
%.tgz: %.tar
101-
@gzip -c -9 $^ > $@
102-
103-
%.tar.bz2: %.tar
104-
@bzip2 -k -9f $^
105-
106-
distrib/prettify-small.tar: distrib.tstamp
107-
tar cf $@ -C distrib google-code-prettify
108-
109-
distrib/prettify-small.zip: distrib.tstamp
110-
@pushd distrib >& /dev/null; \
111-
rm -f ../$@; \
112-
zip -q -9 -r ../$@ google-code-prettify; \
113-
popd >& /dev/null
114-
115-
distrib/prettify.tar: distrib.tstamp
116-
mkdir -p distrib/sources/google-code-prettify
117-
cp -fr CHANGES.html COPYING README.html Makefile \
118-
examples js-modules src styles tests tools \
119-
distrib/sources/google-code-prettify
120-
tar cf distrib/prettify.tar -C distrib/sources google-code-prettify
110+
# zip file
111+
distrib/prettify-small.zip: $(TARGETS)
112+
@rm -f $@ \
113+
&& cp -R loader google-code-prettify \
114+
&& zip -q -9 -r $@ google-code-prettify \
115+
&& rm -rf google-code-prettify
116+
@wc -c $@ | grep -v total

0 commit comments

Comments
 (0)