## ----------------------------------------------------------------------
## Makefile: 
## ----------------------------------------------------------------------

## ----------------------------------------------------------------------
## General directory definitions
prefix		= /usr/local
lib_dir		= $(prefix)/lib
bin_dir		= $(prefix)/bin
man_dir		= $(prefix)/share/man

## ----------------------------------------------------------------------
## Manual pages directory definitions
man1		= 1
man1_dir	= $(man_dir)/man$(man1)

## ----------------------------------------------------------------------
## SGML directory definitions
sgml_dir	= $(lib_dir)/sgml
cat_dir		= $(sgml_dir)/catalog
decl_dir	= $(sgml_dir)/declaration
dtd_dir		= $(sgml_dir)/dtd
ent_dir		= $(sgml_dir)/entities

## ----------------------------------------------------------------------
## Package definitions
dtd_name	= debiandoc
dtd_ucname	= DebianDoc

## ----------------------------------------------------------------------
## Package directory definitions
pkg_name 	= $(dtd_name)-sgml
pkg_dir		= $(lib_dir)/$(pkg_name)
pkg_lib_dir	= $(pkg_dir)/lib
pkg_perl_dir	= $(pkg_lib_dir)/DebianDoc_SGML
pkg_format_dir	= $(pkg_perl_dir)/Format
pkg_locale_dir	= $(pkg_perl_dir)/Locale
pkg_map_dir	= $(pkg_perl_dir)/Map
pkg_bin_dir	= $(pkg_dir)/bin
pkg_sgml_dir	= $(sgml_dir)/$(dtd_ucname)
pkg_cat_dir	= $(pkg_sgml_dir)/catalog
pkg_decl_dir	= $(pkg_sgml_dir)/declaration
pkg_dtd_dir	= $(pkg_sgml_dir)/dtd
pkg_ent_dir	= $(pkg_sgml_dir)/entities

## ----------------------------------------------------------------------
## Package file definitions
DECLARATIONS	= $(dtd_name).decl
DTDS		= $(dtd_name).dtd
ENTITIES	= debiandoc-lat1 debiandoc-lat2
CATALOG		= sgml.catalog
FORMATS		= HTML LaTeX Texinfo Text TextOV
SPECS		= html latex texinfo text textov
BCONVS		= $(foreach spec,$(SPECS),$(dtd_name)2$(spec))
PCONVS		= $(dtd_name)2info $(dtd_name)2latexdvi $(dtd_name)2latexpdf \
			$(dtd_name)2latexps
PROGRAMS	= $(BCONVS) $(PCONVS)
MAN1S		= $(pkg_name)
HELPERS		= saspconvert

## ----------------------------------------------------------------------
## General (un)install definitions
SHELL		= /bin/bash
PATH		:=:$(PATH)
INSTALL		= /usr/bin/install
INSTALL_DIR	= $(INSTALL) -d -m 755
INSTALL_SCRIPT	= $(INSTALL) -m 755
INSTALL_FILE	= $(INSTALL) -m 644
LN		= /bin/ln -sf
RM		= /bin/rm -f
RMDIR		= /bin/rmdir -p --ignore-fail-on-non-empty

## ----------------------------------------------------------------------
## Targets
all:		bin

bin:		$(foreach bconv,$(BCONVS),tools/bin/$(bconv))

$(foreach bconv,$(BCONVS),tools/bin/$(bconv)): \
		tools/bin/template tools/bin/conversions tools/bin/mkconversions

		set -e; \
		cd tools/bin; \
		./mkconversions $(pkg_format_dir) $(pkg_bin_dir); \
		cd -

