Files
platform-espressif32/examples/espidf-coap-server/components/libcoap/doc/Makefile.am
T
Valerii Koval 4a461f5221 Update examples
2023-01-06 14:29:59 +02:00

289 lines
13 KiB
Makefile

# doc/Makefile.am
#
# Copyright (C) 2015-2018 Carsten Schoenert <c.schoenert@t-online.de>
# 2018-2022 Jon Shallow <supjps-libcoap@jpshallow.com>
#
# SPDX-License-Identifier: BSD-2-Clause
#
# This file is part of the CoAP C library libcoap. Please see README and
# COPYING for terms of use.
# We can only perfom the targets in this directory if doxygen is present.
CLEANFILES = \
doxygen_sqlite3.db
EXTRA_DIST = \
docbook.local.css \
upgrade_4.2.1_4.3.0.txt \
upgrade_4.3.0_4.3.1.txt \
main.md \
module_api_wrap.h
if HAVE_DOXYGEN
man-page-cleanup:
@rm -f $(top_builddir)/doc/DoxygenLayout.xml
@rm -rf $(top_builddir)/doc/man_tmp
@rm -rf $(top_builddir)/doc/man_html
man-page-prepare: man-page-cleanup
@$(MKDIR_P) $(top_builddir)/doc/man_tmp
@$(MKDIR_P) $(top_builddir)/doc/man_html
man-page-start: man-page-prepare
## Setup the man page tab
@echo '' > $(top_builddir)/doc/scratch_insert_file
@echo ' <tab type="usergroup" visible="yes" url="@ref manpage" title="Manual Pages">' > $(top_builddir)/doc/insert_file
@echo ' <tab type="usergroup" visible="yes" url="@ref man_summary" title="Man Pages Summary">' >> $(top_builddir)/doc/insert_file
##
@echo '/** @page manpage Manual Pages' > $(top_builddir)/doc/man_tmp/manpage.dox
@echo ' Here are the libcoap API and Example manual pages:' >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo ' <table class="directory">' >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " <tr>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " <td class=\"entry\" align=\"left\"> @ref man_summary </td><td class=\"desc\" align=\"left\">Man Pages Summary</td>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " </tr>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " <tr class=\"even\">" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " <td class=\"entry\" align=\"left\"> @ref man_individual </td><td class=\"desc\" align=\"left\">Individual Man Pages</td>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " </tr>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo " </table>" >> $(top_builddir)/doc/man_tmp/manpage.dox
@echo ' */' >> $(top_builddir)/doc/man_tmp/manpage.dox
##
@echo '/** @page man_summary Manual Pages Summary' > $(top_builddir)/doc/man_tmp/man_summary.dox
@echo ' Here are a list of libcoap API summary man pages, some of which have code examples, and Examples:' >> $(top_builddir)/doc/man_tmp/man_summary.dox
@echo ' <table class="directory">' >> $(top_builddir)/doc/man_tmp/man_summary.dox
##
@echo '/** @page man_individual Individual Manual Pages' > $(top_builddir)/doc/man_tmp/man_individual.dox
@echo ' Here are a list of libcoap API individual man pages, some of which have code examples:' >> $(top_builddir)/doc/man_tmp/man_individual.dox
@echo ' <table class="directory">' >> $(top_builddir)/doc/man_tmp/man_individual.dox
##
## Setup the upgrading tab
@echo '/** @page upgrading Upgrading' > $(top_builddir)/doc/man_tmp/upgrading.dox
@echo ' Upgrading between libcoap versions:' >> $(top_builddir)/doc/man_tmp/upgrading.dox
@echo ' <table class="directory">' >> $(top_builddir)/doc/man_tmp/upgrading.dox
man-page-build: upg-page-build man-page-start
@MAN_FILES=`find $(top_srcdir)/man/ -type f -name "coap.txt.in" ; find $(top_srcdir)/man/ -type f -name "coap_*.in" | ALL=C sort ; find $(top_srcdir)/man/ -type f -name "coap-*.in" | LC_ALL=C sort` ;\
UPG_FILES=`find $(top_srcdir)/doc/ -type f -name "upgrade_*.txt" | ALL=C sort` ;\
HTML_FILES=`find $(top_builddir)/man/ -type f -name "*.html"` ;\
COUNT_MAN_FILES=`echo $${MAN_FILES} | wc -w` ;\
COUNT_HTML_FILES=`echo $${HTML_FILES} | wc -w` ;\
## We need the HTML files from the Asciidoc source files, check if they around, otherwise build them.
if [ "$${COUNT_MAN_FILES}" != "$${COUNT_HTML_FILES}" ]; then \
$(MAKE) -C ../man ;\
fi ;\
##
## Build the summary man pages
##
for FILE in $${MAN_FILES} ; do \
BASE=`basename $${FILE} | cut -d. -f 1` ;\
MANUAL=`egrep -B 1 "^====" $${FILE} | head -1` ;\
SUMMARY=`egrep -B 2 "^SYNOPSIS" $${FILE} | ${SED} 's/coap-//g' | cut -d\- -f2 | cut -c2- | head -1` ;\
##
## Fix and copy .html file across
##
if [ -f $(top_builddir)/man/$${BASE}.html ]; then \
## Correct case sensitive Name and Synopsis on master (used later)
$(SED) -i 's^<h2>Name</h2>^<h2>NAME</h2>^g' $(top_builddir)/man/$${BASE}.html ;\
$(SED) -i 's^<h2>Synopsis</h2>^<h2>SYNOPSIS</h2>^g' $(top_builddir)/man/$${BASE}.html ;\
cp -f $(top_builddir)/man/$${BASE}.html $(top_builddir)/doc/man_html/$${BASE}.html ;\
else \
echo "ERROR: $(top_builddir)/man/$${BASE}.html not found!";\
exit 1 ;\
fi ;\
## Build the manual insert page
echo "/// @page man_$${BASE} $${MANUAL}" > $(top_builddir)/doc/man_tmp/$${MANUAL}.dox ;\
echo "/// @htmlinclude $${BASE}.html $${MANUAL}" >> $(top_builddir)/doc/man_tmp/$${MANUAL}.dox ;\
## Update insert_file (the list is sorted appropriately)
echo " <tab type=\"user\" visible=\"yes\" url=\"@ref man_$${BASE}\" title=\"$${MANUAL} - $${SUMMARY}\" intro=\"\"/>" >> $(top_builddir)/doc/insert_file ;\
## Update the summary man page
echo " <tr$${ROW_EVEN}>" >> $(top_builddir)/doc/man_tmp/man_summary.dox ;\
echo " <td class=\"entry\" align=\"left\"> @ref man_$${BASE} </td><td class=\"desc\" align=\"left\">$${SUMMARY}</td>" >> $(top_builddir)/doc/man_tmp/man_summary.dox ;\
echo " </tr>" >> $(top_builddir)/doc/man_tmp/man_summary.dox ;\
if [ -z "$${ROW_EVEN}" ] ; then \
ROW_EVEN=" class=\"even\"" ;\
else \
ROW_EVEN= ;\
fi \
done ;\
##
## Close off the man page summary file
##
echo ' </table>' >> $(top_builddir)/doc/man_tmp/man_summary.dox ;\
echo ' */' >> $(top_builddir)/doc/man_tmp/man_summary.dox ;\
echo ' </tab>' >> $(top_builddir)/doc/insert_file ;\
##
## Build the individual man pages
##
echo ' <tab type="usergroup" visible="yes" url="@ref man_individual" title="Individual Man Pages">' >> $(top_builddir)/doc/insert_file ;\
for FILE in $${MAN_FILES} ; do \
BASE=`basename $${FILE} | cut -d. -f 1` ;\
LIST=`${SED} -ne '/^NAME/,/^SYNOPSIS/p;/^SYNOPSIS/q' $${FILE} | ${SED} -ne '/coap_/{ s/ *, *//g ; p }' | egrep -v "^$${BASE}$$"` ;\
for ENTRY in $${LIST} ; do \
MANUAL="$${ENTRY}(3)" ;\
## Build the manual insert page
echo "/// @page man_$${ENTRY} $${MANUAL}" > $(top_builddir)/doc/man_tmp/$${MANUAL}.dox ;\
echo "/// @htmlinclude $${ENTRY}.html $${MANUAL}" >> $(top_builddir)/doc/man_tmp/$${MANUAL}.dox ;\
## Create html file
cat $(top_builddir)/man/$${BASE}.html | ${SED} "s/Function: $${ENTRY}(/<a class=\"anchor\" id=\"$${ENTRY}\"><\/a>\0/" > $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
## Update scratch_insert_file for sorting later
echo "$${ENTRY}" >> $(top_builddir)/doc/scratch_insert_file ;\
done ;\
done ;\
##
## Process the (sorted) list of individual man pages
##
for ENTRY in `cat $(top_builddir)/doc/scratch_insert_file | ALL=C sort -u` ; do \
## Update the individual man page
MANUAL="$${ENTRY}(3)" ;\
echo " <tab type=\"user\" visible=\"yes\" url=\"@ref man_$${ENTRY}\" title=\"$${MANUAL}\" intro=\"\"/>" >> $(top_builddir)/doc/insert_file ;\
echo " <tr$${ROW_EVEN}>" >> $(top_builddir)/doc/man_tmp/man_individual.dox ;\
echo " <td class=\"entry\" align=\"left\"> @ref man_$${ENTRY} </td><td class=\"desc\" align=\"left\"></td>" >> $(top_builddir)/doc/man_tmp/man_individual.dox ;\
echo " </tr>" >> $(top_builddir)/doc/man_tmp/man_individual.dox ;\
if [ -z "$${ROW_EVEN}" ] ; then \
ROW_EVEN=" class=\"even\"" ;\
else \
ROW_EVEN= ;\
fi \
done ;\
##
## Close off the individual man pages
##
echo ' </table>' >> $(top_builddir)/doc/man_tmp/man_individual.dox ;\
echo ' */' >> $(top_builddir)/doc/man_tmp/man_individual.dox ;\
echo ' </tab>' >> $(top_builddir)/doc/insert_file ;\
##
## Close off the man page top level
##
echo ' </tab>' >> $(top_builddir)/doc/insert_file ;\
##
## Add in the deprecated tab
##
echo ' <tab type="user" visible="yes" url="@ref deprecated" title="Deprecated Items" intro=""/>' >> $(top_builddir)/doc/insert_file ;\
##
## Start the upgrade tab
##
echo ' <tab type="usergroup" visible="yes" url="@ref upgrading" title="Upgrading">' >> $(top_builddir)/doc/insert_file ;\
for FILE in $${UPG_FILES} ; do \
BASE=`basename $${FILE} | $(SED) "s/\.txt$$//g"`; \
UPGRADE=`echo $${BASE} | $(SED) "s/^upgrade_//g"`; \
CUPGRADE=`echo $${UPGRADE} | $(SED) "s/\./-/g"`; \
SUMMARY=`head -1 $${FILE} | ${SED} 's/^= //g'` ;\
## Build the upgrade insert page
echo "/// @page upg_$${CUPGRADE} $${UPGRADE}" > $(top_builddir)/doc/man_tmp/$${UPGRADE}.dox ;\
echo "/// @htmlinclude $${BASE}.html $${UPGRADE}" >> $(top_builddir)/doc/man_tmp/$${UPGRADE}.dox ;\
## Update insert_file
echo " <tab type=\"user\" visible=\"yes\" url=\"@ref upg_$${CUPGRADE}\" title=\"$${SUMMARY}\" intro=\"\"/>" >> $(top_builddir)/doc/insert_file ;\
## Update the upgrading page
echo " <tr$${ROW_EVEN}>" >> $(top_builddir)/doc/man_tmp/upgrading.dox ;\
echo " <td class=\"entry\" align=\"left\"> @ref upg_$${CUPGRADE} </td><td class=\"desc\" align=\"left\">$${SUMMARY}</td>" >> $(top_builddir)/doc/man_tmp/upgrading.dox ;\
echo " </tr>" >> $(top_builddir)/doc/man_tmp/upgrading.dox ;\
if [ -z "$${ROW_EVEN}" ] ; then \
ROW_EVEN=" class=\"even\"" ;\
else \
ROW_EVEN= ;\
fi ;\
if [ -f $(top_builddir)/doc/$${BASE}.html ]; then \
cp -f $(top_builddir)/doc/$${BASE}.html $(top_builddir)/doc/man_html/$${BASE}.html ;\
## Correct case sensitive Name and Synopsis
$(SED) -i 's^<div class="toc"><p><strong>^<div class="section"><p><strong>^' $(top_builddir)/doc/man_html/$${BASE}.html ;\
else \
echo "ERROR: $(top_builddir)/doc/$${BASE}.html not found!";\
exit 1 ;\
fi \
done ;\
##
## Close off the upgrading tab
##
echo ' </table>' >> $(top_builddir)/doc/man_tmp/upgrading.dox ;\
echo ' */' >> $(top_builddir)/doc/man_tmp/upgrading.dox ;\
##
## Close off the insert file list
##
echo ' </tab>' >> $(top_builddir)/doc/insert_file ;\
##
## Create and Update the DoxygenLayout.xml file
##
$(DOXYGEN) -l ;\
$(SED) -i 's/<tab type="pages" visible="yes" /<tab type="pages" visible="no" /g' $(top_builddir)/doc/DoxygenLayout.xml ;\
$(SED) -i '/<tab type="examples" visible=.*/r insert_file' $(top_builddir)/doc/DoxygenLayout.xml ;\
##
## Fix up man html files, adding links
##
for FILE in $${MAN_FILES} `cat $(top_builddir)/doc/scratch_insert_file` ; do \
ENTRY=`basename $${FILE} | cut -d . -f1` ;\
## Functions defined in the body
$(SED) -i "s^\(<span class=\"strong\"><strong>\)\(coap[_-][0-9a-z_]*\)\(</strong></span>(\|(\)^\1<a class=\"st-desc\" href=\"man_\2.html#\2\" target=\"_self\">\2</a>\3^g" $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
## The SYNOPSIS entries
$(SED) -i "s^\(<p><span class=\"strong\"><strong>[a-z0-9_ \*]*\)\(coap_[0-9a-z_]*\)\([(;]\)^\1<a class=\"st-synopsis\" href=\"man_\2.html#\2\" target=\"_self\">\2</a>\3^g" $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
## Function in NAME and Examples
$(SED) -i "s^\([ =,] \|[(!>]\|\^\)\(coap_[0-9a-z_]*\)\([(,]\| \-\| \xe2\x80\x94\)^\1<a href=\"man_\2.html#\2\" target=\"_self\">\2</a>\3^g" $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
## Do for a second time in case of overlaps
$(SED) -i "s^\([ =,] \|[(!>]\|\^\)\(coap_[0-9a-z_]*\)\([(,]\| \-\| \xe2\x80\x94\)^\1<a href=\"man_\2.html#\2\" target=\"_self\">\2</a>\3^g" $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
done ;\
##
## Do the highlighting
##
for ENTRY in `cat $(top_builddir)/doc/scratch_insert_file` ; do \
${SED} -i "s/\($${ENTRY}\)\([<(\*, ]\)/<span class=\"man-highlight\">\1<\/span>\2/g" $(top_builddir)/doc/man_html/$${ENTRY}.html ;\
done
if BUILD_MANPAGES
UPG_LIST = upgrade_4.2.1_4.3.0.txt upgrade_4.3.0_4.3.1.txt
upg-page-build:
@for FILE in $(UPG_LIST) ; do \
$(A2X) -d article --format xhtml -D $(top_builddir)/doc/ $(top_srcdir)/doc/$${FILE} ;\
done
all: man-page-build
$(DOXYGEN) Doxyfile
@$(RM) $(top_builddir)/doc/insert_file $(top_builddir)/doc/scratch_insert_file
@cp -f $(top_srcdir)/doc/docbook.local.css $(top_builddir)/doc/html/docbook-xsl.css
else
#
# Need to make sure the man directories are in place, but empty
all: man-page-prepare
$(DOXYGEN) Doxyfile
endif # BUILD_MANPAGES
clean-local:
-rm -rf $(top_builddir)/doc/html $(top_builddir)/doc/man_tmp $(top_builddir)/doc/man_html $(top_builddir)/doc/DoxygenLayout.xml $(top_builddir)/doc/docbook-xsl.css $(top_builddir)/doc/*.html
distclean-local: clean-local
endif # HAVE_DOXYGEN
install-data-hook:
if HAVE_DOXYGEN
@if [ ! -d $(top_builddir)/doc/html ]; then \
echo ;\
echo " No install data in '$(top_builddir)/doc/html' found! Please run 'make all' first." ;\
echo ;\
exit 1 ;\
fi
$(MKDIR_P) $(DESTDIR)$(htmldir)/html || exit 1
cp -a -f $(top_builddir)/doc/html $(DESTDIR)$(htmldir)
find $(DESTDIR)$(htmldir) -type f -name "*.md5" -delete
endif # HAVE_DOXYGEN
if BUILD_LICENSE_INSTALL
$(MKDIR_P) $(DESTDIR)$(docdir) || exit 1
$(INSTALL_DATA) $(top_srcdir)/LICENSE $(DESTDIR)$(docdir)
$(INSTALL_DATA) $(top_srcdir)/COPYING $(DESTDIR)$(docdir)
$(INSTALL_DATA) $(top_srcdir)/README $(DESTDIR)$(docdir)
endif # BUILD_LICENSE_INSTALL
uninstall-hook:
if BUILD_LICENSE_INSTALL
@if [ -d $(DESTDIR)$(docdir) ] ; then \
(cd $(DESTDIR)$(docdir) ; rm -f LICENSE README COPYING) ; \
fi
endif # BUILD_LICENSE_INSTALL
if HAVE_DOXYGEN
-rm -rf $(DESTDIR)$(htmldir)/html
endif # HAVE_DOXYGEN
.PHONY: man-page-cleanup man-page-prepare man-page-start man-page-build