# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

$(eval $(call gb_CustomTarget_CustomTarget,extras/source/autotext))

extras_AUTOCORR_LANGS := \
	af-ZA:af-ZA \
	bg:bg-BG \
	ca:ca \
	cs:cs-CZ \
	da:da-DK \
	de:de-DE \
	en-AU:en-AU \
	en-GB:en-GB \
	en-US:en-US \
	en-ZA:en-ZA \
	es:es-ES \
	fa:fa-IR \
	fi:fi-FI \
	fr:fr-FR \
	ga-IE:ga-IE \
	hr:hr-HR \
	hu:hu-HU \
	is:is-IS \
	it:it-IT \
	ja:ja-JP \
	ko:ko-KR \
	lb-LU:lb-LU \
	lt:lt-LT \
	mn:mn-MN \
	nl:nl-NL \
	nl-BE:nl-BE \
	pl:pl-PL \
	pt:pt-PT \
	pt-BR:pt-BR \
	ro:ro-RO \
	ru:ru-RU \
	sk:sk-SK \
	sl:sl-SI \
	sr-CS:sr-CS \
	sr-Latn-CS:sr-Latn-CS \
	sr-Latn-ME:sr-Latn-ME \
	sr-Latn-RS:sr-Latn-RS \
	sr-ME:sr-ME \
	sr-RS:sr-RS \
	sv:sv-SE \
	tr:tr-TR \
	vi:vi-VN \
	zh-CN:zh-CN \
	zh-TW:zh-TW \

