diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 184 |
1 files changed, 171 insertions, 13 deletions
@@ -1,13 +1,171 @@ -#underlays = basewiki smiley templates -underlays = templates -#locale = danish -master = master -#master = master-LOCALE - -all: $(underlays) - -$(underlays): - mkdir $@ - cd $@ && git init - cd $@ && git remote add -f -t $(master:LOCALE=$(locale)) -m $(master:LOCALE=$(locale)) origin http://source.jones.dk/sukker_$@.git - cd $@ && git merge origin +SOURCES = ikiwiki + +ikiwiki_ORIGIN = git://source.jones.dk/ikiwiki_MODULE +ikiwiki_MODULES = templates basewiki smiley +ikiwiki_POMODULES = smiley +ikiwiki_BRANCH = master-LOCALE +ikiwiki_LOCALES = da +#ikiwiki_POLOCALES = da + +#dummy_MODULES = content_dummy + +# uncomment this when ikiwiki.setup is configured for the local environment +#CONFIGS = ikiwiki.setup + +# Everything after this is generic + +# FIXME: Not all of these are used within templates +masterdir = $(module) +l10ndir = $(module)_l10n/$(locale) +podir = po + +all: $(SOURCES) + +install:: +ifeq ($(strip $(CONFIGS)),) + $(error Please configure ikiwiki.setup and then uncomment it at the top of the Makefile!) +endif + + + +# 1:source 2:locales +define SOURCE_template +$(1): $$($(1)_MODULES) $(dummy_MODULES) + +.PHONY: $(1) +endef +$(foreach source,$(SOURCES),$(eval $(call SOURCE_template,$(source),$($(source)_LOCALES)))) + + + +# 1:moduledir 2:locale 3:mastermodule 4:source +define MODULE_template +$(4): $(1) + +$(1): origin = $$(subst MODULE,$(3),$$($(4)_ORIGIN)) +$(1): master = $$(subst -LOCALE,$(2:%=-$(2)),$$($(4)_BRANCH)) +$(1): + mkdir -p $$@ + @if [ -d "$$@/.git" ]; then \ + cd $$@ && \ + git pull; \ + else \ + cd $$@ && \ + git init && \ + git remote add -f -t $$(master) -m $$(master) origin $$(origin) && \ + git merge origin && \ + git config remote.origin.push +refs/heads/master:refs/heads/$$(master); \ + fi + + +# WARNING: this may wipe unrelated files too! +ultraclean:: + rm -rf "$(1)" +ifneq ($(2),) + rm -rf "$(dir $(1))" +endif + +.PHONY: $(1) +endef +$(foreach source,$(SOURCES),$(foreach module,$($(source)_MODULES),$(eval $(call MODULE_template,$(masterdir),,$(module),$(source))))) +$(foreach source,$(SOURCES),$(foreach module,$($(source)_MODULES),$(foreach locale,$($(source)_LOCALES),$(eval $(call MODULE_template,$(l10ndir),$(locale),$(module),$(source)))))) + + + +# 1:moduledir 2:locale 3:mastermodule 4:source +define POT_template +fileformat = $(if $(filter templates,$(3)),htmltemplate,text) +filetype = $(if $(filter templates,$(3)),tmpl,mdwn) +ALL_POTFILES += $(podir)/$(3).pot +$(3)_L10NFILES = $$(patsubst $(1)/%,%,$$(shell find $(1) -type f -name '*.$$(filetype)')) +MASTER_L10NFILES += $$(patsubst %,$(1)/%,$$($(3)_L10NFILES)) + +$(podir)/$(3).pot: $(1) + cd "$(1)" && PERL5LIB="$(CURDIR)/perl" po4a-gettextize -M UTF-8 -L UTF-8 -f $$(fileformat) -o markdown $$(patsubst %,-m %,$$($(3)_L10NFILES)) -p $(CURDIR)/$$@ + +.PHONY: $(1) +endef +$(foreach source,$(SOURCES),$(foreach module,$($(source)_POMODULES),$(eval $(call POT_template,$(masterdir),,$(module),$(source))))) + + + +# 1:moduledir 2:locale 3:mastermodule 4:source 5:originmodule +define INITPO_template +fileformat = $(if $(filter templates,$(3)),htmltemplate,text) +filetype = $(if $(filter templates,$(3)),tmpl,mdwn) +ALL_POFILES += $(podir)/$(3).$(2).po +LOCALE_L10NFILES += $$(patsubst %,$(1)/%,$$($(3)_L10NFILES)) + +$(4)_POMODULES := $(filter-out $(3),$$($(4)_POMODULES)) +$(4)_POLOCALES := $(filter-out $(2),$$($(4)_POLOCALES)) + +$(podir)/$(3).$(2).po: $(3) $(5) + cd "$(3)" && PERL5LIB="$(CURDIR)/perl" po4a-gettextize -M UTF-8 -L UTF-8 -f $$(fileformat) -o markdown $$(patsubst %,-m %,$$($(3)_L10NFILES)) $$(patsubst %,-l $$(CURDIR)/$(1)/%,$($(3)_L10NFILES)) -p $(CURDIR)/$$@ + +# TODO: Implement the below for automated tests, after unfuzzing the above like this: +# grep -v '^#, fuzzy$' | sed 's/^#, fuzzy,/#,/' +# +# FIXME: needs to depend also on its masterfile +#$$(patsubst %,$(1)/%,$$($(3)_L10NFILES)): $(podir)/$(3).$(2).po +# mkdir -p $(1) +# cd "$(1)" && PERL5LIB="$(CURDIR)/perl" po4a-translate -M UTF-8 -L UTF-8 -k 0 -f $(fileformat) -o markdown $$(patsubst $(1)/%,-m $(CURDIR)/$(3)/%,$$@) -p $(CURDIR)/$(podir)/$(3).$(locale).po -l $(CURDIR)/$$@ +endef +$(foreach source,$(SOURCES),$(foreach module,$(po-init-modules),$(foreach locale,$(po-init-locales),$(eval $(call INITPO_template,$(l10ndir),$(locale),$(module),$(source),$(if $(po-init-fromlocale),$(module)_l10n/$(po-init-fromlocale),$(module))))))) + + + +# 1:moduledir 2:locale 3:mastermodule 4:source +define PO_template +fileformat = $(if $(filter templates,$(3)),htmltemplate,text) +filetype = $(if $(filter templates,$(3)),tmpl,mdwn) +ALL_POFILES += $(podir)/$(3).$(2).po +LOCALE_L10NFILES += $$(patsubst %,$(1)/%,$$($(3)_L10NFILES)) + +$(podir)/$(3).$(2).po: $(3) + cd "$(3)" && PERL5LIB="$(CURDIR)/perl" po4a-updatepo -M UTF-8 -f $(fileformat) -o markdown $$(patsubst %,-m %,$$($(3)_L10NFILES)) -p $(CURDIR)/$$@ + +$$(patsubst %,$(1)/%,$$($(3)_L10NFILES)): $(podir)/$(3).$(2).po + mkdir -p $(1) + cd "$(1)" && PERL5LIB="$(CURDIR)/perl" po4a-translate -M UTF-8 -L UTF-8 -k 100 -f $(fileformat) -o markdown $$(patsubst $(1)/%,-m $$(CURDIR)/$(3)/%,$$@) -p $(CURDIR)/$(podir)/$(3).$(locale).po -l $(CURDIR)/$$@ +endef +# Only update if not initializing - can't do both at once +ifeq ($(po-init-modules),) +$(foreach source,$(SOURCES),$(foreach module,$($(source)_POMODULES),$(foreach locale,$($(source)_POLOCALES),$(eval $(call PO_template,$(l10ndir),$(locale),$(module),$(source)))))) +endif + + + +# 1:dummydir +define DUMMYMODULE_template +$(1): + mkdir -p $$@ + +# WARNING: this may wipe unrelated files too! +ultraclean:: + rm -rf "$(1)" +endef +$(foreach module,$(dummy_MODULES),$(eval $(call DUMMYMODULE_template,$(masterdir)))) + + + +# 1:configfile +define CONFIG_template +$(1): + mkdir -p $$@ + +# WARNING: this may wipe unrelated files too! +install:: + ikiwiki --setup $(1) --rebuild +endef +$(foreach config,$(CONFIGS),$(eval $(call CONFIG_template,$(config)))) + + + +pot: $(ALL_POTFILES) +po: $(ALL_POFILES) +$(LOCALE_L10NFILES): $(MASTER_L10NFILES) +translations: po $(LOCALE_L10NFILES) + + + +.PHONY: all $(SOURCES) pot po translations install ultraclean |