# Makefile for GNU Pascal documentation.
#
# Targets:
#
#   default      English info files
#   pascal.info  All info files
#   gpc.dvi      DVI file
#   gpc.ps       PostScript file
#   gpc.pdf      PDF file
#   gpc.html     HTML files
#   all          All of the above
#   clean        clean up
#
# Copyright (C) 1987-2004 Free Software Foundation, Inc.
#
# Authors: Jukka Virtanen <jtv@hut.fi>
#          J.J. van der Heijden <j.j.vanderheijden@student.utwente.nl>
#          Peter Gerwinski <peter@gerwinski.de>
#          Matthias Klose <doko@cs.tu-berlin.de>
#          Frank Heckenbach <frank@pascal.gnu.de>
#          Waldek Hebisch <hebisch@math.uni.wroc.pl>
#
# This file is part of GNU Pascal.
#
# GNU Pascal 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, or (at your option)
# any later version.
#
# GNU Pascal 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 GNU Pascal; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

MAKEINFO=makeinfo
MAKEINFOFLAGS=

gpc_version=20040526

STAMP=echo timestamp >

GPC_COMMON_TEXI=$(wildcard *.texi generated/*.texi)
GPC_TEXI_EN=$(GPC_COMMON_TEXI) $(wildcard en/*.texi)
GPC_TEXI_DE=$(GPC_COMMON_TEXI) $(wildcard de/*.texi)

# @@ Some files are not translated yet -- use the English versions for now
GPC_TEXI_HR=$(GPC_COMMON_TEXI) $(wildcard hr/*.texi) $(GPC_TEXI_EN)
GPC_TEXI_ES=$(GPC_COMMON_TEXI) $(wildcard es/*.texi) $(GPC_TEXI_EN)

GPC_DOC_DIRS_EN=-I . -I en -I generated
GPC_DOC_DIRS_DE=-I . -I de -I generated
GPC_DOC_DIRS_HR=-I . -I hr -I generated -I en
GPC_DOC_DIRS_ES=-I . -I es -I generated -I en
MAKEINFO_EN=LANG=en_GB LC_ALL=en_GB $(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_EN)
MAKEINFO_DE=LANG=de_DE LC_ALL=de_DE $(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_DE)
MAKEINFO_HR=LANG=hr_HR LC_ALL=hr_HR $(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_HR)
MAKEINFO_ES=LANG=es_ES LC_ALL=es_ES $(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_ES)

default: info/gpc.info info/gpcs.info

all: pascal.info gpc.dvi gpc.ps gpc.pdf gpc.html

pascal.info: info/gpc.info \
             info/gpcs.info \
             info/gpcs-de.info \
             info/gpc-hr.info \
             info/gpcs-hr.info \
             info/gpc-es.info \
             info/gpcs-es.info
pascal.dvi: gpc.dvi

info/gpc.info: $(GPC_TEXI_EN)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_EN) -o info/gpc.info gpc.texi

info/gpcs.info: $(GPC_TEXI_EN)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_EN) --no-split -o info/gpcs.info gpcs.texi

info/gpcs-de.info: $(GPC_TEXI_DE)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_DE) --no-split -o info/gpcs-de.info gpcs.texi

info/gpc-hr.info: $(GPC_TEXI_HR)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_HR) -o info/gpc-hr.info gpc.texi

info/gpcs-hr.info: $(GPC_TEXI_HR)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_HR) --no-split -o info/gpcs-hr.info gpcs.texi

info/gpc-es.info: $(GPC_TEXI_ES)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_ES) -o info/gpc-es.info gpc.texi

info/gpcs-es.info: $(GPC_TEXI_ES)
	[ -d "info" ] || mkdir "info"
	$(MAKEINFO_ES) --no-split -o info/gpcs-es.info gpcs.texi

gpc.dvi: $(GPC_TEXI_EN)
	TEXINPUTS=.:images:$$TEXINPUTS \
	LANG=en_GB LC_ALL=en_GB MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_EN)" \
	texi2dvi -t @afourpaper $(GPC_DOC_DIRS_EN) -b en/gpc.texi > gpc.to # TeX is way too noisy ...
	if grep -i overfull gpc.to gpc.log; then false; else true; fi
	cp images/GnuPascal.eps .

gpc.ps: gpc.dvi
	dvips -q -o gpc.ps gpc.dvi

# pdftex uses TEXPSHEADERS to search for GnuPascal.pdf -- some versions use TEXINPUTS now ...
gpc.pdf: $(GPC_TEXI_EN)
	TEXINPUTS=.:images:$$TEXINPUTS \
	TEXPSHEADERS=images:$$TEXPSHEADERS \
	LANG=en_GB LC_ALL=en_GB MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS) $(GPC_DOC_DIRS_EN)" \
	texi2pdf -t @afourpaper $(GPC_DOC_DIRS_EN) -b en/gpc.texi > gpc.po # TeX is way too noisy ...
	if grep -i overfull gpc.po gpc.log; then false; else true; fi

gpc.html: stamp-gpc-html
stamp-gpc-html: $(GPC_TEXI_EN) $(GPC_TEXI_DE) $(GPC_TEXI_HR) $(GPC_TEXI_ES)
	rm -rf "html"; mkdir "html"
	$(MAKEINFO_EN) --html --no-split -o "html"/gpcs-en.html en/gpcs.texi
	$(MAKEINFO_DE) --html --no-split -o "html"/gpcs-de.html de/gpcs.texi
	$(MAKEINFO_HR) --html --no-split -o "html"/gpcs-hr.html hr/gpcs.texi
	$(MAKEINFO_ES) --html --no-split -o "html"/gpcs-es.html es/gpcs.texi
	$(MAKEINFO_EN) --html $(GPC_DOC_DIRS_EN) -o "html"/gpc en/gpc.texi
	$(MAKEINFO_HR) --html $(GPC_DOC_DIRS_HR) -o "html"/gpc-hr hr/gpc.texi
	$(MAKEINFO_ES) --html $(GPC_DOC_DIRS_ES) -o "html"/gpc-es es/gpc.texi
	$(STAMP) "$@"

clean:
	-rm -rf info html stamp-gpc-html
	-rm -f gpc.aux gpc.cp gpc.cps gpc.fn gpc.ky gpc.log gpc.pg gpc.toc gpc.tp gpc.vr
	-rm -f gpc.tmp gpc.po gpc.to gpc.dvi gpc.ps gpc.pdf GnuPascal.eps
