X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=make%2Fwebsite.make;h=6a4eee7496ad10e4a6058d7804224ff72dd9d34b;hb=HEAD;hp=36fd7a55a57f7a2910cc09653979d00ad4e81339;hpb=4615135bf10e1a78b3658162575c46aca2f73a38;p=lilypond.git diff --git a/make/website.make b/make/website.make index 36fd7a55a5..6a4eee7496 100644 --- a/make/website.make +++ b/make/website.make @@ -7,7 +7,7 @@ ifeq ($(WEBSITE_ONLY_BUILD),1) ### for lilypond.org - TOP_SRC_DIR=$(HOME)/lilypond/lilypond-git + TOP_SRC_DIR=$(LILYPOND_GIT) TRUSTED_DIR=$(HOME)/lilypond/trusted-scripts top-src-dir=$(TOP_SRC_DIR) depth=. @@ -16,7 +16,8 @@ ifeq ($(WEBSITE_ONLY_BUILD),1) texi2html-init-file=$(trusted-dir)/lilypond-texi2html.init top-htaccess=$(trusted-dir)/lilypond.org.htaccess dir-htaccess=$(trusted-dir)/website-dir.htaccess - TEXI2HTML_PROGRAM=$(HOME)/usr/bin/texi2html + # grab it from PATH + TEXI2HTML_PROGRAM=texi2html PYTHON=python PYTHONPATH=$(TRUSTED_DIR) else @@ -28,6 +29,8 @@ else include $(config_make) endif +include $(top-src-dir)/VERSION + ################################################################ #The 4 lines below present an option to force make website to run # quietly only when it is run as make -s website. However, we've @@ -51,7 +54,7 @@ OUT=out-website WEB_LANGS := $(shell MAKEWEB=1 $(PYTHON) $(top-src-dir)/python/langdefs.py) -TEXI2HTML=ONLY_WEB=1 TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD \ +TEXI2HTML=ONLY_WEB_VERSION=v$(MAJOR_VERSION).$(MINOR_VERSION) TOP_SRC_DIR=$(top-src-dir) DEPTH=$(depth) PERL_UNICODE=SD \ $(TEXI2HTML_PROGRAM) -D web_version --prefix=index --split=section \ --init-file=$(texi2html-init-file) \ --I=$(dir $<) \ @@ -65,14 +68,16 @@ EXTRACT_TEXI_FILENAMES=$(PYTHON) $(script-dir)/extract_texi_filenames.py $(quiet -I $(dir $<) \ -I $(OUT) \ -o $(OUT) -CREATE_VERSION=python $(script-dir)/create-version-itexi.py -CREATE_WEBLINKS=python $(script-dir)/create-weblinks-itexi.py -MASS_LINK=python $(script-dir)/mass-link.py -WEB_POST=python $(script-dir)/website_post.py -WEB_BIBS=python $(script-dir)/bib2texi.py +CREATE_VERSION=$(PYTHON) $(script-dir)/create-version-itexi.py +CREATE_WEBLINKS=$(PYTHON) $(script-dir)/create-weblinks-itexi.py +MASS_LINK=$(PYTHON) $(script-dir)/mass-link.py +WEB_POST=$(PYTHON) $(script-dir)/website_post.py +WEB_BIBS=$(PYTHON) $(script-dir)/bib2texi.py EXAMPLES=$(LILYPOND_WEB_MEDIA_GIT)/ly-examples PICTURES=$(LILYPOND_WEB_MEDIA_GIT)/pictures +PDFS=$(LILYPOND_WEB_MEDIA_GIT)/pdf +BIB_ITEXI=$(LILYPOND_WEB_MEDIA_GIT)/bib-itexi SERVER_FILES=$(top-src-dir)/Documentation/web/server @@ -98,10 +103,39 @@ MANUALS_WEB := web.texi $(WEB_LANGS:%=web.%.texi) MANUALS_BASE = $(basename $(MANUALS) $(MANUALS_WEB)) +####################### +### Dependency tracking + +# Find the file $(1) within the texinfo include dirs and return its path. +# If not found, i.e. it is a generated file, then the file is ignored. +find-texi = \ +$(firstword \ + $(wildcard $(dir $<)$(1)) \ + $(wildcard $(top-src-dir)/Documentation/$(1)) \ +) + +# Recursively scan the file $(1) for @include, search for included files +# within the texinfo include dirs, and return all dependencies. +scan-texi = \ + $(foreach f, $(shell echo | sed -ne "/^@include[[:space:]]/s/@include//p" $(1)), \ + $(call find-texi,$(f)) \ + $(call scan-texi,$(call find-texi,$(f))) \ +) + +# Find dependencies for the target $@, based on the texinfo source file $<, +# and write the dependencies to a .dep file. +DO_TEXI_DEP = ( mkdir -p $(dir $@) && echo ./$@: $(call scan-texi,$<) > $@.dep ) && + +# This is where we import the .dep files so that `make' knows about +# the various dependencies. +-include dummy.dep $(wildcard $(OUT)/*.dep) $(wildcard $(OUT)/*/*.dep) + + ################### ### Generated files -bib-files = $(OUT)/others-did.itexi $(OUT)/we-wrote.itexi +bib-itexi-src-files := $(notdir $(wildcard $(BIB_ITEXI)/*.itexi)) +bib-itexi-files = $(bib-itexi-src-files:%=$(OUT)/%) css-src-files := $(notdir $(wildcard $(top-src-dir)/Documentation/css/*.css)) css-files = $(css-src-files:%=$(OUT)/website/css/%) @@ -109,16 +143,23 @@ css-files = $(css-src-files:%=$(OUT)/website/css/%) example-src-files := $(notdir $(wildcard $(EXAMPLES)/*)) example-files = $(example-src-files:%=$(OUT)/website/ly-examples/%) -misc-files = $(OUT)/.htaccess \ - $(OUT)/website/.htaccess \ - $(OUT)/website/favicon.ico \ - $(OUT)/website/robots.txt +misc-src-files := $(notdir $(wildcard $(top-src-dir)/Documentation/misc/*.*)) +misc-files += $(misc-src-files:%=$(OUT)/website/misc/%) picture-src-files := $(notdir $(wildcard $(PICTURES)/*)) picture-files = $(picture-src-files:%=$(OUT)/website/pictures/%) +pdf-src-files := $(notdir $(wildcard $(PDFS)/*)) +pdf-files = $(pdf-src-files:%=$(OUT)/website/pdf/%) + post-files = $(OUT)/website/index.html +root-files = $(OUT)/.htaccess \ + $(OUT)/website/.htaccess \ + $(OUT)/website/favicon.ico \ + $(OUT)/website/tweets.xml \ + $(OUT)/website/robots.txt + texinfo-files = $(OUT)/index.html $(WEB_LANGS:%=$(OUT)/%/index.html) version-files = $(OUT)/version.itexi $(OUT)/weblinks.itexi @@ -131,7 +172,7 @@ xref-files = $(MANUALS_BASE:%=$(OUT)/%.xref-map) .PHONY: website website-bibs website-css website-examples website-misc \ website-pictures website-post website-test website-texinfo \ - website-version website-xrefs check-setup + website-version website-xrefs check-setup website-pdf check-setup: ifeq ($(LILYPOND_WEB_MEDIA_GIT),) @@ -139,18 +180,20 @@ ifeq ($(LILYPOND_WEB_MEDIA_GIT),) exit 1 endif -website: check-setup website-post website-examples website-pictures website-css website-misc +website: check-setup website-post website-examples website-pictures website-css website-misc website-pdf -website-bibs: website-version $(OUT) $(bib-files) +website-bibs: website-version $(OUT) $(bib-itexi-files) website-css: $(OUT)/website/css $(css-files) website-examples: $(OUT)/website/ly-examples $(example-files) -website-misc: $(OUT)/website $(misc-files) +website-misc: $(OUT)/website $(OUT)/website/misc $(misc-files) $(root-files) website-pictures: $(OUT)/website/pictures $(OUT)/pictures $(picture-files) +website-pdf: $(OUT)/website/pdf $(pdf-files) + website-post: website-texinfo $(post-files) website-test: @@ -167,27 +210,19 @@ website-xrefs: website-version $(OUT) $(xref-files) ### Rules # Directories -$(OUT) $(OUT)/website $(OUT)/website/css $(OUT)/website/ly-examples $(OUT)/website/pictures: %: +$(OUT) $(OUT)/website $(OUT)/website/css $(OUT)/website/ly-examples $(OUT)/website/misc $(OUT)/website/pdf $(OUT)/website/pictures: %: mkdir -p $@ $(OUT)/pictures: $(OUT)/website/pictures ln -sf website/pictures $(OUT)/pictures # Generated itexi files -$(OUT)/version.itexi: #FIXME: add dependencies +$(OUT)/version.itexi: $(top-src-dir)/VERSION $(CREATE_VERSION) $(top-src-dir) > $(OUT)/version.itexi -$(OUT)/weblinks.itexi: #FIXME: add dependencies +$(OUT)/weblinks.itexi: $(top-src-dir)/VERSION $(CREATE_WEBLINKS) $(top-src-dir) > $(OUT)/weblinks.itexi -$(bib-files): $(OUT)/%.itexi: $(top-src-dir)/Documentation/web/%.bib - BSTINPUTS=$(top-src-dir)/Documentation/web \ - $(WEB_BIBS) -s web \ - -s $(top-src-dir)/Documentation/lily-bib \ - -o $@ \ - $(quiet-flag) \ - $< - # Get xrefs for English tely manuals $(MANUALS_TELY:%.tely=$(OUT)/%.xref-map): $(OUT)/%.xref-map: $(top-src-dir)/Documentation/%.tely $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) $< @@ -211,12 +246,12 @@ $(OUT)/web.%.xref-map: $(top-src-dir)/Documentation/%/web.texi $(DO_TEXI_DEP) $(EXTRACT_TEXI_FILENAMES) --split=node $< # Build the English website -$(OUT)/index.html: $(top-src-dir)/Documentation/web.texi +$(OUT)/index.html: $(top-src-dir)/Documentation/web.texi $(version-files) $(xref-files) $(DO_TEXI_DEP) $(TEXI2HTML) $< # Build translated websites $(eval $(foreach l,$(WEB_LANGS),\ -$(eval $(OUT)/$(l)/index.html: $(top-src-dir)/Documentation/$(l)/web.texi; \ +$(eval $(OUT)/$(l)/index.html: $(top-src-dir)/Documentation/$(l)/web.texi $(version-files) $(xref-files); \ $$(DO_TEXI_DEP) $$(TEXI2HTML) --lang="$(l)" $$<; ) \ )) @@ -228,21 +263,33 @@ $(OUT)/website/index.html: $(wildcard $(OUT)/*.html) $(WEB_POST) $(OUT)/website # Simple copy +$(bib-itexi-files): $(OUT)/%: $(BIB_ITEXI)/% + cp $< $@ + $(css-files): $(OUT)/website/css/%: $(top-src-dir)/Documentation/css/% cp $< $@ $(example-files): $(OUT)/website/ly-examples/%: $(EXAMPLES)/% cp $< $@ +$(misc-files): $(OUT)/website/misc/%: $(top-src-dir)/Documentation/misc/% + cp $< $@ + $(picture-files): $(OUT)/website/pictures/%: $(PICTURES)/% cp $< $@ +$(pdf-files): $(OUT)/website/pdf/%: $(PDFS)/% + cp $< $@ + $(OUT)/website/favicon.ico: $(SERVER_FILES)/favicon.ico cp $< $@ $(OUT)/website/robots.txt: $(SERVER_FILES)/robots.txt cp $< $@ +$(OUT)/website/tweets.xml: $(SERVER_FILES)/tweets.xml + cp $< $@ + $(OUT)/.htaccess: $(top-htaccess) cp $< $@