extras_AUTOCORR_XMLFILES := \
	af-ZA/acor/DocumentList.xml \
	af-ZA/acor/META-INF/manifest.xml \
	af-ZA/acor/SentenceExceptList.xml \
	af-ZA/acor/WordExceptList.xml \
	bg/acor/DocumentList.xml \
	bg/acor/META-INF/manifest.xml \
	bg/acor/SentenceExceptList.xml \
	bg/acor/WordExceptList.xml \
	ca/acor/BlockList.xml \
	ca/acor/DocumentList.xml \
	ca/acor/META-INF/manifest.xml \
	ca/acor/SentenceExceptList.xml \
	ca/acor/WordExceptList.xml \
	cs/acor/BlockList.xml \
	cs/acor/DocumentList.xml \
	cs/acor/META-INF/manifest.xml \
	da/acor/BlockList.xml \
	da/acor/DocumentList.xml \
	da/acor/META-INF/manifest.xml \
	da/acor/SentenceExceptList.xml \
	da/acor/WordExceptList.xml \
	de/acor/BlockList.xml \
	de/acor/DocumentList.xml \
	de/acor/META-INF/manifest.xml \
	de/acor/SentenceExceptList.xml \
	de/acor/WordExceptList.xml \
	en-AU/acor/BlockList.xml \
	en-AU/acor/DocumentList.xml \
	en-AU/acor/META-INF/manifest.xml \
	en-AU/acor/SentenceExceptList.xml \
	en-AU/acor/WordExceptList.xml \
	en-GB/acor/BlockList.xml \
	en-GB/acor/DocumentList.xml \
	en-GB/acor/META-INF/manifest.xml \
	en-GB/acor/SentenceExceptList.xml \
	en-GB/acor/WordExceptList.xml \
	en-US/acor/BlockList.xml \
	en-US/acor/DocumentList.xml \
	en-US/acor/META-INF/manifest.xml \
	en-US/acor/SentenceExceptList.xml \
	en-US/acor/WordExceptList.xml \
	en-ZA/acor/DocumentList.xml \
	en-ZA/acor/META-INF/manifest.xml \
	en-ZA/acor/SentenceExceptList.xml \
	en-ZA/acor/WordExceptList.xml \
	es/acor/BlockList.xml \
	es/acor/DocumentList.xml \
	es/acor/META-INF/manifest.xml \
	es/acor/SentenceExceptList.xml \
	es/acor/WordExceptList.xml \
	fa/acor/DocumentList.xml \
	fa/acor/META-INF/manifest.xml \
	fi/acor/BlockList.xml \
	fi/acor/DocumentList.xml \
	fi/acor/META-INF/manifest.xml \
	fi/acor/SentenceExceptList.xml \
	fi/acor/WordExceptList.xml \
	fr/acor/DocumentList.xml \
	fr/acor/META-INF/manifest.xml \
	fr/acor/SentenceExceptList.xml \
	fr/acor/WordExceptList.xml \
	ga-IE/acor/DocumentList.xml \
	ga-IE/acor/META-INF/manifest.xml \
	ga-IE/acor/SentenceExceptList.xml \
	ga-IE/acor/WordExceptList.xml \
	hr/acor/DocumentList.xml \
	hr/acor/META-INF/manifest.xml \
	hr/acor/SentenceExceptList.xml \
	hr/acor/WordExceptList.xml \
	hu/acor/BlockList.xml \
	hu/acor/DocumentList.xml \
	hu/acor/META-INF/manifest.xml \
	hu/acor/SentenceExceptList.xml \
	hu/acor/WordExceptList.xml \
	is/acor/META-INF/manifest.xml \
	is/acor/SentenceExceptList.xml \
	it/acor/BlockList.xml \
	it/acor/DocumentList.xml \
	it/acor/META-INF/manifest.xml \
	it/acor/SentenceExceptList.xml \
	it/acor/WordExceptList.xml \
	ja/acor/DocumentList.xml \
	ja/acor/META-INF/manifest.xml \
	ja/acor/SentenceExceptList.xml \
	ko/acor/DocumentList.xml \
	ko/acor/META-INF/manifest.xml \
	ko/acor/SentenceExceptList.xml \
	lb-LU/acor/DocumentList.xml \
	lb-LU/acor/META-INF/manifest.xml \
	lt/acor/BlockList.xml \
	lt/acor/DocumentList.xml \
	lt/acor/META-INF/manifest.xml \
	lt/acor/SentenceExceptList.xml \
	lt/acor/WordExceptList.xml \
	mn/acor/DocumentList.xml \
	mn/acor/META-INF/manifest.xml \
	mn/acor/SentenceExceptList.xml \
	mn/acor/WordExceptList.xml \
	nl-BE/acor/BlockList.xml \
	nl-BE/acor/DocumentList.xml \
	nl-BE/acor/META-INF/manifest.xml \
	nl-BE/acor/SentenceExceptList.xml \
	nl-BE/acor/WordExceptList.xml \
	nl/acor/BlockList.xml \
	nl/acor/DocumentList.xml \
	nl/acor/META-INF/manifest.xml \
	nl/acor/SentenceExceptList.xml \
	nl/acor/WordExceptList.xml \
	pl/acor/DocumentList.xml \
	pl/acor/META-INF/manifest.xml \
	pl/acor/SentenceExceptList.xml \
	pl/acor/WordExceptList.xml \
	pt-BR/acor/BlockList.xml \
	pt-BR/acor/DocumentList.xml \
	pt-BR/acor/META-INF/manifest.xml \
	pt-BR/acor/SentenceExceptList.xml \
	pt-BR/acor/WordExceptList.xml \
	pt/acor/BlockList.xml \
	pt/acor/DocumentList.xml \
	pt/acor/META-INF/manifest.xml \
	pt/acor/SentenceExceptList.xml \
	pt/acor/WordExceptList.xml \
	ro/acor/BlockList.xml \
	ro/acor/DocumentList.xml \
	ro/acor/META-INF/manifest.xml \
	ro/acor/SentenceExceptList.xml \
	ro/acor/WordExceptList.xml \
	ru/acor/BlockList.xml \
	ru/acor/DocumentList.xml \
	ru/acor/META-INF/manifest.xml \
	ru/acor/SentenceExceptList.xml \
	ru/acor/WordExceptList.xml \
	sk/acor/DocumentList.xml \
	sk/acor/META-INF/manifest.xml \
	sk/acor/SentenceExceptList.xml \
	sk/acor/WordExceptList.xml \
	sl/acor/DocumentList.xml \
	sl/acor/META-INF/manifest.xml \
	sl/acor/SentenceExceptList.xml \
	sl/acor/WordExceptList.xml \
	sr-CS/acor/DocumentList.xml \
	sr-CS/acor/META-INF/manifest.xml \
	sr-CS/acor/SentenceExceptList.xml \
	sr-CS/acor/WordExceptList.xml \
	sr-Latn-CS/acor/DocumentList.xml \
	sr-Latn-CS/acor/META-INF/manifest.xml \
	sr-Latn-CS/acor/SentenceExceptList.xml \
	sr-Latn-CS/acor/WordExceptList.xml \
	sr-Latn-ME/acor/DocumentList.xml \
	sr-Latn-ME/acor/META-INF/manifest.xml \
	sr-Latn-ME/acor/SentenceExceptList.xml \
	sr-Latn-ME/acor/WordExceptList.xml \
	sr-Latn-RS/acor/DocumentList.xml \
	sr-Latn-RS/acor/META-INF/manifest.xml \
	sr-Latn-RS/acor/SentenceExceptList.xml \
	sr-Latn-RS/acor/WordExceptList.xml \
	sr-ME/acor/DocumentList.xml \
	sr-ME/acor/META-INF/manifest.xml \
	sr-ME/acor/SentenceExceptList.xml \
	sr-ME/acor/WordExceptList.xml \
	sr-RS/acor/DocumentList.xml \
	sr-RS/acor/META-INF/manifest.xml \
	sr-RS/acor/SentenceExceptList.xml \
	sr-RS/acor/WordExceptList.xml \
	sv/acor/BlockList.xml \
	sv/acor/DocumentList.xml \
	sv/acor/META-INF/manifest.xml \
	sv/acor/SentenceExceptList.xml \
	sv/acor/WordExceptList.xml \
	tr/acor/DocumentList.xml \
	tr/acor/META-INF/manifest.xml \
	tr/acor/SentenceExceptList.xml \
	tr/acor/WordExceptList.xml \
	vi/acor/DocumentList.xml \
	vi/acor/META-INF/manifest.xml \
	vi/acor/WordExceptList.xml \
	zh-CN/acor/DocumentList.xml \
	zh-CN/acor/META-INF/manifest.xml \
	zh-CN/acor/SentenceExceptList.xml \
	zh-TW/acor/DocumentList.xml \
	zh-TW/acor/META-INF/manifest.xml \
	zh-TW/acor/SentenceExceptList.xml \