install:	all

		set -e; \
		$(INSTALL_DIR) $(ent_dir); \
		for f in $(ENTITIES); \
		do \
			$(INSTALL_FILE) sgml/entities/$$f $(ent_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(decl_dir); \
		for f in $(DECLARATIONS); \
		do \
			$(INSTALL_FILE) sgml/declaration/$$f $(decl_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(dtd_dir); \
		for f in $(DTDS); \
		do \
			$(INSTALL_FILE) sgml/dtd/$$f $(dtd_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(pkg_dir); \
		for f in $(CATALOG); \
		do \
			$(INSTALL_FILE) sgml/catalog/$$f $(pkg_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(pkg_dtd_dir); \
		$(LN) ../../dtd/$(dtd_name).dtd $(pkg_dtd_dir)/$(dtd_ucname)

		set -e; \
		$(INSTALL_DIR) $(pkg_format_dir); \
		for f in `ls tools/lib/Format/*.pm`; \
		do \
			$(INSTALL_FILE) $$f $(pkg_format_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(pkg_locale_dir); \
		for f in `ls tools/lib/Locale/*.pm`; \
		do \
			$(INSTALL_FILE) $$f $(pkg_locale_dir); \
		done
		for d in `ls -d tools/lib/Locale/*_*`; \
		do \
			$(INSTALL_DIR) $(pkg_locale_dir)/`basename $$d`; \
			for f in $(FORMATS); \
			do \
				$(INSTALL_FILE) $$d/$$f $(pkg_locale_dir)/`basename $$d`; \
			done; \
		done

		set -e; \
		$(INSTALL_DIR) $(pkg_map_dir); \
		for f in `ls tools/lib/Map/*.pm`; \
		do \
			$(INSTALL_FILE) $$f $(pkg_map_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(pkg_bin_dir); \
		for f in $(HELPERS); \
		do \
			$(INSTALL_SCRIPT) tools/bin/$$f $(pkg_bin_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(bin_dir); \
		for f in $(PROGRAMS); \
		do \
			$(INSTALL_SCRIPT) tools/bin/$$f $(bin_dir); \
		done

		set -e; \
		$(INSTALL_DIR) $(man1_dir); \
		for f in $(MAN1S); \
		do \
			$(INSTALL_FILE) tools/man/$$f.$(man1) $(man1_dir)/$$f.$(man1); \
		done; \
		for f in $(PROGRAMS); \
		do \
			$(LN) $(firstword $(MAN1S)).$(man1) $(man1_dir)/$$f.$(man1); \
		done

uninstall:

		set -e; \
		for f in $(PROGRAMS); \
		do \
			$(RM) $(man1_dir)/$$f.$(man1); \
		done; \
		for f in $(MAN1S); \
		do \
			$(RM) $(man1_dir)/$$f.$(man1); \
		done

		set -e; \
		for f in $(PROGRAMS); \
		do \
			$(RM) $(bin_dir)/$$f; \
		done

		set -e; \
		for f in $(HELPERS); \
		do \
			$(RM) $(pkg_bin_dir)/$$f; \
		done; \
		$(RMDIR) $(pkg_bin_dir)

		set -e; \
		for f in `ls $(pkg_map_dir)/*.pm`; \
		do \
			$(RM) $$f; \
		done; \
		$(RMDIR) $(pkg_map_dir)

		set -e; \
		for d in `ls -d $(pkg_locale_dir)/*_*`; \
		do \
			d=`basename $$d`; \
			for f in $(FORMATS); \
			do \
				$(RM) $(pkg_locale_dir)/$$d/$$f; \
			done; \
			$(RMDIR) $(pkg_locale_dir)/$$d; \
		done; \
		for f in `ls $(pkg_locale_dir)/*.pm`; \
		do \
			$(RM) $$f; \
		done; \
		$(RMDIR) $(pkg_locale_dir)

		set -e; \
		for f in `ls $(pkg_format_dir)/*.pm`; \
		do \
			$(RM) $$f; \
		done; \
		$(RMDIR) $(pkg_format_dir)

		set -e; \
		$(RM) $(pkg_dtd_dir)/$(dtd_ucname); \
		$(RMDIR) $(pkg_dtd_dir)

		set -e; \
		for f in $(CATALOG); \
		do \
			$(RM) $(pkg_dir)/$$f; \
		done; \
		$(RMDIR) $(pkg_dir)

		set -e; \
		for f in $(DTDS); \
		do \
			$(RM) $(dtd_dir)/$$f; \
		done; \
		$(RMDIR) $(dtd_dir)

		set -e; \
		for f in $(DECLARATIONS); \
		do \
			$(RM) $(decl_dir)/$$f; \
		done; \
		$(RMDIR) $(decl_dir)

		set -e; \
		for f in $(ENTITIES); \
		do \
			$(RM) $(ent_dir)/$$f; \
		done; \
		$(RMDIR) $(ent_dir)

clean:

		$(RM) $(foreach bconv,$(BCONVS),tools/bin/$(bconv))

## ----------------------------------------------------------------------
