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

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

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

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

## ----------------------------------------------------------------------
## Doc-base directory definitions
doc-base_dir	= $(share_dir)/doc-base

## ----------------------------------------------------------------------
## Package definitions
dtd_name	= debiandoc
pkg_name 	= $(dtd_name)-sgml
pkg_sgml	= $(pkg_name).sgml
pkg_html	= $(pkg_name).html

## ----------------------------------------------------------------------
## Package directory definitions
pkg_lib_dir	= $(lib_dir)/$(pkg_name)
pkg_spec_dir	= $(pkg_lib_dir)/spec
pkg_i18n_dir	= $(pkg_spec_dir)/i18n
pkg_bin_dir	= $(pkg_lib_dir)/bin
pkg_sgml_dir	= $(sgml_dir)/DebianDoc
pkg_dtd_dir	= $(pkg_sgml_dir)/dtd
pkg_doc_dir	= $(doc_dir)/$(pkg_name)
pkg_html_dir	= $(pkg_doc_dir)/$(pkg_html)

## ----------------------------------------------------------------------
## Package file definitions
DTDS		= $(dtd_name).dtd
ENTITIES	= general
CATALOG		= sgml.catalog
SPECS		= html latex2e lout texinfo text textov
MODULES		= DebianDoc_SGML.pm
BCONVS		= $(foreach spec,$(SPECS),$(dtd_name)2$(spec))
PCONVS		= $(dtd_name)2dvi $(dtd_name)2dvips $(dtd_name)2info
PROGRAMS	= $(BCONVS) $(PCONVS) $(dtd_name)2ps
MAN1S		= $(dtd_name)2ps
CONVSMAN	= $(dtd_name)2ps
HELPERS		= saspconvert saspconvert2
LANGUAGES	= da de es fr it nl 
I18NS		= $(foreach spec,$(SPECS),$(addsuffix .$(spec),$(LANGUAGES)))
DOCIDS		= $(pkg_name)

## ----------------------------------------------------------------------
## Package specific install definitions
NSGMLS		= nsgmls -l -D.
SASPCONVERT	= ./saspconvert size
SASPCONVERT2	= ./saspconvert2 book
SGMLSPL		= sgmlspl spec/html

## ----------------------------------------------------------------------
## General (un)install definitions
SHELL		= /bin/bash
PATH		:=:$(PATH)
INSTALL		= /usr/bin/install
INSTALL_DIR	= $(INSTALL) -d -m 755
INSTALL_SCRIPT	= $(INSTALL) -c -m 755
INSTALL_DATA	= $(INSTALL) -c -m 644
LN		= /bin/ln -sf
RM		= /bin/rm -f
RMR		= /bin/rm -rf
RMDIR		= /bin/rmdir

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

bin:		$(BCONVS)

$(BCONVS):	template conversions mkconversions
		./mkconversions $(pkg_bin_dir) $(pkg_spec_dir)

doc:		$(pkg_html)

$(pkg_html):	$(pkg_sgml) spec/html dtd/$(dtd_name).dtd saspconvert
		$(RMR) $@
		set -e; \
		export SGML_CATALOG_FILES="$(CATALOG)"; \
		export SGML_SEARCH_PATH="."; \
		export PERL5LIB="spec"; \
		$(NSGMLS) $< | $(SASPCONVERT) | $(SASPCONVERT2) | $(SGMLSPL) $@/

