[dpdk-dev] [PATCH 4/4] doc: generate HTML for API with doxygen

Thomas Monjalon thomas.monjalon at 6wind.com
Fri Apr 19 19:00:23 CEST 2013


- add index page
- add doxygen configuration for API
- add doxygen CSS customization applied by a script
- HTML generation via make rules

The configuration is splitted in a static file and a make rule in order to
dynamically configure output format and path.

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
 doc/doxy-api-index.md   |  101 +++++++++++++++++++++++++++++++++++++++++++++++
 doc/doxy-api.conf       |   59 +++++++++++++++++++++++++++
 doc/doxy-html-custom.sh |    6 +++
 mk/rte.sdkdoc.mk        |   27 +++++++++++--
 mk/rte.sdkroot.mk       |    7 ++--
 5 files changed, 193 insertions(+), 7 deletions(-)
 create mode 100644 doc/doxy-api-index.md
 create mode 100644 doc/doxy-api.conf
 create mode 100755 doc/doxy-html-custom.sh

diff --git a/doc/doxy-api-index.md b/doc/doxy-api-index.md
new file mode 100644
index 0000000..de872ec
--- /dev/null
+++ b/doc/doxy-api-index.md
@@ -0,0 +1,101 @@
+<!--
+  BSD LICENSE
+
+  Copyright(c) 2013 6WIND.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in
+      the documentation and/or other materials provided with the
+      distribution.
+    * Neither the name of 6WIND S.A. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+# API {#index}
+
+There are many libraries, so their headers may be grouped by topics:
+
+- **device**:
+  [ethdev]             (@ref rte_ethdev.h),
+  [PCI]                (@ref rte_pci.h),
+  [PCI IDs]            (@ref rte_pci_dev_ids.h)
+
+- **memory**:
+  [memseg]             (@ref rte_memory.h),
+  [memzone]            (@ref rte_memzone.h),
+  [mempool]            (@ref rte_mempool.h),
+  [malloc]             (@ref rte_malloc.h),
+  [memcpy]             (@ref rte_memcpy.h)
+
+- **timers**:
+  [cycles]             (@ref rte_cycles.h),
+  [timer]              (@ref rte_timer.h),
+  [alarm]              (@ref rte_alarm.h)
+
+- **locks**:
+  [atomic]             (@ref rte_atomic.h),
+  [rwlock]             (@ref rte_rwlock.h),
+  [spinlock]           (@ref rte_spinlock.h)
+
+- **cpu arch**:
+  [branch prediction]  (@ref rte_branch_prediction.h),
+  [cache prefetch]     (@ref rte_prefetch.h),
+  [byte order]         (@ref rte_byteorder.h),
+  [CPU flags]          (@ref rte_cpuflags.h)
+
+- **cpu multicore**:
+  [interrupts]         (@ref rte_interrupts.h),
+  [launch]             (@ref rte_launch.h),
+  [lcore]              (@ref rte_lcore.h),
+  [per-lcore]          (@ref rte_per_lcore.h)
+
+- **network stack**:
+  [ethernet]           (@ref rte_ether.h),
+  [IP]                 (@ref rte_ip.h),
+  [SCTP]               (@ref rte_sctp.h),
+  [TCP]                (@ref rte_tcp.h),
+  [UDP]                (@ref rte_udp.h),
+  [LPM route]          (@ref rte_lpm.h)
+
+- **hashes**:
+  [hash]               (@ref rte_hash.h),
+  [jhash]              (@ref rte_jhash.h),
+  [FBK hash]           (@ref rte_fbk_hash.h),
+  [CRC hash]           (@ref rte_hash_crc.h)
+
+- **containers**:
+  [mbuf]               (@ref rte_mbuf.h),
+  [ring]               (@ref rte_ring.h),
+  [tailq]              (@ref rte_tailq.h)
+
+- **debug**:
+  [debug]              (@ref rte_debug.h),
+  [log]                (@ref rte_log.h),
+  [warnings]           (@ref rte_warnings.h),
+  [errno]              (@ref rte_errno.h)
+
+- **misc**:
+  [EAL config]         (@ref rte_eal.h),
+  [common]             (@ref rte_common.h),
+  [random]             (@ref rte_random.h),
+  [string]             (@ref rte_string_fns.h),
+  [version]            (@ref rte_version.h)
diff --git a/doc/doxy-api.conf b/doc/doxy-api.conf
new file mode 100644
index 0000000..e5ce102
--- /dev/null
+++ b/doc/doxy-api.conf
@@ -0,0 +1,59 @@
+#   BSD LICENSE
+#
+#   Copyright(c) 2013 6WIND.
+#
+#   Redistribution and use in source and binary forms, with or without
+#   modification, are permitted provided that the following conditions
+#   are met:
+#
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in
+#       the documentation and/or other materials provided with the
+#       distribution.
+#     * Neither the name of 6WIND S.A. nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+PROJECT_NAME            = DPDK
+INPUT                   = doc/doxy-api-index.md \
+                          lib/librte_eal/common/include \
+                          lib/librte_ether \
+                          lib/librte_hash \
+                          lib/librte_lpm \
+                          lib/librte_malloc \
+                          lib/librte_mbuf \
+                          lib/librte_mempool \
+                          lib/librte_net \
+                          lib/librte_ring \
+                          lib/librte_timer
+FILE_PATTERNS           = rte_*.h \
+                          cmdline.h
+PREDEFINED              = __DOXYGEN__
+
+OPTIMIZE_OUTPUT_FOR_C   = YES
+EXTRACT_STATIC          = YES
+HIDE_UNDOC_MEMBERS      = YES
+HIDE_UNDOC_CLASSES      = YES
+HIDE_SCOPE_NAMES        = YES
+GENERATE_DEPRECATEDLIST = NO
+VERBATIM_HEADERS        = NO
+ALPHABETICAL_INDEX      = NO
+
+HTML_TIMESTAMP          = NO
+HTML_DYNAMIC_SECTIONS   = YES
+SEARCHENGINE            = NO
diff --git a/doc/doxy-html-custom.sh b/doc/doxy-html-custom.sh
new file mode 100755
index 0000000..2465cc2
--- /dev/null
+++ b/doc/doxy-html-custom.sh
@@ -0,0 +1,6 @@
+#! /bin/sh -e
+
+CSS=$1
+
+# space between item and its comment
+echo 'dd td:first-child {padding-right: 2em;}' >> $CSS
diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk
index 57eb8e6..edae1e7 100644
--- a/mk/rte.sdkdoc.mk
+++ b/mk/rte.sdkdoc.mk
@@ -1,6 +1,7 @@
 #   BSD LICENSE
 # 
 #   Copyright(c) 2010-2012 Intel Corporation. All rights reserved.
