diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-08-13 19:06:26 -0600 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2015-08-13 21:35:50 -0600 |
commit | 2ae195bc2f4c0738e1a222bb1f7fd104450cdc1d (patch) | |
tree | 3c1c3c7528e7808ebb5aa9ae5a4bd89b7d6aa94a /Makefile | |
parent | 004317994057a974e36dab450f388005386bf209 (diff) | |
parent | 43a5e11be51d2d73806d4a914327ead4ab3960cd (diff) |
Merge branch 'archweb-generic'
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 102 |
1 files changed, 68 insertions, 34 deletions
@@ -1,12 +1,7 @@ # Where are we? -topdir := $(dir $(lastword $(MAKEFILE_LIST))) -www = $(topdir)/../web-cache/www -artwork = $(topdir)/../web-cache/artwork -branding = $(artwork)/official-2013/optimized-text - - -# Where is the the Javascript minimizer? -JSMIN = { sed -n '1,/\*\//p' $1; closure-compiler --js $1; } > $2 +dl-cache = ../download-cache +www = $(dl-cache)/www +bin = $(dl-cache)/bin # What versions of 3rd party libraries are we using? jquery-ver=1.8.3 @@ -16,7 +11,19 @@ d3-ver=3.0.6 konami-ver=c0f686e647765860ff4d2fcb7b48122785432b75 # What files do we make? -javascripts = \ +branding-images = \ + sitestatic/favicon.ico sitestatic/silhouette.png \ + sitestatic/archnavbar/archlogo.png \ + sitestatic/logos/apple-touch-icon-114x114.png \ + sitestatic/logos/apple-touch-icon-144x144.png \ + sitestatic/logos/apple-touch-icon-57x57.png \ + sitestatic/logos/apple-touch-icon-72x72.png \ + sitestatic/logos/icon-transparent-64x64.png +targets = \ + $(branding-images) \ + sitestatic/.gitignore visualize/.gitignore \ + sitestatic/rss.png \ + sitestatic/rss@2x.png \ sitestatic/bootstrap-typeahead.js \ sitestatic/homepage.js \ sitestatic/jquery-$(jquery-ver).min.js \ @@ -25,51 +32,78 @@ javascripts = \ sitestatic/konami.min.js \ visualize/static/d3-$(d3-ver).js \ visualize/static/d3-$(d3-ver).min.js -images += sitestatic/favicon.ico sitestatic/silhouette.png -images += sitestatic/archnavbar/archlogo.png -images += \ - sitestatic/logos/apple-touch-icon-114x114.png \ - sitestatic/logos/apple-touch-icon-144x144.png \ - sitestatic/logos/apple-touch-icon-57x57.png \ - sitestatic/logos/apple-touch-icon-72x72.png \ - sitestatic/logos/icon-transparent-64x64.png -javascript_basenames = $(sort $(patsubst %.min,%,$(patsubst %.js,%,$(javascripts)))) -targets = $(foreach i,$(javascript_basenames),$i.js $i.min.js) $(images) +js-basenames = $(sort $(patsubst %.min,%,$(patsubst %.js,%,$(filter %.js,$(targets))))) +generated = $(sort $(targets) $(foreach f,$(js-basenames),$f.js $f.min.js)) + +generated := $(generated) +targets := $(generated) # The base rules -all: $(targets) sitestatic/.gitignore visualize/.gitignore -clean: sitestatic/.gitignore visualize/.gitignore - rm -f -- $(targets) -.PHONY: all clean +all: $(targets) +.PHONY: all + +clean: + rm -f -- $(generated) +.PHONY: clean %/.gitignore: $(MAKEFILE_LIST) - printf -- '%s\n' $(patsubst $*%,%,$(filter $*/%,$(targets))) | LC_COLLATE=C sort > $@ + printf -- '%s\n' $(patsubst $*%,%,$(filter $*/%,$(generated))) | LC_COLLATE=C sort > $@ + +# Make directories +$(dl-cache) $(bin): + mkdir -p '$@' + +# Don't have non-minimized .js stick around unless we asked for them. +.INTERMEDIATE: $(filter-out $(targets),$(generated)) # Turn on sane error handling .DELETE_ON_ERROR: +.PHONY: FORCE + # How to download files + mangle = $(subst %,^25,$(subst :,^3A,$(subst =,^3D,$(subst ^,^5E,$1)))) +unmangle = $(subst ^5E,^,$(subst ^3D,=,$(subst ^3A,:,$(subst ^25,%,$1)))) + $(www)/http/%: mkdir -p '$(@D)' - wget 'http://$*' -O '$@' - touch '$@' + wget 'http://$(call unmangle,$*)' -O '$@' + test -f '$@' && touch '$@' $(www)/https/%: mkdir -p '$(@D)' - wget 'https://$*' -O '$@' - touch '$@' + wget 'https://$(call unmangle,$*)' -O '$@' + test -f '$@' && touch '$@' -$(branding)/%: - gitget checkout 'git://projects.parabola.nu/artwork.git#branch=master' '$(artwork)' - make -C '$(branding)' +$(www)/git/%: FORCE + mkdir -p '$(@D)' + gitget checkout 'git://$(call unmangle,$*)' '$@' || { rm -rf -- '$@'; false; } + test -d '$@' || { rm -rf -- '$@'; false; } -# Non-minimized files +# Downloaded images + +$(dl-cache)/unzip/Feedicons_v.2/%: $(www)/https/web.archive.org/web/20120514074507/http^3A//www.zeusboxstudio.com/file_download/1/Feedicons_v.2.zip + mkdir -p '$(@D)' + bsdtar xfO $< 'Feedicons v.2/$*' > '$@' +sitestatic/rss.png: $(dl-cache)/unzip/Feedicons_v.2/RSS_16.png + cp $< $@ +sitestatic/rss@2x.png: $(dl-cache)/unzip/Feedicons_v.2/RSS_32.png + pngcrush $< $@ + +$(dl-cache)/unzip/parabola-artwork: $(www)/git/projects.parabola.nu/artwork.git\#branch=official/2013 + cp -rT '$<' '$@' + make -C '$@' +$(dl-cache)/unzip/parabola-artwork/%: $(dl-cache)/unzip/parabola-artwork + test -e $@ && touch $@ +$(foreach i,$(branding-images),$(eval $i: $$(dl-cache)/unzip/parabola-artwork/$(notdir $i); install -Dm644 $$< $$@)) + +# Non-minimized .js files sitestatic/bootstrap-typeahead.js: sitestatic/%: $(www)/https/raw.github.com/twitter/bootstrap/v$(bootstrap-ver)/js/% Makefile.d/%.patch cp $< $@ patch -i Makefile.d/$*.patch $@ @@ -94,10 +128,10 @@ sitestatic/homepage.js: sitestatic/bootstrap-typeahead.min.js sitestatic/konami. visualize/static/d3-$(d3-ver).js: %: $(www)/https/raw.github.com/mbostock/d3/v$(d3-ver)/d3.js cp $< $@ -$(foreach i,$(images),$(eval $i: $$(branding)/$(notdir $i); install -Dm644 $$< $$@)) - # The minimization processes +JSMIN = { sed -n '1,/\*\//p' $1; closure-compiler --js $1; } > $2 + %.min.js: %.js $(call JSMIN,$<,$@) |