## Process this file with automake to produce Makefile.in
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is part of LIBTASN1.
#
# 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 3 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, see <http://www.gnu.org/licenses/>.

SUBDIRS = cyclo
if ENABLE_GTK_DOC
SUBDIRS += reference
endif

EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf stamp_docs

info_TEXINFOS = libtasn1.texi
libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS)

AM_MAKEINFOFLAGS = -I $(top_builddir)/doc
TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS)
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \
	--no-split --number-sections --css-include=texinfo.css

dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1

HELP2MAN_OPTS = --info-page libtasn1

asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac
	$(HELP2MAN) $(HELP2MAN_OPTS) \
		--name="ASN.1 syntax tree generator for libtasn1" \
		--output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT)

asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac
	$(HELP2MAN) $(HELP2MAN_OPTS) \
		--name="ASN.1 DER encoder" \
		--output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT)

asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac
	$(HELP2MAN) $(HELP2MAN_OPTS) \
		--name="ASN.1 DER decoder" \
		--output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT)

gdoc_MANS =
gdoc_MANS += man/asn1_get_length_der.3
gdoc_MANS += man/asn1_get_tag_der.3
gdoc_MANS += man/asn1_get_length_ber.3
gdoc_MANS += man/asn1_get_octet_der.3
gdoc_MANS += man/asn1_get_object_id_der.3
gdoc_MANS += man/asn1_get_bit_der.3
gdoc_MANS += man/asn1_der_decoding2.3
gdoc_MANS += man/asn1_der_decoding.3
gdoc_MANS += man/asn1_der_decoding_element.3
gdoc_MANS += man/asn1_der_decoding_startEnd.3
gdoc_MANS += man/asn1_expand_any_defined_by.3
gdoc_MANS += man/asn1_expand_octet_string.3
gdoc_MANS += man/asn1_decode_simple_der.3
gdoc_MANS += man/asn1_decode_simple_ber.3
gdoc_MANS += man/asn1_perror.3
gdoc_MANS += man/asn1_strerror.3
gdoc_MANS += man/asn1_find_node.3
gdoc_MANS += man/asn1_length_der.3
gdoc_MANS += man/asn1_octet_der.3
gdoc_MANS += man/asn1_encode_simple_der.3
gdoc_MANS += man/asn1_bit_der.3
gdoc_MANS += man/asn1_der_coding.3
gdoc_MANS += man/asn1_write_value.3
gdoc_MANS += man/asn1_read_value.3
gdoc_MANS += man/asn1_read_value_type.3
gdoc_MANS += man/asn1_read_tag.3
gdoc_MANS += man/asn1_read_node_value.3
gdoc_MANS += man/asn1_array2tree.3
gdoc_MANS += man/asn1_delete_structure.3
gdoc_MANS += man/asn1_delete_structure2.3
gdoc_MANS += man/asn1_delete_element.3
gdoc_MANS += man/asn1_create_element.3
gdoc_MANS += man/asn1_print_structure.3
gdoc_MANS += man/asn1_number_of_elements.3
gdoc_MANS += man/asn1_find_structure_from_oid.3
gdoc_MANS += man/asn1_copy_node.3
gdoc_MANS += man/asn1_dup_node.3
gdoc_MANS += man/asn1_parser2tree.3
gdoc_MANS += man/asn1_parser2array.3
gdoc_MANS += man/asn1_check_version.3
gdoc_TEXINFOS =
gdoc_TEXINFOS += texi/decoding.c.texi
gdoc_TEXINFOS += texi/errors.c.texi
gdoc_TEXINFOS += texi/parser_aux.c.texi
gdoc_TEXINFOS += texi/coding.c.texi
gdoc_TEXINFOS += texi/element.c.texi
gdoc_TEXINFOS += texi/gstr.c.texi
gdoc_TEXINFOS += texi/structure.c.texi
gdoc_TEXINFOS += texi/ASN1.c.texi
gdoc_TEXINFOS += texi/version.c.texi
gdoc_TEXINFOS += texi/asn1_get_length_der.texi
gdoc_TEXINFOS += texi/asn1_get_tag_der.texi
gdoc_TEXINFOS += texi/asn1_get_length_ber.texi
gdoc_TEXINFOS += texi/asn1_get_octet_der.texi
gdoc_TEXINFOS += texi/asn1_get_object_id_der.texi
gdoc_TEXINFOS += texi/asn1_get_bit_der.texi
gdoc_TEXINFOS += texi/asn1_der_decoding2.texi
gdoc_TEXINFOS += texi/asn1_der_decoding.texi
gdoc_TEXINFOS += texi/asn1_der_decoding_element.texi
gdoc_TEXINFOS += texi/asn1_der_decoding_startEnd.texi
gdoc_TEXINFOS += texi/asn1_expand_any_defined_by.texi
gdoc_TEXINFOS += texi/asn1_expand_octet_string.texi
gdoc_TEXINFOS += texi/asn1_decode_simple_der.texi
gdoc_TEXINFOS += texi/asn1_decode_simple_ber.texi
gdoc_TEXINFOS += texi/asn1_perror.texi
gdoc_TEXINFOS += texi/asn1_strerror.texi
gdoc_TEXINFOS += texi/asn1_find_node.texi
gdoc_TEXINFOS += texi/asn1_length_der.texi
gdoc_TEXINFOS += texi/asn1_octet_der.texi
gdoc_TEXINFOS += texi/asn1_encode_simple_der.texi
gdoc_TEXINFOS += texi/asn1_bit_der.texi
gdoc_TEXINFOS += texi/asn1_der_coding.texi
gdoc_TEXINFOS += texi/asn1_write_value.texi
gdoc_TEXINFOS += texi/asn1_read_value.texi
gdoc_TEXINFOS += texi/asn1_read_value_type.texi
gdoc_TEXINFOS += texi/asn1_read_tag.texi
gdoc_TEXINFOS += texi/asn1_read_node_value.texi
gdoc_TEXINFOS += texi/asn1_array2tree.texi
gdoc_TEXINFOS += texi/asn1_delete_structure.texi
gdoc_TEXINFOS += texi/asn1_delete_structure2.texi
gdoc_TEXINFOS += texi/asn1_delete_element.texi
gdoc_TEXINFOS += texi/asn1_create_element.texi
gdoc_TEXINFOS += texi/asn1_print_structure.texi
gdoc_TEXINFOS += texi/asn1_number_of_elements.texi
gdoc_TEXINFOS += texi/asn1_find_structure_from_oid.texi
gdoc_TEXINFOS += texi/asn1_copy_node.texi
gdoc_TEXINFOS += texi/asn1_dup_node.texi
gdoc_TEXINFOS += texi/asn1_parser2tree.texi
gdoc_TEXINFOS += texi/asn1_parser2array.texi
gdoc_TEXINFOS += texi/asn1_check_version.texi

GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c	\
	$(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c	\
	$(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c		\
	$(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c		\
	$(top_srcdir)/lib/version.c

compare-makefile:
	@MANS=""; \
	TEXINFOS=""; \
	for i in $(GDOC_SRC); do \
		BASE=`basename $$i`; \
		TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \
	done; \
	FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \
	for i in $$FUNCS; do \
		MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \
		TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \
	done; \
	grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \
		perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \
		perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \
		> tmp-$@;
	diff -u $(srcdir)/Makefile.am tmp-$@
	rm -f tmp-$@

$(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs

clean-local:
	-rm -f stamp_docs

stamp_docs:
	$(mkdir_p) man texi; \
	for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \
		echo -n "Creating documentation for $$i... " && \
		$(srcdir)/gdoc -man \
			-module $(PACKAGE) \
			-pkg-name "$(PACKAGE_NAME)" \
			-sourceversion $(VERSION) \
			-include libtasn1.h \
			-seeinfo $(PACKAGE) -verbatimcopying \
			-copyright "2006-2015 Free Software Foundation, Inc." \
			-function $$i \
			$(GDOC_SRC) > man/$$i.3 && \
		$(srcdir)/gdoc -texinfo -function $$i \
			$(GDOC_SRC) > texi/$$i.texi && \
		echo "ok"; \
	done; \
	for i in $(GDOC_SRC); do \
		BASE=`basename $$i`; \
		echo -n "Creating documentation for $$i... " && \
		$(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \
		echo "ok"; \
	done
	touch $@

.PHONY: compare-makefile