+#   Copyright(c) 2013 6WIND.
 #   All rights reserved.
 # 
 #   Redistribution and use in source and binary forms, with or without 
@@ -37,8 +38,26 @@ $(error "Cannot use T= with doc target")
 endif
 endif
 
-.PHONY: doc
-doc:
+.PHONY: all
+all: htmlapi
 
-.PHONY: doc-clean
-doc-clean:
+.PHONY: clean
+clean: htmlapi-clean
+
+.PHONY: htmlapi
+htmlapi: htmlapi-clean
+	@echo 'doxygen for API...'
+	$(Q)mkdir -p $(RTE_OUTPUT)/doc/html
+	$(Q)(cat $(RTE_SDK)/doc/doxy-api.conf         && \
+	    echo OUTPUT_DIRECTORY = $(RTE_OUTPUT)/doc && \
+	    echo HTML_OUTPUT      = html/api          && \
+	    echo GENERATE_HTML    = YES               && \
+	    echo GENERATE_LATEX   = NO                && \
+	    echo GENERATE_MAN     = NO                )| \
+	    doxygen -
+	$(Q)$(RTE_SDK)/doc/doxy-html-custom.sh $(RTE_OUTPUT)/doc/html/api/doxygen.css
+
+.PHONY: htmlapi-clean
+htmlapi-clean:
+	$(Q)rm -f $O/doc/html/api/*
+	$(Q)rmdir -p --ignore-fail-on-non-empty $(RTE_OUTPUT)/doc/html/api 2>&- || true
diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk
index fe0070e..f555e33 100644
--- a/mk/rte.sdkroot.mk
+++ b/mk/rte.sdkroot.mk
@@ -103,9 +103,10 @@ testall testimport:
 install uninstall:
 	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkinstall.mk $@
 
-.PHONY: doc doc-clean
-doc doc-clean:
-	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkdoc.mk $@
+.PHONY: doc
+doc: doc-all
+doc-%:
+	$(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkdoc.mk $*
 
 .PHONY: depdirs depgraph
 depdirs depgraph:
-- 
1.7.10.4




More information about the dev mailing list