summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile142
-rw-r--r--make/rules.mk131
2 files changed, 134 insertions, 139 deletions
diff --git a/Makefile b/Makefile
index b85590a..fd39a38 100644
--- a/Makefile
+++ b/Makefile
@@ -2,10 +2,10 @@ SOURCES = ikiwiki
ikiwiki_ORIGIN = git://source.jones.dk/ikiwiki_MODULE
ikiwiki_MODULES = templates basewiki smiley
-ikiwiki_POMODULES = smiley
+ikiwiki_POMODULES = basewiki smiley
ikiwiki_BRANCH = master-LOCALE
ikiwiki_LOCALES = da no_NB
-#ikiwiki_POLOCALES = da
+ikiwiki_POLOCALES = da
#dummy_MODULES = content_dummy
@@ -26,147 +26,11 @@ 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 branch -m $$(master) && \
- 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))))
-
-
+include make/rules.mk
pot: $(ALL_POTFILES)
po: $(ALL_POFILES)
$(LOCALE_L10NFILES): $(MASTER_L10NFILES)
translations: po $(LOCALE_L10NFILES)
-
-
.PHONY: all $(SOURCES) pot po translations install ultraclean
diff --git a/make/rules.mk b/make/rules.mk
new file mode 100644
index 0000000..753aa3a
--- /dev/null
+++ b/make/rules.mk
@@ -0,0 +1,131 @@
+# 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 branch -m $$(master) && \
+ 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))))