# libguestfs translations of man pages and POD files
# Copyright (C) 2010-2025 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# Common logic for generating translated documentation.

include $(top_srcdir)/subdir-rules.mk

LINGUA = $(shell basename -- `pwd`)

# Before 1.23.23, the old Perl tools were called *.pl.
CLEANFILES += *.pl *.pod

MANPAGES = \
	guestfish.1 \
	guestfs.3 \
	guestfs-building.1 \
	guestfs-erlang.3 \
	guestfs-examples.3 \
	guestfs-faq.1 \
	guestfs-hacking.1 \
	guestfs-internals.1 \
	guestfs-golang.3 \
	guestfs-java.3 \
	guestfs-lua.3 \
	guestfs-ocaml.3 \
	guestfs-performance.1 \
	guestfs-perl.3 \
	guestfs-python.3 \
	guestfs-recipes.1 \
	guestfs-release-notes-1.42.1 \
	guestfs-release-notes-1.40.1 \
	guestfs-release-notes-1.38.1 \
	guestfs-release-notes-1.36.1 \
	guestfs-release-notes-1.34.1 \
	guestfs-release-notes-1.32.1 \
	guestfs-release-notes-1.30.1 \
	guestfs-release-notes-1.28.1 \
	guestfs-release-notes-1.26.1 \
	guestfs-release-notes-1.24.1 \
	guestfs-release-notes-1.22.1 \
	guestfs-release-notes-1.20.1 \
	guestfs-release-notes-1.18.1 \
	guestfs-release-notes-1.16.1 \
	guestfs-release-notes-1.14.1 \
	guestfs-release-notes-1.12.1 \
	guestfs-release-notes-1.10.1 \
	guestfs-release-notes-1.8.1 \
	guestfs-release-notes-1.6.1 \
	guestfs-release-notes-1.4.1 \
	guestfs-release-notes.1 \
	guestfs-ruby.3 \
	guestfs-security.1 \
	guestfs-testing.1 \
	guestfsd.8 \
	guestmount.1 \
	guestunmount.1 \
	libguestfs-make-fixed-appliance.1 \
	libguestfs-test-tool.1 \
	libguestfs-tools.conf.5 \
	virt-copy-in.1 \
	virt-copy-out.1 \
	virt-rescue.1 \
	virt-tar-in.1 \
	virt-tar-out.1

podfiles := $(shell for f in `cat $(top_srcdir)/po-docs/podfiles`; do echo `basename $$f .pod`.pod; done)

# Ship the POD files and the translated manpages in the tarball.  This
# just simplifies building from the tarball, at a small cost in extra
# size.
EXTRA_DIST = \
	$(MANPAGES) \
	$(podfiles)

all-local: $(MANPAGES)

guestfs.3: guestfs.pod guestfs-actions.pod guestfs-availability.pod guestfs-structs.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --section 3 \
	  --license LGPLv2+ \
	  --insert $(srcdir)/guestfs-actions.pod:__ACTIONS__ \
	  --insert $(srcdir)/guestfs-availability.pod:__AVAILABILITY__ \
	  --insert $(srcdir)/guestfs-structs.pod:__STRUCTS__ \
	  $<

# XXX --warning parameter is not passed, so no WARNING section is
# generated in any translated manual.  To fix this we need to expand
# out all the %.1 pattern rules below.

guestfish.1: guestfish.pod guestfish-actions.pod guestfish-commands.pod guestfish-prepopts.pod blocksize-option.pod key-option.pod keys-from-stdin-option.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
	  $<

guestmount.1: guestmount.pod blocksize-option.pod key-option.pod keys-from-stdin-option.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
	  $<

virt-builder.1: virt-builder.pod customize-synopsis.pod customize-options.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
	  --insert $(srcdir)/customize-synopsis.pod:__CUSTOMIZE_SYNOPSIS__ \
	  --insert $(srcdir)/customize-options.pod:__CUSTOMIZE_OPTIONS__ \
	  $<

virt-customize.1: virt-customize.pod customize-synopsis.pod customize-options.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
	  --insert $(srcdir)/customize-synopsis.pod:__CUSTOMIZE_SYNOPSIS__ \
	  --insert $(srcdir)/customize-options.pod:__CUSTOMIZE_OPTIONS__ \
	  $<

virt-sysprep.1: virt-sysprep.pod sysprep-extra-options.pod sysprep-operations.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
          --insert $(srcdir)/sysprep-extra-options.pod:__EXTRA_OPTIONS__ \
          --insert $(srcdir)/sysprep-operations.pod:__OPERATIONS__ \
	  $<

virt-p2v.1: virt-p2v.pod virt-p2v-kernel-config.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --license GPLv2+ \
	  --insert $(srcdir)/virt-p2v-kernel-config.pod:__KERNEL_CONFIG__ \
	  $<

%.1: %.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  $<

%.3: %.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --section 3 \
	  $<

%.5: %.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --section 5 \
	  $<

%.8: %.pod
	$(PODWRAPPER) \
	  --no-strict-checks \
	  --man $@ \
	  --section 8 \
	  $<

# Note: po4a puts the following junk at the top of every POD file it
# generates:
#  - a warning
#  - a probably bogus =encoding line
# Remove both.
# XXX Fix po4a so it doesn't do this.
%.pod: $(srcdir)/../$(LINGUA).po
	rm -f $@ $@-t
	$(guestfs_am_v_po4a_translate)$(PO4A_TRANSLATE) \
	  --no-deprecation \
	  -o no-warn-simple \
	  -f pod \
	  -M utf-8 -L utf-8 \
	  -k 0 \
	  -m $(top_srcdir)/$(shell grep '/$(notdir $@)$$' $(top_srcdir)/po-docs/podfiles) \
	  -p $< \
	  -l $@-t
	$(SED) '0,/^=encoding/d' < $@-t > $@
	rm $@-t

# XXX Can automake do this properly?
install-data-hook:
	$(MKDIR_P) $(DESTDIR)$(mandir)/$(LINGUA)/man1
	$(INSTALL) -m 0644 $(srcdir)/*.1 $(DESTDIR)$(mandir)/$(LINGUA)/man1
	$(MKDIR_P) $(DESTDIR)$(mandir)/$(LINGUA)/man3
	$(INSTALL) -m 0644 $(srcdir)/*.3 $(DESTDIR)$(mandir)/$(LINGUA)/man3
	$(MKDIR_P) $(DESTDIR)$(mandir)/$(LINGUA)/man5
	$(INSTALL) -m 0644 $(srcdir)/*.5 $(DESTDIR)$(mandir)/$(LINGUA)/man5