extras_AUTOCORR_MIMETYPEFILES := \
	af-ZA/acor/mimetype \
	bg/acor/mimetype \
	ca/acor/mimetype \
	cs/acor/mimetype \
	da/acor/mimetype \
	de/acor/mimetype \
	en-AU/acor/mimetype \
	en-GB/acor/mimetype \
	en-US/acor/mimetype \
	en-ZA/acor/mimetype \
	es/acor/mimetype \
	fa/acor/mimetype \
	fi/acor/mimetype \
	fr/acor/mimetype \
	ga-IE/acor/mimetype \
	hu/acor/mimetype \
	is/acor/mimetype \
	it/acor/mimetype \
	lb-LU/acor/mimetype \
	lt/acor/mimetype \
	mn/acor/mimetype \
	nl-BE/acor/mimetype \
	nl/acor/mimetype \
	pl/acor/mimetype \
	pt-BR/acor/mimetype \
	pt/acor/mimetype \
	ro/acor/mimetype \
	ru/acor/mimetype \
	sk/acor/mimetype \
	sl/acor/mimetype \
	sr-CS/acor/mimetype \
	sr-Latn-CS/acor/mimetype \
	sr-Latn-ME/acor/mimetype \
	sr-Latn-RS/acor/mimetype \
	sr-ME/acor/mimetype \
	sr-RS/acor/mimetype \
	sv/acor/mimetype \
	tr/acor/mimetype \
	vi/acor/mimetype \


