From dce61618dcbe0b83b1c6445fc96d65c0075e7e16 Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Tue, 6 Mar 2018 12:26:59 -0800 Subject: [PATCH] doc: organizational and look improvements Signed-off-by: David B. Kinder --- doc/Makefile | 11 +- doc/api/index.rst | 12 +- doc/conf.py | 4 +- doc/custom-doxygen/DoxygenLayout.xml | 194 +++++++++++++++++++++++++++ doc/custom-doxygen/customdoxygen.css | 17 +++ doc/custom-doxygen/header.html | 2 +- doc/custom-doxygen/mainpage.md | 9 +- doc/doxyfile | 10 +- doc/images/ACRN_Logo_300w.png | Bin 0 -> 23801 bytes doc/images/ACRN_Logo_56h.png | Bin 0 -> 13024 bytes 10 files changed, 243 insertions(+), 16 deletions(-) create mode 100644 doc/custom-doxygen/DoxygenLayout.xml create mode 100644 doc/images/ACRN_Logo_300w.png create mode 100644 doc/images/ACRN_Logo_56h.png diff --git a/doc/Makefile b/doc/Makefile index 81122a7c0..fc517737d 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -14,12 +14,17 @@ help: .PHONY: help Makefile +# Generate the doxygen xml (for Sphinx) and copy the doxygen html to the +# api folder for publishing along with the Sphinx-generated API docs. + +doxy: + $(Q)(cat doxyfile) | doxygen - 2>&1 + $(Q)mkdir -p _build/html/api/doxygen + $(Q)cp -r doxygen/html/* _build/html/api/doxygen -doxy: - $(Q)(cat doxyfile) | doxygen - 2>&1 clean: - $(Q)(rm -fr $(BUILDDIR) doxygen) + $(Q)(rm -fr $(BUILDDIR) doxygen) # Catch-all target: route all unknown targets to Sphinx using the new diff --git a/doc/api/index.rst b/doc/api/index.rst index 03c009fe2..a91c02689 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -1,8 +1,18 @@ .. _acrn_apis: -Project ACRN APIs +API Documentation ################# +Welcome to Project ACRN :abbr:`API (Application Programing +Interface)` documentation. + +This section contains the API documentation automatically extracted from +the code. If you are looking for a specific API, enter it on the search +box. The search results display all sections containing information +about that API. + +As a convenience, we've also published the `doxygen-generated API +`_ files as an alternate view of the Project ACRN APIs. .. toctree:: :maxdepth: 1 diff --git a/doc/conf.py b/doc/conf.py index 5d19aee83..fae33985a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -45,7 +45,7 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'Project ACRN' +project = u'Project ACRN™' copyright = u'2018, Project ACRN' author = u'Project ARCN developers' @@ -103,7 +103,7 @@ else: # # html_theme_options = {} -html_logo = 'images/ACRNlogo.png' +html_logo = 'images/ACRN_Logo_300w.png' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/doc/custom-doxygen/DoxygenLayout.xml b/doc/custom-doxygen/DoxygenLayout.xml new file mode 100644 index 000000000..ac353bf86 --- /dev/null +++ b/doc/custom-doxygen/DoxygenLayout.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/custom-doxygen/customdoxygen.css b/doc/custom-doxygen/customdoxygen.css index c6b0079b0..cca5056c3 100644 --- a/doc/custom-doxygen/customdoxygen.css +++ b/doc/custom-doxygen/customdoxygen.css @@ -15,3 +15,20 @@ pre.fragment { white-space: pre; background-color: #D8D8D8; } + +#projectlogo +{ + vertical-align: middle; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + color: #006469; + +} + +#projectbrief +{ + color: #006469; +} diff --git a/doc/custom-doxygen/header.html b/doc/custom-doxygen/header.html index 13af98a80..b9c554334 100644 --- a/doc/custom-doxygen/header.html +++ b/doc/custom-doxygen/header.html @@ -26,7 +26,7 @@ $extrastylesheet - Logo + Logo diff --git a/doc/custom-doxygen/mainpage.md b/doc/custom-doxygen/mainpage.md index acc1f0b7a..773bad693 100644 --- a/doc/custom-doxygen/mainpage.md +++ b/doc/custom-doxygen/mainpage.md @@ -1,8 +1,9 @@ -# CWP Hypervisor Documentation {#index} +# API Documentation {#index} -Clearwater Pass is a flexible and lighweight hypervisor, built with -real-time, functional safety, and security in mind. It streamlines +Project ACRN is a flexible and lighweight hypervisor, built with +real-time and safety-criticality in mind. It streamlines embedded development through a scalable open source reference platform that addresses embedded developers' needs. - +You can get an alternate view this API material in the [Project ACRN +documentation](../). diff --git a/doc/doxyfile b/doc/doxyfile index a3a4315b2..1af23f45d 100644 --- a/doc/doxyfile +++ b/doc/doxyfile @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "ProjectACRN" +PROJECT_NAME = "Project ACRN™" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -44,14 +44,14 @@ PROJECT_NUMBER = # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "Open Source Automotive Hypervisor for Intel® Architecture" +PROJECT_BRIEF = "A flexible, light-weight, open source reference hypervisor for IoT devices." # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = "images/ACRN_Logo_56h.png" # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is @@ -703,7 +703,7 @@ FILE_VERSION_FILTER = # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. -LAYOUT_FILE = +LAYOUT_FILE = custom-doxygen/DoxygenLayout.xml # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib @@ -1120,7 +1120,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = +HTML_HEADER = custom-doxygen/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard diff --git a/doc/images/ACRN_Logo_300w.png b/doc/images/ACRN_Logo_300w.png new file mode 100644 index 0000000000000000000000000000000000000000..c26a69b6d92279d01db8638a2d639cb451f02deb GIT binary patch literal 23801 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 literal 0 HcmV?d00001