.DELETE_ON_ERROR:
LANGS := JA KO ZH
RM_LANGS ?= $(LANGS)
ENGINES := deepl
XLANGS := JA
XENGINES := gpt5
GET_README := perl -MTOML -0777E 'say from_toml(<>)->{readme_from}'
README_FROM := $(shell $(GET_README) ../minil.toml)
ifneq ($(README_FROM),)
MOD_PATH := ../$(README_FROM)
MOD_NAME := $(notdir $(MOD_PATH))
ORIGIN := $(MOD_PATH)
POD := $(MOD_NAME).pod
else
MOD_NAME := $(shell perl -MJSON -0777E 'say decode_json(<>)->{name}' ../META.json)
MOD_PATH := ../lib/$(subst -,/,$(MOD_NAME)).pm
MOD_FILE := $(notdir $(MOD_PATH))
MOD_DIR := $(dir $(MOD_PATH))
MOD_NAME := $(MOD_FILE:.pm=)
ORIGIN := $(MOD_PATH)
PM := $(notdir $(ORIGIN))
POD := $(PM:.pm=.pod)
endif
SRC_DIR :=
SRC := $(POD:%=$(if $(SRC_DIR),$(SRC_DIR)/,)%)
NAMES := $(POD:%=$(notdir %))
PODS := $(foreach engin,$(ENGINES),$(foreach lang,$(LANGS),$(SRC:.pod=.$(engin)-$(lang).pod)))
MDS := $(foreach engin,$(ENGINES),$(foreach lang,$(LANGS),$(NAMES:.pod=.$(engin)-$(lang).md)))
READMES := $(foreach engin,$(ENGINES),$(RM_LANGS:%=../README.$(engin)-%.md))
###########
# Translate only JA by gpt-5
#----------
PODS += $(foreach engin,$(XENGINES),$(foreach lang,$(XLANGS),$(SRC:.pod=.$(engin)-$(lang).pod)))
MDS += $(foreach engin,$(XENGINES),$(foreach lang,$(XLANGS),$(NAMES:.pod=.$(engin)-$(lang).md)))
READMES += $(foreach engin,$(XENGINES),$(XLANGS:%=../README.$(engin)-%.md))
###########
ALL := $(PODS) $(MDS) README.md $(READMES)
all: $(ALL)
ifdef SRC_DIR
$(SRC_DIR):
mkdir -p $(SRC_DIR)
endif
SRCPATH := $(if $(SRC_DIR),$(SRC_DIR)/,)
GREPLE := PERL5LIB=../lib$${PERL5LIB:+:$$PERL5LIB} greple
PODIFY := $(GREPLE) -Mperl --nocolor --le :pod
$(foreach mod,$(ORIGIN),$(eval \
$(if $(filter .pm,$(suffix $(mod))),\
$(SRCPATH)$(subst .pm,.pod,$(notdir $(mod))): $(mod) Makefile; $(PODIFY) $$< > $$@,\
$(SRCPATH)$(notdir $(mod)).pod: $(mod) Makefile; $(PODIFY) $$< > $$@ \
)\
))
XLATE := xlate
XLATE += $(if $(XLATE_LABOR),,-a)
XLATE += $(if $(XLATE_INIT),-r)
#deepl_JA_DICT := $(wildcard *.dict)
#deepl_JA_FILTER := $(GREPLE) -Mperl -Msubst \
# $(if $(findstring $(deepl_JA_FORM).dict,$(deepl_JA_DICT)),--dict $(deepl_JA_FORM).dict) \
# --pod --subst --all --no-color --need=0
define LANG_POD
$(SRCPATH)%.$2-$1.pod: $(SRCPATH)%.pod Makefile
ifdef $2_$1_FILTER
$$(XLATE) -e $2 -t $1 $$< | $$($2_$1_FILTER) > $$@
else
$$(XLATE) -e $2 -t $1 $$< > $$@
endif
endef
ENGINES+=$(XENGINES)
$(foreach engin,$(ENGINES),$(foreach lang,$(LANGS),$(eval $(call LANG_POD,$(lang),$(engin)))))
%.md: $(SRCPATH)%.pod
pod2markdown $< > $@
define LANG_README
../README.$2-$1.md: $(MOD_NAME).$2-$1.md
cp $$< $$@
endef
$(foreach engin,$(ENGINES),$(foreach lang,$(RM_LANGS),$(eval $(call LANG_README,$(lang),$(engin)))))
README.md: Makefile
exec > $@ && \
printf '## Languages\n\n' && \
for md in $(MDS) ; \
do \
echo "- [$$md]($$md)" ; \
done
clean:
rm -f $(SRC) $(ALL)