ifneq ($(sort $(foreach file,$(extras_AUTOCORR_XMLFILES),$(firstword $(subst /, ,$(file))))),$(sort $(foreach lang,$(extras_AUTOCORR_LANGS),$(firstword $(subst :, ,$(lang))))))
$(call gb_Output_error,defined autocorrection languages do not match existing directories)
endif

$(call gb_CustomTarget_get_target,extras/source/autotext) : \
	$(foreach lang,$(extras_AUTOCORR_LANGS),$(call gb_CustomTarget_get_workdir,extras/source/autotext)/acor_$(lastword $(subst :, ,$(lang))).dat)

$(call gb_CustomTarget_get_workdir,extras/source/autotext)/%/mimetype : $(SRCDIR)/extras/source/autotext/lang/%/mimetype
	$(call gb_Output_announce,$*/mimetype,$(true),CPY,1)
	cp $< $@

$(call gb_CustomTarget_get_workdir,extras/source/autotext)/%.xml : $(SRCDIR)/extras/source/autotext/lang/%.xml \
		| $(call gb_ExternalExecutable_get_dependencies,xsltproc)
	$(call gb_Output_announce,$*.xml,$(true),XSL,1)
	$(call gb_ExternalExecutable_get_command,xsltproc) -o $@ $(SRCDIR)/extras/util/compact.xsl $<

$(call gb_CustomTarget_get_workdir,extras/source/autotext)/%.dat :
	$(call gb_Output_announce,$*.dat,$(true),ZIP,2)
	$(call gb_Helper_abbreviate_dirs,\
		cd $(EXTRAS_AUTOCORR_DIR) && \
		zip -qrX --filesync --must-match $@ $(EXTRAS_AUTOCORR_FILES) \
	)

define extras_Autocorr_make_file_deps
$(call gb_CustomTarget_get_workdir,$(1))/$(2) : $(SRCDIR)/$(1)/lang/$(2) \
	| $(dir $(call gb_CustomTarget_get_workdir,$(1))/$(2)).dir

endef

define extras_Autocorr_make_zip_deps
$(call gb_CustomTarget_get_workdir,$(1))/$(2) : \
	$(addprefix $(call gb_CustomTarget_get_workdir,$(1))/,$(filter $(3)/%,$(extras_AUTOCORR_MIMETYPEFILES) $(extras_AUTOCORR_XMLFILES))) \
	| $(dir $(call gb_CustomTarget_get_workdir,$(1))/$(2)).dir

$(call gb_CustomTarget_get_workdir,$(1))/$(2) : \
	EXTRAS_AUTOCORR_FILES := $(foreach file,$(filter $(3)/%,$(extras_AUTOCORR_MIMETYPEFILES) $(extras_AUTOCORR_XMLFILES)),$(subst $(3)/acor/,,$(file)))
$(call gb_CustomTarget_get_workdir,$(1))/$(2) : \
	EXTRAS_AUTOCORR_DIR := $(call gb_CustomTarget_get_workdir,$(1))/$(3)/acor

endef

$(eval $(foreach file,$(extras_AUTOCORR_MIMETYPEFILES) $(extras_AUTOCORR_XMLFILES),\
	$(call extras_Autocorr_make_file_deps,extras/source/autotext,$(file)) \
))

$(eval $(foreach lang,$(extras_AUTOCORR_LANGS),\
	$(call extras_Autocorr_make_zip_deps,extras/source/autotext,acor_$(lastword $(subst :, ,$(lang))).dat,$(firstword $(subst :, ,$(lang)))) \
))

# vim: set noet sw=4 ts=4: