#
# Makefile for the Vim documentation on Unix
#
# If you get "don't know how to make scratch", first run make in the source
# directory.  Or remove the include below.

AWK = awk

# Set to $(VIMTARGET) when executed from src/Makefile.
VIMEXE = vim

# include the config.mk from the source directory.  It's only needed to set
# AWK, used for "make html".  Comment this out if the include gives problems.
include ../../src/auto/config.mk

# Common components
include Make_all.mak

.SUFFIXES:
.SUFFIXES: .c .o .txt .html
.PHONY: all vimtags noerrors perlhtml clean test_urls

all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)

# Use Vim to generate the tags file.  Can only be used when Vim has been
# compiled and installed.  Supports multiple languages.
vimtags: $(DOCS)
	@$(VIMEXE) --clean -esX -V1 -u doctags.vim

# Use "doctags" to generate the tags file.  Only works for English!
tags: doctags $(DOCS)
	./doctags $(DOCS) | LANG=C LC_ALL=C sort >$@
	uniq -d -2 tags

doctags: doctags.c
	$(CC) doctags.c -o doctags

vim.man: vim.1
	nroff -man $< | sed -e s/.//g > $@

evim.man: evim.1
	nroff -man $< | sed -e s/.//g > $@

vimdiff.man: vimdiff.1
	nroff -man $< | sed -e s/.//g > $@

vimtutor.man: vimtutor.1
	nroff -man $< | sed -e s/.//g > $@

xxd.man: xxd.1
	nroff -man $< | sed -e s/.//g > $@

uganda.nsis.txt : uganda.???
	for dpn in $?; do \
	  trg=$@; \
          sed -e 's/[ 	]*\*.*\*//g' -e 's/vim:tw=[[:digit:]][[:digit:]]:.*//' \
            $${dpn} | uniq > $${trg%txt}$${dpn##*.}; \
	done
# This files needs to be in dos fileformat for NSIS.
	$(VIMEXE) -e -X -u NONE --cmd "set notitle noicon nocp noml viminfo=" \
	  -c "argdo write ++ff=dos" -c "qa" uganda.nsis.???

# Awk version of .txt to .html conversion.
html: noerrors tags $(HTMLS)
	@if test -f errors.log; then more errors.log; fi

noerrors:
	-rm -f errors.log

$(HTMLS): tags.ref

.txt.html:
	$(AWK) -f makehtml.awk $< >$@

# index.html is the starting point for HTML, but for the help files it is
# help.txt.  Therefore use vimindex.html for index.txt.
index.html: help.txt
	$(AWK) -f makehtml.awk $< >$@

vimindex.html: index.txt
	$(AWK) -f makehtml.awk $< >$@

tags.ref tags.html: tags
	$(AWK) -f maketags.awk tags >tags.html

# Perl version of .txt to .html conversion.
# There can't be two rules to produce a .html from a .txt file.
# Just run over all .txt files each time one changes.  It's fast anyway.
perlhtml: tags $(DOCS)
	./vim2html.pl tags $(DOCS)

# Check URLs in the help with "curl".
test_urls:
	$(VIMEXE) --clean -S test_urls.vim

clean:
	-rm -f doctags *.html tags.ref

# These files are in the extra archive, skip if not present

arabic.txt:
	touch $@

farsi.txt:
	touch $@

hebrew.txt:
	touch $@

russian.txt:
	touch $@

gui_w32.txt:
	touch $@

if_ole.txt:
	touch $@

os_390.txt:
	touch $@

os_amiga.txt:
	touch $@

os_beos.txt:
	touch $@

os_dos.txt:
	touch $@

os_haiku.txt:
	touch $@

os_mac.txt:
	touch $@

os_mint.txt:
	touch $@

os_msdos.txt:
	touch $@

os_os2.txt:
	touch $@

os_qnx.txt:
	touch $@

os_risc.txt:
	touch $@

os_win32.txt:
	touch $@

# Note that $< works with GNU make while $> works for BSD make.
# Is there a solution that works for both??
vim-da.UTF-8.1: vim-da.1
	iconv -f latin1 -t utf-8 $< >$@

vimdiff-da.UTF-8.1: vimdiff-da.1
	iconv -f latin1 -t utf-8 $< >$@

vimtutor-da.UTF-8.1: vimtutor-da.1
	iconv -f latin1 -t utf-8 $< >$@

vim-de.UTF-8.1: vim-de.1
	iconv -f latin1 -t utf-8 $< >$@

vim-fr.UTF-8.1: vim-fr.1
	iconv -f latin1 -t utf-8 $< >$@

evim-fr.UTF-8.1: evim-fr.1
	iconv -f latin1 -t utf-8 $< >$@

vimdiff-fr.UTF-8.1: vimdiff-fr.1
	iconv -f latin1 -t utf-8 $< >$@

vimtutor-fr.UTF-8.1: vimtutor-fr.1
	iconv -f latin1 -t utf-8 $< >$@

xxd-fr.UTF-8.1: xxd-fr.1
	iconv -f latin1 -t utf-8 $< >$@

vim-it.UTF-8.1: vim-it.1
	iconv -f latin1 -t utf-8 $< >$@

evim-it.UTF-8.1: evim-it.1
	iconv -f latin1 -t utf-8 $< >$@

vimdiff-it.UTF-8.1: vimdiff-it.1
	iconv -f latin1 -t utf-8 $< >$@

vimtutor-it.UTF-8.1: vimtutor-it.1
	iconv -f latin1 -t utf-8 $< >$@

xxd-it.UTF-8.1: xxd-it.1
	iconv -f latin1 -t utf-8 $< >$@

vim-pl.UTF-8.1: vim-pl.1
	iconv -f latin2 -t utf-8 $< >$@

evim-pl.UTF-8.1: evim-pl.1
	iconv -f latin2 -t utf-8 $< >$@

vimdiff-pl.UTF-8.1: vimdiff-pl.1
	iconv -f latin2 -t utf-8 $< >$@

vimtutor-pl.UTF-8.1: vimtutor-pl.1
	iconv -f latin2 -t utf-8 $< >$@

xxd-pl.UTF-8.1: xxd-pl.1
	iconv -f latin2 -t utf-8 $< >$@

vim-ru.UTF-8.1: vim-ru.1
	iconv -f KOI8-R -t utf-8 $< >$@

evim-ru.UTF-8.1: evim-ru.1
	iconv -f KOI8-R -t utf-8 $< >$@

vimdiff-ru.UTF-8.1: vimdiff-ru.1
	iconv -f KOI8-R -t utf-8 $< >$@

vimtutor-ru.UTF-8.1: vimtutor-ru.1
	iconv -f KOI8-R -t utf-8 $< >$@

xxd-ru.UTF-8.1: xxd-ru.1
	iconv -f KOI8-R -t utf-8 $< >$@

vim-tr.UTF-8.1: vim-tr.1
	iconv -f latin5 -t utf-8 $< >$@

evim-tr.UTF-8.1: evim-tr.1
	iconv -f latin5 -t utf-8 $< >$@

vimdiff-tr.UTF-8.1: vimdiff-tr.1
	iconv -f latin5 -t utf-8 $< >$@

vimtutor-tr.UTF-8.1: vimtutor-tr.1
	iconv -f latin5 -t utf-8 $< >$@