install:	all
		set -e; \
		$(INSTALL_DIR) $(pkg_lib_dir); \
		for f in $(CATALOG); \
		do \
			$(INSTALL_DATA) $$f $(pkg_lib_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(pkg_spec_dir); \
		for f in $(SPECS) $(MODULES); \
		do \
			$(INSTALL_DATA) spec/$$f $(pkg_spec_dir)/$$f; \
		done
		set -e; \
		$(INSTALL_DIR) $(pkg_i18n_dir); \
		for f in $(I18NS); \
		do \
			if [ -f i18n/$$f ]; \
			then \
				$(INSTALL_DATA) i18n/$$f $(pkg_i18n_dir)/$$f; \
			fi; \
		done
		set -e; \
		$(INSTALL_DIR) $(pkg_bin_dir); \
		for f in $(HELPERS); \
		do \
			$(INSTALL_SCRIPT) $$f $(pkg_bin_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(ent_dir); \
		for f in $(ENTITIES); \
		do \
			$(INSTALL_DATA) entities/$$f $(ent_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(dtd_dir); \
		for f in $(DTDS); \
		do \
			$(INSTALL_DATA) dtd/$$f $(dtd_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(pkg_dtd_dir); \
		$(LN) ../../dtd/$(dtd_name).dtd $(pkg_dtd_dir)/`basename $(pkg_sgml_dir)`
		set -e; \
		$(INSTALL_DIR) $(pkg_doc_dir); \
		$(INSTALL_DATA) $(pkg_sgml) $(pkg_doc_dir)/$(pkg_sgml)
		set -e; \
		$(INSTALL_DIR) $(pkg_html_dir); \
		for f in $(pkg_html)/*; \
		do \
			$(INSTALL_DATA) $$f $(pkg_html_dir)/.; \
		done
		set -e; \
		$(INSTALL_DIR) $(doc-base_dir); \
		for f in $(DOCIDS); \
		do \
			$(INSTALL_DATA) doc-base/$$f $(doc-base_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(bin_dir); \
		for f in $(PROGRAMS); \
		do \
			$(INSTALL_SCRIPT) $$f $(bin_dir); \
		done
		set -e; \
		$(INSTALL_DIR) $(man1_dir); \
		for f in $(MAN1S); \
		do \
			$(INSTALL_DATA) $$f.$(man1) $(man1_dir)/$$f.$(man1); \
		done; \
		for f in $(BCONVS) $(PCONVS); \
		do \
			$(LN) $(CONVSMAN).$(man1) $(man1_dir)/$$f.$(man1); \
		done

uninstall:	
		set -e; \
		for f in $(BCONVS) $(PCONVS); \
		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; \
		if [ -d $(doc-base_dir) ]; \
		then \
			for f in $(DOCIDS); \
			do \
				$(RM) $(doc-base_dir)/$$f; \
			done; \
			if [ -z "`ls $(doc-base_dir)`" ]; \
			then \
				$(RMDIR) $(doc-base_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_html_dir) ]; \
		then \
			$(RM) $(pkg_html_dir)/*; \
			if [ -z "`ls $(pkg_html_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_html_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_doc_dir) ]; \
		then \
			$(RM) $(pkg_doc_dir)/$(pkg_sgml); \
			if [ -z "`ls $(pkg_doc_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_doc_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_dtd_dir) ]; \
		then \
			$(RM) $(pkg_dtd_dir)/`basename $(pkg_sgml_dir)`; \
			if [ -z "`ls $(pkg_dtd_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_dtd_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_sgml_dir) ] && [ -z "`ls $(pkg_sgml_dir)`" ]; \
		then \
			$(RMDIR) $(pkg_sgml_dir); \
		fi
		set -e; \
		if [ -d $(dtd_dir) ]; \
		then \
			for f in $(DTDS); \
			do \
				$(RM) $(dtd_dir)/$$f; \
			done; \
			if [ -z "`ls $(dtd_dir)`" ]; \
			then \
				$(RMDIR) $(dtd_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(ent_dir) ]; \
		then \
			for f in $(ENTITIES); \
			do \
				$(RM) $(ent_dir)/$$f; \
			done; \
			if [ -z "`ls $(ent_dir)`" ]; \
			then \
				$(RMDIR) $(ent_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(sgml_dir) ] && [ -z "`ls $(sgml_dir)`" ]; \
		then \
			$(RMDIR) $(sgml_dir); \
		fi
		set -e; \
		if [ -d $(pkg_bin_dir) ]; \
		then \
			for f in $(HELPERS); \
			do \
				$(RM) $(pkg_bin_dir)/$$f; \
			done; \
			if [ -z "`ls $(pkg_bin_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_bin_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_i18n_dir) ]; \
		then \
			for f in $(I18NS); \
			do \
				$(RM) $(pkg_i18n_dir)/$$f; \
			done; \
			if [ -z "`ls $(pkg_i18n_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_i18n_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_spec_dir) ]; \
		then \
			for f in $(SPECS) $(MODULES); \
			do \
				$(RM) $(pkg_spec_dir)/$$f; \
			done; \
			if [ -z "`ls $(pkg_spec_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_spec_dir); \
			fi; \
		fi
		set -e; \
		if [ -d $(pkg_lib_dir) ]; \
		then \
			for f in $(CATALOG); \
			do \
				$(RM) $(pkg_lib_dir)/$$f; \
			done; \
			if [ -z "`ls $(pkg_lib_dir)`" ]; \
			then \
				$(RMDIR) $(pkg_lib_dir); \
			fi; \
		fi

clean:
		$(RMR) $(pkg_html)
		$(RM) $(BCONVS)

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